<?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>217724</bug_id>
          
          <creation_ts>2020-10-14 12:11:59 -0700</creation_ts>
          <short_desc>Hook AudioWorklets up to WebInspector</short_desc>
          <delta_ts>2020-12-22 12:23:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218253</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=220039</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>
          <dependson>217912</dependson>
    
    <dependson>217980</dependson>
    
    <dependson>217995</dependson>
    
    <dependson>218028</dependson>
    
    <dependson>218051</dependson>
    
    <dependson>218108</dependson>
          <blocked>217058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697818</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 12:11:59 -0700</bug_when>
    <thetext>Hook AudioWorklets to WebInspector, similarly to Web Workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697820</commentid>
    <comment_count>1</comment_count>
      <attachid>411360</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 12:14:24 -0700</bug_when>
    <thetext>Created attachment 411360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697824</commentid>
    <comment_count>2</comment_count>
      <attachid>411361</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 12:18:28 -0700</bug_when>
    <thetext>Created attachment 411361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697826</commentid>
    <comment_count>3</comment_count>
      <attachid>411362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 12:19:33 -0700</bug_when>
    <thetext>Created attachment 411362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697854</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-14 13:39:48 -0700</bug_when>
    <thetext>Seems like the custom paint worklet test is crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697872</commentid>
    <comment_count>5</comment_count>
      <attachid>411370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 14:06:14 -0700</bug_when>
    <thetext>Created attachment 411370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697878</commentid>
    <comment_count>6</comment_count>
      <attachid>411370</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-10-14 14:20:41 -0700</bug_when>
    <thetext>Comment on attachment 411370
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:86
&gt; +    std::unique_ptr&lt;WorkerInspectorController&gt; m_inspectorController;

Would it be worth it (assuming it&apos;s possible) to move each of the subclass members/methods onto the base `WorkerOrWorkletGlobalScope`?  Are there any worklets that are somehow not inspectable?

Also, do worklets have `setTimeout`/`setInterval`/`requestAnimationFrame`?  I ask because the `DOMDebugger` has different functionality for event/DOM breakpoints depending on whether the target is a page or a worker (e.g. DOM breakpoints and animation frame breakpoints are not supported for worker targets).

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1334
&gt; +    // FIXME: Add support for PaintWorklets.

Why isn&apos;t this supported?

&gt; Source/WebCore/workers/WorkerInspectorProxy.cpp:49
&gt; +#endif
&gt; +    return downcast&lt;WorkerGlobalScope&gt;(context).inspectorController();

What about `PaintWorkletGlobalScope`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697889</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 14:41:12 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #6)
&gt; Comment on attachment 411370 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411370&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:86
&gt; &gt; +    std::unique_ptr&lt;WorkerInspectorController&gt; m_inspectorController;
&gt; 
&gt; Would it be worth it (assuming it&apos;s possible) to move each of the subclass
&gt; members/methods onto the base `WorkerOrWorkletGlobalScope`? 

Yes, this is planned for a follow-up.

&gt; Are there any
&gt; worklets that are somehow not inspectable?

The main issue is that some worklets (like AudioWorklets) use threading and are thus very similar to Web Workers. Other worklets (like PaintWorklets) do not use threading and are thus very different.

&gt; Also, do worklets have `setTimeout`/`setInterval`/`requestAnimationFrame`? 
&gt; I ask because the `DOMDebugger` has different functionality for event/DOM
&gt; breakpoints depending on whether the target is a page or a worker (e.g. DOM
&gt; breakpoints and animation frame breakpoints are not supported for worker
&gt; targets).

No, worklets do not have those AFAIK.

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1334
&gt; &gt; +    // FIXME: Add support for PaintWorklets.
&gt; 
&gt; Why isn&apos;t this supported?

PaintWorklets do not use threading and are thus very different from AudioWorklets and workers. I am working on AudioWorklets not PaintWorklets so I focused on getting AudioWorklets working (not PaintWorklets). I don&apos;t believe I made things worse for PaintWorklets.

&gt; 
&gt; &gt; Source/WebCore/workers/WorkerInspectorProxy.cpp:49
&gt; &gt; +#endif
&gt; &gt; +    return downcast&lt;WorkerGlobalScope&gt;(context).inspectorController();
&gt; 
&gt; What about `PaintWorkletGlobalScope`?

PaintWorkets do not use threading. Thus PaintWorkletGlobalScope does not use WorkerInspectorProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697904</commentid>
    <comment_count>8</comment_count>
      <attachid>411370</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-10-14 15:07:27 -0700</bug_when>
    <thetext>Comment on attachment 411370
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1334
&gt;&gt;&gt; +    // FIXME: Add support for PaintWorklets.
&gt;&gt; 
&gt;&gt; Why isn&apos;t this supported?
&gt; 
&gt; PaintWorklets do not use threading and are thus very different from AudioWorklets and workers. I am working on AudioWorklets not PaintWorklets so I focused on getting AudioWorklets working (not PaintWorklets). I don&apos;t believe I made things worse for PaintWorklets.

Do PaintWorklet have a separate execution context?  It&apos;s fine by me to do this as a followup/FIXME, but if you do that then please make a bug and include it&apos;s URL/title here.

&gt;&gt; Also, do worklets have `setTimeout`/`setInterval`/`requestAnimationFrame`?  I ask because the `DOMDebugger` has different functionality for event/DOM breakpoints depending on whether the target is a page or a worker (e.g. DOM breakpoints and animation frame breakpoints are not supported for worker targets).
&gt; 
&gt; No, worklets do not have those AFAIK.
In that case, we ideally should introduce a new target type `&quot;worklet&quot;` (similar to the existing `&quot;worker&quot;`) so that we can properly annotate any protocol commands/events and so that the frontend can differentiate between workers and worklets (see r262302 for an example of how this has been done).  I don&apos;t think this is required in order to make inspection work, but we should do it for correctness.  I&apos;m OK with it being a followup bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697917</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-14 15:27:06 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #8)
&gt; Comment on attachment 411370 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411370&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:1334
&gt; &gt;&gt;&gt; +    // FIXME: Add support for PaintWorklets.
&gt; &gt;&gt; 
&gt; &gt;&gt; Why isn&apos;t this supported?
&gt; &gt; 
&gt; &gt; PaintWorklets do not use threading and are thus very different from AudioWorklets and workers. I am working on AudioWorklets not PaintWorklets so I focused on getting AudioWorklets working (not PaintWorklets). I don&apos;t believe I made things worse for PaintWorklets.
&gt; 
&gt; Do PaintWorklet have a separate execution context?  It&apos;s fine by me to do
&gt; this as a followup/FIXME, but if you do that then please make a bug and
&gt; include it&apos;s URL/title here.

Yes, PaintWorklets have their own execution context. FYI, we only have a very partial implementation of PaintWorklets. It was added a while ago by an intern and never finished. The feature is not shipping. I personally don&apos;t have plans to work on paint worklets.

&gt; 
&gt; &gt;&gt; Also, do worklets have `setTimeout`/`setInterval`/`requestAnimationFrame`?  I ask because the `DOMDebugger` has different functionality for event/DOM breakpoints depending on whether the target is a page or a worker (e.g. DOM breakpoints and animation frame breakpoints are not supported for worker targets).
&gt; &gt; 
&gt; &gt; No, worklets do not have those AFAIK.
&gt; In that case, we ideally should introduce a new target type `&quot;worklet&quot;`
&gt; (similar to the existing `&quot;worker&quot;`) so that we can properly annotate any
&gt; protocol commands/events and so that the frontend can differentiate between
&gt; workers and worklets (see r262302 for an example of how this has been done).
&gt; I don&apos;t think this is required in order to make inspection work, but we
&gt; should do it for correctness.  I&apos;m OK with it being a followup bug.

I&apos;d appreciate if this could be a follow-up. I am doing basic hook up here but I am not WebInspector expert and I will likely need help to do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698226</commentid>
    <comment_count>10</comment_count>
      <attachid>411370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-15 12:33:22 -0700</bug_when>
    <thetext>Comment on attachment 411370
Patch

Ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698371</commentid>
    <comment_count>11</comment_count>
      <attachid>411370</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-10-15 16:49:57 -0700</bug_when>
    <thetext>Comment on attachment 411370
Patch

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

r-, as this definitely needs tests.  We need to make sure that basic JavaScript debugging works as expected.  I&apos;d suggest copying most of tests in `LayoutTests/inspector/worker` (some of them might need to be changed for `setTimeout`/`setInterval`/etc. not existing) but using a `AudioWorklet` (and `PaintWorklet` if you have the time/willpower) instead.  I&apos;d also check to make sure that the execution context for the workout appears in the execution context picker to the right of the Console Prompt &lt;https://webkit.org/web-inspector/web-inspector-interface/#console-prompt&gt;.

&gt; &gt; &gt; &gt; Also, do worklets have `setTimeout`/`setInterval`/`requestAnimationFrame`?  I ask because the `DOMDebugger` has different functionality for event/DOM breakpoints depending on whether the target is a page or a worker (e.g. DOM breakpoints and animation frame breakpoints are not supported for worker targets).
&gt; &gt; &gt; No, worklets do not have those AFAIK.
&gt; &gt; In that case, we ideally should introduce a new target type `&quot;worklet&quot;` (similar to the existing `&quot;worker&quot;`) so that we can properly annotate any protocol commands/events and so that the frontend can differentiate between workers and worklets (see r262302 for an example of how this has been done). I don&apos;t think this is required in order to make inspection work, but we should do it for correctness.  I&apos;m OK with it being a followup bug.
&gt; I&apos;d appreciate if this could be a follow-up. I am doing basic hook up here but I am not WebInspector expert and I will likely need help to do better.

Followup is fine :)

All I ask is that you create a bug for that change and add it&apos;s URL/title in this patch as a FIXME comment, just so that there&apos;s a record of it.

&gt; Source/WebCore/worklets/PaintWorkletGlobalScope.h:42
&gt; +class InspectorController;

So this isn&apos;t needed anymore because PaintWorklet doesn&apos;t use a separate thread, meaning that all activity should eventually go through `Page::inspectorController` right?

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:-166
&gt; -    if (!m_document || isJSExecutionForbidden() || !message)

What happened to `isJSExecutionForbidden()`?

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:172
&gt; +        m_document-&gt;addConsoleMessage(makeUnique&lt;Inspector::ConsoleMessage&gt;(message-&gt;source(), message-&gt;type(), message-&gt;level(), message-&gt;message(), 0));

Odd that we&apos;re creating a new message with the same data.  I wonder if this is really necessary 🤔

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:192
&gt; +    if (m_document) {

Should this also check `isContextThread()`?

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:193
&gt; +        m_document-&gt;addMessage(source, level, messageText, sourceURL, lineNumber, columnNumber, WTFMove(callStack), nullptr, requestIdentifier);

Should this also pass `state`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698377</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-15 16:52:20 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #11)
&gt; Comment on attachment 411370 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411370&amp;action=review
&gt; 
&gt; r-, as this definitely needs tests.  We need to make sure that basic
&gt; JavaScript debugging works as expected.  I&apos;d suggest copying most of tests
&gt; in `LayoutTests/inspector/worker` (some of them might need to be changed for
&gt; `setTimeout`/`setInterval`/etc. not existing) but using a `AudioWorklet`
&gt; (and `PaintWorklet` if you have the time/willpower) instead.  I&apos;d also check
&gt; to make sure that the execution context for the workout appears in the
&gt; execution context picker to the right of the Console Prompt
&gt; &lt;https://webkit.org/web-inspector/web-inspector-interface/#console-prompt&gt;.


Ok, then I&apos;d like someone with Web Inspector knowledge to take over. I did what I could to save work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699533</commentid>
    <comment_count>13</comment_count>
      <attachid>411817</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-19 17:07:33 -0700</bug_when>
    <thetext>Created attachment 411817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699784</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-20 09:44:41 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to Devin Rousso from comment #11)
&gt; &gt; Comment on attachment 411370 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=411370&amp;action=review
&gt; &gt; 
&gt; &gt; r-, as this definitely needs tests.  We need to make sure that basic
&gt; &gt; JavaScript debugging works as expected.  I&apos;d suggest copying most of tests
&gt; &gt; in `LayoutTests/inspector/worker` (some of them might need to be changed for
&gt; &gt; `setTimeout`/`setInterval`/etc. not existing) but using a `AudioWorklet`
&gt; &gt; (and `PaintWorklet` if you have the time/willpower) instead.  I&apos;d also check
&gt; &gt; to make sure that the execution context for the workout appears in the
&gt; &gt; execution context picker to the right of the Console Prompt
&gt; &gt; &lt;https://webkit.org/web-inspector/web-inspector-interface/#console-prompt&gt;.
&gt; 
&gt; 
&gt; Ok, then I&apos;d like someone with Web Inspector knowledge to take over. I did
&gt; what I could to save work.

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699787</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-20 09:45:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/70488763&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700186</commentid>
    <comment_count>16</comment_count>
      <attachid>411986</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 08:19:47 -0700</bug_when>
    <thetext>Created attachment 411986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700198</commentid>
    <comment_count>17</comment_count>
      <attachid>411990</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 08:44:20 -0700</bug_when>
    <thetext>Created attachment 411990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700207</commentid>
    <comment_count>18</comment_count>
      <attachid>411993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 09:03:12 -0700</bug_when>
    <thetext>Created attachment 411993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700250</commentid>
    <comment_count>19</comment_count>
      <attachid>412001</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 10:04:02 -0700</bug_when>
    <thetext>Created attachment 412001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700402</commentid>
    <comment_count>20</comment_count>
      <attachid>412032</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-21 14:44:20 -0700</bug_when>
    <thetext>Created attachment 412032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700870</commentid>
    <comment_count>21</comment_count>
      <attachid>412140</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-22 16:00:01 -0700</bug_when>
    <thetext>Created attachment 412140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701012</commentid>
    <comment_count>22</comment_count>
      <attachid>412180</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-23 08:05:45 -0700</bug_when>
    <thetext>Created attachment 412180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701042</commentid>
    <comment_count>23</comment_count>
      <attachid>412180</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-23 09:31:18 -0700</bug_when>
    <thetext>Comment on attachment 412180
Patch

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

&gt; Source/WebCore/workers/WorkerScriptLoader.cpp:53
&gt; +    auto&amp; workerOrWorkletGlobalScope = downcast&lt;WorkerOrWorkletGlobalScope&gt;(*scriptExecutionContext);

Drive-by thought: Why not just call this &quot;globalScope&quot;?

&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:173
&gt; +void WorkletGlobalScope::didReceiveResponse(unsigned long identifier, const ResourceResponse&amp;)

Another drive-by: Strange that this uses &quot;unsigned long&quot; and not &quot;unsigned&quot;. Do you know why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701045</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-23 09:39:21 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #23)
&gt; Comment on attachment 412180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/WorkerScriptLoader.cpp:53
&gt; &gt; +    auto&amp; workerOrWorkletGlobalScope = downcast&lt;WorkerOrWorkletGlobalScope&gt;(*scriptExecutionContext);
&gt; 
&gt; Drive-by thought: Why not just call this &quot;globalScope&quot;?

Oh right, I updated to globalScope in the patch I landed yesterday but fail to update this patch accordingly. Will fix.

&gt; 
&gt; &gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:173
&gt; &gt; +void WorkletGlobalScope::didReceiveResponse(unsigned long identifier, const ResourceResponse&amp;)
&gt; 
&gt; Another drive-by: Strange that this uses &quot;unsigned long&quot; and not &quot;unsigned&quot;.
&gt; Do you know why?

This all seems to come from the fact that CachedRawResource::identifier() returns an unsigned long. As a result, ThreadableLoader uses unsigned long for identifiers and the WorkerThreadableLoader just matches the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701047</commentid>
    <comment_count>25</comment_count>
      <attachid>412180</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-23 09:54:11 -0700</bug_when>
    <thetext>Comment on attachment 412180
Patch

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

&gt;&gt;&gt; Source/WebCore/worklets/WorkletGlobalScope.cpp:173
&gt;&gt;&gt; +void WorkletGlobalScope::didReceiveResponse(unsigned long identifier, const ResourceResponse&amp;)
&gt;&gt; 
&gt;&gt; Another drive-by: Strange that this uses &quot;unsigned long&quot; and not &quot;unsigned&quot;. Do you know why?
&gt; 
&gt; This all seems to come from the fact that CachedRawResource::identifier() returns an unsigned long. As a result, ThreadableLoader uses unsigned long for identifiers and the WorkerThreadableLoader just matches the type.

OK. There’s no reason that I am aware of for WebKit to ever use the &quot;unsigned long&quot; type instead of &quot;unsigned&quot;—both are 32-bit unsigned integers—and there is a small downside to doing so (more overloading needed, some possible template bloat) so we should probably change CachedRawResource::identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701115</commentid>
    <comment_count>26</comment_count>
      <attachid>412204</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-23 12:27:56 -0700</bug_when>
    <thetext>Created attachment 412204
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411360</attachid>
            <date>2020-10-14 12:14:24 -0700</date>
            <delta_ts>2020-10-14 12:18:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201014121423.patch</filename>
            <type>text/plain</type>
            <size>108207</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5YWZjNGU0MGRmOWFl
YzRlNzMxOTA0Y2MyOTk5NzQzYzA4NGFiMC4uMDBmYjM1NTYxNTA0NWJiMDg2YTEzMzdmMGJiMjlh
N2QzYjMxYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMC0xMC0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0cyB0byBXZWJJbnNwZWN0b3IsIHNpbWlsYXJseSB0
byBXZWIgV29ya2Vycy4gVGhpcyBiYXNpY2FsbHkgcG9ydHMKKyAgICAgICAgV2ViSW5zcGVjdG9y
IGNvZGUgdG8gdXNlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIGluc3RlYWQgb2YgV29ya2Vy
R2xvYmFsU2NvcGUKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgY29kZSBm
b3Igd29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
OjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
QnlXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6Ondvcmts
ZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJE
ZWJ1Z2dlclByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVh
ZDo6c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRUaHJlYWQ6OnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY1N0YXRl
RnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFs
U2NvcGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQWdlbnRD
b250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVi
dWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRldGFjaERlYnVnZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBh
dXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6d29y
a2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hh
bm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VX
b3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVk
aXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFnZW50OjpXb3JrZXJB
dWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
QXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNv
bnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdlbnQ6Oldv
cmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFn
ZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5l
dHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Oldv
cmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1h
aW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29ya2VyQ29uc29sZUNs
aWVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50Lmg6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclBy
b3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclBy
b3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5
OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmts
ZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAgICAgICogd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAq
IHdvcmtsZXRzL1dvcmtsZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIp
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMjAt
MTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBK
UyBhcmd1bWVudHMgaW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKCkgZm9yIHBlcmZv
cm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGViYjg0MzBjMTYwZGRkYzNmOWVkOGJk
ZWFhMzE0OTVjZGRkYWE3NDIuLmNmNjUzODk1MWQyMDliZDk5OWYwZjNmNWZmMzkyMjAxYzM4ZDkz
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk7CiBBdWRpb1dvcmtsZXRH
bG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhyZWFkJiB0
aHJlYWQsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogV29ya2xl
dEdsb2JhbFNjb3BlKHRocmVhZCwgcGFyYW1ldGVycykKICAgICAsIG1fc2FtcGxlUmF0ZShwYXJh
bWV0ZXJzLnNhbXBsZVJhdGUpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiB9CkBAIC0xNDgsNiArMTQ5LDggQEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKICAgICAgICAgZGVmYXVsdFRhc2tHcm91
cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwogICAgIHN0b3BBY3RpdmVET01PYmplY3RzKCk7
CiAKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPndvcmtlclRlcm1pbmF0aW5nKCk7CisKICAg
ICBtX3Byb2Nlc3NvckNvbnN0cnVjdG9yTWFwLmNsZWFyKCk7CiAKICAgICAvLyBFdmVudCBsaXN0
ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxv
bmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmgKaW5kZXggM2U2MTc1ZDFhZTQzOWVmOGMyNmQzNmZhODVkNDQ4YTJjNDU5Yjk2OC4uYjlh
MjU4NjUwZWUzZDFiNmExYWFkNzMyOTBjNTBjMmI3MTRlMjdjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAiQXVk
aW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDggQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKICAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcyhzaXplX3QgY3VycmVudEZyYW1lKTsKIAorICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250
cm9sbGVyOyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9X
b3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIApAQCAtODAsNiArODMs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcj4+IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXA7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+IG1fcGVu
ZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CiAgICAgT3B0aW9uYWw8SlNDOjpKU0xvY2tI
b2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmluZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzA2MTNl
OTgwNDBhNjAyMDNkYzc3ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2MjQ1NmY4
ZWQ0Mzg2ZDFhNDNmYTJkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcs
MzYgKzM3LDQzIEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgog
I2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdU
YXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRp
YyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xl
dCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAg
IGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1l
RmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7Cisg
ICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5Lndvcmtl
clN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAg
IGRvY3VtZW50LT51cmwoKSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgIHdvcmts
ZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkg
OiAwLjBmCisgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29u
dGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAgICB9Owog
fQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFrUHRyKHdv
cmtsZXQpKQogICAgICwgbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAgICwgbV93
b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdv
cmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVu
aXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQorICAgICwg
bV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0
ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsK
KyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1lbnQoKSwg
bV93b3JrbGV0VGhyZWFkLnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQogCiBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkKIHsK
KyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93b3JrbGV0
VGhyZWFkLT5zdG9wKCk7CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2b2lkKEF1
ZGlvV29ya2wKICAgICB9KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9pbnNwZWN0
b3JQcm94eS0+c2VuZE1lc3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICB9
KTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBvc3RUYXNr
VG9Mb2FkZXIoW2Rpc2FibGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5z
ZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICB9
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGViNzUwNGU2
NDY4ZDA4YWY1NGUwMjU5YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEwNTdkNGM3
M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlUHJveHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJv
eHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0
KQogICAgIHsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tU
b0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAgICAvLyBX
b3JrZXJEZWJ1Z2dlclByb3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3Rvcihib29sKSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHI8QXVk
aW9Xb3JrbGV0PiBtX3dvcmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsK
ICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYWI3
MDIxMWVhMzBiZDY4MDg1YjNhNDJiZDc5NjEwMGJjOTI1MjIxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAt
MTMxLDYgKzEzMSwxNCBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCgp
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9kZSA9PSBX
b3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAgc3RhcnRS
dW5uaW5nRGVidWdnZXJUYXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNv
bWVob3cgdGVybWluYXRlZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgorICAg
ICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlwdENvbnRy
b2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9vcCgpOwog
CiAjaWYgVVNFKEdMSUIpCkBAIC0xNzYsNiArMTg0LDI3IEBAIFdvcmtlckxvYWRlclByb3h5JiBB
dWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNz
YWdpbmdQcm94eTsKIH0KIAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFk
Ojp3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQ
cm94eTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2Vy
VGFza3MoKQoreworICAgIEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAgbV9wYXVz
ZWRGb3JEZWJ1Z2dlciA9IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3Vs
dDsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9k
ZSgqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdl
UXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lkIEF1ZGlv
V29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBtX3BhdXNl
ZEZvckRlYnVnZ2VyID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgwMjI5MmNi
MzQzODE0ZDkxMGMyYmVhN2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgyYTdmMjhm
Y2NlMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dl
clRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5h
bDsKKwogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5Mb29wJiBy
dW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0K
KyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBXb3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRy
PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAgICBMb2Nr
IG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJvb2wgbV9w
YXVzZWRGb3JEZWJ1Z2dlciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGRmMjMwYzJhYzBhODE5NDVjMTZmZTFiYWRjYjllZGZiNmZhYzM3
N2MuLjFjNzdiNmU3ZTA2OTg5ZDVjNDJjOTA2NDViNmM2ZmJiNmY1ODg5MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNTg3LDcgKzI1ODcsNiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3Bw
CiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZjE1MTc1NWMxOGVj
ZDkzZmU1YWM1OGVkODg2YTZiY2MyOTM4ODEyLi5hMWNmZjc4N2Y2YWM2ZThlNzkxOWQyOTkwMjdj
OWE5NjM1YTJjNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ3LDcgKzEzNDcsNiBAQAogCQk0QjZFODc2OTIxNzZENjky
MDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBD
NTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50
SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25z
b2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLzsg
fTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1QjAwQjJG
QTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENCMjE5MEVCRDYwMEMwQUI2NCAv
KiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAqLzsgfTsK
IAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRkQwQ0Uy
MTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5oICovOyB9OwpAQCAt
ODIyNCw4ICs4MjIzLDYgQEAKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVw
bGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVw
bGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFp
bnRJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNF
MDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21QYWludEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI3RjlDNTEy
MTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtsZXRDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
N0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENBMjE5MEVCRDYwMEMwQUI2
NCAvKiBDU1NQYWludFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRTaXplLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENEMjE5MEVCRTkwMEMwQUI2NCAvKiBDU1NQ
YWludFNpemUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENTU1BhaW50U2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTgwNiw4ICsxOTgwMyw2IEBACiAJCQkJNEJERUEzMjMyMTdFQzk2QTAwNTJE
RkNEIC8qIFdvcmtsZXQuY3BwICovLAogCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAvKiBX
b3JrbGV0LmggKi8sCiAJCQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRs
ICovLAotCQkJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVu
dC5jcHAgKi8sCi0JCQkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xl
Q2xpZW50LmggKi8sCiAJCQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAgKi8sCiAJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRH
bG9iYWxTY29wZS5oICovLAogCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovLApAQCAtMzQ3NjgsNyArMzQ3NjMsNiBAQAogCQkJCUE1NEEwQzY4
MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QkRFQTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25z
b2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0Qg
LyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgxODI1MjRE
NEY1MDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQUNEMDEzMjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXgg
ODU1MGFkOGE0YmQ4NGIyNjliNDY4NDQ4ZjE1OTEzNjdhYzIwMDlhOC4uZjllNWVkOGNiMzM2ODI3
MTRlYmQ3ZDg1MTIxYjk0ZjQ5OTYyMjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29y
a2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIK
QEAgLTk4LDE4ICs5OCwxMSBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tUGFn
ZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiBwYWdlID8g
cGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6IG51bGxwdHI7
CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjU3RhdGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIHJldHVy
biB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7
CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNj
b3BlV3JhcHBlcigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEds
b2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQotewotICAg
IGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKCk7Ci19Ci0jZW5kaWYKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmgKaW5kZXggMDRmMWJhNGUzMGRlNDEwMDMzZmU3NDM0ZjFkODk4NTg4Njc1
MjExZC4uYTUyODExM2ExZjdhZWE2ZjZiOWRkMzRmZGIxNjkwNTc2ZTgwNDAwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC00NCwxMCArNDQsNyBAQCBjbGFz
cyBGcmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOwotI2VuZGlmCitjbGFzcyBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpK
U0dsb2JhbE9iamVjdCopOwpAQCAtNTcsOSArNTQsNiBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBt
YWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0
YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwogV0VCQ09SRV9FWFBPUlQgSlND
OjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFn
ZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlckdsb2JhbFNjb3BlJik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1KU0M6
OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRH
bG9iYWxTY29wZSYpOwotI2VuZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9t
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3MTZiMWE2OWI4ZWVjMWRh
NjQ3MjAxYTQzMjY5MmIzMzg5N2ViNzhlLi5iNDZkOGE3ZWQ5MWI5ZjM4NjkzODBhMjc1YzA5NzA2
ZGE3MzQyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjc5LDQgKzI3OSw5IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAg
ICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwgSlND
OjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0KIAorSlNDOjpKU0ds
b2JhbE9iamVjdCogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkK
K3sKKyAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlMzkwMTgwZjU3MWY5ZTFlMzViYzkyM2IxZDc3MWQ0
Yjk1Y2VkYTQ0Li5jOTE4MDRmZDg2ZDZkOGMyNjE3OThkYjNhMmY1NTU2OTM1YzFhMjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpOwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbFNjb3BlV3JhcHBlcigpOworCiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxscHRyKTsK
ICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9u
TWVzc2FnZSA9IG51bGxwdHIpOwogCkBAIC03OCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2b2lkIGRpc2Fi
bGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICBKU0M6OlZN
JiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisgICAgSlNDOjpWTSYgdm0oKSBmaW5hbCB7IHJldHVy
biAqbV92bTsgfQogICAgIAogICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKSBmaW5hbDsKICAg
ICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgZmluYWw7CkBAIC04Niw4ICs4OCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29wVGltZXI6
OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlVGltZXJT
ZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxs
YmFjaykgZmluYWw7CiAKLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsK
LSAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKyAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2Vy
KEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRTY3JpcHRJ
Zk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKaW5kZXggNTJjNzhmNjFmNDBlZGVjNmY2NGYyODJhZmE3ZDE1ZGMyMzNmZTBlNy4uNTZlODQx
OTMxNzdlM2M3NTJhMWFhZThjY2U2NmFmMmIzZjNlODI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDgxLDEyICs0ODEsOCBAQCBKU0M6
OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50
PigqdGhpcykpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgpOwotICAgIGlmIChpczxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQ
SSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJldHVy
biBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNl
bmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5z
Y3JpcHQoKS0+dm0oKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGNvbW1vblZNKCk7CkBAIC01MzIsMTIgKzUyOCw4IEBAIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgICAgIHJldHVybiBm
cmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0
aGlzKSkKLSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJl
dHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtsZXRHbG9i
YWxTY29wZT4oKnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCmluZGV4IDFkNjVhNDUyNzU5ZmQwMjUzMjIzMmZmZmJmYjcwMzc2ZjBhZmVmOTAuLjcy
MDFmNDc4ZjI3MmM2ZDc3MDMyYmM3YzRhOWMyZjhkZmNjMzQ5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ29tcHV0ZWRFZmZlY3RUaW1p
bmcuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNsdWRl
ICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VIZWFwQWdlbnQuaCIKICNpbmNs
dWRlICJQYWdlUnVudGltZUFnZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC03Myw2ICs3NSw4IEBACiAjaW5j
bHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oPgpAQCAtMTMyMCw5ICsxMzI0LDIwIEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJMYXllckRlc3Ryb3ll
ZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1lbnRpbmdBZ2VudHMqIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUuaW5zcGVjdG9y
Q29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyNpZiBFTkFCTEUoV0VCX0FVRElP
KQorICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5pbnNwZWN0b3JDb250cm9sbGVyKCkubV9p
bnN0cnVtZW50aW5nQWdlbnRzLnB0cigpOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGluc3BlY3RvckNvbnRyb2xsZXIg
PSBkb3duY2FzdDxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpLmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0
b3JDb250cm9sbGVyLT5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLmluc3BlY3RvckNvbnRyb2xsZXIo
KS5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CiB9CiAKIEluc3RydW1lbnRpbmdBZ2VudHMm
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFn
ZSYgcGFnZSkKQEAgLTEzMzUsOCArMTM1MCw4IEBAIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoU2NyCiB7
CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGluc3RydW1l
bnRpbmdBZ2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpOwot
ICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiAm
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZT4oY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNWFkNzll
MGQxNmE5NTMyYjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZS4uZDBlODBlNjIxY2M1MWFmNDNkZGM4
MTkwNmJmYTY4Zjc5MWU0YjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBTaGFk
b3dSb290OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2Vi
S2l0TmFtZWRGbG93OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3Jh
bTsKQEAgLTIwMSwxMSArMjAxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29y
a2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYp
OworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gU29tZSBuZXR3b3JrIHJlcXVlc3RzIGRvIG5v
dCBnbyB0aHJvdWdoIHRoZSBub3JtYWwgbmV0d29yayBsb2FkaW5nIHBhdGguCiAgICAgLy8gVGhl
c2UgbmV0d29yayByZXF1ZXN0cyBoYXZlIHRvIGlzc3VlIHRoZWlyIG93biB3aWxsU2VuZFJlcXVl
c3QgLyBkaWRSZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5pc2hMb2FkaW5nIC8gZGlkRmFpbExvYWRp
bmcKQEAgLTI0MywyMCArMjQzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2Vy
R2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4p
OworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwog
CiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFdv
cmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFi
ZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBz
dGF0aWMgdm9pZCBjb25zb2xlQ291bnRSZXNldChQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0
KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
bGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwp
OwogCiAgICAgc3RhdGljIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChGcmFtZSYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9p
ZCBzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xl
VGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmco
RnJhbWUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb25zb2xl
VGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CisgICAgc3Rh
dGljIHZvaWQgbG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpT
Y3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKEZy
YW1lJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0
YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIHN0b3BD
b25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1l
U3RhbXAoRnJhbWUmLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0
YXRpYyB2b2lkIHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQYWdlJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTMyLDcgKzUz
Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYpOwogCiAgICAgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsK
LSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiAgICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFtZSYpOwog
ICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoY29uc3QgRnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKLSAgICBz
dGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOwogfTsKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1l
LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1MCwxMCArMTA1MCwxMSBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJh
bWUsIHVuc2lnbmVkIGxvbgogICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIs
IG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICBpZiAoYXV0byog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHdpbGxT
ZW5kUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxwdHIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RPZlR5cGUoRnJhbWUqIGZyYW1lLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9hZFR5cGUpCkBAIC0xMDc1LDkgKzEwNzYsMTAg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZShGcmFtZSYgZnJhbWUsIHUKICAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3Bv
bnNlLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlc3BvbnNlLCBudWxscHRyKTsK
KyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkp
CisgICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVhZGFibGVM
b2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwOTQsMTAgKzEwOTYsMTEgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcKICAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURh
dGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAg
IGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAg
ICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVy
LCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNl
TG9hZGVyKQpAQCAtMTEwNywxMCArMTExMCwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYQog
ICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRp
ZmllciwgbG9hZGVyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIHJlc291cmNlTG9hZGVyKTsKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAg
ZGlkRmluaXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgbmV0d29ya0xvYWRN
ZXRyaWNzLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51
bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTExMTksOSAr
MTEyMywxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxM
b2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogICAgICAgICBkaWRGYWlsTG9hZGlu
Z0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwog
fQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGRpZEZhaWxMb2FkaW5nSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUp
LCBpZGVudGlmaWVyLCBudWxscHRyLCBlcnJvcik7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBkaWRGYWlsTG9hZGluZ0lt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxwdHIsIGVycm9yKTsKIH0K
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZy
YW1lT3B0aW9uc0RlbmllZChGcmFtZSYgZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CkBAIC0xNTcxLDkgKzE1NzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5pcXUKICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xl
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgaWYg
KGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBT
dHJpbmcmIGxhYmVsKQpAQCAtMTU4MSw5ICsxNTg3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxP
YmplCiAgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdl
KSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgY29uc29sZUNvdW50SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2Nv
cGUpLCBzdGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50SW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgc3RhdGUsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQYWdlJiBwYWdlLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE1OTEsOSArMTU5OCwxMCBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0
KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYQogICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJH
bG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBT
dHJpbmcmIGxhYmVsKQogewotICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFi
ZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50UmVzZXRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBzdGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnRha2VIZWFwU25hcHNob3QoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpA
QCAtMTYwOSw5ICsxNjE3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsCiAgICAgICAgIHN0
YXJ0Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBs
YWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRD
b25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdGFydENvbnNvbGVUaW1p
bmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE2MjAsOSArMTYyOSwxMCBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoRnJh
bWUmIGZyYW1lLCBKU0M6OkpTR2xvYgogICAgICAgICBsb2dDb25zb2xlVGltaW5nSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4mJiBhcmd1bWVudHMpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omxv
Z0NvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAg
IGxvZ0NvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxT
Y29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykp
OworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KSkKKyAgICAgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV4
ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE2MzEsOSArMTY0
MSwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xl
VGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsbwogICAgICAgICBzdG9wQ29uc29sZVRpbWlu
Z0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7CiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBl
eGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxh
YmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkpCisgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgZXhlYywgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmIGZyYW1lLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMTc1Niw5ICsxNzY3LDkgQEAgaW5saW5lIEluc3Ry
dW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UKICAgICByZXR1cm4gcGFnZSA/ICZpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZSgqcGFnZSkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFs
U2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQoraW5saW5lIEluc3Ry
dW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xv
YmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKCp3b3Jr
ZXJHbG9iYWxTY29wZSkgOiBudWxscHRyOworICAgIHJldHVybiB3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSgqd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpIDogbnVsbHB0cjsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IDcwNDQ2
NDRiZmY5NTIwZWFhZTg2ZWZkNGIyYWUzOTE5MjNmYzdlZjQuLjFiYmY5NGVmYTUyMTFhZDIxNmI0
YTAwZmY2NmE5MzA3NjZhNzBiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNsYXNzIFdv
cmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIC8v
IEZJWE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVuIHJlbWFpbmluZyBh
Z2VudHMgbW92ZS4KIHN0cnVjdCBXZWJBZ2VudENvbnRleHQgOiBwdWJsaWMgSW5zcGVjdG9yOjpB
Z2VudENvbnRleHQgewpAQCAtNTcsMTMgKzU3LDEzIEBAIHN0cnVjdCBQYWdlQWdlbnRDb250ZXh0
IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7CiB9OwogCiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250
ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7Ci0gICAgV29ya2VyQWdlbnRDb250ZXh0KFdl
YkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlKQorICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAg
ICAgICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCB3b3JrZXJHbG9iYWxT
Y29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgLCB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICB7CiAgICAgfQogCi0gICAgV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIGNsYXNzIEluc3Bl
Y3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAppbmRleCA4MGM5YTEw
NWM1NGEzZTUzNzBhY2NkNmMxMmZmMDZmMmIzNDM1ZGEyLi4yMjczMWE3ZTIxYzVjNDdmZWIyMmQ5
MjU4MmRjODk4YzYxNTJkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlci5jcHAKQEAgLTM0LDE2ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJEZWJ1
Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCitXb3JrZXJE
ZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRl
eHQpCiAgICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQogICAgICwgbV93b3Jr
ZXJHbG9iYWxTY29wZShjb250ZXh0KQogewpAQCAtNjAsOCArNjEsOCBAQCB2b2lkIFdvcmtlckRl
YnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAgICAgSlND
OjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CiAKLSAgICBpZiAo
bV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29w
ZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgaWYgKGF1dG8qIHNjcmlwdENv
bnRyb2xsZXIgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICBzY3JpcHRD
b250cm9sbGVyLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95
ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CkBAIC04MCw3ICs4MSw3
IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIAogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgcmVzdWx0
ID0gbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1v
ZGUobV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgICAgIHJlc3VsdCA9IG1fd29ya2VyR2xvYmFs
U2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9k
ZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAppbmRleCAxYzQ1Njk5OWFl
ZjYyYjU0NDZhZjk3ZDY1NDY0ZjhjNTZjOWUxYWQzLi4xNDA5NGEzNjU3Y2U3NTBmZDhiYWJlZTYz
ZGI0ZmNkYWNhZmU4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdn
ZXIuaApAQCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
V29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAog
Y2xhc3MgV29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXIpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlckRlYnVnZ2VyKFdvcmtlckdsb2JhbFNjb3Bl
Jik7CisgICAgV29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAg
ICB+V29ya2VyRGVidWdnZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKIApAQCAtNTMsNyArNTMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsK
ICAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNl
cHRpb24qKSBjb25zdCBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckds
b2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2Jh
bFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDkw
ZTk4NTQ0YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5YTA2N2YuLmZlYTNkMGNiNGIyMTljOTIy
ZTIyYTZmOGU2NDdhMzFlMWY4MDcxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2LDggKzM2LDggQEAK
ICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJET01EZWJ1
Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmV0d29ya0FnZW50LmgiCisj
aW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJS
dW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCIKQEAgLTU3LDE2ICs1NywxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAotV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGlu
Z0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0
aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRS
b3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkK
ICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCi0gICAgLCBt
X2RlYnVnZ2VyKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3
b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fZGVidWdnZXIod29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRU
aHJlYWQoKSk7CisgICAgQVNTRVJUKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4
dFRocmVhZCgpKTsKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4
dCgpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwog
ICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hh
bm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckds
b2JhbFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAg
IG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5n
ZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250
ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0xNDgs
NyArMTQ4LDcgQEAgV29ya2VyQWdlbnRDb250ZXh0IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6
OndvcmtlckFnZW50Q29udGV4dCgpCiAKICAgICBXb3JrZXJBZ2VudENvbnRleHQgd29ya2VyQ29u
dGV4dCA9IHsKICAgICAgICAgd2ViQ29udGV4dCwKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29w
ZSwKKyAgICAgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwKICAgICB9OwogCiAgICAg
cmV0dXJuIHdvcmtlckNvbnRleHQ7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
PihtX3dvcmtlckdsb2JhbFNjb3BlKSkgeworICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAgICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwog
ICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdv
cmtlckNvbnRleHQpKTsKICAgICB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW5zcGVjdG9yRXZhbHVh
dGVIYW5kbGVyIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmV2YWx1YXRlSGFuZGxlcigpIGNv
bnN0CiAKIFZNJiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCiB7Ci0gICAgcmV0dXJu
IG1fd29ya2VyR2xvYmFsU2NvcGUudm0oKTsKKyAgICByZXR1cm4gbV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS52bSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRl
eCA3YTUzZDgwNGJmYmNlMGY2MmUxMTUzYzUxM2IxNzhkNzQyMzgzZWRlLi45ZmQwYjljMzU0NGVh
YjY5MzkwZDJlZDRjZTlkYmYwOTc1ZDAxNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQxLDE0ICs0MSwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFz
cyBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2Ns
YXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogc3RydWN0IFdvcmtlckFnZW50Q29udGV4
dDsKIAogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckds
b2JhbFNjb3BlJik7CisgICAgZXhwbGljaXQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0aW5nKCk7CkBAIC04MSw3ICs4
MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3
YXRjaDsKICAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdl
bnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9i
YWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWw+IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAgYm9vbCBtX2RpZENyZWF0ZUxhenlBZ2Vu
dHMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRleCBjMDI2MjExMzVjNTVlYmQ3MDZlMDQz
NTFiNWMxM2Y2MTNiZWE2NTM0Li5kMjYzMGQ1MWNmZDRkNzFjZTU4MWE5ZjY0OTVhMzE2MmY2ZDgz
MGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJv
bnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmg+CiAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQorICAgIGV4cGxpY2l0IFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAg
ICAgICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAgICB7CiAg
ICAgfQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0
TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CisgICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUu
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0TWVzc2Fn
ZVRvRGVidWdnZXIobWVzc2FnZSk7CiAgICAgfQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1f
d29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29y
a2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAppbmRleCBiYmUyY2MwM2Q2NDVmYzEyOTA4NGRiZWU5ZGQ4MDQyMmJiZDYz
ZmQ4Li5lZmZkMmJlZTBhMGE3MDliZDlhZDdhMzEyMzMyNGQwNzIxMmFiM2JkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZp
Y2VXb3JrZXJBZ2VudC5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VXb3JrZXJBZ2VudChXb3JrZXJB
Z2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlNlcnZpY2VX
b3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUp
KQorICAgICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpTZXJ2aWNlV29ya2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKLSAgICBB
U1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFk
KCkpOwogfQogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6On5TZXJ2aWNlV29ya2VyQWdlbnQoKSA9IGRl
ZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDg5MjQxOTBlZTYyMGYxNTUxNGEyNTBk
NzYyZTJiZTRhMTkzMzA2M2QuLmQ0MTY0NDg5MDc5MmFhMTk2OWY3YjcyZWJkNGZhZmQyMzA3OWZh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
V29ya2VyQXVkaXRBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC00MSw5ICs0MSw5IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1ZGl0QWdlbnQoV29y
a2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQXVkaXRBZ2VudChjb250
ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3Bl
KQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3Bl
LmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlckF1ZGl0QWdlbnQ6On5X
b3JrZXJBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwpAQCAtNTUsNyArNTUsNyBAQCBJbmplY3RlZFNj
cmlwdCBXb3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAK
LSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3Jr
ZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRp
dEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJlY2IwZWViOGVkZDczMzllYzA0NTliZDM3MmIzZC4u
ZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4MzhmZjhmY2YyZWZjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdl
bnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdv
cmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNs
YXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JB
dWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJBdWRpdEFnZW50KTsK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlv
bkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxT
Y29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xl
QWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2ODdmMDQzZWQ1NjdlM2I4ZjRiMTU4MDc2OTY2NzYu
LmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFmYmU2NjhhMWJjZGQ3MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQ29u
c29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoV29ya2VyQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFnZW50KGNvbnRleHQpCiB7Ci0gICAgQVNT
RVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFT
U0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgp
KTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFnZW50KCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3YWE3MmI2YTRjNjRjYTlmNjc4
MTUwZDA2YTMyZDAyOTRjNTA4ODI1Li42ZTY1OGZjNWRiYmZlOTYyY2NkMjYzZjUyMzIzZGU3MGQx
NmJkNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjcsNyArMjcsNyBAQAog
I2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNz
YWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTQxLDE2ICs0
MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJEZWJ1Z2dlckFnZW50
OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29u
dGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29u
dGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNv
bnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQog
CiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsK
IAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3Nh
Z2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVi
dWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0
SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpAQCAtNjAsNyArNjAsNyBAQCBJbmplY3RlZFNjcmlw
dCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJH
bG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSht
X3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmgKaW5kZXggN2NhNjRlNDAxM2E1NGI0MThkNTNlNDc0ODAyZTczMmJmMTkwOGM5
Ny4uOTk0N2Y3MTU0NTYxNGFkOTNmZjdlZmUyNWYyZTA1ODQ4Mjc4NWQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2Vy
R2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
TmV0d29ya0FnZW50LmNwcAppbmRleCA1ZGNlODI2ZjRiMTBlMGNkNDg1Yzg1OWFhMzcyOTMyYmVl
NjRiNWE5Li4xNDEwYTI3ODk0MGZkYzFjZmE1YjM2MDJhYmNjNTc2NDM3ZjdiMmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3Jr
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlck5ldHdvcmtBZ2VudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogV29ya2VyTmV0d29ya0FnZW50OjpXb3JrZXJOZXR3b3JrQWdlbnQoV29ya2Vy
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yTmV0d29ya0FnZW50KGNvbnRl
eHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUp
CisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUu
aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyTmV0d29ya0FnZW50Ojp+
V29ya2VyTmV0d29ya0FnZW50KCkgPSBkZWZhdWx0OwpAQCAtNjEsMTIgKzYxLDEyIEBAIFZlY3Rv
cjxXZWJTb2NrZXQqPiBXb3JrZXJOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMoY29uc3Qg
TG9ja0hvbGRlciYpCiAKIHZvaWQgV29ya2VyTmV0d29ya0FnZW50OjpzZXRSZXNvdXJjZUNhY2hp
bmdEaXNhYmxlZEludGVybmFsKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxT
Y29wZS50aHJlYWQoKS53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3VyY2VDYWNoaW5nRGlz
YWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CisgICAgbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdnZXJQcm94eSgpLnNl
dFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQpOwogfQogCiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6
OkZyYW1lSWQmKQogewotICAgIHJldHVybiAmbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICByZXR1
cm4gJm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKaW5kZXggZGQ4N2Q4MTAyMDJlNWIxN2RlOWNmMDdi
NzYyYjUyNWVlZTJlM2JlOC4uZDdiZWJkMGRlYTEwYWZiMDEyYjQ2YWNjNDk2NzVhMjlhOWVkNGJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6RnJhbWVJZCYpOwogICAgIGJvb2wgc2hvdWxkRm9yY2VCdWZmZXJpbmdOZXR3b3JrUmVz
b3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgV29ya2VyR2xvYmFsU2Nv
cGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBmZmZkM2NlYTIxNTM1OWZlNmYwZWQx
ZWRkNzcyZDE2YjcwOTUxZGViLi44MmFmZjA2OGY0Y2JlZDBhZWUxYmM5MmM2M2FlMTFiYjEwNmYz
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNs
dWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0j
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAKQEAg
LTQ0LDkgKzQ0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdvcmtlclJ1bnRpbWVB
Z2VudDo6V29ya2VyUnVudGltZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJH
bG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJH
bG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJSdW50
aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQoKSA9IGRlZmF1bHQ7CkBAIC01OCw3ICs1OCw3
IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7CiAgICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVj
U3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgSlND
OjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJu
IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2Yjk5OGY0ZDE3MzE4NTFmOTliNjdlZTE1
YTVkMjAwMTU4N2Y0ZDA2Li5iY2NjMmI3ZDA3MTVhMzRlN2M0NzcyMzI2ZDI0MWRhOTZjN2JlMjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV29ya2VyUnVudGltZUFnZW50KTsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVubXV0ZUNvbnNvbGUoKSB7IH0KIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRp
bWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBXb3JrZXJHbG9i
YWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCAyNzE3Yzg2MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1Li4xOGZmM2Y5NGYwNDJk
MWExZmQwM2E1MWJjMTFkNWJkMTQ2ZjMzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFJl
ZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3du
Y2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgp
KSkKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpICYmIGRv
d25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmts
ZXRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGll
bnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIFdURk1vdmUocmVmZXJyZXIpKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxw
dHI7CkBAIC0xMTgsOCArMTE4LDggQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIHZvaWQgVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgIGlmIChpczxX
b3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOworICAgIGlmIChp
czxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQs
IG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgV1RG
TW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBjb250ZXh0LmRpZExvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkocmVzb3VyY2VVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUxMTM5NmJmZDgzMzZlM2U4Njc0
YTQ5Y2I1YzgxODRiZjE1ODBhN2UuLmVmNDk0OTIyNWIyOGI1MGYzODY2YzBmN2QzNjZlMGI3OTI2
NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAg
ICAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNl
bmRpZgogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkpCi0gICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIs
IHJlcXVlc3QpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0
KGdsb2JhbFNjb3BlLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKIAogICAg
IC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRvIGNyZWF0
ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCks
IG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29w
eSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgewpAQCAtMjI2LDggKzIyNSw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
IHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8gcmVzcG9u
c2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKFdURk1vdmUocmVzcG9u
c2VEYXRhKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShkb3du
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTIzOCw4
ICsyMzYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQu
aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAg
ICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
ICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjQ5LDggKzI0Niw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJl
ZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dv
cmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2Fk
TWV0cmljcy5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVy
KTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApAQCAtMjYxLDggKzI1Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvCiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250
ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjps
b2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+aW5p
dGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWls
KGVycm9yKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
ZXJyb3IpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
KGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNkOTU5ZDRiNjNiOWZm
NTk1ZC4uYmJlODE2NDkxZTlmZjIzNTE3ODkyODQ4YTdlNjFkNzk3MjMyZTZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1p
bmF0ZSgpOwogICAgIGJvb2wgd2FzVGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVGVy
bWluYXRlZDsgfQogCi0gICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
c29sZUNsaWVudC5jcHAKaW5kZXggNzIxNTgxZjFiN2M4MTYzNDQ0MzhhZTRlY2NiYTBmOTBhMTQy
MjQ1Yi4uYTUzYWE2OTVjMWFmOGM4OWVjYzZjYmEzYTVkN2Y1YWMwMzgwNTI4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
Ci1Xb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckNvbnNvbGVDbGllbnQ6OldvcmtlckNvbnNv
bGVDbGllbnQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQog
ICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKaW5kZXggOTc3YjA3ZDU0
MTM3ODJmZjU1MDMxNzZhZjMwMWYwNjJmMzQ0ZTZkZS4uZmFhNTFmZjc0MzBmN2MxNTA2OWExZTBh
NmI1MThlYjhjMjhhNWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25z
b2xlQ2xpZW50LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxp
Y2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAg
dmlydHVhbCB+V29ya2VyQ29uc29sZUNsaWVudCgpOwogCiBwcml2YXRlOgpAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Ny
ZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiYmKSBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2Jh
bFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNj
b3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCA2MzJiODJlMjhiNzJkYTYxMzcx
YzI0ZWJmYmFmMmRkNTU5MTBkMDcxLi45M2Q2OGEzYzQ3MTVhN2M4M2VmM2JmNjRjNDk0ZTc3OGYx
Zjk4NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3Rv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKIAorI2luY2x1ZGUgIkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JB
Z2VudEJhc2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzksNiAr
NDAsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKK3N0YXRpYyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKyAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3Bl
Y3RvckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpOworfQorCiBIYXNoU2V0PFdv
cmtlckluc3BlY3RvclByb3h5Kj4mIFdvcmtlckluc3BlY3RvclByb3h5OjphbGxXb3JrZXJJbnNw
ZWN0b3JQcm94aWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXb3Jr
ZXJJbnNwZWN0b3JQcm94eSo+PiBwcm94aWVzOwpAQCAtNjIsNyArNzIsNyBAQCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0TW9kZShTY3JpcHRF
eGVjdXRpb25Db250ZQogICAgIHJldHVybiBwYXVzZU9uU3RhcnQgPyBXb3JrZXJUaHJlYWRTdGFy
dE1vZGU6OldhaXRGb3JJbnNwZWN0b3IgOiBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbDsK
IH0KIAotdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJUaHJlYWQqIHRocmVh
ZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgV29ya2VySW5zcGVj
dG9yUHJveHk6OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlclRocmVhZCk7
CiAKQEAgLTkzLDcgKzEwMyw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclRl
cm1pbmF0ZWQoKQogdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVzdW1lV29ya2VySWZQYXVz
ZWQoKQogewogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhb
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5pbmdEZWJ1Z2dlclRh
c2tzKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250
ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7
CiAgICAgfSk7CiB9CiAKQEAgLTEwNiw3ICsxMTYsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvclBy
b3h5Ojpjb25uZWN0VG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2VDaGFubmVsJiBjaGFu
bgogICAgIG1fcGFnZUNoYW5uZWwgPSAmY2hhbm5lbDsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5y
dW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5z
cGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOworICAgICAgICBpbnNwZWN0b3JD
b250cm9sbGVyKGNvbnRleHQpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0pOwogfQogCkBAIC0x
MTksMTEgKzEyOSwxMSBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpkaXNjb25uZWN0RnJv
bVdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIG1fcGFnZUNoYW5uZWwgPSBudWxscHRy
OwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtdIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZy
b250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGlu
c3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICAgICAgLy8gSW4gY2FzZSB0aGUgd29y
a2VyIGlzIHBhdXNlZCBydW5uaW5nIGRlYnVnZ2VyIHRhc2tzLCBlbnN1cmUgd2UgYnJlYWsgb3V0
IG9mCiAgICAgICAgIC8vIHRoZSBwYXVzZSBzaW5jZSB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgZGVi
dWdnZXIgdGFzayB3ZSBzZW5kIHRvIHRoZSB3b3JrZXIuCi0gICAgICAgIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3Mo
KTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
Lndvcmtlck9yV29ya2xldFRocmVhZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKICAg
ICB9KTsKIH0KIApAQCAtMTM0LDcgKzE0NCw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6
OnNlbmRNZXNzYWdlVG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0IFN0cmluZyYKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdn
ZXJUYXNrKFttZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRl
bmQobWVzc2FnZSk7CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggNWU4YTFkYzBlZDBk
OWFhNTMyYzM2NzQ2NGM4NjdmYjRmN2Y5YWE1Zi4uYmVmYzAxZDk1NzBhOGM0YThiN2RkZWU4NWVh
MTA2MThhNzdhNDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJ
bnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVj
dG9yUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyVGhyZWFkOworY2xhc3MgV29y
a2VyT3JXb3JrbGV0VGhyZWFkOwogCiBlbnVtIGNsYXNzIFdvcmtlclRocmVhZFN0YXJ0TW9kZTsK
IApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5nZXQoKTsgfQogCiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHdvcmtlclN0YXJ0
TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgdm9pZCB3b3JrZXJTdGFydGVkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWQqLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG5hbWUpOworICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoKTsKIAogICAgIHZvaWQgcmVzdW1lV29y
a2VySWZQYXVzZWQoKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgUmVmUHRyPFdv
cmtlck9yV29ya2xldFRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAgICAgU3RyaW5nIG1faWRlbnRp
ZmllcjsKICAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggNmY5YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUyYWQ1NWQyMmZhZmE3OC4uYjY0MThkMDBm
NmZiZGNmZjVhMGE2Mzc0NzliY2I3OTRmMGFkZjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTI3
LDEyICsyNywyMyBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIu
aD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKK2NsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworY2xhc3MgVk07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgSlND
OjpWTSYgdm0oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpE
ZWJ1Z2dlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1
Z2dlciopID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSGVhcEFjY2VzcygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3MoKSA9IDA7CiAKQEAgLTQwLDYgKzUx
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaW1lclNldE5vdGlmaWNhdGlv
bihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgPSAw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggMzc4MDk2MWM3OTQ5ODU3YTFlMjA1Zjhj
MzEyOTYyYzA3MGJlYWY4MS4uYTA3ZTljYWQ4OWRmZjQzM2VjNzY0OWU3ZWU1ZmZlNTU5MGJiMDg2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5o
CkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRocmVhZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBXb3JrZXJEZWJ1Z2dlclByb3h5OwogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CiBj
bGFzcyBXb3JrZXJSdW5Mb29wOwogCkBAIC00Myw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV29ya2Vy
UnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlckxvYWRlclByb3h5JiB3
b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkm
IHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJ1bm5p
bmdEZWJ1Z2dlclRhc2tzKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGIzZTcx
YzkyZGYxNjdlOTgxYTZiNTA4OWU1MWJkZjA4MzQ2ZWM3ZmMuLjg3ZGQ5OTY5YzVlOTA2ZGVlNzJj
NDQ3NzViYzJjZTZkZjVhMWE1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTAsMTYgKzUwLDE2IEBAIFdvcmtlclNjcmlwdExv
YWRlcjo6fldvcmtlclNjcmlwdExvYWRlcigpID0gZGVmYXVsdDsKIE9wdGlvbmFsPEV4Y2VwdGlv
bj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRp
b25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRv
JiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBtX3VybCA9IHVybDsK
ICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0Owog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3Bl
KTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAKICAgICBpZiAoaXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291
cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29w
ZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgeworICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3Vy
Y2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBtX3NjcmlwdC5h
cHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJM
ID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1J
TUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwpAQCAtNzIsNyArNzIsNyBAQCBPcHRp
b25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dAogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAgLy8gT25seSB1c2VkIGZvciBp
bXBvcnRTY3JpcHRzIHRoYXQgcHJlc2NyaWJlcyBOb0NvcnMgbW9kZS4KICAgICBBU1NFUlQobW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyk7CkBAIC04NywxMCArODcsMTAgQEAgT3B0
aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gbV9kZXN0aW5h
dGlvbjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgb3B0aW9ucy5zZXJ2aWNlV29y
a2Vyc01vZGUgPSBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA/IFNlcnZpY2VXb3JrZXJzTW9k
ZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsOwotICAgIGlmIChhdXRvKiBhY3RpdmVT
ZXJ2aWNlV29ya2VyID0gd29ya2VyR2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQor
ICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQogICAgICAgICBvcHRpb25zLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0
aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCi0gICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZSgqcmVxdWVz
dCksICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpy
ZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogCiAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVt
cHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdvcmtFcnJvciBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0
aGVzZSBzdGVwcy4KICAgICBpZiAoZmFpbGVkKCkpCkBAIC0xMDEsNyArMTAxLDcgQEAgT3B0aW9u
YWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBw
b3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJj
ZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQo
KSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5z
ZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwog
ICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAppbmRleCAxMjE0YjkxOWRhMzRkMzJmMmZjYWM5YTI5ODEyZjZmZDZh
ODdhMTI4Li44YjJhNjcyZjAwM2NlMTkyMjg5MjZlY2EzMjU2ZDM1OGUyZjkxODQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgog
ICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29w
OyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWwgeyBy
ZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdv
cmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlckRlYnVnZ2VyUHJveHk7
IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CiAgICAgV29ya2VyUmVwb3J0
aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJS
ZXBvcnRpbmdQcm94eTsgfQogCiAgICAgLy8gTnVtYmVyIG9mIGFjdGl2ZSB3b3JrZXIgdGhyZWFk
cy4KQEAgLTEwMyw4ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROb3RpZmljYXRpb25D
bGllbnQoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpIHsgbV9ub3RpZmljYXRpb25DbGllbnQg
PSBjbGllbnQ7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tz
KCk7Ci0gICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICB2b2lkIHN0YXJ0
UnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSdW5uaW5nRGVidWdn
ZXJUYXNrcygpIGZpbmFsOwogICAgIAogICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFn
cygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwNGYxOGM2
MzE3MjVmOGQ3NTg3NTgzOTFiY2UxZDU5MWZiNjk5MGY2Li45MTA4NGE3ZmIzZTYwYWI3OTZiYjUw
NDE4M2RkY2NiODI2YzRjMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xNTIsNiArMTUyLDE1IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorSW5zcGVjdG9yQ29udHJvbGxl
ciogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6Omluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdAor
eworICAgIGF1dG8qIGRvY3VtZW50ID0gcmVzcG9uc2libGVEb2N1bWVudCgpOworICAgIGlmICgh
ZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC0+cGFnZSgpOworICAgIHJldHVybiBwYWdlID8gJnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSA6IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApp
bmRleCAzYjcxM2RjM2Y0ZWRjMWJhNzQyZGUzYzllYWQwYjUwMGM2Zjc0MmM2Li4zNWFiZTQ4OTE5
M2RhYjg5OTk5MzE1MGM3ODAzNzZhYTM5NGQyMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDYgKzM4LDggQEAgY2xh
c3MgVk07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiAKIGNsYXNz
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CkBA
IC03Miw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICAgICAgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVw
YXJlRm9yRGVzdHJ1Y3Rpb24oKTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBSZWY8SlNDOjpWTT4mJiwgU2NyaXB0U291cmNlQ29kZSYm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRleCAzOTA4YmRmM2EyOTZjODFi
NmY0YmE4ZThlMDhlM2ZjNTgyZWU1ZTNhLi40ODc1YzdiNGRlZDQ0OTc3Yjg0YjQ4MTQ1MjRiMmFj
Mzk5N2UzYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtsZXRH
bG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTQyLDYgKzQzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtsZXQp
OwogCiBXb3JrbGV0OjpXb3JrbGV0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoIndvcmtsZXQ6IiArIEluc3Bl
Y3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuaAppbmRleCA0MTY4Njc0YzczYjI5OTA5YmE2Mjk2MjU3MjFi
MzgwNTNlMjI3YmVlLi5mZGI2NjNkN2EzNWE4NGZiNzcwZmYwMTFkODYxMmFlNGNjMjJjNGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V29ya2xldEds
b2JhbFNjb3BlUHJveHk+PiYgcHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveGllczsgfQor
ICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgV29ya2xldChEb2N1bWVudCYpOwpAQCAt
NjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKKyAgICBTdHJpbmcg
bV9pZGVudGlmaWVyOwogICAgIFZlY3RvcjxSZWY8V29ya2xldEdsb2JhbFNjb3BlUHJveHk+PiBt
X3Byb3hpZXM7CiAgICAgSGFzaFNldDxSZWZQdHI8V29ya2xldFBlbmRpbmdUYXNrcz4+IG1fcGVu
ZGluZ1Rhc2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRD
b25zb2xlQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRmNTUwZjQ0
OTkyZDllNjA0MzFlN2QyM2ZkZmIzOWQxZDBlOTNjMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29u
c29sZUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xpZW50Lmgi
Ci0KLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdEFyZ3VtZW50cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
ay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKLQotV29y
a2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmtsZXRHbG9iYWxTY29w
ZSYgd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDogbV93b3JrbGV0R2xvYmFsU2NvcGUod29ya2xl
dEdsb2JhbFNjb3BlKQotewotfQotCi1Xb3JrbGV0Q29uc29sZUNsaWVudDo6fldvcmtsZXRDb25z
b2xlQ2xpZW50KCkgPSBkZWZhdWx0OwotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNz
YWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4mJiBhcmd1bWVudHMpCi17Ci0gICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwotICAgIGFyZ3VtZW50
cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMp
LCBleGVjKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpKTsKLX0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6Y291bnQoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29s
ZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikg
eyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUxv
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgUmVmPFNjcmlwdEFyZ3VtZW50
cz4mJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci12b2lk
IFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGFrZUhlYXBT
bmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci12b2lkIFdv
cmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxT
Y3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjpyZWNv
cmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotdm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6
c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikg
eyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MmJiNDlhNWRhZmI4YWYzYzNjZDk5NjdmNmYwYmExZGMzYjU1M2E5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRDb25zb2xlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQgZmluYWwgOiBw
dWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFs
U2NvcGUmKTsKLSAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgpOwotCi1wcml2YXRl
OgotICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4mJikgZmluYWw7Ci0gICAgdm9pZCBjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBjb3VudFJlc2V0KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHByb2ZpbGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOwotICAgIHZvaWQg
cHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgZmlu
YWw7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lkIHRpbWUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGltZUxvZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0
QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVFbmQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFs
OwotICAgIHZvaWQgcmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpT
Y3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAg
IHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLQotICAgIFdvcmtsZXRHbG9iYWxTY29wZSYgbV93b3Jr
bGV0R2xvYmFsU2NvcGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA3YjNiNDIxMGY3
NGI2ZDZiNmEyNjNjZWU5YmVjMDQxYzc2NDI3OTg5Li5kYTNmYWQxNDI0Mzg4N2Q5MzcyZGQ2Njgx
MDE4ODU3NDdhMmQ1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKQEAgLTE2MywxNiArMTYzLDIzIEBAIHZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNv
bnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlm
ICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCisg
ICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xl
TWVzc2FnZVRhc2sobWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2Ut
Pm1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5z
b3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNz
YWdlKCksIDApKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCi12b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZVRleHQsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAg
aWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICBpZiAoIWlz
Q29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFz
ayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9k
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVz
dElkZW50aWZpZXIpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgU3RyaW5n
IHsgfSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdl
KSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBj
b2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTIxNiw4
ICsyMjMsOSBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3JpcHRGZXRj
aEpvYklmTmVlZGVkKCkKICAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGZldGNoT3B0aW9ucyksIGNvbnRlbnRTZWN1
cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMpOwog
fQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVNjcmlwdFJlc3BvbnNlKHRoaXMsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQpAQCAtMjMzLDYgKzI0MSw4IEBAIHZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgVVJMIG1vZHVsZVVSTChtX3Njcmlw
dExvYWRlci0+cmVzcG9uc2VVUkwoKSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2V2YWx1YXRl
ZE1vZHVsZXMuYWRkKG1vZHVsZVVSTCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMs
IG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7
CisKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAg
bV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlw
dCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNlcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXgg
M2E0ZjRlNzM3OWNkYmYxMTkxNzJhODI2ZTlkM2EwMjg3ZmIyMTNkOC4uOTgzNmNmMGEwMzU4MWJl
ODI2M2I1NTBkODQyNjMxOTMxM2ZmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0UGFyYW1ldGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGlt
ZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCkBAIC0zNCwxMyArMzUsMTUgQEAgc3Ry
dWN0IFdvcmtsZXRQYXJhbWV0ZXJzIHsKICAgICBVUkwgd2luZG93VVJMOwogICAgIEpTQzo6UnVu
dGltZUZsYWdzIGpzUnVudGltZUZsYWdzOwogICAgIGZsb2F0IHNhbXBsZVJhdGU7CisgICAgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlz
b2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAg
d2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0g
ICAgICAgICAgICBzYW1wbGVSYXRlCisgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAg
ICAgc3RhcnRNb2RlCiAgICAgICAgIH07CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxN2RmNWUxZjNj
ZjA2NTcxNGJjZWY3NWVkODVmY2FkNTM4ZjZlODBhLi4yM2I0NjAzNjY4M2Y5NTJkNDUwMTUzYmEx
Y2UyMGUzNWZjZmZjYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSlNQ
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSAiV29ya2xldENvbnNv
bGVDbGllbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50LmgiCiAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVmZXJyZWRXb3JrVGltZXIuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBt
X2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmts
ZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25z
b2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKQEAgLTI2Nyw0ICsyNjcsMjAg
QEAgYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigp
IGNvbnN0CiAgICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsKIH0KIAordm9pZCBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVi
dWdnZXIpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgZGVidWdnZXItPmF0dGFj
aChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworfQorCit2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikK
K3sKKyAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKK30KKworSlND
OjpKU0dsb2JhbE9iamVjdCogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNjb3BlV3Jh
cHBlcigpCit7CisgICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmQ0M2NlNWY5ZmZkMmE3MGFmMGJmNmU1YWVl
NTRjZDhmYWM3MmYyZS4uZjVkNGIwNzM3YmE0NGEwZGUwYzFkZDY2NTM0NTczZGM4NjVhOTUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oCkBAIC00MSw5ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNXb3Jr
bGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgV29ya2xldENv
bnNvbGVDbGllbnQ7CitjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50OwogY2xhc3MgV29ya2xldEds
b2JhbFNjb3BlOwotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CiAKIC8vIEZJWE1FOiBXZSBz
aG91bGQgc2hhcmUgbW9yZSBjb2RlIHdpdGggV29ya2VyU2NyaXB0Q29udHJvbGxlci4KIGNsYXNz
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIDogcHVibGljIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIgewpAQCAtNTksNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CiAgICAgfQogCisgICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCk7CisKICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlv
bigpOwogICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKIApAQCAtNzksNyAr
ODAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24q
KTsKIAotICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KKyAgICBKU0M6OlZNJiB2
bSgpIGZpbmFsIHsgcmV0dXJuICptX3ZtOyB9CisKKyAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpT
Qzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdn
ZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCkBA
IC05NSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbiB7
IGZhbHNlIH07CiAgICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07CiAgICAgV29ya2xldEdsb2JhbFNj
b3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldENv
bnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2Vy
Q29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwogICAgIEpTQzo6U3Ryb25nPEpTV29ya2xl
dEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXI7CiAgICAgbXV0YWJsZSBM
b2NrIG1fc2NoZWR1bGVkVGVybWluYXRpb25Mb2NrOwogICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411361</attachid>
            <date>2020-10-14 12:18:28 -0700</date>
            <delta_ts>2020-10-14 12:19:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201014121827.patch</filename>
            <type>text/plain</type>
            <size>108219</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5YWZjNGU0MGRmOWFl
YzRlNzMxOTA0Y2MyOTk5NzQzYzA4NGFiMC4uMDBmYjM1NTYxNTA0NWJiMDg2YTEzMzdmMGJiMjlh
N2QzYjMxYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMC0xMC0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0cyB0byBXZWJJbnNwZWN0b3IsIHNpbWlsYXJseSB0
byBXZWIgV29ya2Vycy4gVGhpcyBiYXNpY2FsbHkgcG9ydHMKKyAgICAgICAgV2ViSW5zcGVjdG9y
IGNvZGUgdG8gdXNlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIGluc3RlYWQgb2YgV29ya2Vy
R2xvYmFsU2NvcGUKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgY29kZSBm
b3Igd29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
OjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
QnlXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6Ondvcmts
ZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJE
ZWJ1Z2dlclByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVh
ZDo6c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRUaHJlYWQ6OnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY1N0YXRl
RnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFs
U2NvcGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQWdlbnRD
b250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVi
dWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRldGFjaERlYnVnZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBh
dXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6d29y
a2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hh
bm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VX
b3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVk
aXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFnZW50OjpXb3JrZXJB
dWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
QXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNv
bnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdlbnQ6Oldv
cmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFn
ZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5l
dHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Oldv
cmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1h
aW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29ya2VyQ29uc29sZUNs
aWVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50Lmg6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclBy
b3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclBy
b3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5
OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmts
ZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAgICAgICogd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3Jr
bGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OldvcmtsZXQpOgorICAgICAgICAq
IHdvcmtsZXRzL1dvcmtsZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OmlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIp
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisKIDIwMjAt
MTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBK
UyBhcmd1bWVudHMgaW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKCkgZm9yIHBlcmZv
cm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGViYjg0MzBjMTYwZGRkYzNmOWVkOGJk
ZWFhMzE0OTVjZGRkYWE3NDIuLmNmNjUzODk1MWQyMDliZDk5OWYwZjNmNWZmMzkyMjAxYzM4ZDkz
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk7CiBBdWRpb1dvcmtsZXRH
bG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhyZWFkJiB0
aHJlYWQsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogV29ya2xl
dEdsb2JhbFNjb3BlKHRocmVhZCwgcGFyYW1ldGVycykKICAgICAsIG1fc2FtcGxlUmF0ZShwYXJh
bWV0ZXJzLnNhbXBsZVJhdGUpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiB9CkBAIC0xNDgsNiArMTQ5LDggQEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKICAgICAgICAgZGVmYXVsdFRhc2tHcm91
cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwogICAgIHN0b3BBY3RpdmVET01PYmplY3RzKCk7
CiAKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPndvcmtlclRlcm1pbmF0aW5nKCk7CisKICAg
ICBtX3Byb2Nlc3NvckNvbnN0cnVjdG9yTWFwLmNsZWFyKCk7CiAKICAgICAvLyBFdmVudCBsaXN0
ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxv
bmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmgKaW5kZXggM2U2MTc1ZDFhZTQzOWVmOGMyNmQzNmZhODVkNDQ4YTJjNDU5Yjk2OC4uYjlh
MjU4NjUwZWUzZDFiNmExYWFkNzMyOTBjNTBjMmI3MTRlMjdjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAiQXVk
aW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDggQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKICAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcyhzaXplX3QgY3VycmVudEZyYW1lKTsKIAorICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250
cm9sbGVyOyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9X
b3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIApAQCAtODAsNiArODMs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcj4+IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXA7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+IG1fcGVu
ZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CiAgICAgT3B0aW9uYWw8SlNDOjpKU0xvY2tI
b2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmluZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzA2MTNl
OTgwNDBhNjAyMDNkYzc3ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2MjQ1NmY4
ZWQ0Mzg2ZDFhNDNmYTJkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcs
MzYgKzM3LDQzIEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgog
I2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdU
YXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRp
YyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xl
dCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAg
IGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1l
RmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7Cisg
ICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5Lndvcmtl
clN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAg
IGRvY3VtZW50LT51cmwoKSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgIHdvcmts
ZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkg
OiAwLjBmCisgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29u
dGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAgICB9Owog
fQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFrUHRyKHdv
cmtsZXQpKQogICAgICwgbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAgICwgbV93
b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdv
cmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVu
aXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQorICAgICwg
bV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0
ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsK
KyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1lbnQoKSwg
bV93b3JrbGV0VGhyZWFkLnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQogCiBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkKIHsK
KyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93b3JrbGV0
VGhyZWFkLT5zdG9wKCk7CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2b2lkKEF1
ZGlvV29ya2wKICAgICB9KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9pbnNwZWN0
b3JQcm94eS0+c2VuZE1lc3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICB9
KTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBvc3RUYXNr
VG9Mb2FkZXIoW2Rpc2FibGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5z
ZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICB9
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGViNzUwNGU2
NDY4ZDA4YWY1NGUwMjU5YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEwNTdkNGM3
M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlUHJveHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJv
eHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0
KQogICAgIHsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tU
b0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAgICAvLyBX
b3JrZXJEZWJ1Z2dlclByb3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3Rvcihib29sKSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHI8QXVk
aW9Xb3JrbGV0PiBtX3dvcmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsK
ICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYWI3
MDIxMWVhMzBiZDY4MDg1YjNhNDJiZDc5NjEwMGJjOTI1MjIxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAt
MTMxLDYgKzEzMSwxNCBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCgp
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9kZSA9PSBX
b3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAgc3RhcnRS
dW5uaW5nRGVidWdnZXJUYXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNv
bWVob3cgdGVybWluYXRlZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgorICAg
ICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlwdENvbnRy
b2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9vcCgpOwog
CiAjaWYgVVNFKEdMSUIpCkBAIC0xNzYsNiArMTg0LDI3IEBAIFdvcmtlckxvYWRlclByb3h5JiBB
dWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNz
YWdpbmdQcm94eTsKIH0KIAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFk
Ojp3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQ
cm94eTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2Vy
VGFza3MoKQoreworICAgIEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAgbV9wYXVz
ZWRGb3JEZWJ1Z2dlciA9IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3Vs
dDsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9k
ZSgqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdl
UXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lkIEF1ZGlv
V29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBtX3BhdXNl
ZEZvckRlYnVnZ2VyID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgwMjI5MmNi
MzQzODE0ZDkxMGMyYmVhN2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgyYTdmMjhm
Y2NlMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dl
clRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5h
bDsKKwogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5Mb29wJiBy
dW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0K
KyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBXb3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRy
PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAgICBMb2Nr
IG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJvb2wgbV9w
YXVzZWRGb3JEZWJ1Z2dlciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGRmMjMwYzJhYzBhODE5NDVjMTZmZTFiYWRjYjllZGZiNmZhYzM3
N2MuLjFjNzdiNmU3ZTA2OTg5ZDVjNDJjOTA2NDViNmM2ZmJiNmY1ODg5MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNTg3LDcgKzI1ODcsNiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3Bw
CiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZjE1MTc1NWMxOGVj
ZDkzZmU1YWM1OGVkODg2YTZiY2MyOTM4ODEyLi5hMWNmZjc4N2Y2YWM2ZThlNzkxOWQyOTkwMjdj
OWE5NjM1YTJjNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ3LDcgKzEzNDcsNiBAQAogCQk0QjZFODc2OTIxNzZENjky
MDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBD
NTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50
SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25z
b2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLzsg
fTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1QjAwQjJG
QTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENCMjE5MEVCRDYwMEMwQUI2NCAv
KiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAqLzsgfTsK
IAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRkQwQ0Uy
MTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5oICovOyB9OwpAQCAt
ODIyNCw4ICs4MjIzLDYgQEAKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVw
bGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVw
bGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFp
bnRJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNF
MDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21QYWludEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI3RjlDNTEy
MTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtsZXRDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
N0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENBMjE5MEVCRDYwMEMwQUI2
NCAvKiBDU1NQYWludFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRTaXplLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENEMjE5MEVCRTkwMEMwQUI2NCAvKiBDU1NQ
YWludFNpemUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENTU1BhaW50U2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTgwNiw4ICsxOTgwMyw2IEBACiAJCQkJNEJERUEzMjMyMTdFQzk2QTAwNTJE
RkNEIC8qIFdvcmtsZXQuY3BwICovLAogCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAvKiBX
b3JrbGV0LmggKi8sCiAJCQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRs
ICovLAotCQkJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVu
dC5jcHAgKi8sCi0JCQkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xl
Q2xpZW50LmggKi8sCiAJCQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAgKi8sCiAJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRH
bG9iYWxTY29wZS5oICovLAogCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovLApAQCAtMzQ3NjgsNyArMzQ3NjMsNiBAQAogCQkJCUE1NEEwQzY4
MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QkRFQTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25z
b2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0Qg
LyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgxODI1MjRE
NEY1MDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQUNEMDEzMjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXgg
ODU1MGFkOGE0YmQ4NGIyNjliNDY4NDQ4ZjE1OTEzNjdhYzIwMDlhOC4uZjllNWVkOGNiMzM2ODI3
MTRlYmQ3ZDg1MTIxYjk0ZjQ5OTYyMjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29y
a2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIK
QEAgLTk4LDE4ICs5OCwxMSBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tUGFn
ZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiBwYWdlID8g
cGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6IG51bGxwdHI7
CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjU3RhdGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIHJldHVy
biB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7
CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNj
b3BlV3JhcHBlcigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEds
b2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQotewotICAg
IGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0R2xvYmFs
U2NvcGVXcmFwcGVyKCk7Ci19Ci0jZW5kaWYKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmgKaW5kZXggMDRmMWJhNGUzMGRlNDEwMDMzZmU3NDM0ZjFkODk4NTg4Njc1
MjExZC4uYTUyODExM2ExZjdhZWE2ZjZiOWRkMzRmZGIxNjkwNTc2ZTgwNDAwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC00NCwxMCArNDQsNyBAQCBjbGFz
cyBGcmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOwotI2VuZGlmCitjbGFzcyBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpK
U0dsb2JhbE9iamVjdCopOwpAQCAtNTcsOSArNTQsNiBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBt
YWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0
YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwogV0VCQ09SRV9FWFBPUlQgSlND
OjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkJiwgUGFn
ZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlckdsb2JhbFNjb3BlJik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCi1KU0M6
OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRH
bG9iYWxTY29wZSYpOwotI2VuZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9t
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3MTZiMWE2OWI4ZWVjMWRh
NjQ3MjAxYTQzMjY5MmIzMzg5N2ViNzhlLi5iNDZkOGE3ZWQ5MWI5ZjM4NjkzODBhMjc1YzA5NzA2
ZGE3MzQyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjc5LDQgKzI3OSw5IEBAIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAg
ICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwgSlND
OjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0KIAorSlNDOjpKU0ds
b2JhbE9iamVjdCogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFwcGVyKCkK
K3sKKyAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlMzkwMTgwZjU3MWY5ZTFlMzViYzkyM2IxZDc3MWQ0
Yjk1Y2VkYTQ0Li42Mjg3ZmIxNTdkZGIzM2I1N2Y1ZTY3NzE3ZWU0MGYxMTIxYjc5ZTRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpOwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbFNjb3BlV3JhcHBlcigpIGZpbmFsOworCiAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxs
cHRyKTsKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVybmVkRXhj
ZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogCkBAIC03OCw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2b2lk
IGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICBK
U0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisgICAgSlNDOjpWTSYgdm0oKSBmaW5hbCB7
IHJldHVybiAqbV92bTsgfQogICAgIAogICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3MoKSBmaW5h
bDsKICAgICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgZmluYWw7CkBAIC04Niw4ICs4OCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5Mb29w
VGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
VGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRp
b25DYWxsYmFjaykgZmluYWw7CiAKLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdn
ZXIqKTsKLSAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKyAgICB2b2lk
IGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERl
YnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRT
Y3JpcHRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKaW5kZXggNTJjNzhmNjFmNDBlZGVjNmY2NGYyODJhZmE3ZDE1ZGMyMzNmZTBlNy4u
NTZlODQxOTMxNzdlM2M3NTJhMWFhZThjY2U2NmFmMmIzZjNlODI2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDgxLDEyICs0ODEsOCBA
QCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiB7CiAgICAgaWYgKGlzPERv
Y3VtZW50PigqdGhpcykpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgpOwotICAgIGlmIChpczxX
b3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAg
IHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0o
KTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0
aGlzKS5zY3JpcHQoKS0+dm0oKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGNvbW1vblZNKCk7CkBAIC01MzIsMTIgKzUyOCw4IEBAIEpTQzo6SlNHbG9i
YWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgICAgIHJl
dHVybiBmcmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29w
ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFCTEUoQ1NTX1BB
SU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAg
ICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
PigqdGhpcykpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IDFkNjVhNDUyNzU5ZmQwMjUzMjIzMmZmZmJmYjcwMzc2ZjBhZmVm
OTAuLjcyMDFmNDc4ZjI3MmM2ZDc3MDMyYmM3YzRhOWMyZjhkZmNjMzQ5ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ29tcHV0ZWRFZmZl
Y3RUaW1pbmcuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNp
bmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VIZWFwQWdlbnQuaCIK
ICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC03Myw2ICs3NSw4IEBA
CiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgpAQCAtMTMyMCw5ICsxMzI0LDIwIEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJMYXllckRl
c3Ryb3llZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1lbnRpbmdBZ2Vu
dHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUuaW5z
cGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyNpZiBFTkFCTEUoV0VC
X0FVRElPKQorICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5pbnNwZWN0b3JDb250cm9sbGVy
KCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLnB0cigpOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19Q
QUlOVElOR19BUEkpCisgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPih3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBkb3duY2FzdDxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUpLmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLmluc3BlY3RvckNvbnRy
b2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CiB9CiAKIEluc3RydW1lbnRpbmdB
Z2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UoUGFnZSYgcGFnZSkKQEAgLTEzMzUsOCArMTM1MCw4IEBAIEluc3RydW1lbnRpbmdBZ2VudHMq
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQo
U2NyCiB7CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdl
KCkpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJl
dHVybiAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
NWFkNzllMGQxNmE5NTMyYjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZS4uZDBlODBlNjIxY2M1MWFm
NDNkZGM4MTkwNmJmYTY4Zjc5MWU0YjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNyArOTksNyBAQCBjbGFz
cyBTaGFkb3dSb290OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xh
c3MgV2ViS2l0TmFtZWRGbG93OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdM
UHJvZ3JhbTsKQEAgLTIwMSwxMSArMjAxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3Rh
dGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRp
bmcoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVx
dWVzdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9h
ZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gU29tZSBuZXR3b3JrIHJlcXVlc3Rz
IGRvIG5vdCBnbyB0aHJvdWdoIHRoZSBub3JtYWwgbmV0d29yayBsb2FkaW5nIHBhdGguCiAgICAg
Ly8gVGhlc2UgbmV0d29yayByZXF1ZXN0cyBoYXZlIHRvIGlzc3VlIHRoZWlyIG93biB3aWxsU2Vu
ZFJlcXVlc3QgLyBkaWRSZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5pc2hMb2FkaW5nIC8gZGlkRmFp
bExvYWRpbmcKQEAgLTI0MywyMCArMjQzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
V29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4pOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4pOwogCiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNv
dW50KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsK
ICAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRSZXNldChQYWdlJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3Vu
dFJlc2V0KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
bGFiZWwpOwogCiAgICAgc3RhdGljIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChGcmFtZSYsIGNvbnN0
IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFt
ZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0
aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRD
b25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVU
aW1pbmcoRnJhbWUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
UmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dD
b25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7Cisg
ICAgc3RhdGljIHZvaWQgbG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGlt
aW5nKEZyYW1lJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwot
ICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lk
IHN0b3BDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNv
bGVUaW1lU3RhbXAoRnJhbWUmLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwog
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQ
YWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTMy
LDcgKzUzMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYpOwogCiAgICAg
c3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBh
Z2UmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiAgICAgc3RhdGljIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFt
ZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yRnJhbWUoY29uc3QgRnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1l
bnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsK
LSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOwogfTsKIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUm
IGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1MCwxMCArMTA1MCwxMSBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbgogICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxT
ZW5kUmVxdWVzdChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50
aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICBpZiAo
YXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAg
IHdpbGxTZW5kUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51
bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKIH0KIAogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RPZlR5cGUoRnJhbWUqIGZy
YW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9hZFR5cGUpCkBAIC0xMDc1LDkgKzEw
NzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZShGcmFtZSYgZnJhbWUsIHUKICAgICAgICAgZGlkUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIs
IHJlc3BvbnNlLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlc3BvbnNlLCBudWxs
cHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkpCisgICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOwogfQog
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRh
YmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwOTQsMTAgKzEwOTYs
MTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcKICAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVj
ZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgp
OworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KSkKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVu
dGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyKQpAQCAtMTEwNywxMCArMTExMCwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYQogICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
aWRlbnRpZmllciwgbG9hZGVyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIHJlc291cmNlTG9hZGVyKTsK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7
Ci0gICAgZGlkRmluaXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgbmV0d29y
a0xvYWRNZXRyaWNzLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJp
Y3MsIG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEx
MTksOSArMTEyMywxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogICAgICAgICBkaWRGYWls
TG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZXJy
b3IpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxM
b2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGRpZEZhaWxMb2FkaW5n
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFs
U2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRyLCBlcnJvcik7CisgICAgaWYgKGF1dG8qIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBkaWRGYWlsTG9h
ZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxwdHIsIGVycm9y
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFm
dGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSYgZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCkBAIC0xNTcxLDkgKzE1NzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5pcXUKICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdl
KSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNz
YWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9D
b25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2Up
CiB7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdlKSk7Cisg
ICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQor
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU4MSw5ICsxNTg3LDEwIEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNH
bG9iYWxPYmplCiAgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgY29uc29sZUNv
dW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xv
YmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50SW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQYWdlJiBwYWdlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE1OTEsOSArMTU5
OCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3Vu
dFJlc2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYQogICAgIGNvbnNvbGVDb3VudFJlc2V0SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0
ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50UmVzZXRJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBzdGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnRha2VIZWFwU25hcHNob3QoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQpAQCAtMTYwOSw5ICsxNjE3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsCiAgICAg
ICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBl
eGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdGFydENvbnNv
bGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHN0YXJ0Q29uc29sZVRpbWlu
Z0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFt
ZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE2MjAsOSArMTYyOSwx
MCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1p
bmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYgogICAgICAgICBsb2dDb25zb2xlVGltaW5nSW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRp
bWluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJiBhcmd1bWVudHMpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQog
ewotICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJH
bG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3Vt
ZW50cykpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKSkKKyAgICAgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE2MzEs
OSArMTY0MSwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BD
b25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsbwogICAgICAgICBzdG9wQ29uc29s
ZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7CiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1p
bmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4
ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkpCisgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgZXhlYywgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmIGZyYW1lLCBSZWY8SW5zcGVjdG9yOjpT
Y3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMTc1Niw5ICsxNzY3LDkgQEAgaW5saW5l
IEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UKICAgICByZXR1cm4gcGFnZSA/ICZpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZSgqcGFnZSkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50
cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQoraW5saW5l
IEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29y
a2VyR2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3Bl
KCp3b3JrZXJHbG9iYWxTY29wZSkgOiBudWxscHRyOworICAgIHJldHVybiB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSgqd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpIDogbnVsbHB0cjsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4
IDcwNDQ2NDRiZmY5NTIwZWFhZTg2ZWZkNGIyYWUzOTE5MjNmYzdlZjQuLjFiYmY5NGVmYTUyMTFh
ZDIxNmI0YTAwZmY2NmE5MzA3NjZhNzBiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNs
YXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7
CiAKIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVuIHJlbWFp
bmluZyBhZ2VudHMgbW92ZS4KIHN0cnVjdCBXZWJBZ2VudENvbnRleHQgOiBwdWJsaWMgSW5zcGVj
dG9yOjpBZ2VudENvbnRleHQgewpAQCAtNTcsMTMgKzU3LDEzIEBAIHN0cnVjdCBQYWdlQWdlbnRD
b250ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7CiB9OwogCiBzdHJ1Y3QgV29ya2VyQWdl
bnRDb250ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7Ci0gICAgV29ya2VyQWdlbnRDb250
ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlKQorICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQmIGNvbnRl
eHQsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSkKICAgICAgICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCB3b3JrZXJH
bG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgLCB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICB7CiAgICAgfQogCi0g
ICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIGNsYXNz
IEluc3BlY3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAppbmRleCA4
MGM5YTEwNWM1NGEzZTUzNzBhY2NkNmMxMmZmMDZmMmIzNDM1ZGEyLi4yMjczMWE3ZTIxYzVjNDdm
ZWIyMmQ5MjU4MmRjODk4YzYxNTJkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5jcHAKQEAgLTM0LDE2ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3Jr
ZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCitX
b3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IGNvbnRleHQpCiAgICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQogICAgICwg
bV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KQogewpAQCAtNjAsOCArNjEsOCBAQCB2b2lkIFdv
cmtlckRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAg
ICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CiAKLSAg
ICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgbV93b3JrZXJHbG9i
YWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgaWYgKGF1dG8qIHNj
cmlwdENvbnRyb2xsZXIgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICBz
Y3JpcHRDb250cm9sbGVyLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlzQmVpbmdE
ZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CkBAIC04MCw3
ICs4MSw3IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkK
IAogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAg
cmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1
Z2dlck1vZGUobV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgICAgIHJlc3VsdCA9IG1fd29ya2Vy
R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5JbkRlYnVn
Z2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVz
c2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAppbmRleCAxYzQ1
Njk5OWFlZjYyYjU0NDZhZjk3ZDY1NDY0ZjhjNTZjOWUxYWQzLi4xNDA5NGEzNjU3Y2U3NTBmZDhi
YWJlZTYzZGI0ZmNkYWNhZmU4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXIuaApAQCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZTsKIAogY2xhc3MgV29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXIpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlckRlYnVnZ2VyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CisgICAgV29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
KTsKICAgICB+V29ya2VyRGVidWdnZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKIApAQCAtNTMs
NyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBm
aW5hbDsKICAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dv
cmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtl
ckdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDkwZTk4NTQ0YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5YTA2N2YuLmZlYTNkMGNiNGIy
MTljOTIyZTIyYTZmOGU2NDdhMzFlMWY4MDcxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2LDggKzM2
LDggQEAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJE
T01EZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5oIgotI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmV0d29ya0FnZW50
LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
ICJXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCIKQEAgLTU3LDE2ICs1NywxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAotV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJv
bnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJl
ZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCi0g
ICAgLCBtX2RlYnVnZ2VyKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJHbG9iYWxT
Y29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fZGVidWdnZXIod29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS5pc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlz
Q29udGV4dFRocmVhZCgpKTsKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50
Q29udGV4dCgpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNl
dCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJk
aW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dv
cmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxX
b3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
OwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hh
bm5lbC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZt
X2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBA
IC0xNDgsNyArMTQ4LDcgQEAgV29ya2VyQWdlbnRDb250ZXh0IFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OndvcmtlckFnZW50Q29udGV4dCgpCiAKICAgICBXb3JrZXJBZ2VudENvbnRleHQgd29y
a2VyQ29udGV4dCA9IHsKICAgICAgICAgd2ViQ29udGV4dCwKLSAgICAgICAgbV93b3JrZXJHbG9i
YWxTY29wZSwKKyAgICAgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwKICAgICB9Owog
CiAgICAgcmV0dXJuIHdvcmtlckNvbnRleHQ7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgeworICAgIGlmIChpczxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAgICAgIG1f
YWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4
dCkpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKICAgICB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW5zcGVjdG9y
RXZhbHVhdGVIYW5kbGVyIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmV2YWx1YXRlSGFuZGxl
cigpIGNvbnN0CiAKIFZNJiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCiB7Ci0gICAg
cmV0dXJuIG1fd29ya2VyR2xvYmFsU2NvcGUudm0oKTsKKyAgICByZXR1cm4gbV93b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS52bSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCA3YTUzZDgwNGJmYmNlMGY2MmUxMTUzYzUxM2IxNzhkNzQyMzgzZWRlLi45ZmQwYjlj
MzU0NGVhYjY5MzkwZDJlZDRjZTlkYmYwOTc1ZDAxNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQxLDE0ICs0
MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiBjbGFzcyBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogc3RydWN0IFdvcmtlckFnZW50
Q29udGV4dDsKIAogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdv
cmtlckdsb2JhbFNjb3BlJik7CisgICAgZXhwbGljaXQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0aW5nKCk7CkBAIC04
MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlv
blN0b3B3YXRjaDsKICAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rv
cjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3Jr
ZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWw+IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAgYm9vbCBtX2RpZENyZWF0ZUxh
enlBZ2VudHMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRleCBjMDI2MjExMzVjNTVlYmQ3
MDZlMDQzNTFiNWMxM2Y2MTNiZWE2NTM0Li5kMjYzMGQ1MWNmZDRkNzFjZTU4MWE5ZjY0OTVhMzE2
MmY2ZDgzMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9Q
YWdlRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmg+CiAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsIGZpbmFsIDogcHVibGljIEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorICAgIGV4cGxpY2l0IFdvcmtlclRvUGFnZUZy
b250ZW5kQ2hhbm5lbChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUpCiAgICAgICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAg
ICB7CiAgICAgfQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAgICAgewot
ICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckRlYnVnZ2VyUHJveHko
KS5wb3N0TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CisgICAgICAgIG1fd29ya2VyR2xvYmFs
U2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0
TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CiAgICAgfQogCi0gICAgV29ya2VyR2xvYmFsU2Nv
cGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29y
a2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2Vy
dmljZVdvcmtlckFnZW50LmNwcAppbmRleCBiYmUyY2MwM2Q2NDVmYzEyOTA4NGRiZWU5ZGQ4MDQy
MmJiZDYzZmQ4Li5lZmZkMmJlZTBhMGE3MDliZDlhZDdhMzEyMzMyNGQwNzIxMmFiM2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29y
a2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VXb3JrZXJBZ2VudChX
b3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlNl
cnZpY2VXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2VyR2xvYmFs
U2NvcGUpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpTZXJ2aWNlV29ya2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
LSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7
CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0
VGhyZWFkKCkpOwogfQogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6On5TZXJ2aWNlV29ya2VyQWdlbnQo
KSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDg5MjQxOTBlZTYyMGYxNTUx
NGEyNTBkNzYyZTJiZTRhMTkzMzA2M2QuLmQ0MTY0NDg5MDc5MmFhMTk2OWY3YjcyZWJkNGZhZmQy
MzA3OWZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5j
bHVkZSAiV29ya2VyQXVkaXRBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC00MSw5ICs0MSw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1ZGl0QWdl
bnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQXVkaXRBZ2Vu
dChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2Jh
bFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlckF1ZGl0QWdl
bnQ6On5Xb3JrZXJBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwpAQCAtNTUsNyArNTUsNyBAQCBJbmpl
Y3RlZFNjcmlwdCBXb3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAg
ICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZy
b21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJB
dWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJlY2IwZWViOGVkZDczMzllYzA0NTliZDM3
MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4MzhmZjhmY2YyZWZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1
ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7
CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJBdWRpdEFn
ZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29s
OjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJH
bG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJD
b25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2ODdmMDQzZWQ1NjdlM2I4ZjRiMTU4MDc2
OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFmYmU2NjhhMWJjZGQ3MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoV29ya2VyQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFnZW50KGNvbnRleHQpCiB7Ci0g
ICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRo
cmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFnZW50KCkg
PSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3YWE3MmI2YTRjNjRj
YTlmNjc4MTUwZDA2YTMyZDAyOTRjNTA4ODI1Li42ZTY1OGZjNWRiYmZlOTYyY2NkMjYzZjUyMzIz
ZGU3MGQxNmJkNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKIAogI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNv
bGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTQx
LDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2Nv
cGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICBBU1NF
UlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNT
RVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkp
OwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgpID0gZGVm
YXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29s
ZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRD
YWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQgV29y
a2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25D
b250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpAQCAtNjAsNyArNjAsNyBAQCBJbmplY3Rl
ZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9
CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21X
b3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggN2NhNjRlNDAxM2E1NGI0MThkNTNlNDc0ODAyZTczMmJm
MTkwOGM5Ny4uOTk0N2Y3MTU0NTYxNGFkOTNmZjdlZmUyNWYyZTA1ODQ4Mjc4NWQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiAgICAgSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1f
d29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJO
ZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyTmV0d29ya0FnZW50LmNwcAppbmRleCA1ZGNlODI2ZjRiMTBlMGNkNDg1Yzg1OWFhMzcy
OTMyYmVlNjRiNWE5Li4xNDEwYTI3ODk0MGZkYzFjZmE1YjM2MDJhYmNjNTc2NDM3ZjdiMmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJO
ZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogV29ya2VyTmV0d29ya0FnZW50OjpXb3JrZXJOZXR3b3JrQWdlbnQo
V29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yTmV0d29ya0FnZW50
KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFs
U2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFs
U2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyTmV0d29ya0Fn
ZW50Ojp+V29ya2VyTmV0d29ya0FnZW50KCkgPSBkZWZhdWx0OwpAQCAtNjEsMTIgKzYxLDEyIEBA
IFZlY3RvcjxXZWJTb2NrZXQqPiBXb3JrZXJOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMo
Y29uc3QgTG9ja0hvbGRlciYpCiAKIHZvaWQgV29ya2VyTmV0d29ya0FnZW50OjpzZXRSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgbV93b3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CisgICAgbV93b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdnZXJQcm94
eSgpLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQpOwog
fQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgUHJvdG9jb2w6Ok5l
dHdvcms6OkZyYW1lSWQmKQogewotICAgIHJldHVybiAmbV93b3JrZXJHbG9iYWxTY29wZTsKKyAg
ICByZXR1cm4gJm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKaW5kZXggZGQ4N2Q4MTAyMDJlNWIxN2Rl
OWNmMDdiNzYyYjUyNWVlZTJlM2JlOC4uZDdiZWJkMGRlYTEwYWZiMDEyYjQ2YWNjNDk2NzVhMjlh
OWVkNGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0
ZToKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6RnJhbWVJZCYpOwogICAgIGJvb2wgc2hvdWxkRm9yY2VCdWZmZXJpbmdOZXR3
b3JrUmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgV29ya2VyR2xv
YmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBmZmZkM2NlYTIxNTM1OWZl
NmYwZWQxZWRkNzcyZDE2YjcwOTUxZGViLi44MmFmZjA2OGY0Y2JlZDBhZWUxYmM5MmM2M2FlMTFi
YjEwNmYzNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+
CiAKQEAgLTQ0LDkgKzQ0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdvcmtlclJ1
bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53
b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29u
dGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53
b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQu
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3Jr
ZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQoKSA9IGRlZmF1bHQ7CkBAIC01OCw3
ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAgICAgcmV0dXJuIEluamVjdGVk
U2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUg
PSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSk7Cisg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAg
cmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0
YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2Yjk5OGY0ZDE3MzE4NTFmOTli
NjdlZTE1YTVkMjAwMTU4N2Y0ZDA2Li5iY2NjMmI3ZDA3MTVhMzRlN2M0NzcyMzI2ZDI0MWRhOTZj
N2JlMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV29ya2VyUnVudGltZUFnZW50KTsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSB7IH0KIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCAyNzE3Yzg2MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1Li4xOGZmM2Y5
NGYwNDJkMWExZmQwM2E1MWJjMTFkNWJkMTQ2ZjMzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAKIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xp
ZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAm
JiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRo
cmVhZCgpKSkKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
ICYmIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJP
cldvcmtsZXRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQp
LCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMsIFdURk1vdmUocmVmZXJyZXIpKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG51bGxwdHI7CkBAIC0xMTgsOCArMTE4LDggQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIHZv
aWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOworICAg
IGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBj
bGllbnQsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBjb250ZXh0LmRpZExv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVzb3VyY2VVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUxMTM5NmJmZDgzMzZl
M2U4Njc0YTQ5Y2I1YzgxODRiZjE1ODBhN2UuLmVmNDk0OTIyNWIyOGI1MGYzODY2YzBmN2QzNjZl
MGI3OTI2NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGll
bgogICAgICAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIo
KTsKICNlbmRpZgogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkp
Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIHJlcXVlc3QpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRS
ZXF1ZXN0KGdsb2JhbFNjb3BlLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsK
IAogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRv
IGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewpAQCAtMjI2LDggKzIyNSw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxT
Y29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8g
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKFdURk1vdmUo
cmVzcG9uc2VEYXRhKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRp
ZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgIGlmIChpczxX
b3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJl
cXVlc3RJZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAg
LTIzOCw4ICsyMzYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIg
PSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjQ5LDggKzI0Niw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0g
bWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIg
PSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdv
cmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVu
dGlmaWVyKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVy
LCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAg
ICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjYxLDggKzI1Nyw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvCiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBUaHJlYWRhYmxlTG9h
ZGVyOjpsb2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ci0+aW5pdGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5k
aWRGYWlsKGVycm9yKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmco
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgZXJyb3IpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxM
b2FkaW5nKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNkOTU5ZDRi
NjNiOWZmNTk1ZC4uYmJlODE2NDkxZTlmZjIzNTE3ODkyODQ4YTdlNjFkNzk3MjMyZTZjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRlcm1pbmF0ZSgpOwogICAgIGJvb2wgd2FzVGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2FzVGVybWluYXRlZDsgfQogCi0gICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5jcHAKaW5kZXggNzIxNTgxZjFiN2M4MTYzNDQ0MzhhZTRlY2NiYTBm
OTBhMTQyMjQ1Yi4uYTUzYWE2OTVjMWFmOGM4OWVjYzZjYmEzYTVkN2Y1YWMwMzgwNTI4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCi1Xb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckNvbnNvbGVDbGllbnQ6Oldvcmtl
ckNvbnNvbGVDbGllbnQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlKQogICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKaW5kZXggOTc3
YjA3ZDU0MTM3ODJmZjU1MDMxNzZhZjMwMWYwNjJmMzQ0ZTZkZS4uZmFhNTFmZjc0MzBmN2MxNTA2
OWExZTBhNmI1MThlYjhjMjhhNWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb25zb2xlQ2xpZW50LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBKU0M6OkNv
bnNvbGVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGV4cGxpY2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBl
eHBsaWNpdCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7
CiAgICAgdmlydHVhbCB+V29ya2VyQ29uc29sZUNsaWVudCgpOwogCiBwcml2YXRlOgpAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0
QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtl
ckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlckds
b2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCA2MzJiODJlMjhiNzJk
YTYxMzcxYzI0ZWJmYmFmMmRkNTU5MTBkMDcxLi45M2Q2OGEzYzQ3MTVhN2M4M2VmM2JmNjRjNDk0
ZTc3OGYxZjk4NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlcklu
c3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3Bl
Y3RvclByb3h5LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKIAorI2luY2x1ZGUgIkF1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIK
LSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JBZ2VudEJhc2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAt
MzksNiArNDAsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKK3N0YXRpYyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250
cm9sbGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKyAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
Lmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpOworfQorCiBIYXNo
U2V0PFdvcmtlckluc3BlY3RvclByb3h5Kj4mIFdvcmtlckluc3BlY3RvclByb3h5OjphbGxXb3Jr
ZXJJbnNwZWN0b3JQcm94aWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxXb3JrZXJJbnNwZWN0b3JQcm94eSo+PiBwcm94aWVzOwpAQCAtNjIsNyArNzIsNyBAQCBXb3Jr
ZXJUaHJlYWRTdGFydE1vZGUgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0TW9kZShT
Y3JpcHRFeGVjdXRpb25Db250ZQogICAgIHJldHVybiBwYXVzZU9uU3RhcnQgPyBXb3JrZXJUaHJl
YWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IgOiBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbDsKIH0KIAotdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJUaHJlYWQq
IHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgV29ya2Vy
SW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlclRo
cmVhZCk7CiAKQEAgLTkzLDcgKzEwMyw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6Ondv
cmtlclRlcm1pbmF0ZWQoKQogdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVzdW1lV29ya2Vy
SWZQYXVzZWQoKQogewogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2Vy
VGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5pbmdEZWJ1
Z2dlclRhc2tzKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1Z2dlclRh
c2tzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEwNiw3ICsxMTYsNyBAQCB2b2lkIFdvcmtlckluc3Bl
Y3RvclByb3h5Ojpjb25uZWN0VG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2VDaGFubmVs
JiBjaGFubgogICAgIG1fcGFnZUNoYW5uZWwgPSAmY2hhbm5lbDsKIAogICAgIG1fd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOworICAgICAgICBpbnNw
ZWN0b3JDb250cm9sbGVyKGNvbnRleHQpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0pOwogfQog
CkBAIC0xMTksMTEgKzEyOSwxMSBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpkaXNjb25u
ZWN0RnJvbVdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIG1fcGFnZUNoYW5uZWwgPSBu
dWxscHRyOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNr
KFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29u
bmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAg
ICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nv
bm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICAgICAgLy8gSW4gY2FzZSB0
aGUgd29ya2VyIGlzIHBhdXNlZCBydW5uaW5nIGRlYnVnZ2VyIHRhc2tzLCBlbnN1cmUgd2UgYnJl
YWsgb3V0IG9mCiAgICAgICAgIC8vIHRoZSBwYXVzZSBzaW5jZSB0aGlzIHdpbGwgYmUgdGhlIGxh
c3QgZGVidWdnZXIgdGFzayB3ZSBzZW5kIHRvIHRoZSB3b3JrZXIuCi0gICAgICAgIGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5zdG9wUnVubmluZ0RlYnVnZ2Vy
VGFza3MoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3Mo
KTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDcgKzE0NCw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9y
UHJveHk6OnNlbmRNZXNzYWdlVG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
RGVidWdnZXJUYXNrKFttZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQobWVzc2FnZSk7CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCku
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggNWU4YTFk
YzBlZDBkOWFhNTMyYzM2NzQ2NGM4NjdmYjRmN2Y5YWE1Zi4uYmVmYzAxZDk1NzBhOGM0YThiN2Rk
ZWU4NWVhMTA2MThhNzdhNDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
SW5zcGVjdG9yUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyVGhyZWFkOworY2xh
c3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwogCiBlbnVtIGNsYXNzIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTsKIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5nZXQoKTsgfQogCiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHdvcmtl
clN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgdm9pZCB3b3JrZXJTdGFy
dGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWQqLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoKTsKIAogICAgIHZvaWQgcmVz
dW1lV29ya2VySWZQYXVzZWQoKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgUmVm
UHRyPFdvcmtlck9yV29ya2xldFRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKICAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgKaW5kZXggNmY5YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUyYWQ1NWQyMmZhZmE3OC4uYjY0
MThkMDBmNmZiZGNmZjVhMGE2Mzc0NzliY2I3OTRmMGFkZjlkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgK
QEAgLTI3LDEyICsyNywyMyBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29w
VGltZXIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKK2NsYXNzIEpTR2xv
YmFsT2JqZWN0OworY2xhc3MgVk07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1
YWwgSlNDOjpWTSYgdm0oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIo
SlNDOjpEZWJ1Z2dlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdnZXIoSlND
OjpEZWJ1Z2dlciopID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSGVhcEFjY2Vzcygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3MoKSA9IDA7CiAKQEAgLTQw
LDYgKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaW1lclNldE5vdGlm
aWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrKSA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVy
KCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggMzc4MDk2MWM3OTQ5ODU3YTFl
MjA1ZjhjMzEyOTYyYzA3MGJlYWY4MS4uYTA3ZTljYWQ4OWRmZjQzM2VjNzY0OWU3ZWU1ZmZlNTU5
MGJiMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRo
cmVhZC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRocmVhZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBXb3JrZXJEZWJ1Z2dlclByb3h5OwogY2xhc3MgV29ya2VyTG9hZGVyUHJv
eHk7CiBjbGFzcyBXb3JrZXJSdW5Mb29wOwogCkBAIC00Myw2ICs0NCwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
V29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtlckRlYnVnZ2Vy
UHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IGIzZTcxYzkyZGYxNjdlOTgxYTZiNTA4OWU1MWJkZjA4MzQ2ZWM3ZmMuLjg3ZGQ5OTY5YzVlOTA2
ZGVlNzJjNDQ3NzViYzJjZTZkZjVhMWE1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJX
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTAsMTYgKzUwLDE2IEBAIFdvcmtlclNj
cmlwdExvYWRlcjo6fldvcmtlclNjcmlwdExvYWRlcigpID0gZGVmYXVsdDsKIE9wdGlvbmFsPEV4
Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0
Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAg
ICBhdXRvJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBtX3VybCA9
IHVybDsKICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2Ny
aXB0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGJvb2wgaXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gaXM8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAKICAgICBp
ZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNjcmlw
dFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9i
YWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgeworICAgICAgICBpZiAoYXV0byogc2NyaXB0
UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBtX3Nj
cmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CiAgICAgICAgICAgICBtX3Jlc3Bv
bnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNw
b25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwpAQCAtNzIsNyArNzIsNyBA
QCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3Vz
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAgLy8gT25seSB1c2Vk
IGZvciBpbXBvcnRTY3JpcHRzIHRoYXQgcHJlc2NyaWJlcyBOb0NvcnMgbW9kZS4KICAgICBBU1NF
UlQobW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyk7CkBAIC04NywxMCArODcsMTAg
QEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gbV9k
ZXN0aW5hdGlvbjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgb3B0aW9ucy5zZXJ2
aWNlV29ya2Vyc01vZGUgPSBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA/IFNlcnZpY2VXb3Jr
ZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsOwotICAgIGlmIChhdXRvKiBh
Y3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyR2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtl
cigpKQorICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQogICAgICAgICBvcHRpb25zLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVn
aXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCi0gICAgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZSgq
cmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBXVEZN
b3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogCiAgICAgLy8gSWYgdGhlIGZldGNoaW5n
IGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdvcmtFcnJvciBleGNlcHRpb24gYW5kIGFib3J0
IGFsbCB0aGVzZSBzdGVwcy4KICAgICBpZiAoZmFpbGVkKCkpCkBAIC0xMDEsNyArMTAxLDcgQEAg
T3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3Qg
YSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRS
ZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBz
Y3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBl
IH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAxMjE0YjkxOWRhMzRkMzJmMmZjYWM5YTI5ODEy
ZjZmZDZhODdhMTI4Li44YjJhNjcyZjAwM2NlMTkyMjg5MjZlY2EzMjU2ZDM1OGUyZjkxODQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVi
bGljOgogICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQu
Z2V0KCk7IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9y
dW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmlu
YWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAgIFdvcmtlckRlYnVnZ2VyUHJv
eHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlckRlYnVnZ2Vy
UHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CiAgICAgV29ya2Vy
UmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5KCkgY29uc3QgeyByZXR1cm4gbV93
b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCiAgICAgLy8gTnVtYmVyIG9mIGFjdGl2ZSB3b3JrZXIg
dGhyZWFkcy4KQEAgLTEwMyw4ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROb3RpZmlj
YXRpb25DbGllbnQoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpIHsgbV9ub3RpZmljYXRpb25D
bGllbnQgPSBjbGllbnQ7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dl
clRhc2tzKCk7Ci0gICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICB2b2lk
IHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSdW5uaW5n
RGVidWdnZXJUYXNrcygpIGZpbmFsOwogICAgIAogICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRp
bWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAw
NGYxOGM2MzE3MjVmOGQ3NTg3NTgzOTFiY2UxZDU5MWZiNjk5MGY2Li45MTA4NGE3ZmIzZTYwYWI3
OTZiYjUwNDE4M2RkY2NiODI2YzRjMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xNTIsNiArMTUyLDE1IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGdsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorSW5zcGVjdG9yQ29u
dHJvbGxlciogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6Omluc3BlY3RvckNvbnRyb2xsZXIoKSBj
b25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gcmVzcG9uc2libGVEb2N1bWVudCgpOworICAg
IGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIHBhZ2Ug
PSBkb2N1bWVudC0+cGFnZSgpOworICAgIHJldHVybiBwYWdlID8gJnBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKSA6IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaAppbmRleCAzYjcxM2RjM2Y0ZWRjMWJhNzQyZGUzYzllYWQwYjUwMGM2Zjc0MmM2Li4zNWFi
ZTQ4OTE5M2RhYjg5OTk5MzE1MGM3ODAzNzZhYTM5NGQyMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDYgKzM4LDgg
QEAgY2xhc3MgVk07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiAK
IGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29w
ZSB7CkBAIC03Miw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICAgICAgV29ya2xldEdsb2JhbFNjb3Bl
OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBSZWY8SlNDOjpWTT4mJiwgU2NyaXB0U291cmNl
Q29kZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRleCAzOTA4YmRmM2Ey
OTZjODFiNmY0YmE4ZThlMDhlM2ZjNTgyZWU1ZTNhLi40ODc1YzdiNGRlZDQ0OTc3Yjg0YjQ4MTQ1
MjRiMmFjMzk5N2UzYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldv
cmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdv
cmtsZXQpOwogCiBXb3JrbGV0OjpXb3JrbGV0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoIndvcmtsZXQ6IiAr
IEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaAppbmRleCA0MTY4Njc0YzczYjI5OTA5YmE2Mjk2
MjU3MjFiMzgwNTNlMjI3YmVlLi5mZGI2NjNkN2EzNWE4NGZiNzcwZmYwMTFkODYxMmFlNGNjMjJj
NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V29y
a2xldEdsb2JhbFNjb3BlUHJveHk+PiYgcHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJveGll
czsgfQorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgV29ya2xldChEb2N1bWVudCYp
OwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKKyAgICBT
dHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFZlY3RvcjxSZWY8V29ya2xldEdsb2JhbFNjb3BlUHJv
eHk+PiBtX3Byb3hpZXM7CiAgICAgSGFzaFNldDxSZWZQdHI8V29ya2xldFBlbmRpbmdUYXNrcz4+
IG1fcGVuZGluZ1Rhc2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRDb25zb2xlQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRm
NTUwZjQ0OTkyZDllNjA0MzFlN2QyM2ZkZmIzOWQxZDBlOTNjMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NjcmlwdEFyZ3VtZW50cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENh
bGxTdGFjay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
LQotV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmtsZXRHbG9i
YWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDogbV93b3JrbGV0R2xvYmFsU2NvcGUo
d29ya2xldEdsb2JhbFNjb3BlKQotewotfQotCi1Xb3JrbGV0Q29uc29sZUNsaWVudDo6fldvcmts
ZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OwotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJiBhcmd1bWVudHMpCi17Ci0gICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwotICAgIGFy
Z3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRv
IG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1
bWVudHMpLCBleGVjKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2Fn
ZShXVEZNb3ZlKG1lc3NhZ2UpKTsKLX0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6Y291
bnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6
dGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgUmVmPFNjcmlwdEFy
Z3VtZW50cz4mJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29s
ZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9
Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGFr
ZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci12
b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAoSlNDOjpKU0dsb2JhbE9iamVjdCos
IFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50
OjpyZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsg
fQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50
cz4mJikgeyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxMmJiNDlhNWRhZmI4YWYzYzNjZDk5NjdmNmYwYmExZGMzYjU1M2E5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQgZmlu
YWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0
R2xvYmFsU2NvcGUmKTsKLSAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgpOwotCi1w
cml2YXRlOgotICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1l
c3NhZ2VMZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCBjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBjb3VudFJlc2V0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHByb2Zp
bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFsOwotICAg
IHZvaWQgcHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkgZmluYWw7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lkIHRpbWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGltZUxvZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVFbmQoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGltZVN0YW1w
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYp
IGZpbmFsOwotICAgIHZvaWQgcmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFs
OwotICAgIHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLQotICAgIFdvcmtsZXRHbG9iYWxTY29wZSYg
bV93b3JrbGV0R2xvYmFsU2NvcGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA3YjNi
NDIxMGY3NGI2ZDZiNmEyNjNjZWU5YmVjMDQxYzc2NDI3OTg5Li5kYTNmYWQxNDI0Mzg4N2Q5Mzcy
ZGQ2NjgxMDE4ODU3NDdhMmQ1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE2MywxNiArMTYzLDIzIEBAIHZvaWQgV29ya2xldEds
b2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewot
ICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3Nh
Z2UpCisgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRD
b25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1l
c3NhZ2UtPm1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRk
Q29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNz
YWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdl
LT5tZXNzYWdlKCksIDApKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCi12b2lk
IFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBs
b25nIHJlcXVlc3RJZGVudGlmaWVyKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZVRleHQsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7
Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICBp
ZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNz
YWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCkpOwogICAgICAgICByZXR1cm47Ci0g
ICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwg
cmVxdWVzdElkZW50aWZpZXIpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwg
U3RyaW5nIHsgfSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNp
Z25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKQEAg
LTIxNiw4ICsyMjMsOSBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3Jp
cHRGZXRjaEpvYklmTmVlZGVkKCkKICAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91
c2x5KCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGZldGNoT3B0aW9ucyksIGNvbnRl
bnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRo
aXMpOwogfQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBXb3JrbGV0R2xvYmFs
U2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHRoaXMsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQpAQCAtMjMzLDYgKzI0MSw4IEBAIHZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgVVJMIG1vZHVsZVVSTCht
X3NjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2V2
YWx1YXRlZE1vZHVsZXMuYWRkKG1vZHVsZVVSTCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQo
KnRoaXMsIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3Jp
cHQoKSk7CisKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAg
ICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zY3JpcHRMb2FkZXIt
PnNjcmlwdCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNlcHRpb24pOwogICAgICAgICBpZiAo
ZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgK
aW5kZXggM2E0ZjRlNzM3OWNkYmYxMTkxNzJhODI2ZTlkM2EwMjg3ZmIyMTNkOC4uOTgzNmNmMGEw
MzU4MWJlODI2M2I1NTBkODQyNjMxOTMxM2ZmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCkBAIC0zNCwxMyArMzUsMTUg
QEAgc3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJzIHsKICAgICBVUkwgd2luZG93VVJMOwogICAgIEpT
Qzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzOwogICAgIGZsb2F0IHNhbXBsZVJhdGU7Cisg
ICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0
ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAg
ICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICAgICAganNSdW50aW1lRmxh
Z3MsCi0gICAgICAgICAgICBzYW1wbGVSYXRlCisgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAg
ICAgICAgICAgc3RhcnRNb2RlCiAgICAgICAgIH07CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxN2Rm
NWUxZjNjZjA2NTcxNGJjZWY3NWVkODVmY2FkNTM4ZjZlODBhLi4yM2I0NjAzNjY4M2Y5NTJkNDUw
MTUzYmExY2UyMGUzNWZjZmZjYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVk
ZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSAiV29ya2xl
dENvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50LmgiCiAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQo
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxT
Y29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9
PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsK
KyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCpt
X3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5z
ZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKQEAgLTI2Nyw0ICsy
NjcsMjAgQEAgYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGluZ0V4ZWN1
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsKIH0KIAor
dm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dl
ciogZGVidWdnZXIpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgZGVidWdnZXIt
PmF0dGFjaChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworfQorCit2b2lkIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1
Z2dlcikKK3sKKyAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKK30K
KworSlNDOjpKU0dsb2JhbE9iamVjdCogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omdsb2JhbFNj
b3BlV3JhcHBlcigpCit7CisgICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmQ0M2NlNWY5ZmZkMmE3MGFmMGJm
NmU1YWVlNTRjZDhmYWM3MmYyZS4uNWIyY2M3YTU3YzgzMmQwYmI3MjA4Y2I5MmU0MDUyZWVkOGMy
ZjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oCkBAIC00MSw5ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SlNXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotY2xhc3MgV29y
a2xldENvbnNvbGVDbGllbnQ7CitjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50OwogY2xhc3MgV29y
a2xldEdsb2JhbFNjb3BlOwotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CiAKIC8vIEZJWE1F
OiBXZSBzaG91bGQgc2hhcmUgbW9yZSBjb2RlIHdpdGggV29ya2VyU2NyaXB0Q29udHJvbGxlci4K
IGNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIDogcHVibGljIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIgewpAQCAtNTksNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CiAgICAgfQogCisgICAgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmluYWw7CisKICAgICB2b2lkIGZv
cmJpZEV4ZWN1dGlvbigpOwogICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsK
IApAQCAtNzksNyArODAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFeGNlcHRpb24oSlND
OjpFeGNlcHRpb24qKTsKIAotICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07IH0KKyAg
ICBKU0M6OlZNJiB2bSgpIGZpbmFsIHsgcmV0dXJuICptX3ZtOyB9CisKKyAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2Vy
KEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRTY3JpcHRJ
Zk5lZWRlZCgpCkBAIC05NSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2V4ZWN1dGlv
bkZvcmJpZGRlbiB7IGZhbHNlIH07CiAgICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07CiAgICAgV29y
a2xldEdsb2JhbFNjb3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V29ya2xldENvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V29ya2VyQ29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwogICAgIEpTQzo6U3Ry
b25nPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXI7CiAg
ICAgbXV0YWJsZSBMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRpb25Mb2NrOwogICAgIGJvb2wgbV9p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411362</attachid>
            <date>2020-10-14 12:19:33 -0700</date>
            <delta_ts>2020-10-14 14:06:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201014121932.patch</filename>
            <type>text/plain</type>
            <size>108225</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5YWZjNGU0MGRmOWFl
YzRlNzMxOTA0Y2MyOTk5NzQzYzA4NGFiMC4uZGZlM2VjZGFkOGUwOGI4ODM2NmUyYjg1MjhiODA1
Yjg1ZjRhMjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMC0xMC0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0cyB1cCB0byBXZWJJbnNwZWN0b3IsIHNpbWls
YXJseSB0byBXZWIgV29ya2Vycy4gVGhpcyBiYXNpY2FsbHkgcG9ydHMKKyAgICAgICAgV2ViSW5z
cGVjdG9yIGNvZGUgdG8gdXNlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIGluc3RlYWQgb2Yg
V29ya2VyR2xvYmFsU2NvcGUKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUg
Y29kZSBmb3Igd29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkQnlXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6
OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3
b3JrZXJEZWJ1Z2dlclByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dFRocmVhZDo6c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1dvcmtsZXRUaHJlYWQ6OnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6V29y
a2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRldGFjaERl
YnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BX
aGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VX
b3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OlNl
cnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFnZW50OjpX
b3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdl
bnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1
Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29ya2VyQ29u
c29sZUNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvclByb3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
clByb3h5OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25v
dXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OldvcmtsZXQpOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6Omlk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdy
YXBwZXIpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisK
IDIwMjAtMTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWNoZSBKUyBhcmd1bWVudHMgaW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKCkgZm9y
IHBlcmZvcm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGViYjg0MzBjMTYwZGRkYzNm
OWVkOGJkZWFhMzE0OTVjZGRkYWE3NDIuLmNmNjUzODk1MWQyMDliZDk5OWYwZjNmNWZmMzkyMjAx
YzM4ZDkzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk7CiBBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhy
ZWFkJiB0aHJlYWQsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDog
V29ya2xldEdsb2JhbFNjb3BlKHRocmVhZCwgcGFyYW1ldGVycykKICAgICAsIG1fc2FtcGxlUmF0
ZShwYXJhbWV0ZXJzLnNhbXBsZVJhdGUpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiB9CkBAIC0xNDgsNiArMTQ5LDggQEAgdm9pZCBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKICAgICAgICAgZGVmYXVsdFRh
c2tHcm91cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwogICAgIHN0b3BBY3RpdmVET01PYmpl
Y3RzKCk7CiAKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPndvcmtlclRlcm1pbmF0aW5nKCk7
CisKICAgICBtX3Byb2Nlc3NvckNvbnN0cnVjdG9yTWFwLmNsZWFyKCk7CiAKICAgICAvLyBFdmVu
dCBsaXN0ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3Ig
dG9vIGxvbmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmgKaW5kZXggM2U2MTc1ZDFhZTQzOWVmOGMyNmQzNmZhODVkNDQ4YTJjNDU5Yjk2
OC4uYjlhMjU4NjUwZWUzZDFiNmExYWFkNzMyOTBjNTBjMmI3MTRlMjdjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVk
ZSAiQXVkaW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2Jh
bFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDggQEAgcHVibGlj
OgogICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKICAgICB2b2lkIGhhbmRsZVBvc3RS
ZW5kZXJUYXNrcyhzaXplX3QgY3VycmVudEZyYW1lKTsKIAorICAgIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0
b3JDb250cm9sbGVyOyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUo
QXVkaW9Xb3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIApAQCAtODAs
NiArODMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNBdWRpb1dv
cmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvcj4+IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXA7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+
IG1fcGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CiAgICAgT3B0aW9uYWw8SlNDOjpK
U0xvY2tIb2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmluZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBh
NzA2MTNlOTgwNDBhNjAyMDNkYzc3ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2
MjQ1NmY4ZWQ0Mzg2ZDFhNDNmYTJkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApA
QCAtMzcsMzYgKzM3LDQzIEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94
eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBl
bmRpbmdUYXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFy
YW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkK
K3N0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlv
V29ya2xldCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQog
ewogICAgIGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNS
dW50aW1lRmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdz
KCk7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5
LndvcmtlclN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAg
ICAgICAgIGRvY3VtZW50LT51cmwoKSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAg
IHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVS
YXRlKCkgOiAwLjBmCisgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1
ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAg
ICB9OwogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFr
UHRyKHdvcmtsZXQpKQogICAgICwgbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAg
ICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5l
cmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHko
bWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQor
ICAgICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBn
ZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3Rh
cnQoKTsKKyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1l
bnQoKSwgbV93b3JrbGV0VGhyZWFkLnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQog
CiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
KCkKIHsKKyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93
b3JrbGV0VGhyZWFkLT5zdG9wKCk7CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2
b2lkKEF1ZGlvV29ya2wKICAgICB9KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9p
bnNwZWN0b3JQcm94eS0+c2VuZE1lc3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsK
KyAgICB9KTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBv
c3RUYXNrVG9Mb2FkZXIoW2Rpc2FibGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byog
cGFnZSA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBw
YWdlLT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGVi
NzUwNGU2NDY4ZDA4YWY1NGUwMjU5YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEw
NTdkNGM3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7
CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94
eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9h
ZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3
b3JrbGV0KQogICAgIHsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9z
dFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAg
IGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAg
ICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQ
dHI8QXVkaW9Xb3JrbGV0PiBtX3dvcmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQ
cm94eTsKICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUw
Ni4uYWI3MDIxMWVhMzBiZDY4MDg1YjNhNDJiZDc5NjEwMGJjOTI1MjIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cApAQCAtMTMxLDYgKzEzMSwxNCBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRo
cmVhZCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9k
ZSA9PSBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAg
c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIg
d2FzIHNvbWVob3cgdGVybWluYXRlZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRz
LgorICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlw
dENvbnRyb2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9v
cCgpOwogCiAjaWYgVVNFKEdMSUIpCkBAIC0xNzYsNiArMTg0LDI3IEBAIFdvcmtlckxvYWRlclBy
b3h5JiBBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4g
bV9tZXNzYWdpbmdQcm94eTsKIH0KIAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0
VGhyZWFkOjp3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNz
YWdpbmdQcm94eTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0Rl
YnVnZ2VyVGFza3MoKQoreworICAgIEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAg
bV9wYXVzZWRGb3JEZWJ1Z2dlciA9IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdDsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVn
Z2VyTW9kZSgqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lk
IEF1ZGlvV29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBt
X3BhdXNlZEZvckRlYnVnZ2VyID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgw
MjI5MmNiMzQzODE0ZDkxMGMyYmVhN2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgy
YTdmMjhmY2NlMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3Mo
KSBmaW5hbDsKKwogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5M
b29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJv
eHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBXb3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAg
UmVmUHRyPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAg
ICBMb2NrIG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJv
b2wgbV9wYXVzZWRGb3JEZWJ1Z2dlciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRmMjMwYzJhYzBhODE5NDVjMTZmZTFiYWRjYjllZGZi
NmZhYzM3N2MuLjFjNzdiNmU3ZTA2OTg5ZDVjNDJjOTA2NDViNmM2ZmJiNmY1ODg5MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yNTg3LDcgKzI1ODcsNiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdv
cmtsZXRzL1dvcmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFz
a3MuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZjE1MTc1
NWMxOGVjZDkzZmU1YWM1OGVkODg2YTZiY2MyOTM4ODEyLi5hMWNmZjc4N2Y2YWM2ZThlNzkxOWQy
OTkwMjdjOWE5NjM1YTJjNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ3LDcgKzEzNDcsNiBAQAogCQk0QjZFODc2OTIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyog
Q1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjdBRTQ5MzIxNzdC
NTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3Rv
bVBhaW50SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQu
aCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1
QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENCMjE5MEVCRDYwMEMw
QUI2NCAvKiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAq
LzsgfTsKIAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFk
T25seS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJB
RkQwQ0UyMTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5oICovOyB9
OwpAQCAtODIyNCw4ICs4MjIzLDYgQEAKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNt
YXJ0UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNt
YXJ0UmVwbGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIy
MTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Vz
dG9tUGFpbnRJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIx
NzdCNjNFMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDdXN0b21QYWludEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI3
RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxl
dGVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRl
QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENBMjE5MEVCRDYw
MEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRTaXplLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENEMjE5MEVCRTkwMEMwQUI2NCAv
KiBDU1NQYWludFNpemUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU1BhaW50U2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xOTgwNiw4ICsxOTgwMyw2IEBACiAJCQkJNEJERUEzMjMyMTdFQzk2
QTAwNTJERkNEIC8qIFdvcmtsZXQuY3BwICovLAogCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggKi8sCiAJCQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmts
ZXQuaWRsICovLAotCQkJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29s
ZUNsaWVudC5jcHAgKi8sCi0JCQkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAgKi8sCiAJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdv
cmtsZXRHbG9iYWxTY29wZS5oICovLAogCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsICovLApAQCAtMzQ3NjgsNyArMzQ3NjMsNiBAQAogCQkJCUE1
NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xl
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyNTIxN0ZFMkU0MDA1
MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgx
ODI1MjRENEY1MDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQUNEMDEzMjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAK
aW5kZXggODU1MGFkOGE0YmQ4NGIyNjliNDY4NDQ4ZjE1OTEzNjdhYzIwMDlhOC4uZjllNWVkOGNi
MzM2ODI3MTRlYmQ3ZDg1MTIxYjk0ZjQ5OTYyMjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKQEAgLTk4LDE4ICs5OCwxMSBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVG
cm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiBw
YWdlID8gcGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6IG51
bGxwdHI7CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9i
YWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAg
IHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyKCk7CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmds
b2JhbFNjb3BlV3JhcHBlcigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQot
ewotICAgIGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci19Ci0jZW5kaWYKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggMDRmMWJhNGUzMGRlNDEwMDMzZmU3NDM0ZjFkODk4
NTg4Njc1MjExZC4uYTUyODExM2ExZjdhZWE2ZjZiOWRkMzRmZGIxNjkwNTc2ZTgwNDAwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC00NCwxMCArNDQsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOwotI2VuZGlmCitjbGFzcyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhl
Y1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUo
SlNDOjpKU0dsb2JhbE9iamVjdCopOwpAQCAtNTcsOSArNTQsNiBAQCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwogV0VCQ09SRV9FWFBP
UlQgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxk
JiwgUGFnZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
Ci1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdv
cmtsZXRHbG9iYWxTY29wZSYpOwotI2VuZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3Rh
dGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3MTZiMWE2OWI4
ZWVjMWRhNjQ3MjAxYTQzMjY5MmIzMzg5N2ViNzhlLi5iNDZkOGE3ZWQ5MWI5ZjM4NjkzODBhMjc1
YzA5NzA2ZGE3MzQyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjc5LDQgKzI3OSw5IEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIpCiAgICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0KIAorSlND
OjpKU0dsb2JhbE9iamVjdCogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFw
cGVyKCkKK3sKKyAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlMzkwMTgwZjU3MWY5ZTFlMzViYzkyM2Ix
ZDc3MWQ0Yjk1Y2VkYTQ0Li42Mjg3ZmIxNTdkZGIzM2I1N2Y1ZTY3NzE3ZWU0MGYxMTIxYjc5ZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpIGZpbmFsOworCiAgICAgdm9pZCBldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Ug
PSBudWxscHRyKTsKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogCkBAIC03OCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAg
ICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAK
LSAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisgICAgSlNDOjpWTSYgdm0oKSBm
aW5hbCB7IHJldHVybiAqbV92bTsgfQogICAgIAogICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3Mo
KSBmaW5hbDsKICAgICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgZmluYWw7CkBAIC04Niw4ICs4
OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNS
dW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3Rp
ZmljYXRpb25DYWxsYmFjaykgZmluYWw7CiAKLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6
RGVidWdnZXIqKTsKLSAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKyAg
ICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRl
dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lk
IGluaXRTY3JpcHRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKaW5kZXggNTJjNzhmNjFmNDBlZGVjNmY2NGYyODJhZmE3ZDE1ZGMyMzNm
ZTBlNy4uNTZlODQxOTMxNzdlM2M3NTJhMWFhZThjY2U2NmFmMmIzZjNlODI2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDgxLDEyICs0
ODEsOCBAQCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiB7CiAgICAgaWYg
KGlzPERvY3VtZW50PigqdGhpcykpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgpOwotICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0g
ICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQo
KS0+dm0oKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGNvbW1vblZNKCk7CkBAIC01MzIsMTIgKzUyOCw4IEBAIEpTQzo6
SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAg
ICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9i
YWxTY29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykp
Ci0gICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0
PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJv
bVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlPigqdGhpcykpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDFkNjVhNDUyNzU5ZmQwMjUzMjIzMmZmZmJmYjcwMzc2
ZjBhZmVmOTAuLjcyMDFmNDc4ZjI3MmM2ZDc3MDMyYmM3YzRhOWMyZjhkZmNjMzQ5ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ29tcHV0
ZWRFZmZlY3RUaW1pbmcuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTYxLDYgKzYyLDcg
QEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VIZWFwQWdl
bnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC03Myw2ICs3
NSw4IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgpAQCAtMTMyMCw5ICsxMzI0LDIwIEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJM
YXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMmIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1lbnRp
bmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2Nv
cGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyNpZiBFTkFC
TEUoV0VCX0FVRElPKQorICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4od29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5pbnNwZWN0b3JDb250
cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLnB0cigpOworI2VuZGlmCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPih3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBkb3duY2FzdDxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUpLmluc3BlY3RvckNvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CiB9CiAKIEluc3RydW1l
bnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UoUGFnZSYgcGFnZSkKQEAgLTEzMzUsOCArMTM1MCw4IEBAIEluc3RydW1lbnRpbmdB
Z2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNv
bnRleHQoU2NyCiB7CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgcmV0
dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KS5wYWdlKCkpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAg
ICAgIHJldHVybiAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
aW5kZXggNWFkNzllMGQxNmE5NTMyYjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZS4uZDBlODBlNjIx
Y2M1MWFmNDNkZGM4MTkwNmJmYTY4Zjc5MWU0YjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNyArOTksNyBA
QCBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNl
OwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFz
cyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNz
IFdlYkdMUHJvZ3JhbTsKQEAgLTIwMSwxMSArMjAxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVy
Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0g
ICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291
cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRG
YWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gU29tZSBuZXR3b3JrIHJl
cXVlc3RzIGRvIG5vdCBnbyB0aHJvdWdoIHRoZSBub3JtYWwgbmV0d29yayBsb2FkaW5nIHBhdGgu
CiAgICAgLy8gVGhlc2UgbmV0d29yayByZXF1ZXN0cyBoYXZlIHRvIGlzc3VlIHRoZWlyIG93biB3
aWxsU2VuZFJlcXVlc3QgLyBkaWRSZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5pc2hMb2FkaW5nIC8g
ZGlkRmFpbExvYWRpbmcKQEAgLTI0MywyMCArMjQzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBz
dGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4pOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4pOwogCiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29u
c29sZUNvdW50KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxh
YmVsKTsKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRSZXNldChQYWdlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNvbnNv
bGVDb3VudFJlc2V0KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwpOwogCiAgICAgc3RhdGljIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChGcmFtZSYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWlu
ZyhGcmFtZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAg
ICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQg
c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0Nv
bnNvbGVUaW1pbmcoRnJhbWUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAgICBzdGF0aWMgdm9p
ZCBsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4m
Jik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25z
b2xlVGltaW5nKEZyYW1lJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFi
ZWwpOwotICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3Bl
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRp
YyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lk
IGNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+
JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2Zp
bGluZyhQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpA
QCAtNTMyLDcgKzUzMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJE
ZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYpOwog
CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKFBhZ2UmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3Rh
dGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiAgICAgc3Rh
dGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25z
dCBGcmFtZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRnJhbWUoY29uc3QgRnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmpl
Y3QmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgc3RhdGljIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOwogfTsKIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQo
RnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1MCwxMCArMTA1MCwx
MSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVz
dChGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbgogICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kUmVxdWVzdChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSks
IGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAg
ICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisg
ICAgICAgIHdpbGxTZW5kUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZp
ZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKIH0KIAogaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RPZlR5cGUoRnJh
bWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9hZFR5cGUpCkBAIC0xMDc1
LDkgKzEwNzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSYgZnJhbWUsIHUKICAgICAgICAgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBs
b2FkZXIsIHJlc3BvbnNlLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZGlkUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9i
YWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlc3BvbnNl
LCBudWxscHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkpCisgICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIp
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVU
aHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwOTQsMTAg
KzEwOTYsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcKICAgICAgICAgZGlkUmVjZWl2ZURh
dGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
RGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAg
ZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFM
ZW5ndGgpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKSkKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKIH0KIAogaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBm
cmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTEwNywxMCArMTExMCwxMSBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBE
b2N1bWVudExvYQogICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIHJlc291cmNlTG9h
ZGVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9h
ZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1ldHJpY3MpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7Ci0gICAgZGlkRmluaXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwg
bmV0d29ya0xvYWRNZXRyaWNzLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9h
ZE1ldHJpY3MsIG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
QEAgLTExMTksOSArMTEyMywxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogICAgICAgICBk
aWRGYWlsTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRl
ciwgZXJyb3IpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZhaWxMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGRpZEZhaWxM
b2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRyLCBlcnJvcik7CisgICAgaWYgKGF1dG8q
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBkaWRG
YWlsTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxwdHIs
IGVycm9yKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250
aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSYgZnJhbWUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC0xNTcxLDkgKzE1NzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5p
cXUKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PiBtZXNzYWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNz
YWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1l
c3NhZ2UpCiB7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdl
KSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUpKQorICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU4MSw5ICsxNTg3LDEwIEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpT
Qzo6SlNHbG9iYWxPYmplCiAgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJl
bCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlND
OjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgY29u
c29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29y
a2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50SW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQYWdlJiBwYWdlLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE1OTEs
OSArMTU5OCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNv
bGVDb3VudFJlc2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYQogICAgIGNvbnNvbGVDb3VudFJl
c2V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRS
ZXNldChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUp
LCBzdGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50UmVzZXRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBzdGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnRha2VIZWFwU25hcHNob3QoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQpAQCAtMTYwOSw5ICsxNjE3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0ds
CiAgICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZy
YW1lLCBleGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdGFy
dENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHN0YXJ0Q29uc29s
ZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1l
JiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwg
UmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE2MjAsOSAr
MTYyOSwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNv
bGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYgogICAgICAgICBsb2dDb25zb2xlVGlt
aW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1l
bnRzKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29u
c29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1l
bnRzKQogewotICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JX
b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3Zl
KGFyZ3VtZW50cykpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKSkKKyAgICAgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRp
bmdBZ2VudHMsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBm
cmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAg
LTE2MzEsOSArMTY0MSwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsbwogICAgICAgICBzdG9w
Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJl
bCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNv
bGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgc3RvcENvbnNvbGVUaW1pbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmIGZyYW1lLCBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMTc1Niw5ICsxNzY3LDkgQEAg
aW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UKICAgICByZXR1cm4gcGFnZSA/ICZpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZSgqcGFnZSkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgSW5zdHJ1bWVudGlu
Z0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQor
aW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1
cm4gd29ya2VyR2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKCp3b3JrZXJHbG9iYWxTY29wZSkgOiBudWxscHRyOworICAgIHJldHVybiB3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSgqd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpIDogbnVsbHB0cjsKIH0K
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
CmluZGV4IDcwNDQ2NDRiZmY5NTIwZWFhZTg2ZWZkNGIyYWUzOTE5MjNmYzdlZjQuLjFiYmY5NGVm
YTUyMTFhZDIxNmI0YTAwZmY2NmE5MzA3NjZhNzBiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFn
ZTsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiAKIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVu
IHJlbWFpbmluZyBhZ2VudHMgbW92ZS4KIHN0cnVjdCBXZWJBZ2VudENvbnRleHQgOiBwdWJsaWMg
SW5zcGVjdG9yOjpBZ2VudENvbnRleHQgewpAQCAtNTcsMTMgKzU3LDEzIEBAIHN0cnVjdCBQYWdl
QWdlbnRDb250ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7CiB9OwogCiBzdHJ1Y3QgV29y
a2VyQWdlbnRDb250ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7Ci0gICAgV29ya2VyQWdl
bnRDb250ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQorICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQm
IGNvbnRleHQsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSkKICAgICAgICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCB3
b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgLCB3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICB7CiAgICAg
fQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAK
IGNsYXNzIEluc3BlY3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50QmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcApp
bmRleCA4MGM5YTEwNWM1NGEzZTUzNzBhY2NkNmMxMmZmMDZmMmIzNDM1ZGEyLi4yMjczMWE3ZTIx
YzVjNDdmZWIyMmQ5MjU4MmRjODk4YzYxNTJkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKQEAgLTM0LDE2ICszNCwxNyBAQAogCiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgi
Ci0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0u
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
Ci1Xb3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRl
eHQpCitXb3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIGNvbnRleHQpCiAgICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQog
ICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KQogewpAQCAtNjAsOCArNjEsOCBAQCB2
b2lkIFdvcmtlckRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQp
CiB7CiAgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7
CiAKLSAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgbV93b3Jr
ZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgaWYgKGF1
dG8qIHNjcmlwdENvbnRyb2xsZXIgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAg
ICAgICBzY3JpcHRDb250cm9sbGVyLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlz
QmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CkBA
IC04MCw3ICs4MSw3IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1
c2VkKCkKIAogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAg
ICAgICAgcmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVu
SW5EZWJ1Z2dlck1vZGUobV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgICAgIHJlc3VsdCA9IG1f
d29ya2VyR2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5J
bkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICB9IHdoaWxlIChyZXN1bHQg
IT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50
cygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAppbmRl
eCAxYzQ1Njk5OWFlZjYyYjU0NDZhZjk3ZDY1NDY0ZjhjNTZjOWUxYWQzLi4xNDA5NGEzNjU3Y2U3
NTBmZDhiYWJlZTYzZGI0ZmNkYWNhZmU4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXIuaApAQCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKIAogY2xhc3MgV29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1
Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXIpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlckRlYnVnZ2VyKFdvcmtl
ckdsb2JhbFNjb3BlJik7CisgICAgV29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmKTsKICAgICB+V29ya2VyRGVidWdnZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKIApA
QCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVz
ZWQoKSBmaW5hbDsKICAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3Bl
JiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBt
X3dvcmtlckdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDkwZTk4NTQ0YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5YTA2N2YuLmZlYTNk
MGNiNGIyMTljOTIyZTIyYTZmOGU2NDdhMzFlMWY4MDcxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2
LDggKzM2LDggQEAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJX
b3JrZXJET01EZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5o
IgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmV0d29y
a0FnZW50LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNp
bmNsdWRlICJXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCIKQEAgLTU3LDE2ICs1NywxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAotV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICA6IG1f
aW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAs
IG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIu
Y29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRl
KCkpCi0gICAgLCBtX2RlYnVnZ2VyKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJH
bG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fZGVidWdnZXIod29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVCh3b3JrZXJHbG9iYWxTY29w
ZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtl
ckFnZW50Q29udGV4dCgpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNo
LT5yZXNldCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9m
b3J3YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVs
PihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVu
aXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJk
aW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CiB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgV29ya2VyQWdlbnRDb250ZXh0IFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OndvcmtlckFnZW50Q29udGV4dCgpCiAKICAgICBXb3JrZXJBZ2VudENvbnRl
eHQgd29ya2VyQ29udGV4dCA9IHsKICAgICAgICAgd2ViQ29udGV4dCwKLSAgICAgICAgbV93b3Jr
ZXJHbG9iYWxTY29wZSwKKyAgICAgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwKICAg
ICB9OwogCiAgICAgcmV0dXJuIHdvcmtlckNvbnRleHQ7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9p
ZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBtX2Fn
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQp
KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgeworICAgIGlmIChpczxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAg
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2Vy
Q29udGV4dCkpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3
b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAgICB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW5z
cGVjdG9yRXZhbHVhdGVIYW5kbGVyIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmV2YWx1YXRl
SGFuZGxlcigpIGNvbnN0CiAKIFZNJiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCiB7
Ci0gICAgcmV0dXJuIG1fd29ya2VyR2xvYmFsU2NvcGUudm0oKTsKKyAgICByZXR1cm4gbV93b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS52bSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCA3YTUzZDgwNGJmYmNlMGY2MmUxMTUzYzUxM2IxNzhkNzQyMzgzZWRlLi45
ZmQwYjljMzU0NGVhYjY5MzkwZDJlZDRjZTlkYmYwOTc1ZDAxNDdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQx
LDE0ICs0MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7CiBjbGFzcyBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogc3RydWN0IFdvcmtl
ckFnZW50Q29udGV4dDsKIAogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgZXhwbGljaXQgV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0aW5nKCk7
CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4
ZWN1dGlvblN0b3B3YXRjaDsKICAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVnZ2VyOwogICAgIElu
c3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAgYm9vbCBtX2RpZENy
ZWF0ZUxhenlBZ2VudHMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRleCBjMDI2MjExMzVj
NTVlYmQ3MDZlMDQzNTFiNWMxM2Y2MTNiZWE2NTM0Li5kMjYzMGQ1MWNmZDRkNzFjZTU4MWE5ZjY0
OTVhMzE2MmY2ZDgzMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsIGZpbmFsIDogcHVibGlj
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwoV29y
a2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorICAgIGV4cGxpY2l0IFdvcmtlclRv
UGFnZUZyb250ZW5kQ2hhbm5lbChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUpCiAgICAgICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSkKICAgICB7CiAgICAgfQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAg
ICAgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckRlYnVnZ2Vy
UHJveHkoKS5wb3N0TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CisgICAgICAgIG1fd29ya2Vy
R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHko
KS5wb3N0TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CiAgICAgfQogCi0gICAgV29ya2VyR2xv
YmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2
aWNlV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAppbmRleCBiYmUyY2MwM2Q2NDVmYzEyOTA4NGRiZWU5
ZGQ4MDQyMmJiZDYzZmQ4Li5lZmZkMmJlZTBhMGE3MDliZDlhZDdhMzEyMzMyNGQwNzIxMmFiM2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2
aWNlV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VXb3JrZXJB
Z2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoIlNlcnZpY2VXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2Vy
R2xvYmFsU2NvcGUpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpTZXJ2aWNlV29ya2Vy
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJl
YWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXND
b250ZXh0VGhyZWFkKCkpOwogfQogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6On5TZXJ2aWNlV29ya2Vy
QWdlbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDg5MjQxOTBlZTYy
MGYxNTUxNGEyNTBkNzYyZTJiZTRhMTkzMzA2M2QuLmQ0MTY0NDg5MDc5MmFhMTk2OWY3YjcyZWJk
NGZhZmQyMzA3OWZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiV29ya2VyQXVkaXRBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3Jp
cHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC00MSw5ICs0MSw5IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1
ZGl0QWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQXVk
aXRBZ2VudChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtl
ckdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0
Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtl
ckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlckF1
ZGl0QWdlbnQ6On5Xb3JrZXJBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwpAQCAtNTUsNyArNTUsNyBA
QCBJbmplY3RlZFNjcmlwdCBXb3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQo
KTsKICAgICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNT
dGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJBdWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJlY2IwZWViOGVkZDczMzllYzA0
NTliZDM3MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4MzhmZjhmY2YyZWZjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVk
aXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckF1ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJB
dWRpdEFnZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93
b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNv
bnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2ODdmMDQzZWQ1NjdlM2I4ZjRi
MTU4MDc2OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFmYmU2NjhhMWJjZGQ3MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNv
bnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQoV29y
a2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFnZW50KGNvbnRleHQp
CiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFk
KCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29u
dGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29sZUFn
ZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA3YWE3MmI2
YTRjNjRjYTlmNjc4MTUwZDA2YTMyZDAyOTRjNTA4ODI1Li42ZTY1OGZjNWRiYmZlOTYyY2NkMjYz
ZjUyMzIzZGU3MGQxNmJkNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjcs
NyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKIAogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3Jp
cHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4K
QEAgLTQxLDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAsIG1fd29ya2VyR2xv
YmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAg
ICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhy
ZWFkKCkpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgp
ID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9u
TG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWRk
Q29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKIH0KIAogSW5qZWN0ZWRTY3Jp
cHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVj
dXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpAQCAtNjAsNyArNjAsNyBAQCBJ
bmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsK
ICAgICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0
ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggN2NhNjRlNDAxM2E1NGI0MThkNTNlNDc0ODAy
ZTczMmJmMTkwOGM5Ny4uOTk0N2Y3MTU0NTYxNGFkOTNmZjdlZmUyNWYyZTA1ODQ4Mjc4NWQ2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiAg
ICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCi0gICAgV29ya2VyR2xvYmFsU2Nv
cGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAppbmRleCA1ZGNlODI2ZjRiMTBlMGNkNDg1Yzg1
OWFhMzcyOTMyYmVlNjRiNWE5Li4xNDEwYTI3ODk0MGZkYzFjZmE1YjM2MDJhYmNjNTc2NDM3Zjdi
MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyTmV0d29ya0FnZW50OjpXb3JrZXJOZXR3b3Jr
QWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yTmV0d29y
a0FnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2Vy
R2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGNvbnRleHQu
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2Vy
R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyTmV0
d29ya0FnZW50Ojp+V29ya2VyTmV0d29ya0FnZW50KCkgPSBkZWZhdWx0OwpAQCAtNjEsMTIgKzYx
LDEyIEBAIFZlY3RvcjxXZWJTb2NrZXQqPiBXb3JrZXJOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNv
Y2tldHMoY29uc3QgTG9ja0hvbGRlciYpCiAKIHZvaWQgV29ya2VyTmV0d29ya0FnZW50OjpzZXRS
ZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgbV93
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CisgICAgbV93b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdn
ZXJQcm94eSgpLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJs
ZWQpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXb3JrZXJOZXR3b3JrQWdlbnQ6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgUHJvdG9j
b2w6Ok5ldHdvcms6OkZyYW1lSWQmKQogewotICAgIHJldHVybiAmbV93b3JrZXJHbG9iYWxTY29w
ZTsKKyAgICByZXR1cm4gJm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKaW5kZXggZGQ4N2Q4MTAyMDJl
NWIxN2RlOWNmMDdiNzYyYjUyNWVlZTJlM2JlOC4uZDdiZWJkMGRlYTEwYWZiMDEyYjQ2YWNjNDk2
NzVhMjlhOWVkNGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHJpdmF0ZToKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYpOwogICAgIGJvb2wgc2hvdWxkRm9yY2VCdWZmZXJp
bmdOZXR3b3JrUmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCBmZmZkM2NlYTIx
NTM1OWZlNmYwZWQxZWRkNzcyZDE2YjcwOTUxZGViLi44MmFmZjA2OGY0Y2JlZDBhZWUxYmM5MmM2
M2FlMTFiYjEwNmYzNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAogI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVj
dGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg+CiAKQEAgLTQ0LDkgKzQ0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdv
cmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29u
dGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29u
dGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNv
bnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQog
CiBXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQoKSA9IGRlZmF1bHQ7CkBA
IC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAgICAgcmV0dXJuIElu
amVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0
U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9t
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7
CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNj
cmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2Yjk5OGY0ZDE3MzE4
NTFmOTliNjdlZTE1YTVkMjAwMTU4N2Y0ZDA2Li5iY2NjMmI3ZDA3MTVhMzRlN2M0NzcyMzI2ZDI0
MWRhOTZjN2JlMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3Mg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV29ya2VyUnVudGltZUFnZW50KTsKQEAgLTUzLDcgKzUzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSB7IH0KIAogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAg
ICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCAyNzE3Yzg2MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1Li4x
OGZmM2Y5NGYwNDJkMWExZmQwM2E1MWJjMTFkNWJkMTQ2ZjMzYjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAKIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCYgY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250
ZXh0KSAmJiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29y
a2xldFRocmVhZCgpKSkKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpICYmIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53
b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNv
bnRleHQpLCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVx
dWVzdCksIG9wdGlvbnMsIFdURk1vdmUocmVmZXJyZXIpKTsKIAogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG51bGxwdHI7CkBAIC0xMTgsOCArMTE4LDggQEAgUmVmUHRyPFRocmVhZGFibGVMb2Fk
ZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXgKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwot
ICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMp
OworICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAg
ICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93
bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBjbGllbnQsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBjb250ZXh0
LmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVzb3VyY2VVUkwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUxMTM5NmJm
ZDgzMzZlM2U4Njc0YTQ5Y2I1YzgxODRiZjE1ODBhN2UuLmVmNDk0OTIyNWIyOGI1MGYzODY2YzBm
N2QzNjZlMGI3OTI2NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2Fk
ZXJDbGllbgogICAgICAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50
aWZpZXIoKTsKICNlbmRpZgogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxT
Y29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3QpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRSZXF1ZXN0KGdsb2JhbFNjb3BlLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1
ZXN0KTsKIAogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZh
bHVlIHRvIGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNv
bGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3Vy
aXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewpAQCAtMjI2LDggKzIyNSw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAg
IGF1dG8gcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKFdU
Rk1vdmUocmVzcG9uc2VEYXRhKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNl
KTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9
CiAKQEAgLTIzOCw4ICsyMzYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVy
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
IHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjQ5LDggKzI0Niw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nIGlkCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBt
X25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGlu
ZyhpZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGlu
Zyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVu
dGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjYxLDggKzI1Nyw3IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvCiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBUaHJlYWRh
YmxlTG9hZGVyOjpsb2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlci0+aW5pdGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyLT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihj
b250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExv
YWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNk
OTU5ZDRiNjNiOWZmNTk1ZC4uYmJlODE2NDkxZTlmZjIzNTE3ODkyODQ4YTdlNjFkNzk3MjMyZTZj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHRlcm1pbmF0ZSgpOwogICAgIGJvb2wgd2FzVGVybWluYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2FzVGVybWluYXRlZDsgfQogCi0gICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX25hbWU7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKaW5kZXggNzIxNTgxZjFiN2M4MTYzNDQ0MzhhZTRl
Y2NiYTBmOTBhMTQyMjQ1Yi4uYTUzYWE2OTVjMWFmOGM4OWVjYzZjYmEzYTVkN2Y1YWMwMzgwNTI4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCi1Xb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJDb25zb2xlQ2xpZW50KFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckNvbnNvbGVDbGllbnQ6
OldvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlKQogICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKaW5k
ZXggOTc3YjA3ZDU0MTM3ODJmZjU1MDMxNzZhZjMwMWYwNjJmMzQ0ZTZkZS4uZmFhNTFmZjc0MzBm
N2MxNTA2OWExZTBhNmI1MThlYjhjMjhhNWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVu
dC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBK
U0M6OkNvbnNvbGVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyR2xvYmFsU2NvcGUmKTsK
KyAgICBleHBsaWNpdCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJik7CiAgICAgdmlydHVhbCB+V29ya2VyQ29uc29sZUNsaWVudCgpOwogCiBwcml2YXRlOgpA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBt
X3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dv
cmtlckdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCA2MzJiODJl
MjhiNzJkYTYxMzcxYzI0ZWJmYmFmMmRkNTU5MTBkMDcxLi45M2Q2OGEzYzQ3MTVhN2M4M2VmM2Jm
NjRjNDk0ZTc3OGYxZjk4NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckluc3BlY3RvclByb3h5LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKIAorI2luY2x1ZGUgIkF1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
ckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxv
b3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApAQCAtMzksNiArNDAsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0
b3JDb250cm9sbGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisjaWYgRU5B
QkxFKFdFQl9BVURJTykKKyAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpOworfQor
CiBIYXNoU2V0PFdvcmtlckluc3BlY3RvclByb3h5Kj4mIFdvcmtlckluc3BlY3RvclByb3h5Ojph
bGxXb3JrZXJJbnNwZWN0b3JQcm94aWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxXb3JrZXJJbnNwZWN0b3JQcm94eSo+PiBwcm94aWVzOwpAQCAtNjIsNyArNzIsNyBA
QCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0
TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIHJldHVybiBwYXVzZU9uU3RhcnQgPyBXb3Jr
ZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IgOiBXb3JrZXJUaHJlYWRTdGFydE1v
ZGU6Ok5vcm1hbDsKIH0KIAotdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRl
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJU
aHJlYWQqIHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQg
V29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3dv
cmtlclRocmVhZCk7CiAKQEAgLTkzLDcgKzEwMyw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJv
eHk6OndvcmtlclRlcm1pbmF0ZWQoKQogdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVzdW1l
V29ya2VySWZQYXVzZWQoKQogewogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERl
YnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5p
bmdEZWJ1Z2dlclRhc2tzKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1
Z2dlclRhc2tzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEwNiw3ICsxMTYsNyBAQCB2b2lkIFdvcmtl
ckluc3BlY3RvclByb3h5Ojpjb25uZWN0VG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2VD
aGFubmVsJiBjaGFubgogICAgIG1fcGFnZUNoYW5uZWwgPSAmY2hhbm5lbDsKIAogICAgIG1fd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOworICAgICAg
ICBpbnNwZWN0b3JDb250cm9sbGVyKGNvbnRleHQpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0p
OwogfQogCkBAIC0xMTksMTEgKzEyOSwxMSBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojpk
aXNjb25uZWN0RnJvbVdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIG1fcGFnZUNoYW5u
ZWwgPSBudWxscHRyOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdn
ZXJUYXNrKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCku
ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7
CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzY29ubmVjdEZyb250ZW5k
KERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICAgICAgLy8gSW4g
Y2FzZSB0aGUgd29ya2VyIGlzIHBhdXNlZCBydW5uaW5nIGRlYnVnZ2VyIHRhc2tzLCBlbnN1cmUg
d2UgYnJlYWsgb3V0IG9mCiAgICAgICAgIC8vIHRoZSBwYXVzZSBzaW5jZSB0aGlzIHdpbGwgYmUg
dGhlIGxhc3QgZGVidWdnZXIgdGFzayB3ZSBzZW5kIHRvIHRoZSB3b3JrZXIuCi0gICAgICAgIGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5zdG9wUnVubmluZ0Rl
YnVnZ2VyVGFza3MoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2Vy
VGFza3MoKTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDcgKzE0NCw3IEBAIHZvaWQgV29ya2VySW5z
cGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0
IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0RGVidWdnZXJUYXNrKFttZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3Nh
Z2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29u
dGV4dCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXgg
NWU4YTFkYzBlZDBkOWFhNTMyYzM2NzQ2NGM4NjdmYjRmN2Y5YWE1Zi4uYmVmYzAxZDk1NzBhOGM0
YThiN2RkZWU4NWVhMTA2MThhNzdhNDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyVGhyZWFk
OworY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwogCiBlbnVtIGNsYXNzIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZTsKIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsgfQogCiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
IHdvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgdm9pZCB3b3Jr
ZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWQqLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoKTsKIAogICAgIHZv
aWQgcmVzdW1lV29ya2VySWZQYXVzZWQoKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7Cisg
ICAgUmVmUHRyPFdvcmtlck9yV29ya2xldFRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAgICAgU3Ry
aW5nIG1faWRlbnRpZmllcjsKICAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggNmY5YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUyYWQ1NWQyMmZhZmE3
OC4uYjY0MThkMDBmNmZiZGNmZjVhMGE2Mzc0NzliY2I3OTRmMGFkZjlkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgKQEAgLTI3LDEyICsyNywyMyBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNS
dW5Mb29wVGltZXIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0OworY2xhc3MgVk07Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpID0gZGVmYXVsdDsKIAorICAg
IHZpcnR1YWwgSlNDOjpWTSYgdm0oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVi
dWdnZXIoSlNDOjpEZWJ1Z2dlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdn
ZXIoSlNDOjpEZWJ1Z2dlciopID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSGVhcEFj
Y2VzcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUhlYXBBY2Nlc3MoKSA9IDA7CiAK
QEAgLTQwLDYgKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaW1lclNl
dE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxi
YWNrKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVX
cmFwcGVyKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggMzc4MDk2MWM3OTQ5
ODU3YTFlMjA1ZjhjMzEyOTYyYzA3MGJlYWY4MS4uYTA3ZTljYWQ4OWRmZjQzM2VjNzY0OWU3ZWU1
ZmZlNTU5MGJiMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFRocmVhZC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRocmVhZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXJEZWJ1Z2dlclByb3h5OwogY2xhc3MgV29ya2VyTG9h
ZGVyUHJveHk7CiBjbGFzcyBXb3JrZXJSdW5Mb29wOwogCkBAIC00Myw2ICs0NCwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlckxv
YWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtlckRl
YnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CmluZGV4IGIzZTcxYzkyZGYxNjdlOTgxYTZiNTA4OWU1MWJkZjA4MzQ2ZWM3ZmMuLjg3ZGQ5OTY5
YzVlOTA2ZGVlNzJjNDQ3NzViYzJjZTZkZjVhMWE1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTAsMTYgKzUwLDE2IEBAIFdv
cmtlclNjcmlwdExvYWRlcjo6fldvcmtlclNjcmlwdExvYWRlcigpID0gZGVmYXVsdDsKIE9wdGlv
bmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVy
bCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGF1dG8mIHdvcmtlckdsb2JhbFNj
b3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKKyAgICBhdXRvJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBt
X3VybCA9IHVybDsKICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlv
bjo6U2NyaXB0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGJvb2wgaXNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtl
ckdsb2JhbFNjb3BlKTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gaXM8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAK
ICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3Jr
ZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgeworICAgICAgICBpZiAoYXV0byog
c2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CiAgICAgICAgICAgICBt
X3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAg
bV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwpAQCAtNzIsNyAr
NzIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIGlmICghcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAgLy8gT25s
eSB1c2VkIGZvciBpbXBvcnRTY3JpcHRzIHRoYXQgcHJlc2NyaWJlcyBOb0NvcnMgbW9kZS4KICAg
ICBBU1NFUlQobW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyk7CkBAIC04NywxMCAr
ODcsMTAgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBvcHRpb25zLmRlc3RpbmF0aW9u
ID0gbV9kZXN0aW5hdGlvbjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgb3B0aW9u
cy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA/IFNlcnZp
Y2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsOwotICAgIGlmIChh
dXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyR2xvYmFsU2NvcGUuYWN0aXZlU2Vydmlj
ZVdvcmtlcigpKQorICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQogICAgICAgICBvcHRpb25z
LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtl
ci0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCi0gICAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RG
TW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogCiAgICAgLy8gSWYgdGhlIGZl
dGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdvcmtFcnJvciBleGNlcHRpb24gYW5k
IGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICBpZiAoZmFpbGVkKCkpCkBAIC0xMDEsNyArMTAx
LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBp
cyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRT
Y3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1J
TUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAxMjE0YjkxOWRhMzRkMzJmMmZjYWM5
YTI5ODEyZjZmZDZhODdhMTI4Li44YjJhNjcyZjAwM2NlMTkyMjg5MjZlY2EzMjU2ZDM1OGUyZjkx
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90
aHJlYWQuZ2V0KCk7IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1
cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5
KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAgIFdvcmtlckRlYnVn
Z2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlckRl
YnVnZ2VyUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CiAgICAg
V29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5KCkgY29uc3QgeyByZXR1
cm4gbV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCiAgICAgLy8gTnVtYmVyIG9mIGFjdGl2ZSB3
b3JrZXIgdGhyZWFkcy4KQEAgLTEwMyw4ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRO
b3RpZmljYXRpb25DbGllbnQoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpIHsgbV9ub3RpZmlj
YXRpb25DbGllbnQgPSBjbGllbnQ7IH0KICNlbmRpZgogCi0gICAgdm9pZCBzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKCk7Ci0gICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAg
ICB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BS
dW5uaW5nRGVidWdnZXJUYXNrcygpIGZpbmFsOwogICAgIAogICAgIEpTQzo6UnVudGltZUZsYWdz
IHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApp
bmRleCAwNGYxOGM2MzE3MjVmOGQ3NTg3NTgzOTFiY2UxZDU5MWZiNjk5MGY2Li45MTA4NGE3ZmIz
ZTYwYWI3OTZiYjUwNDE4M2RkY2NiODI2YzRjMTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xNTIsNiArMTUyLDE1
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBh
aW50KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorSW5zcGVj
dG9yQ29udHJvbGxlciogUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6Omluc3BlY3RvckNvbnRyb2xs
ZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gcmVzcG9uc2libGVEb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8q
IHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgIHJldHVybiBwYWdlID8gJnBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSA6IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaAppbmRleCAzYjcxM2RjM2Y0ZWRjMWJhNzQyZGUzYzllYWQwYjUwMGM2Zjc0MmM2
Li4zNWFiZTQ4OTE5M2RhYjg5OTk5MzE1MGM3ODAzNzZhYTM5NGQyMmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDYg
KzM4LDggQEAgY2xhc3MgVk07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgSlNET01HbG9iYWxPYmpl
Y3Q7CiAKIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9i
YWxTY29wZSB7CkBAIC03Miw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICAgICAgV29ya2xldEdsb2Jh
bFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBSZWY8SlNDOjpWTT4mJiwgU2NyaXB0
U291cmNlQ29kZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRleCAzOTA4
YmRmM2EyOTZjODFiNmY0YmE4ZThlMDhlM2ZjNTgyZWU1ZTNhLi40ODc1YzdiNGRlZDQ0OTc3Yjg0
YjQ4MTQ1MjRiMmFjMzk5N2UzYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdU
YXNrcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdvcmtsZXQpOwogCiBXb3JrbGV0OjpXb3JrbGV0KERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIoIndvcmts
ZXQ6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaAppbmRleCA0MTY4Njc0YzczYjI5OTA5
YmE2Mjk2MjU3MjFiMzgwNTNlMjI3YmVlLi5mZGI2NjNkN2EzNWE4NGZiNzcwZmYwMTFkODYxMmFl
NGNjMjJjNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxS
ZWY8V29ya2xldEdsb2JhbFNjb3BlUHJveHk+PiYgcHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJveGllczsgfQorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgV29ya2xldChEb2N1
bWVudCYpOwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9iamVj
dC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAK
KyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFZlY3RvcjxSZWY8V29ya2xldEdsb2JhbFNj
b3BlUHJveHk+PiBtX3Byb3hpZXM7CiAgICAgSGFzaFNldDxSZWZQdHI8V29ya2xldFBlbmRpbmdU
YXNrcz4+IG1fcGVuZGluZ1Rhc2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmRmNTUwZjQ0OTkyZDllNjA0MzFlN2QyM2ZkZmIzOWQxZDBlOTNjMC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtsZXRDb25z
b2xlQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKLQotV29ya2xldENvbnNvbGVDbGllbnQ6OldvcmtsZXRDb25zb2xlQ2xpZW50KFdvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQotICAgIDogbV93b3JrbGV0R2xvYmFs
U2NvcGUod29ya2xldEdsb2JhbFNjb3BlKQotewotfQotCi1Xb3JrbGV0Q29uc29sZUNsaWVudDo6
fldvcmtsZXRDb25zb2xlQ2xpZW50KCkgPSBkZWZhdWx0OwotCi12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCi17Ci0gICAgU3RyaW5nIG1lc3NhZ2VUZXh0Owot
ICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAg
ICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92
ZShhcmd1bWVudHMpLCBleGVjKTsKLSAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xl
TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKLX0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6Y291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6dGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgUmVmPFNj
cmlwdEFyZ3VtZW50cz4mJikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lRW5k
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0
Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JikgeyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVu
dDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikg
eyB9Ci12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAoSlNDOjpKU0dsb2JhbE9i
amVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjpyZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29u
c29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFy
Z3VtZW50cz4mJikgeyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxMmJiNDlhNWRhZmI4YWYzYzNjZDk5NjdmNmYwYmExZGMzYjU1M2E5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlQ2xpZW50Lmg+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJh
bWU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV29ya2xldENvbnNvbGVDbGll
bnQgZmluYWwgOiBwdWJsaWMgSlNDOjpDb25zb2xlQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrbGV0Q29uc29sZUNsaWVudChX
b3JrbGV0R2xvYmFsU2NvcGUmKTsKLSAgICB2aXJ0dWFsIH5Xb3JrbGV0Q29uc29sZUNsaWVudCgp
OwotCi1wcml2YXRlOgotICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5
cGUsIE1lc3NhZ2VMZXZlbCwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCBjb3VudChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBjb3VudFJlc2V0KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lk
IHByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZpbmFs
OwotICAgIHZvaWQgcHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiB0aXRsZSkgZmluYWw7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lkIHRpbWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGlt
ZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVFbmQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgdGlt
ZVN0YW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVjb3JkRW5k
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYp
IGZpbmFsOwotICAgIHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLQotICAgIFdvcmtsZXRHbG9iYWxT
Y29wZSYgbV93b3JrbGV0R2xvYmFsU2NvcGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRl
eCA3YjNiNDIxMGY3NGI2ZDZiNmEyNjNjZWU5YmVjMDQxYzc2NDI3OTg5Li5kYTNmYWQxNDI0Mzg4
N2Q5MzcyZGQ2NjgxMDE4ODU3NDdhMmQ1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE2MywxNiArMTYzLDIzIEBAIHZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdl
KQogewotICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwg
IW1lc3NhZ2UpCisgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFz
ayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVs
KCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBt
ZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQog
Ci12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkK
KyAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCkpOwogICAgICAgICByZXR1
cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVz
c2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdl
VGV4dCwgU3RyaW5nIHsgfSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0
YWNrLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKQEAgLTIxNiw4ICsyMjMsOSBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05l
eHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCkKICAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5j
aHJvbm91c2x5KCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGZldGNoT3B0aW9ucyks
IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFs
bCwgKnRoaXMpOwogfQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHRoaXMsIGlkZW50aWZpZXIpOwogfQogCiB2b2lk
IFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQpAQCAtMjMzLDYgKzI0MSw4IEBA
IHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgVVJMIG1vZHVs
ZVVSTChtX3NjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSk7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2V2YWx1YXRlZE1vZHVsZXMuYWRkKG1vZHVsZVVSTCk7CiAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1w
b3J0ZWQoKnRoaXMsIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVy
LT5zY3JpcHQoKSk7CisKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlv
bjsKICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zY3JpcHRM
b2FkZXItPnNjcmlwdCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNlcHRpb24pOwogICAgICAg
ICBpZiAoZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0
ZXJzLmgKaW5kZXggM2E0ZjRlNzM3OWNkYmYxMTkxNzJhODI2ZTlkM2EwMjg3ZmIyMTNkOC4uOTgz
NmNmMGEwMzU4MWJlODI2M2I1NTBkODQyNjMxOTMxM2ZmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCkBAIC0zNCwxMyAr
MzUsMTUgQEAgc3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJzIHsKICAgICBVUkwgd2luZG93VVJMOwog
ICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzOwogICAgIGZsb2F0IHNhbXBsZVJh
dGU7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQ
YXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gewog
ICAgICAgICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICAgICAganNSdW50
aW1lRmxhZ3MsCi0gICAgICAgICAgICBzYW1wbGVSYXRlCisgICAgICAgICAgICBzYW1wbGVSYXRl
LAorICAgICAgICAgICAgc3RhcnRNb2RlCiAgICAgICAgIH07CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCAxN2RmNWUxZjNjZjA2NTcxNGJjZWY3NWVkODVmY2FkNTM4ZjZlODBhLi4yM2I0NjAzNjY4M2Y5
NTJkNDUwMTUzYmExY2UyMGUzNWZjZmZjYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSAi
V29ya2xldENvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50Lmgi
CiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGltZXIuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lk
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBB
U1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRH
bG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNj
b3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGll
bnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKQEAgLTI2
Nyw0ICsyNjcsMjAgQEAgYm9vbCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aXNUZXJtaW5hdGlu
Z0V4ZWN1dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbjsK
IH0KIAordm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpE
ZWJ1Z2dlciogZGVidWdnZXIpCit7CisgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CisgICAgZGVi
dWdnZXItPmF0dGFjaChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworfQorCit2
b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2Vy
KiBkZWJ1Z2dlcikKK3sKKyAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9u
KTsKK30KKworSlNDOjpKU0dsb2JhbE9iamVjdCogV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omds
b2JhbFNjb3BlV3JhcHBlcigpCit7CisgICAgcmV0dXJuIHdvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmQ0M2NlNWY5ZmZkMmE3
MGFmMGJmNmU1YWVlNTRjZDhmYWM3MmYyZS4uNWIyY2M3YTU3YzgzMmQwYmI3MjA4Y2I5MmU0MDUy
ZWVkOGMyZjRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5oCkBAIC00MSw5ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSlNXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwotY2xh
c3MgV29ya2xldENvbnNvbGVDbGllbnQ7CitjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50OwogY2xh
c3MgV29ya2xldEdsb2JhbFNjb3BlOwotY2xhc3MgV29ya2xldENvbnNvbGVDbGllbnQ7CiAKIC8v
IEZJWE1FOiBXZSBzaG91bGQgc2hhcmUgbW9yZSBjb2RlIHdpdGggV29ya2VyU2NyaXB0Q29udHJv
bGxlci4KIGNsYXNzIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyIDogcHVibGljIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXIgewpAQCAtNTksNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CiAgICAgfQogCisgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsU2NvcGVXcmFwcGVyKCkgZmluYWw7CisKICAgICB2
b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgIGJvb2wgaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBj
b25zdDsKIApAQCAtNzksNyArODAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFeGNlcHRp
b24oSlNDOjpFeGNlcHRpb24qKTsKIAotICAgIEpTQzo6Vk0mIHZtKCkgeyByZXR1cm4gKm1fdm07
IH0KKyAgICBKU0M6OlZNJiB2bSgpIGZpbmFsIHsgcmV0dXJuICptX3ZtOyB9CisKKyAgICB2b2lk
IGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERl
YnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRT
Y3JpcHRJZk5lZWRlZCgpCkBAIC05NSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2V4
ZWN1dGlvbkZvcmJpZGRlbiB7IGZhbHNlIH07CiAgICAgUmVmUHRyPEpTQzo6Vk0+IG1fdm07CiAg
ICAgV29ya2xldEdsb2JhbFNjb3BlKiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V29ya2xldENvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V29ya2VyQ29uc29sZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OwogICAgIEpT
Qzo6U3Ryb25nPEpTV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBw
ZXI7CiAgICAgbXV0YWJsZSBMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRpb25Mb2NrOwogICAgIGJv
b2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411370</attachid>
            <date>2020-10-14 14:06:14 -0700</date>
            <delta_ts>2020-10-19 17:07:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201014140613.patch</filename>
            <type>text/plain</type>
            <size>108265</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5YWZjNGU0MGRmOWFl
YzRlNzMxOTA0Y2MyOTk5NzQzYzA4NGFiMC4uZGZlM2VjZGFkOGUwOGI4ODM2NmUyYjg1MjhiODA1
Yjg1ZjRhMjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMC0xMC0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0cyB1cCB0byBXZWJJbnNwZWN0b3IsIHNpbWls
YXJseSB0byBXZWIgV29ya2Vycy4gVGhpcyBiYXNpY2FsbHkgcG9ydHMKKyAgICAgICAgV2ViSW5z
cGVjdG9yIGNvZGUgdG8gdXNlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIGluc3RlYWQgb2Yg
V29ya2VyR2xvYmFsU2NvcGUKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUg
Y29kZSBmb3Igd29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkQnlXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6
OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3
b3JrZXJEZWJ1Z2dlclByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dFRocmVhZDo6c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1dvcmtsZXRUaHJlYWQ6OnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6V29y
a2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRldGFjaERl
YnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BX
aGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VX
b3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OlNl
cnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFnZW50OjpX
b3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdl
bnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1
Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29ya2VyQ29u
c29sZUNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvclByb3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
clByb3h5OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25v
dXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OldvcmtsZXQpOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6Omlk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdy
YXBwZXIpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisK
IDIwMjAtMTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWNoZSBKUyBhcmd1bWVudHMgaW4gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKCkgZm9y
IHBlcmZvcm1hbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGViYjg0MzBjMTYwZGRkYzNm
OWVkOGJkZWFhMzE0OTVjZGRkYWE3NDIuLmNmNjUzODk1MWQyMDliZDk5OWYwZjNmNWZmMzkyMjAx
YzM4ZDkzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk7CiBBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhy
ZWFkJiB0aHJlYWQsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDog
V29ya2xldEdsb2JhbFNjb3BlKHRocmVhZCwgcGFyYW1ldGVycykKICAgICAsIG1fc2FtcGxlUmF0
ZShwYXJhbWV0ZXJzLnNhbXBsZVJhdGUpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiB9CkBAIC0xNDgsNiArMTQ5LDggQEAgdm9pZCBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKICAgICAgICAgZGVmYXVsdFRh
c2tHcm91cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwogICAgIHN0b3BBY3RpdmVET01PYmpl
Y3RzKCk7CiAKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPndvcmtlclRlcm1pbmF0aW5nKCk7
CisKICAgICBtX3Byb2Nlc3NvckNvbnN0cnVjdG9yTWFwLmNsZWFyKCk7CiAKICAgICAvLyBFdmVu
dCBsaXN0ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3Ig
dG9vIGxvbmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmgKaW5kZXggM2U2MTc1ZDFhZTQzOWVmOGMyNmQzNmZhODVkNDQ4YTJjNDU5Yjk2
OC4uYjlhMjU4NjUwZWUzZDFiNmExYWFkNzMyOTBjNTBjMmI3MTRlMjdjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVk
ZSAiQXVkaW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2Jh
bFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDggQEAgcHVibGlj
OgogICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKICAgICB2b2lkIGhhbmRsZVBvc3RS
ZW5kZXJUYXNrcyhzaXplX3QgY3VycmVudEZyYW1lKTsKIAorICAgIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0
b3JDb250cm9sbGVyOyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUo
QXVkaW9Xb3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIApAQCAtODAs
NiArODMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNBdWRpb1dv
cmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvcj4+IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXA7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+
IG1fcGVuZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CiAgICAgT3B0aW9uYWw8SlNDOjpK
U0xvY2tIb2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmluZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBh
NzA2MTNlOTgwNDBhNjAyMDNkYzc3ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2
MjQ1NmY4ZWQ0Mzg2ZDFhNDNmYTJkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApA
QCAtMzcsMzYgKzM3LDQzIEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94
eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBl
bmRpbmdUYXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFy
YW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkK
K3N0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlv
V29ya2xldCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQog
ewogICAgIGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNS
dW50aW1lRmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdz
KCk7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5
LndvcmtlclN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAg
ICAgICAgIGRvY3VtZW50LT51cmwoKSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAg
IHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVS
YXRlKCkgOiAwLjBmCisgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1
ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAg
ICB9OwogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFr
UHRyKHdvcmtsZXQpKQogICAgICwgbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAg
ICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5l
cmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHko
bWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQor
ICAgICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBn
ZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3Rh
cnQoKTsKKyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1l
bnQoKSwgbV93b3JrbGV0VGhyZWFkLnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQog
CiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
KCkKIHsKKyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93
b3JrbGV0VGhyZWFkLT5zdG9wKCk7CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2
b2lkKEF1ZGlvV29ya2wKICAgICB9KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9p
bnNwZWN0b3JQcm94eS0+c2VuZE1lc3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsK
KyAgICB9KTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBv
c3RUYXNrVG9Mb2FkZXIoW2Rpc2FibGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byog
cGFnZSA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBw
YWdlLT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGVi
NzUwNGU2NDY4ZDA4YWY1NGUwMjU5YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEw
NTdkNGM3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7
CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94
eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9h
ZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3
b3JrbGV0KQogICAgIHsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9z
dFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAg
IGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAg
ICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2Vy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQ
dHI8QXVkaW9Xb3JrbGV0PiBtX3dvcmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQ
cm94eTsKICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUw
Ni4uYWI3MDIxMWVhMzBiZDY4MDg1YjNhNDJiZDc5NjEwMGJjOTI1MjIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cApAQCAtMTMxLDYgKzEzMSwxNCBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRo
cmVhZCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9k
ZSA9PSBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAg
c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIg
d2FzIHNvbWVob3cgdGVybWluYXRlZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRz
LgorICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlw
dENvbnRyb2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9v
cCgpOwogCiAjaWYgVVNFKEdMSUIpCkBAIC0xNzYsNiArMTg0LDI3IEBAIFdvcmtlckxvYWRlclBy
b3h5JiBBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4g
bV9tZXNzYWdpbmdQcm94eTsKIH0KIAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0
VGhyZWFkOjp3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNz
YWdpbmdQcm94eTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0Rl
YnVnZ2VyVGFza3MoKQoreworICAgIEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAg
bV9wYXVzZWRGb3JEZWJ1Z2dlciA9IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdDsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVn
Z2VyTW9kZSgqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lk
IEF1ZGlvV29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBt
X3BhdXNlZEZvckRlYnVnZ2VyID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgw
MjI5MmNiMzQzODE0ZDkxMGMyYmVhN2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgy
YTdmMjhmY2NlMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3Mo
KSBmaW5hbDsKKwogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5M
b29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJv
eHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBXb3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAg
UmVmUHRyPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAg
ICBMb2NrIG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJv
b2wgbV9wYXVzZWRGb3JEZWJ1Z2dlciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRmMjMwYzJhYzBhODE5NDVjMTZmZTFiYWRjYjllZGZi
NmZhYzM3N2MuLjFjNzdiNmU3ZTA2OTg5ZDVjNDJjOTA2NDViNmM2ZmJiNmY1ODg5MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yNTg3LDcgKzI1ODcsNiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdv
cmtsZXRzL1dvcmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFz
a3MuY3BwCiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZjE1MTc1
NWMxOGVjZDkzZmU1YWM1OGVkODg2YTZiY2MyOTM4ODEyLi5hMWNmZjc4N2Y2YWM2ZThlNzkxOWQy
OTkwMjdjOWE5NjM1YTJjNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ3LDcgKzEzNDcsNiBAQAogCQk0QjZFODc2OTIx
NzZENjkyMDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyog
Q1NTUGFpbnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjdBRTQ5MzIxNzdC
NTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3Rv
bVBhaW50SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQu
aCAqLzsgfTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1
QjAwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENCMjE5MEVCRDYwMEMw
QUI2NCAvKiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAq
LzsgfTsKIAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFk
T25seS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJB
RkQwQ0UyMTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5oICovOyB9
OwpAQCAtODIyNCw4ICs4MjIzLDYgQEAKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNt
YXJ0UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNt
YXJ0UmVwbGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIy
MTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Vz
dG9tUGFpbnRJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIx
NzdCNjNFMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDdXN0b21QYWludEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI3
RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtsZXRDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxl
dGVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRl
QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENBMjE5MEVCRDYw
MEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRTaXplLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENEMjE5MEVCRTkwMEMwQUI2NCAv
KiBDU1NQYWludFNpemUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU1BhaW50U2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xOTgwNiw4ICsxOTgwMyw2IEBACiAJCQkJNEJERUEzMjMyMTdFQzk2
QTAwNTJERkNEIC8qIFdvcmtsZXQuY3BwICovLAogCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZD
RCAvKiBXb3JrbGV0LmggKi8sCiAJCQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmts
ZXQuaWRsICovLAotCQkJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29s
ZUNsaWVudC5jcHAgKi8sCi0JCQkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRD
b25zb2xlQ2xpZW50LmggKi8sCiAJCQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAgKi8sCiAJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdv
cmtsZXRHbG9iYWxTY29wZS5oICovLAogCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBX
b3JrbGV0R2xvYmFsU2NvcGUuaWRsICovLApAQCAtMzQ3NjgsNyArMzQ3NjMsNiBAQAogCQkJCUE1
NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xl
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmts
ZXRDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyNTIxN0ZFMkU0MDA1
MkRGQ0QgLyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgx
ODI1MjRENEY1MDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQUNEMDEzMjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAK
aW5kZXggODU1MGFkOGE0YmQ4NGIyNjliNDY4NDQ4ZjE1OTEzNjdhYzIwMDlhOC4uZjllNWVkOGNi
MzM2ODI3MTRlYmQ3ZDg1MTIxYjk0ZjQ5OTYyMjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKQEAgLTk4LDE4ICs5OCwxMSBAQCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVG
cm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBQYWdlKiBwYWdlKQogICAgIHJldHVybiBw
YWdlID8gcGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6IG51
bGxwdHI7CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9i
YWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAg
IHJldHVybiB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+d29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyKCk7CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmds
b2JhbFNjb3BlV3JhcHBlcigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYgd29ya2xldEdsb2JhbFNjb3BlKQot
ewotICAgIGlmICghd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gd29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpLT53b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci19Ci0jZW5kaWYKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmgKaW5kZXggMDRmMWJhNGUzMGRlNDEwMDMzZmU3NDM0ZjFkODk4
NTg4Njc1MjExZC4uYTUyODExM2ExZjdhZWE2ZjZiOWRkMzRmZGIxNjkwNTc2ZTgwNDAwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCkBAIC00NCwxMCArNDQsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwotI2lmIEVOQUJMRShDU1Nf
UEFJTlRJTkdfQVBJKQotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOwotI2VuZGlmCitjbGFzcyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhl
Y1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIEZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUo
SlNDOjpKU0dsb2JhbE9iamVjdCopOwpAQCAtNTcsOSArNTQsNiBAQCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKIAogSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiwgTm9kZSopOwogV0VCQ09SRV9FWFBP
UlQgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxk
JiwgUGFnZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7Ci0jaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkp
Ci1KU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKFdv
cmtsZXRHbG9iYWxTY29wZSYpOwotI2VuZGlmCitKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjU3Rh
dGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3MTZiMWE2OWI4
ZWVjMWRhNjQ3MjAxYTQzMjY5MmIzMzg5N2ViNzhlLi5iNDZkOGE3ZWQ5MWI5ZjM4NjkzODBhMjc1
YzA5NzA2ZGE3MzQyMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjc5LDQgKzI3OSw5IEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIpCiAgICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0KIAorSlND
OjpKU0dsb2JhbE9iamVjdCogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsU2NvcGVXcmFw
cGVyKCkKK3sKKyAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlMzkwMTgwZjU3MWY5ZTFlMzViYzkyM2Ix
ZDc3MWQ0Yjk1Y2VkYTQ0Li42Mjg3ZmIxNTdkZGIzM2I1N2Y1ZTY3NzE3ZWU0MGYxMTIxYjc5ZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29y
a2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpIGZpbmFsOworCiAgICAgdm9pZCBldmFsdWF0ZShj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2Ug
PSBudWxscHRyKTsKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uLCBTdHJpbmcqIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogCkBAIC03OCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAg
ICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAK
LSAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisgICAgSlNDOjpWTSYgdm0oKSBm
aW5hbCB7IHJldHVybiAqbV92bTsgfQogICAgIAogICAgIHZvaWQgcmVsZWFzZUhlYXBBY2Nlc3Mo
KSBmaW5hbDsKICAgICB2b2lkIGFjcXVpcmVIZWFwQWNjZXNzKCkgZmluYWw7CkBAIC04Niw4ICs4
OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNS
dW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlVGltZXJTZXROb3RpZmljYXRpb24oSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3Rp
ZmljYXRpb25DYWxsYmFjaykgZmluYWw7CiAKLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6
RGVidWdnZXIqKTsKLSAgICB2b2lkIGRldGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKKyAg
ICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRl
dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lk
IGluaXRTY3JpcHRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKaW5kZXggNTJjNzhmNjFmNDBlZGVjNmY2NGYyODJhZmE3ZDE1ZGMyMzNm
ZTBlNy4uNTZlODQxOTMxNzdlM2M3NTJhMWFhZThjY2U2NmFmMmIzZjNlODI2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDgxLDEyICs0
ODEsOCBAQCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp2bSgpCiB7CiAgICAgaWYg
KGlzPERvY3VtZW50PigqdGhpcykpCiAgICAgICAgIHJldHVybiBjb21tb25WTSgpOwotICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKLSNpZiBFTkFCTEUoQ1NT
X1BBSU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0g
ICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQo
KS0+dm0oKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGNvbW1vblZNKCk7CkBAIC01MzIsMTIgKzUyOCw4IEBAIEpTQzo6
SlNHbG9iYWxPYmplY3QqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAg
ICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVh
ZE5vcm1hbFdvcmxkKCkpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9i
YWxTY29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNpZiBFTkFCTEUo
Q1NTX1BBSU5USU5HX0FQSSkKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykp
Ci0gICAgICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0
PFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKLSNlbmRpZgorICAgIGlmIChpczxXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZXhlY1N0YXRlRnJv
bVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlPigqdGhpcykpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDFkNjVhNDUyNzU5ZmQwMjUzMjIzMmZmZmJmYjcwMzc2
ZjBhZmVmOTAuLmIwNGJhN2E1MTgzMWRhZjMzYTE4YWE2MDdjYTFjMjQ5ZmMyMTEzMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ29tcHV0
ZWRFZmZlY3RUaW1pbmcuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTYxLDYgKzYyLDcg
QEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2VIZWFwQWdl
bnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFnZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC03Myw2ICs3
NSw4IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgpAQCAtMTMyMCw5ICsxMzI0LDE4IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJM
YXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMmIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1lbnRp
bmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2Nv
cGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyNpZiBFTkFC
TEUoV0VCX0FVRElPKQorICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4od29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5pbnNwZWN0b3JDb250
cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLnB0cigpOworI2VuZGlmCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBQYWludFdv
cmtsZXRzLgorICAgIGlmIChpczxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJl
dHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CiB9
CiAKIEluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYgcGFnZSkKQEAgLTEzMzUsOCArMTM0OCw4IEBAIElu
c3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckNvbnRleHQoU2NyCiB7CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkK
ICAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5wYWdlKCkpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkpCi0gICAgICAgIHJldHVybiAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgaWYgKGlz
PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggNWFkNzllMGQxNmE5NTMyYjgxYzhiNWFmODBhYWNhY2U1OTg2OWQx
ZS4uZDBlODBlNjIxY2M1MWFmNDNkZGM4MTkwNmJmYTY4Zjc5MWU0YjE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
OTksNyArOTksNyBAQCBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwotY2xhc3MgV29ya2VyR2xvYmFs
U2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogI2lmIEVOQUJMRShX
RUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKQEAgLTIwMSwxMSArMjAxLDExIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJl
c291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCi0gICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNj
b3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgLy8gU29t
ZSBuZXR3b3JrIHJlcXVlc3RzIGRvIG5vdCBnbyB0aHJvdWdoIHRoZSBub3JtYWwgbmV0d29yayBs
b2FkaW5nIHBhdGguCiAgICAgLy8gVGhlc2UgbmV0d29yayByZXF1ZXN0cyBoYXZlIHRvIGlzc3Vl
IHRoZWlyIG93biB3aWxsU2VuZFJlcXVlc3QgLyBkaWRSZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5p
c2hMb2FkaW5nIC8gZGlkRmFpbExvYWRpbmcKQEAgLTI0MywyMCArMjQzLDIwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwotICAgIHN0YXRpYyB2b2lkIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBh
Z2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3Rh
dGljIHZvaWQgY29uc29sZUNvdW50KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3Vu
dChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRSZXNldChQYWdl
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRp
YyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVD
b3VudFJlc2V0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCiAgICAgc3RhdGljIHZvaWQgdGFrZUhlYXBTbmFw
c2hvdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0
Q29uc29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
IGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFs
U2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAg
c3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRp
YyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAg
ICBzdGF0aWMgdm9pZCBsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29uc29sZVRpbWluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2
b2lkIHN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtl
ckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwp
OworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAg
IHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmLCBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZv
aWQgc3RvcFByb2ZpbGluZyhQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5k
ZXJMYXllciYpOwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
Jik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYp
OwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShjb25zdCBGcmFtZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoY29uc3QgRnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAg
c3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJl
cihSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7Cisg
ICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSopOwogfTsK
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1
MCwxMCArMTA1MCwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbgogICAgICAgICB3aWxsU2Vu
ZFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVl
c3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICB3aWxsU2VuZFJl
cXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJH
bG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UgeyB9KTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSkpCisgICAgICAgIHdpbGxTZW5kUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsK
IH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVl
c3RPZlR5cGUoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9hZFR5
cGUpCkBAIC0xMDc1LDkgKzEwNzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSYgZnJhbWUsIHUKICAgICAg
ICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBp
ZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxw
dHIsIHJlc3BvbnNlLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9u
c2UsIG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyJiBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikK
QEAgLTEwOTQsMTAgKzEwOTYsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcKICAgICAgICAg
ZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRh
LCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFM
ZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsK
IH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywg
UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTEwNywxMCArMTExMCwxMSBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJh
bWUqIGZyYW1lLCBEb2N1bWVudExvYQogICAgICAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBuZXR3b3JrTG9hZE1ldHJpY3Ms
IHJlc291cmNlTG9hZGVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29w
ZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkRmluaXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmll
ciwgbnVsbHB0ciwgbmV0d29ya0xvYWRNZXRyaWNzLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIGRpZEZp
bmlzaExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBudWxscHRy
LCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKQEAgLTExMTksOSArMTEyMywxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2Fk
ZQogICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50
aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmco
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewot
ICAgIGRpZEZhaWxMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRyLCBlcnJvcik7Cisg
ICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQor
ICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZp
ZXIsIG51bGxwdHIsIGVycm9yKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSYgZnJhbWUsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xNTcxLDkgKzE1NzYsMTAgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBh
Z2UsIHN0ZDo6dW5pcXUKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPiBtZXNzYWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RG
TW92ZShtZXNzYWdlKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU4MSw5ICsxNTg3LDEw
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBh
Z2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplCiAgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3Qg
U3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7Ci0gICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRv
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29u
c29sZUNvdW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGxhYmVsKTsKIH0KIAog
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQ
YWdlJiBwYWdlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJl
bCkKQEAgLTE1OTEsOSArMTU5OCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYQogICAgIGNv
bnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3Rh
dGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
b25zb2xlQ291bnRSZXNldChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIGNvbnNvbGVDb3Vu
dFJlc2V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50UmVzZXRJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRha2VIZWFwU25hcHNob3QoRnJhbWUmIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTYwOSw5ICsxNjE3LDEwIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFt
ZSwgSlNDOjpKU0dsCiAgICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRp
bmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3
b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25z
b2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkK
IHsKLSAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAo
YXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAg
IHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxhYmVs
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xl
VGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykK
QEAgLTE2MjAsOSArMTYyOSwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYgogICAgICAgICBs
b2dDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdU
Rk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bG9nQ29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJ
bnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYgYXJndW1lbnRzKQogewotICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxh
YmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwog
fQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGlt
aW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKQEAgLTE2MzEsOSArMTY0MSwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsbwog
ICAgICAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1l
LCBleGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c3RvcENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3Bl
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgc3RvcENvbnNv
bGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHN0b3BDb25zb2xlVGltaW5n
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmIGZyYW1l
LCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMTc1Niw5
ICsxNzY3LDkgQEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UKICAgICByZXR1cm4gcGFnZSA/ICZp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgqcGFnZSkgOiBudWxscHRyOwogfQogCi1pbmxpbmUg
SW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlKQoraW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkK
IHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlckdsb2JhbFNjb3BlKCp3b3JrZXJHbG9iYWxTY29wZSkgOiBudWxscHRyOworICAgIHJl
dHVybiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgqd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpIDog
bnVsbHB0cjsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9u
dGVuZENyZWF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldl
YkFnZW50QmFzZS5oCmluZGV4IDcwNDQ2NDRiZmY5NTIwZWFhZTg2ZWZkNGIyYWUzOTE5MjNmYzdl
ZjQuLjFiYmY5NGVmYTUyMTFhZDIxNmI0YTAwZmY2NmE5MzA3NjZhNzBiYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgUGFnZTsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU7CiAKIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5h
bWVzcGFjZSB3aGVuIHJlbWFpbmluZyBhZ2VudHMgbW92ZS4KIHN0cnVjdCBXZWJBZ2VudENvbnRl
eHQgOiBwdWJsaWMgSW5zcGVjdG9yOjpBZ2VudENvbnRleHQgewpAQCAtNTcsMTMgKzU3LDEzIEBA
IHN0cnVjdCBQYWdlQWdlbnRDb250ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7CiB9Owog
CiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7Ci0g
ICAgV29ya2VyQWdlbnRDb250ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJB
Z2VudENvbnRleHQmIGNvbnRleHQsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSkKICAgICAgICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkK
LSAgICAgICAgLCB3b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAg
LCB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkK
ICAgICB7CiAgICAgfQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3Bl
OworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZTsKIH07CiAKIGNsYXNzIEluc3BlY3RvckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvckFnZW50QmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyLmNwcAppbmRleCA4MGM5YTEwNWM1NGEzZTUzNzBhY2NkNmMxMmZmMDZmMmIzNDM1ZGEy
Li4yMjczMWE3ZTIxYzVjNDdmZWIyMmQ5MjU4MmRjODk4YzYxNTJkYjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKQEAgLTM0LDE2ICszNCwxNyBAQAog
CiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
Ci0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVk0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCi1Xb3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFs
U2NvcGUmIGNvbnRleHQpCitXb3JrZXJEZWJ1Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQpCiAgICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlw
dCgpLT52bSgpKQogICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KQogewpAQCAtNjAs
OCArNjEsOCBAQCB2b2lkIFdvcmtlckRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVp
bmdEZXN0cm95ZWQpCiB7CiAgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWlu
Z0Rlc3Ryb3llZCk7CiAKLSAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAg
ICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7
CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnNj
cmlwdCgpKQorICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsK
ICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKCk7CiB9CkBAIC04MCw3ICs4MSw3IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkKCkKIAogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0Owog
ICAgIGRvIHsKLSAgICAgICAgcmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5y
dW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUobV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgICAg
IHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1
bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICB9IHdo
aWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXIuaAppbmRleCAxYzQ1Njk5OWFlZjYyYjU0NDZhZjk3ZDY1NDY0ZjhjNTZjOWUxYWQzLi4x
NDA5NGEzNjU3Y2U3NTBmZDhiYWJlZTYzZGI0ZmNkYWNhZmU4MTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaApAQCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJs
aWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdn
ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlckRl
YnVnZ2VyKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgV29ya2VyRGVidWdnZXIoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICB+V29ya2VyRGVidWdnZXIoKSBvdmVycmlkZSA9IGRl
ZmF1bHQ7CiAKIApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRM
b29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKICAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsKIAotICAgIFdvcmtl
ckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IDkwZTk4NTQ0YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5
YTA2N2YuLmZlYTNkMGNiNGIyMTljOTIyZTIyYTZmOGU2NDdhMzFlMWY4MDcxNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIK
ICNpbmNsdWRlICJXb3JrZXJET01EZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVi
dWdnZXJBZ2VudC5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V29ya2VyTmV0d29ya0FnZW50LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCIKQEAgLTU3
LDE2ICs1NywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUpCitXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0
ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJv
bnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3
YXRjaDo6Y3JlYXRlKCkpCi0gICAgLCBtX2RlYnVnZ2VyKHdvcmtlckdsb2JhbFNjb3BlKQotICAg
ICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fZGVidWdn
ZXIod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVCh3b3Jr
ZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIAogICAgIGF1dG8gd29ya2VyQ29u
dGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0
aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgp
OwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJv
bnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFu
bmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVu
ZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CiB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgV29ya2VyQWdlbnRDb250ZXh0IFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OndvcmtlckFnZW50Q29udGV4dCgpCiAKICAgICBXb3Jr
ZXJBZ2VudENvbnRleHQgd29ya2VyQ29udGV4dCA9IHsKICAgICAgICAgd2ViQ29udGV4dCwKLSAg
ICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSwKKyAgICAgICAgbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSwKICAgICB9OwogCiAgICAgcmV0dXJuIHdvcmtlckNvbnRleHQ7CkBAIC0xNjgsNyAr
MTY4LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRz
KCkKICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdv
cmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgeworICAgIGlm
IChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUpKSB7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJB
Z2VudD4od29ya2VyQ29udGV4dCkpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAgICB9CkBAIC0xOTksNyAr
MTk5LDcgQEAgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6OmV2YWx1YXRlSGFuZGxlcigpIGNvbnN0CiAKIFZNJiBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOjp2bSgpCiB7Ci0gICAgcmV0dXJuIG1fd29ya2VyR2xvYmFsU2NvcGUudm0oKTsKKyAgICBy
ZXR1cm4gbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS52bSgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3YTUzZDgwNGJmYmNlMGY2MmUxMTUzYzUxM2IxNzhk
NzQyMzgzZWRlLi45ZmQwYjljMzU0NGVhYjY5MzkwZDJlZDRjZTlkYmYwOTc1ZDAxNDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFz
cyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwog
c3RydWN0IFdvcmtlckFnZW50Q29udGV4dDsKIAogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgZXhwbGljaXQgV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdvcmtlclRl
cm1pbmF0aW5nKCk7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdURjo6U3Rv
cHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVn
Z2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBXb3JrZXJH
bG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAg
Ym9vbCBtX2RpZENyZWF0ZUxhenlBZ2VudHMgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRl
eCBjMDI2MjExMzVjNTVlYmQ3MDZlMDQzNTFiNWMxM2Y2MTNiZWE2NTM0Li5kMjYzMGQ1MWNmZDRk
NzFjZTU4MWE5ZjY0OTVhMzE2MmY2ZDgzMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsIGZp
bmFsIDogcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVu
ZENoYW5uZWwoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorICAgIGV4cGxp
Y2l0IFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSkKICAgICB7CiAgICAgfQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndv
cmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CisgICAg
ICAgIG1fd29ya2VyR2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRl
YnVnZ2VyUHJveHkoKS5wb3N0TWVzc2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CiAgICAgfQogCi0g
ICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAppbmRleCBiYmUyY2MwM2Q2NDVm
YzEyOTA4NGRiZWU5ZGQ4MDQyMmJiZDYzZmQ4Li5lZmZkMmJlZTBhMGE3MDliZDlhZDdhMzEyMzMy
NGQwNzIxMmFiM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKQEAgLTM4LDEwICszOCwx
MCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6OlNl
cnZpY2VXb3JrZXJBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoIlNlcnZpY2VXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX3NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQud29ya2VyR2xvYmFsU2NvcGUpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0Lndvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpT
ZXJ2aWNlV29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5p
c0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6On5T
ZXJ2aWNlV29ya2VyQWdlbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4
IDg5MjQxOTBlZTYyMGYxNTUxNGEyNTBkNzYyZTJiZTRhMTkzMzA2M2QuLmQ0MTY0NDg5MDc5MmFh
MTk2OWY3YjcyZWJkNGZhZmQyMzA3OWZhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0y
Nyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyQXVkaXRBZ2VudC5oIgogCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC00
MSw5ICs0MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckF1ZGl0QWdl
bnQ6OldvcmtlckF1ZGl0QWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDog
SW5zcGVjdG9yQXVkaXRBZ2VudChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShj
b250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChj
b250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQo
Y29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9
CiAKIFdvcmtlckF1ZGl0QWdlbnQ6On5Xb3JrZXJBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwpAQCAt
NTUsNyArNTUsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcgogICAgICAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRT
dGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3Bl
KTsKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsK
ICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2Ny
aXB0U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJlY2IwZWVi
OGVkZDczMzllYzA0NTliZDM3MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4MzhmZjhm
Y2YyZWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXb3JrZXJBdWRpdEFnZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9i
YWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2ODdmMDQz
ZWQ1NjdlM2I4ZjRiMTU4MDc2OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFmYmU2Njhh
MWJjZGQ3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25z
b2xlQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFn
ZW50KGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXND
b250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50Ojp+V29y
a2VyQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCA3YWE3MmI2YTRjNjRjYTlmNjc4MTUwZDA2YTMyZDAyOTRjNTA4ODI1Li42ZTY1OGZjNWRi
YmZlOTYyY2NkMjYzZjUyMzIzZGU3MGQxNmJkNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIK
IAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaD4KQEAgLTQxLDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAs
IG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1f
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRU
aHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
aXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVi
dWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xl
TWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENh
bGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNz
YWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKIH0KIAog
SW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpAQCAtNjAs
NyArNjAsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0
ZSA9IGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZShtX3dvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IGV4ZWNTdGF0ZUZyb21Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggN2NhNjRlNDAxM2E1NGI0
MThkNTNlNDc0ODAyZTczMmJmMTkwOGM5Ny4uOTk0N2Y3MTU0NTYxNGFkOTNmZjdlZmUyNWYyZTA1
ODQ4Mjc4NWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBw
cml2YXRlOgogCiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZv
ckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCi0gICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAppbmRleCA1ZGNlODI2ZjRi
MTBlMGNkNDg1Yzg1OWFhMzcyOTMyYmVlNjRiNWE5Li4xNDEwYTI3ODk0MGZkYzFjZmE1YjM2MDJh
YmNjNTc2NDM3ZjdiMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKQEAgLTM2LDkgKzM2
LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyTmV0d29ya0FnZW50OjpX
b3JrZXJOZXR3b3JrQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9yTmV0d29ya0FnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNv
bnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNv
bnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChj
b250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0K
IAogV29ya2VyTmV0d29ya0FnZW50Ojp+V29ya2VyTmV0d29ya0FnZW50KCkgPSBkZWZhdWx0OwpA
QCAtNjEsMTIgKzYxLDEyIEBAIFZlY3RvcjxXZWJTb2NrZXQqPiBXb3JrZXJOZXR3b3JrQWdlbnQ6
OmFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpCiAKIHZvaWQgV29ya2VyTmV0d29y
a0FnZW50OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wgZGlzYWJsZWQp
CiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJEZWJ1Z2dlclByb3h5
KCkuc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7Cisg
ICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+
d29ya2VyRGVidWdnZXJQcm94eSgpLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNw
ZWN0b3IoZGlzYWJsZWQpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXb3JrZXJOZXR3
b3JrQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiwg
Y29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKQogewotICAgIHJldHVybiAmbV93b3Jr
ZXJHbG9iYWxTY29wZTsKKyAgICByZXR1cm4gJm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKaW5kZXgg
ZGQ4N2Q4MTAyMDJlNWIxN2RlOWNmMDdiNzYyYjUyNWVlZTJlM2JlOC4uZDdiZWJkMGRlYTEwYWZi
MDEyYjQ2YWNjNDk2NzVhMjlhOWVkNGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYpOwogICAgIGJvb2wgc2hvdWxk
Rm9yY2VCdWZmZXJpbmdOZXR3b3JrUmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRl
eCBmZmZkM2NlYTIxNTM1OWZlNmYwZWQxZWRkNzcyZDE2YjcwOTUxZGViLi44MmFmZjA2OGY0Y2Jl
ZDBhZWUxYmM5MmM2M2FlMTFiYjEwNmYzNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAogI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CiAKQEAgLTQ0LDkgKzQ0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KFdvcmtlckFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fd29ya2VyR2xv
YmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAg
ICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhy
ZWFkKCkpOwogfQogCiBXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdlbnQoKSA9
IGRlZmF1bHQ7CkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV93b3Jr
ZXJHbG9iYWxTY29wZSk7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBl
eGVjU3RhdGVGcm9tV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUobV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVk
U2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRleCA2
Yjk5OGY0ZDE3MzE4NTFmOTliNjdlZTE1YTVkMjAwMTU4N2Y0ZDA2Li5iY2NjMmI3ZDA3MTVhMzRl
N2M0NzcyMzI2ZDI0MWRhOTZjN2JlMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtMzYs
NyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNj
b3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlclJ1
bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyUnVudGltZUFnZW50KTsKQEAgLTUz
LDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSB7IH0KIAogICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAg
ICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyNzE3Yzg2MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5
YTAzNzM3NTk1Li4xOGZmM2Y5NGYwNDJkMWExZmQwM2E1MWJjMTFkNWJkMTQ2ZjMzYjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CiAKIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0g
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2Jh
bFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
Lndvcmtlck9yV29ya2xldFRocmVhZCgpKSkKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCks
IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFdURk1vdmUocmVmZXJyZXIpKTsKIAogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7CkBAIC0xMTgsOCArMTE4LDggQEAgUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXgKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1
ZXN0LnVybCgpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAg
ICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGll
bnQsIG9wdGlvbnMpOworICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCkpCisgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0
PERvY3VtZW50Pihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsK
ICAgICBjb250ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVzb3VyY2VVUkwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IGUxMTM5NmJmZDgzMzZlM2U4Njc0YTQ5Y2I1YzgxODRiZjE1ODBhN2UuLmVmNDk0OTIyNWIy
OGI1MGYzODY2YzBmN2QzNjZlMGI3OTI2NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRo
cmVhZGFibGVMb2FkZXJDbGllbgogICAgICAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lz
dHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgogCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihnbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSksIG1f
d29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGdsb2JhbFNjb3BlLCBtX3dvcmtlclJlcXVlc3RJZGVu
dGlmaWVyLCByZXF1ZXN0KTsKIAogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBi
ZWluZyBhbiByLXZhbHVlIHRvIGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBj
b3B5PwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9
IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwg
Y29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5
Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewpAQCAtMjI2
LDggKzIyNSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUo
KSk7CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7
Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
Y29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKQEAgLTIzOCw4ICsyMzYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJD
bGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAg
IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
RGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjQ5
LDggKzI0Niw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkCiAgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2Vy
UmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9h
ZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmll
cl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRH
bG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
RmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtl
clJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29y
a0xvYWRNZXRyaWNzKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjYxLDggKzI1Nyw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvCiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlci0+aW5pdGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1
YWRlZmY2ZmNkMWNkOTU5ZDRiNjNiOWZmNTk1ZC4uYmJlODE2NDkxZTlmZjIzNTE3ODkyODQ4YTdl
NjFkNzk3MjMyZTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogICAgIGJvb2wgd2FzVGVybWluYXRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzVGVybWluYXRlZDsgfQogCi0gICAgU3RyaW5nIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKaW5kZXggNzIxNTgxZjFiN2M4
MTYzNDQ0MzhhZTRlY2NiYTBmOTBhMTQyMjQ1Yi4uYTUzYWE2OTVjMWFmOGM4OWVjYzZjYmEzYTVk
N2Y1YWMwMzgwNTI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJDb25zb2xlQ2xpZW50OjpXb3JrZXJDb25z
b2xlQ2xpZW50KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlckNv
bnNvbGVDbGllbnQ6OldvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJH
bG9iYWxTY29wZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xl
Q2xpZW50LmgKaW5kZXggOTc3YjA3ZDU0MTM3ODJmZjU1MDMxNzZhZjMwMWYwNjJmMzQ0ZTZkZS4u
ZmFhNTFmZjc0MzBmN2MxNTA2OWExZTBhNmI1MThlYjhjMjhhNWIzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
Q29uc29sZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBKU0M6OkNvbnNvbGVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyR2xv
YmFsU2NvcGUmKTsKKyAgICBleHBsaWNpdCBXb3JrZXJDb25zb2xlQ2xpZW50KFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJik7CiAgICAgdmlydHVhbCB+V29ya2VyQ29uc29sZUNsaWVudCgpOwog
CiBwcml2YXRlOgpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkRW5k
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVm
PEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKIAotICAgIFdvcmtlckds
b2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcApp
bmRleCA2MzJiODJlMjhiNzJkYTYxMzcxYzI0ZWJmYmFmMmRkNTU5MTBkMDcxLi45M2Q2OGEzYzQ3
MTVhN2M4M2VmM2JmNjRjNDk0ZTc3OGYxZjk4NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKIAorI2lu
Y2x1ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUg
IldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIApAQCAtMzksNiArNDAsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKK3N0YXRpYyBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
Cit7CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorICAgIHJl
dHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJv
bGxlcigpOworfQorCiBIYXNoU2V0PFdvcmtlckluc3BlY3RvclByb3h5Kj4mIFdvcmtlckluc3Bl
Y3RvclByb3h5OjphbGxXb3JrZXJJbnNwZWN0b3JQcm94aWVzKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxXb3JrZXJJbnNwZWN0b3JQcm94eSo+PiBwcm94aWVzOwpAQCAt
NjIsNyArNzIsNyBAQCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgV29ya2VySW5zcGVjdG9yUHJveHk6
OndvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIHJldHVybiBwYXVzZU9u
U3RhcnQgPyBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IgOiBXb3JrZXJU
aHJlYWRTdGFydE1vZGU6Ok5vcm1hbDsKIH0KIAotdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6
d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3ZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
QVNTRVJUKCFtX3dvcmtlclRocmVhZCk7CiAKQEAgLTkzLDcgKzEwMyw3IEBAIHZvaWQgV29ya2Vy
SW5zcGVjdG9yUHJveHk6OndvcmtlclRlcm1pbmF0ZWQoKQogdm9pZCBXb3JrZXJJbnNwZWN0b3JQ
cm94eTo6cmVzdW1lV29ya2VySWZQYXVzZWQoKQogewogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFk
KCkuc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEwNiw3ICsxMTYsNyBA
QCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojpjb25uZWN0VG9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKFBhZ2VDaGFubmVsJiBjaGFubgogICAgIG1fcGFnZUNoYW5uZWwgPSAmY2hhbm5lbDsK
IAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVu
ZCgpOworICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyKGNvbnRleHQpLmNvbm5lY3RGcm9udGVu
ZCgpOwogICAgIH0pOwogfQogCkBAIC0xMTksMTEgKzEyOSwxMSBAQCB2b2lkIFdvcmtlckluc3Bl
Y3RvclByb3h5OjpkaXNjb25uZWN0RnJvbVdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogICAg
IG1fcGFnZUNoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3Rv
ckRlc3Ryb3llZCk7CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzY29u
bmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAg
ICAgICAgLy8gSW4gY2FzZSB0aGUgd29ya2VyIGlzIHBhdXNlZCBydW5uaW5nIGRlYnVnZ2VyIHRh
c2tzLCBlbnN1cmUgd2UgYnJlYWsgb3V0IG9mCiAgICAgICAgIC8vIHRoZSBwYXVzZSBzaW5jZSB0
aGlzIHdpbGwgYmUgdGhlIGxhc3QgZGVidWdnZXIgdGFzayB3ZSBzZW5kIHRvIHRoZSB3b3JrZXIu
Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5z
dG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5zdG9wUnVu
bmluZ0RlYnVnZ2VyVGFza3MoKTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDcgKzE0NCw3IEBAIHZv
aWQgV29ya2VySW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV93b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFttZXNzYWdlID0gbWVzc2FnZS5pc29sYXRl
ZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5k
aXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAgICAgIGluc3BlY3RvckNv
bnRyb2xsZXIoY29udGV4dCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlcklu
c3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmgKaW5kZXggNWU4YTFkYzBlZDBkOWFhNTMyYzM2NzQ2NGM4NjdmYjRmN2Y5YWE1Zi4uYmVm
YzAxZDk1NzBhOGM0YThiN2RkZWU4NWVhMTA2MThhNzdhNDRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
V29ya2VyVGhyZWFkOworY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwogCiBlbnVtIGNsYXNz
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTsKIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsgfQogCiAgICAgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlIHdvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0g
ICAgdm9pZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJl
YWQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgd29ya2VyU3Rh
cnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQo
KTsKIAogICAgIHZvaWQgcmVzdW1lV29ya2VySWZQYXVzZWQoKTsKQEAgLTczLDcgKzczLDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3Jr
ZXJUaHJlYWQ7CisgICAgUmVmUHRyPFdvcmtlck9yV29ya2xldFRocmVhZD4gbV93b3JrZXJUaHJl
YWQ7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5n
IG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNmY5YmY4M2U5MzBkZDE2NWQ4YTMzMDQ3MDUy
YWQ1NWQyMmZhZmE3OC4uYjY0MThkMDBmNmZiZGNmZjVhMGE2Mzc0NzliY2I3OTRmMGFkZjlkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmgKQEAgLTI3LDEyICsyNywyMyBAQAogCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1
Z2dlcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgVk07Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcigpID0gZGVm
YXVsdDsKIAorICAgIHZpcnR1YWwgSlNDOjpWTSYgdm0oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlSGVhcEFjY2VzcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUhlYXBBY2Nl
c3MoKSA9IDA7CiAKQEAgLTQwLDYgKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVUaW1lclNldE5vdGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlm
aWNhdGlvbkNhbGxiYWNrKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXJtaW5hdGluZ0V4
ZWN1dGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsU2NvcGVXcmFwcGVyKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXgg
Mzc4MDk2MWM3OTQ5ODU3YTFlMjA1ZjhjMzEyOTYyYzA3MGJlYWY4MS4uYTA3ZTljYWQ4OWRmZjQz
M2VjNzY0OWU3ZWU1ZmZlNTU5MGJiMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRocmVhZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXJEZWJ1Z2dlclByb3h5OwogY2xh
c3MgV29ya2VyTG9hZGVyUHJveHk7CiBjbGFzcyBXb3JrZXJSdW5Mb29wOwogCkBAIC00Myw2ICs0
NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKICAgICB2aXJ0
dWFsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKKyAgICB2aXJ0
dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgPSAwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCmluZGV4IGIzZTcxYzkyZGYxNjdlOTgxYTZiNTA4OWU1MWJkZjA4MzQ2ZWM3
ZmMuLjg3ZGQ5OTY5YzVlOTA2ZGVlNzJjNDQ3NzViYzJjZTZkZjVhMWE1ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTAsMTYg
KzUwLDE2IEBAIFdvcmtlclNjcmlwdExvYWRlcjo6fldvcmtlclNjcmlwdExvYWRlcigpID0gZGVm
YXVsdDsKIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2Fj
aGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGF1dG8mIHdv
cmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAKICAgICBtX3VybCA9IHVybDsKICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2NyaXB0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSk7CiAKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgeworICAgICAg
ICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7
CiAgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwog
ICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBl
OwpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIGlmICghcmVx
dWVzdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
czxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwog
CiAgICAgLy8gT25seSB1c2VkIGZvciBpbXBvcnRTY3JpcHRzIHRoYXQgcHJlc2NyaWJlcyBOb0Nv
cnMgbW9kZS4KICAgICBBU1NFUlQobW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyk7
CkBAIC04NywxMCArODcsMTAgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBvcHRpb25z
LmRlc3RpbmF0aW9uID0gbV9kZXN0aW5hdGlvbjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBpc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
OwotICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyR2xvYmFsU2NvcGUu
YWN0aXZlU2VydmljZVdvcmtlcigpKQorICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2Vy
ID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQogICAg
ICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZl
U2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCi0gICAgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9i
YWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogCiAgICAg
Ly8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdvcmtFcnJvciBl
eGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICBpZiAoZmFpbGVkKCkpCkBA
IC0xMDEsNyArMTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1J
TUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwg
Im1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsK
IAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVU
eXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwg
bV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAxMjE0YjkxOWRh
MzRkMzJmMmZjYWM5YTI5ODEyZjZmZDZhODdhMTI4Li44YjJhNjcyZjAwM2NlMTkyMjg5MjZlY2Ez
MjU2ZDM1OGUyZjkxODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAg
LTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkg
ZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtl
ckxvYWRlclByb3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAg
IFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3Jr
ZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclBy
b3h5OyB9CiAgICAgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCiAgICAgLy8gTnVtYmVy
IG9mIGFjdGl2ZSB3b3JrZXIgdGhyZWFkcy4KQEAgLTEwMyw4ICsxMDMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXROb3RpZmljYXRpb25DbGllbnQoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQp
IHsgbV9ub3RpZmljYXRpb25DbGllbnQgPSBjbGllbnQ7IH0KICNlbmRpZgogCi0gICAgdm9pZCBz
dGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7Ci0gICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2Vy
VGFza3MoKTsKKyAgICB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpIGZpbmFsOwogICAgIAogICAgIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdz
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oCmluZGV4IDNiNzEzZGMzZjRlZGMxYmE3NDJkZTNjOWVhZDBiNTAwYzZmNzQyYzYuLmM0
MTIzNDljNTdjOTViZTQwNzg5NDdkZjQ4Y2M5Njc1M2RkYjJlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzgsNiArMzgs
OCBAQCBjbGFzcyBWTTsKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsK
IAogY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNj
b3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKaW5kZXggMzkwOGJkZjNhMjk2Yzgx
YjZmNGJhOGU4ZTA4ZTNmYzU4MmVlNWUzYS4uNDg3NWM3YjRkZWQ0NDk3N2I4NGI0ODE0NTI0YjJh
YzM5OTdlM2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQZW5kaW5nVGFza3MuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCkBAIC00Miw2ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0
KTsKIAogV29ya2xldDo6V29ya2xldChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKCJ3b3JrbGV0OiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKaW5kZXggNDE2ODY3NGM3M2IyOTkwOWJhNjI5NjI1NzIx
YjM4MDUzZTIyN2JlZS4uZmRiNjYzZDdhMzVhODRmYjc3MGZmMDExZDg2MTJhZTRjYzIyYzRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmPFdvcmtsZXRH
bG9iYWxTY29wZVByb3h5Pj4mIHByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3hpZXM7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdvcmtsZXQoRG9jdW1lbnQmKTsKQEAg
LTYyLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCisgICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKICAgICBWZWN0b3I8UmVmPFdvcmtsZXRHbG9iYWxTY29wZVByb3h5Pj4g
bV9wcm94aWVzOwogICAgIEhhc2hTZXQ8UmVmUHRyPFdvcmtsZXRQZW5kaW5nVGFza3M+PiBtX3Bl
bmRpbmdUYXNrc1NldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
Q29uc29sZUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjU1MGY0
NDk5MmQ5ZTYwNDMxZTdkMjNmZGZiMzlkMWQwZTkzYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENv
bnNvbGVDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrbGV0Q29uc29sZUNsaWVudC5o
IgotCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRBcmd1bWVudHMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3Rh
Y2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Ci0KLVdv
cmtsZXRDb25zb2xlQ2xpZW50OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICA6IG1fd29ya2xldEdsb2JhbFNjb3BlKHdvcmts
ZXRHbG9iYWxTY29wZSkKLXsKLX0KLQotV29ya2xldENvbnNvbGVDbGllbnQ6On5Xb3JrbGV0Q29u
c29sZUNsaWVudCgpID0gZGVmYXVsdDsKLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVz
c2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYgYXJndW1lbnRzKQotewotICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKLSAgICBhcmd1bWVu
dHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RG
TW92ZShtZXNzYWdlKSk7Ci19Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OmNvdW50KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNv
bGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYp
IHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRpbWVM
b2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OnByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9p
ZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnRha2VIZWFw
U25hcHNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsgfQotdm9pZCBX
b3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cmVj
b3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLXZv
aWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVuZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
UmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYp
IHsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldENvbnNvbGVDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTJiYjQ5YTVkYWZiOGFmM2MzY2Q5OTY3ZjZmMGJhMWRjM2I1NTNhOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0Q29uc29sZUNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgi
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQ2FsbEZyYW1lOwotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50IGZpbmFsIDog
cHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2xldENvbnNvbGVDbGllbnQoV29ya2xldEdsb2Jh
bFNjb3BlJik7Ci0gICAgdmlydHVhbCB+V29ya2xldENvbnNvbGVDbGllbnQoKTsKLQotcHJpdmF0
ZToKLSAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdl
TGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYpIGZpbmFsOwotICAgIHZvaWQgY291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgY291bnRSZXNldChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBwcm9maWxlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsKLSAgICB2b2lk
IHByb2ZpbGVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpIGZp
bmFsOwotICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgZmluYWw7Ci0gICAgdm9pZCB0aW1lKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVMb2coSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCB0aW1lRW5kKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVTdGFtcChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5h
bDsKLSAgICB2b2lkIHJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZEVuZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0KLSAgICBXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29y
a2xldEdsb2JhbFNjb3BlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2IzYjQyMTBm
NzRiNmQ2YjZhMjYzY2VlOWJlYzA0MWM3NjQyNzk4OS4uNDNkODM0NTI0MjI1NDJlZWY5MDBlMmQy
ZDc2Y2EyMjUxZTAzYTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC0xNjMsMjMgKzE2Myw0MyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBj
b25zdAogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKIHsKLSAgICBp
ZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQor
ICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdl
LT5tZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZENvbnNv
bGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+
c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVz
c2FnZSgpLCAwKSk7CisgICAgfQorCisgICAgaWYgKG1fZG9jdW1lbnQpCisgICAgICAgIG1fZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwo
KSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CisgICAgZWxzZQorICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2Fn
ZSkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1
bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgaWYgKCFpc0NvbnRleHRUaHJl
YWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwor
ICAgIH0KKworICAgIGlmIChtX2RvY3VtZW50KQorICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7Cisg
ICAgZWxzZQorICAgICAgICBhZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHsgfSwg
MCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCi12b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRp
b25Gb3JiaWRkZW4oKSkKKyAgICBpZiAobV9kb2N1bWVudCkgeworICAgICAgICBtX2RvY3VtZW50
LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRyLCByZXF1ZXN0
SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRNZXNzYWdl
KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
IG1lc3NhZ2U7CisgICAgaWYgKGNhbGxTdGFjaykKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRl
bnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNz
YWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1
ZXN0SWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogUmVmZXJyZXJQb2xpY3kg
V29ya2xldEdsb2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0CkBAIC0yMTYsOCArMjM2
LDkgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByb2Nlc3NOZXh0U2NyaXB0RmV0Y2hKb2JJ
Zk5lZWRlZCgpCiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqdGhpcywg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmZXRjaE9wdGlvbnMpLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudCwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzKTsKIH0KIAot
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikKIHsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVTY3Jp
cHRSZXNwb25zZSh0aGlzLCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2Nv
cGU6Om5vdGlmeUZpbmlzaGVkKCkKQEAgLTIzMyw2ICsyNTQsOCBAQCB2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQogICAgIFVSTCBtb2R1bGVVUkwobV9zY3JpcHRMb2Fk
ZXItPnJlc3BvbnNlVVJMKCkpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ldmFsdWF0ZWRNb2R1
bGVzLmFkZChtb2R1bGVVUkwpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCp0aGlzLCBtX3Nj
cmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOworCiAg
ICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgICAgIG1fc2Ny
aXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwg
V1RGTW92ZShtb2R1bGVVUkwpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCmluZGV4IDNhNGY0
ZTczNzljZGJmMTE5MTcyYTgyNmU5ZDNhMDI4N2ZiMjEzZDguLjk4MzZjZjBhMDM1ODFiZTgyNjNi
NTUwZDg0MjYzMTkzMTNmZmU2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFBhcmFtZXRlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFn
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtMzQsMTMgKzM1LDE1IEBAIHN0cnVjdCBX
b3JrbGV0UGFyYW1ldGVycyB7CiAgICAgVVJMIHdpbmRvd1VSTDsKICAgICBKU0M6OlJ1bnRpbWVG
bGFncyBqc1J1bnRpbWVGbGFnczsKICAgICBmbG9hdCBzYW1wbGVSYXRlOworICAgIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZSBzdGFydE1vZGU7CiAKICAgICBXb3JrbGV0UGFyYW1ldGVycyBpc29sYXRl
ZENvcHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIHdpbmRv
d1VSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgICAgIGpzUnVudGltZUZsYWdzLAotICAgICAg
ICAgICAgc2FtcGxlUmF0ZQorICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgIHN0
YXJ0TW9kZQogICAgICAgICB9OwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTdkZjVlMWYzY2YwNjU3
MTRiY2VmNzVlZDg1ZmNhZDUzOGY2ZTgwYS4uMjNiNDYwMzY2ODNmOTUyZDQ1MDE1M2JhMWNlMjBl
MzVmY2ZmY2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkpTUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgIldvcmtsZXRDb25zb2xlQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVy
cmVkV29ya1RpbWVyLmg+CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCiAgICAgQVNTRVJUKG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8
V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgbV9jb25z
b2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xv
YmFsU2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNs
aWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCkBAIC0yNjcsNCArMjY3LDIwIEBAIGJv
b2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSBjb25z
dAogICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKK3ZvaWQgV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2Vy
KQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIGRlYnVnZ2VyLT5hdHRhY2gobV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKK30KKwordm9pZCBXb3JrbGV0U2NyaXB0
Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCit7Cisg
ICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCksIEpT
Qzo6RGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbik7Cit9CisKK0pTQzo6SlNH
bG9iYWxPYmplY3QqIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdyYXBwZXIo
KQoreworICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDZkNDNjZTVmOWZmZDJhNzBhZjBiZjZlNWFlZTU0Y2Q4
ZmFjNzJmMmUuLjViMmNjN2E1N2M4MzJkMGJiNzIwOGNiOTJlNDA1MmVlZDhjMmY0YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApA
QCAtNDEsOSArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTV29ya2xldEds
b2JhbFNjb3BlOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKLWNsYXNzIFdvcmtsZXRDb25zb2xl
Q2xpZW50OworY2xhc3MgV29ya2VyQ29uc29sZUNsaWVudDsKIGNsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZTsKLWNsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50OwogCiAvLyBGSVhNRTogV2Ugc2hvdWxk
IHNoYXJlIG1vcmUgY29kZSB3aXRoIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuCiBjbGFzcyBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlciA6IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyIHsKQEAgLTU5LDYgKzU4LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93b3JrbGV0
R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpOwogICAgIH0KIAorICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbFNjb3BlV3JhcHBlcigpIGZpbmFsOworCiAgICAgdm9pZCBmb3JiaWRFeGVjdXRp
b24oKTsKICAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKQEAgLTc5LDcg
KzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9u
Kik7CiAKLSAgICBKU0M6OlZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisgICAgSlNDOjpWTSYg
dm0oKSBmaW5hbCB7IHJldHVybiAqbV92bTsgfQorCisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihK
U0M6OkRlYnVnZ2VyKikgZmluYWw7CisgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVn
Z2VyKikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQpA
QCAtOTUsNyArOTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4g
eyBmYWxzZSB9OwogICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOwogICAgIFdvcmtsZXRHbG9iYWxT
Y29wZSogbV93b3JrbGV0R2xvYmFsU2NvcGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRD
b25zb2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtl
ckNvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKICAgICBKU0M6OlN0cm9uZzxKU1dvcmts
ZXRHbG9iYWxTY29wZT4gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyOwogICAgIG11dGFibGUg
TG9jayBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTG9jazsKICAgICBib29sIG1faXNUZXJtaW5hdGlu
Z0V4ZWN1dGlvbiB7IGZhbHNlIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411817</attachid>
            <date>2020-10-19 17:07:33 -0700</date>
            <delta_ts>2020-10-21 08:19:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201019170732.patch</filename>
            <type>text/plain</type>
            <size>103244</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYxMDdhZjg2MTRkMGI1
MmE5ZDc0MGY4MWRjZGRjZDEzNjQ2NzY1Yi4uYTk0ZWMyMmM4OWQxNTY5MGU5Zjc3MDQxMDM1Mzcx
YTE2ZWZjNTk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMC0xMC0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0cyB1cCB0byBXZWJJbnNwZWN0b3IsIHNpbWls
YXJseSB0byBXZWIgV29ya2Vycy4gVGhpcyBiYXNpY2FsbHkgcG9ydHMKKyAgICAgICAgV2ViSW5z
cGVjdG9yIGNvZGUgdG8gdXNlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIGluc3RlYWQgb2Yg
V29ya2VyR2xvYmFsU2NvcGUKKyAgICAgICAgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUg
Y29kZSBmb3Igd29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkQnlXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6
OndvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3
b3JrZXJEZWJ1Z2dlclByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dFRocmVhZDo6c3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1dvcmtsZXRUaHJlYWQ6OnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y1N0YXRlRnJvbVdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
Z2xvYmFsU2NvcGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0pOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6V29y
a2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRldGFjaERl
YnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BX
aGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VX
b3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OlNl
cnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFnZW50OjpX
b3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdl
bnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1
Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6V29ya2VyQ29u
c29sZUNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50Lmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvclByb3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
clByb3h5OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25v
dXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9yQ29udHJvbGxlciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OldvcmtsZXQpOgorICAg
ICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6Omlk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3
b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29wZVdy
YXBwZXIpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisK
IDIwMjAtMTAtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXBsYWNlIGV4ZWNTdGF0ZUZyb20qKCkgZnVuY3Rpb25zIHdpdGggZ2xvYmFsT2JqZWN0KCkgb3Zl
cmxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDdjYzkyMzRlNzFlMjRmYzgwYzM5ZmU4
NWZlYTZhMjA4ZTBjNjk1NjEuLjJiMjdlNzkzMjliYjAyOTllOTQ4NjZlMmVkYzRjZmNjYjllM2Uz
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSk7CiBBdWRpb1dvcmtsZXRH
bG9iYWxTY29wZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9Xb3JrbGV0VGhyZWFkJiB0
aHJlYWQsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogV29ya2xl
dEdsb2JhbFNjb3BlKHRocmVhZCwgcGFyYW1ldGVycykKICAgICAsIG1fc2FtcGxlUmF0ZShwYXJh
bWV0ZXJzLnNhbXBsZVJhdGUpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiB9CkBAIC0xNDksNiArMTUwLDggQEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9i
YWxTY29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKICAgICAgICAgZGVmYXVsdFRhc2tHcm91
cC0+c3RvcEFuZERpc2NhcmRBbGxUYXNrcygpOwogICAgIHN0b3BBY3RpdmVET01PYmplY3RzKCk7
CiAKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPndvcmtlclRlcm1pbmF0aW5nKCk7CisKICAg
ICBtX3Byb2Nlc3NvckNvbnN0cnVjdG9yTWFwLmNsZWFyKCk7CiAKICAgICAvLyBFdmVudCBsaXN0
ZW5lcnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxv
bmcuIEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmgKaW5kZXggM2U2MTc1ZDFhZTQzOWVmOGMyNmQzNmZhODVkNDQ4YTJjNDU5Yjk2OC4uYjlh
MjU4NjUwZWUzZDFiNmExYWFkNzMyOTBjNTBjMmI3MTRlMjdjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
aApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAiQXVk
aW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzcxLDggQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKICAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcyhzaXplX3QgY3VycmVudEZyYW1lKTsKIAorICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250
cm9sbGVyOyB9CisKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoQXVkaW9X
b3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIApAQCAtODAsNiArODMs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcj4+IG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXA7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE+IG1fcGVu
ZGluZ1Byb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGE7CiAgICAgT3B0aW9uYWw8SlNDOjpKU0xvY2tI
b2xkZXI+IG1fbG9ja0R1cmluZ1JlbmRlcmluZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzA2MTNl
OTgwNDBhNjAyMDNkYzc3ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2MjQ1NmY4
ZWQ0Mzg2ZDFhNDNmYTJkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcs
MzYgKzM3LDQzIEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgog
I2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdU
YXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRp
YyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xl
dCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAg
IGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1l
RmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7Cisg
ICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5Lndvcmtl
clN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAg
IGRvY3VtZW50LT51cmwoKSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgIHdvcmts
ZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkg
OiAwLjBmCisgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29u
dGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAgICB9Owog
fQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFrUHRyKHdv
cmtsZXQpKQogICAgICwgbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAgICwgbV93
b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdv
cmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVu
aXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQorICAgICwg
bV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0
ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsK
KyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1lbnQoKSwg
bV93b3JrbGV0VGhyZWFkLnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQogCiBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkKIHsK
KyAgICBtX2luc3BlY3RvclByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93b3JrbGV0
VGhyZWFkLT5zdG9wKCk7CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2b2lkKEF1
ZGlvV29ya2wKICAgICB9KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9pbnNwZWN0
b3JQcm94eS0+c2VuZE1lc3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICB9
KTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBvc3RUYXNr
VG9Mb2FkZXIoW2Rpc2FibGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5z
ZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICB9
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGViNzUwNGU2
NDY4ZDA4YWY1NGUwMjU5YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEwNTdkNGM3
M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xl
dEdsb2JhbFNjb3BlUHJveHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJv
eHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0
KQogICAgIHsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tU
b0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAgICAvLyBX
b3JrZXJEZWJ1Z2dlclByb3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3Rvcihib29sKSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHI8QXVk
aW9Xb3JrbGV0PiBtX3dvcmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsK
ICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKaW5kZXggOGFlYjdlZWZkMjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNi4uYWI3
MDIxMWVhMzBiZDY4MDg1YjNhNDJiZDc5NjEwMGJjOTI1MjIxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAt
MTMxLDYgKzEzMSwxNCBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCgp
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9kZSA9PSBX
b3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAgc3RhcnRS
dW5uaW5nRGVidWdnZXJUYXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNv
bWVob3cgdGVybWluYXRlZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgorICAg
ICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlwdENvbnRy
b2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9vcCgpOwog
CiAjaWYgVVNFKEdMSUIpCkBAIC0xNzYsNiArMTg0LDI3IEBAIFdvcmtlckxvYWRlclByb3h5JiBB
dWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNz
YWdpbmdQcm94eTsKIH0KIAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFk
Ojp3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQ
cm94eTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2Vy
VGFza3MoKQoreworICAgIEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAgbV9wYXVz
ZWRGb3JEZWJ1Z2dlciA9IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3Vs
dDsKKyAgICBkbyB7CisgICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9k
ZSgqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdl
UXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lkIEF1ZGlv
V29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBtX3BhdXNl
ZEZvckRlYnVnZ2VyID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgwMjI5MmNi
MzQzODE0ZDkxMGMyYmVhN2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgyYTdmMjhm
Y2NlMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dl
clRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5h
bDsKKwogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5Mb29wJiBy
dW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0K
KyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmlu
YWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBXb3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRy
PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAgICBMb2Nr
IG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJvb2wgbV9w
YXVzZWRGb3JEZWJ1Z2dlciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDkxYzU4Nzk4NWU0MDljZWIyMTMxYjg4YTFjYzRiZjdjYTdmNWMz
ZWQuLmVhN2M2ODVmMGM0NTVkN2I5OTNiZGVhN2M4YzIwNjRmNjZhYTRhN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNTkxLDcgKzI1OTEsNiBAQCB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRz
L1dvcmtsZXQuY3BwCi13b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKIHdvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKIHdvcmtsZXRzL1dvcmtsZXRQZW5kaW5nVGFza3MuY3Bw
CiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMzliNzFjNjEwNWRm
NDY3YjNiMzBmNTIyOWI3ZDBkMDUyOTdiNzViLi5iODJmZDFmZTI2YjZmNzc0MDA0ZGY4NmRhYzUx
MWJkN2VmNWU0MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ5LDcgKzEzNDksNiBAQAogCQk0QjZFODc2OTIxNzZENjky
MDA0MjBFNUUgLyogQ1NTUGFpbnRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZFODc2ODIxNzZENjkyMDA0MjBFNUUgLyogQ1NTUGFp
bnRJbWFnZVZhbHVlLmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCNkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjdBRTQ5MzIxNzdCNTZGMDBD
NTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI3QUU0OTIyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50
SW1hZ2UuaCAqLzsgfTsKLQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25z
b2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjdGOUM1MTIxODNCNUU1MDAxQ0VCQTAgLyogV29ya2xldENvbnNvbGVDbGllbnQuaCAqLzsg
fTsKIAkJNEJBRTk1QjEwQjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRTk1QjAwQjJG
QTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCQUZEMENCMjE5MEVCRDYwMEMwQUI2NCAv
KiBDU1NQYWludFNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRCQUZEMENBMjE5MEVCRDYwMEMwQUI2NCAvKiBDU1NQYWludFNpemUuaCAqLzsgfTsK
IAkJNEJBRkQwQ0YyMTkwRjlCNTAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJBRkQwQ0Uy
MTkwRjlCNDAwQzBBQjY0IC8qIFN0eWxlUHJvcGVydHlNYXBSZWFkT25seS5oICovOyB9OwpAQCAt
ODIzMyw4ICs4MjMyLDYgQEAKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVw
bGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0UmVw
bGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI3QUU0OTIyMTc3QjU2
RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFp
bnRJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjdBRTQ5NTIxNzdCNjNF
MDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0
b21QYWludEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEI3RjlDNTEy
MTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtsZXRDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRC
N0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrbGV0Q29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCQUU5NUIwMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxldGVBY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yRGVsZXRlQWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENBMjE5MEVCRDYwMEMwQUI2
NCAvKiBDU1NQYWludFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFpbnRTaXplLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQUZEMENEMjE5MEVCRTkwMEMwQUI2NCAvKiBDU1NQ
YWludFNpemUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENTU1BhaW50U2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTgyNCw4ICsxOTgyMSw2IEBACiAJCQkJNEJERUEzMjMyMTdFQzk2QTAwNTJE
RkNEIC8qIFdvcmtsZXQuY3BwICovLAogCQkJCTRCREVBMzFGMjE3RUM1NUYwMDUyREZDRCAvKiBX
b3JrbGV0LmggKi8sCiAJCQkJNEJERUEzMUMyMTdFQkNGNTAwNTJERkNEIC8qIFdvcmtsZXQuaWRs
ICovLAotCQkJCTRCN0Y5QzU0MjE4M0I2MzQwMDFDRUJBMCAvKiBXb3JrbGV0Q29uc29sZUNsaWVu
dC5jcHAgKi8sCi0JCQkJNEI3RjlDNTEyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25zb2xl
Q2xpZW50LmggKi8sCiAJCQkJNEJERUEzMjYyMTdGRTJGQTAwNTJERkNEIC8qIFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAgKi8sCiAJCQkJNEJERUEzMjQyMTdGRTJFNDAwNTJERkNEIC8qIFdvcmtsZXRH
bG9iYWxTY29wZS5oICovLAogCQkJCTRCREVBMzJBMjE4MDEwNzIwMDUyREZDRCAvKiBXb3JrbGV0
R2xvYmFsU2NvcGUuaWRsICovLApAQCAtMzQ4MDIsNyArMzQ3OTcsNiBAQAogCQkJCUE1NEEwQzY4
MURCODA3RDkwMDE3QTkwQiAvKiBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRjE3NEZFMUYzNTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QkRFQTMyMDIxN0VDNTVGMDA1MkRGQ0QgLyogV29ya2xldC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNEI3RjlDNTIyMTgzQjVFNTAwMUNFQkEwIC8qIFdvcmtsZXRDb25z
b2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QkRFQTMyNTIxN0ZFMkU0MDA1MkRGQ0Qg
LyogV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzNCRDgxODI1MjRE
NEY1MDA2RTcyQjMgLyogV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQUNEMDEzMjUyMjlFMTAwMDBEMTI0RSAvKiBXb3JrbGV0T3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggZmI5ZTI3ZDdhYjcwOWQxNTA5NzA0YTBlOTRkOGMyYWJkODExNGZk
Ny4uNjI4N2ZiMTU3ZGRiMzNiNTdmNWU2NzcxN2VlNDBmMTEyMWI3OWU0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOwogCi0gICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQor
ICAgIEpTQzo6Vk0mIHZtKCkgZmluYWwgeyByZXR1cm4gKm1fdm07IH0KICAgICAKICAgICB2b2lk
IHJlbGVhc2VIZWFwQWNjZXNzKCkgZmluYWw7CiAgICAgdm9pZCBhY3F1aXJlSGVhcEFjY2Vzcygp
IGZpbmFsOwpAQCAtODgsOCArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaW1lclNldE5v
dGlmaWNhdGlvbihKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNr
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVRpbWVyU2V0Tm90aWZpY2F0aW9uKEpTQzo6SlNSdW5M
b29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2spIGZpbmFsOwogCi0gICAgdm9pZCBh
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7Ci0gICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihK
U0M6OkRlYnVnZ2VyKik7CisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKikg
ZmluYWw7CisgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKikgZmluYWw7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGY3Njk5ZDU1M2M3ODBiYTBi
ZjMyNzE3N2QyNDM1YWJkN2NjOWM4ZDIuLjQxOTY1MTBkZWYyMGEwYzQzMGIxNDBlOWJhODY5MTYw
OTkwYTg2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKQEAgLTQ4MSwxMCArNDgxLDggQEAgSlNDOjpWTSYgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6dm0oKQogewogICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQogICAgICAgICByZXR1cm4g
Y29tbW9uVk0oKTsKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZt
KCk7Ci0gICAgaWYgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKQotICAgICAgICByZXR1
cm4gZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPnZtKCk7Cisg
ICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgp
LT52bSgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
Y29tbW9uVk0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMDJhYmUxNjY0MTQyZGJlYTlhYmZmYzAwZWMzNzUz
YmQxNGUzNjIzZi4uMzRjMTQ4YWNmNTZlOTg5ZTdlZjg0OTAyYTE3OWE2ZGQ0ZGQ5MzEyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKIAorI2luY2x1ZGUgIkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDb21w
dXRlZEVmZmVjdFRpbWluZy5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtNjEsNiArNjIs
NyBAQAogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZUhlYXBB
Z2VudC5oIgogI2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIKKyNpbmNsdWRlICJQYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTczLDYg
Kzc1LDggQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CkBAIC0xMzIwLDkgKzEzMjQsMTgg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnMKICAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRl
ckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKIH0KIAotSW5zdHJ1bWVudGluZ0FnZW50cyYg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorSW5zdHJ1bWVu
dGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRz
Rm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxT
Y29wZS5pbnNwZWN0b3JDb250cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzOworI2lmIEVO
QUJMRShXRUJfQVVESU8pCisgICAgaWYgKGlzPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPih3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLmluc3BlY3RvckNv
bnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CisjZW5kaWYKKyNpZiBFTkFC
TEUoQ1NTX1BBSU5USU5HX0FQSSkKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFBhaW50
V29ya2xldHMuCisgICAgaWYgKGlzPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPih3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisgICAg
cmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50cy5wdHIoKTsK
IH0KIAogSW5zdHJ1bWVudGluZ0FnZW50cyYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlJiBwYWdlKQpAQCAtMTMzNSw4ICsxMzQ4LDggQEAg
SW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
aW5nQWdlbnRzRm9yQ29udGV4dChTY3IKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQp
KQogICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihj
b250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKKyAgICBpZiAo
aXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGRvd25jYXN0
PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAppbmRleCA1YWQ3OWUwZDE2YTk1MzJiODFjOGI1YWY4MGFhY2FjZTU5ODY5
ZDFlLi5kMGU4MGU2MjFjYzUxYWY0M2RkYzgxOTA2YmZhNjhmNzkxZTRiMTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBA
IC05OSw3ICs5OSw3IEBAIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7Ci1jbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiAjaWYgRU5BQkxF
KFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAtMjAxLDExICsyMDEsMTEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwg
UmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSos
IERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyR2xvYmFs
U2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwotICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlckdsb2JhbFNjb3Bl
JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHN0
YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICAvLyBT
b21lIG5ldHdvcmsgcmVxdWVzdHMgZG8gbm90IGdvIHRocm91Z2ggdGhlIG5vcm1hbCBuZXR3b3Jr
IGxvYWRpbmcgcGF0aC4KICAgICAvLyBUaGVzZSBuZXR3b3JrIHJlcXVlc3RzIGhhdmUgdG8gaXNz
dWUgdGhlaXIgb3duIHdpbGxTZW5kUmVxdWVzdCAvIGRpZFJlY2VpdmVSZXNwb25zZSAvIGRpZEZp
bmlzaExvYWRpbmcgLyBkaWRGYWlsTG9hZGluZwpAQCAtMjQzLDIwICsyNDMsMjAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
PiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7Ci0gICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQo
UGFnZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBz
dGF0aWMgdm9pZCBjb25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgY29uc29sZUNv
dW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFBh
Z2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3Rh
dGljIHZvaWQgY29uc29sZUNvdW50UmVzZXQoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgY29uc29s
ZUNvdW50UmVzZXQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICAgICBzdGF0aWMgdm9pZCB0YWtlSGVhcFNu
YXBzaG90KEZyYW1lJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3Rh
cnRDb25zb2xlVGltaW5nKEZyYW1lJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhXb3JrZXJHbG9i
YWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKKyAg
ICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAgICAgc3Rh
dGljIHZvaWQgbG9nQ29uc29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwot
ICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBsb2dDb25zb2xlVGltaW5nKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CiAgICAgc3RhdGlj
IHZvaWQgc3RvcENvbnNvbGVUaW1pbmcoRnJhbWUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgc3RvcENvbnNvbGVUaW1pbmcoV29y
a2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJl
bCk7CisgICAgc3RhdGljIHZvaWQgc3RvcENvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAg
ICAgc3RhdGljIHZvaWQgY29uc29sZVRpbWVTdGFtcChGcmFtZSYsIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4mJik7CiAgICAgc3RhdGljIHZvaWQgc3RhcnRQcm9maWxpbmcoUGFnZSYs
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMg
dm9pZCBzdG9wUHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CkBAIC01MzIsNyArNTMyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
bmRlckxheWVyJik7CiAKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYpOwotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2Nv
cGUmKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Jik7CiAKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckZyYW1lKGNvbnN0IEZyYW1lJik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFtZSopOwpAQCAtNTQxLDcgKzU0
MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKICAg
ICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvclJlbmRl
cmVyKFJlbmRlck9iamVjdCYpOwotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsK
KyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKik7CiB9
OwogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCkBAIC0x
MDUwLDEwICsxMDUwLDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uCiAgICAgICAgIHdpbGxT
ZW5kUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIHdpbGxTZW5k
UmVxdWVzdEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtl
ckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNw
b25zZSB7IH0pOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKSkKKyAgICAgICAgd2lsbFNlbmRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSB7IH0p
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdE9mVHlwZShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkVHlwZSBsb2Fk
VHlwZSkKQEAgLTEwNzUsOSArMTA3NiwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiBmcmFtZSwgdQogICAg
ICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKLSAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVs
bHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBudWxscHRyLCByZXNw
b25zZSwgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVM
b2FkZXImIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQpAQCAtMTA5NCwxMCArMTA5NiwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZwogICAgICAg
ICBkaWRSZWNlaXZlRGF0YUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGRh
dGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKLSAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0
YUxlbmd0aCwgZGF0YUxlbmd0aCk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgp
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExv
YWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
LCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCkBAIC0xMTA3LDEwICsxMTEwLDExIEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhG
cmFtZSogZnJhbWUsIERvY3VtZW50TG9hCiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIG5ldHdvcmtMb2FkTWV0cmlj
cywgcmVzb3VyY2VMb2FkZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZXRyaWNzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVudGlm
aWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIpOworICAgIGlmIChhdXRv
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgZGlk
RmluaXNoTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxw
dHIsIG5ldHdvcmtMb2FkTWV0cmljcywgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQpAQCAtMTExOSw5ICsxMTIzLDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExv
YWRlCiAgICAgICAgIGRpZEZhaWxMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRl
bnRpZmllciwgbG9hZGVyLCBlcnJvcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2Jh
bFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGlu
ZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgZGlkRmFpbExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9i
YWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIGVycm9yKTsK
KyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkp
CisgICAgICAgIGRpZEZhaWxMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRp
ZmllciwgbnVsbHB0ciwgZXJyb3IpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZyYW1lJiBmcmFtZSwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYgbG9hZGVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTE1NzEsOSArMTU3NiwxMCBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYg
cGFnZSwgc3RkOjp1bmlxdQogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4gbWVzc2FnZSkKIHsKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBX
VEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xNTgxLDkgKzE1ODcs
MTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQo
UGFnZSYgcGFnZSwgSlNDOjpKU0dsb2JhbE9iamUKICAgICBjb25zb2xlQ291bnRJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBzdGF0ZSwgbGFiZWwpOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
b25zb2xlQ291bnQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJl
bCkKIHsKLSAgICBjb25zb2xlQ291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJH
bG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CisgICAgaWYgKGF1
dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBj
b25zb2xlQ291bnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgbGFiZWwpOwogfQog
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0
KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxh
YmVsKQpAQCAtMTU5MSw5ICsxNTk4LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQoUGFnZSYgcGFnZSwgSlNDOjpKU0dsb2JhCiAgICAg
Y29uc29sZUNvdW50UmVzZXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBz
dGF0ZSwgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNvbnNvbGVDb3VudFJlc2V0KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgY29uc29sZUNv
dW50UmVzZXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBjb25zb2xlQ291bnRSZXNl
dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBsYWJlbCk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGFrZUhlYXBTbmFwc2hvdChGcmFtZSYgZnJh
bWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC0xNjA5LDkgKzE2MTcsMTAgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoRnJhbWUmIGZy
YW1lLCBKU0M6OkpTR2wKICAgICAgICAgc3RhcnRDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgZnJhbWUsIGV4ZWMsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENv
bnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVs
KQogewotICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOworICAgIGlm
IChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAg
ICAgc3RhcnRDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFi
ZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNv
bGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRz
KQpAQCAtMTYyMCw5ICsxNjI5LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bG9nQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpTQzo6SlNHbG9iCiAgICAgICAg
IGxvZ0NvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCBsYWJlbCwg
V1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVm
PEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3Vt
ZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgZXhlYywg
bGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBsb2dDb25zb2xlVGltaW5nSW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7
CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVU
aW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQpAQCAtMTYzMSw5ICsxNjQxLDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xv
CiAgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJh
bWUsIGV4ZWMsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdG9wQ29u
c29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdv
cmtlckdsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAgc3RvcENvbnNvbGVUaW1p
bmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCBsYWJlbCk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVTdGFtcChGcmFtZSYgZnJh
bWUsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCkBAIC0xNzU2
LDkgKzE3NjcsOSBAQCBpbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZQogICAgIHJldHVybiBwYWdlID8g
Jmluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKCpwYWdlKSA6IG51bGxwdHI7CiB9CiAKLWlubGlu
ZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2Vy
R2xvYmFsU2NvcGUpCitpbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZSA/ICZpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yV29ya2VyR2xvYmFsU2NvcGUoKndvcmtlckdsb2JhbFNjb3BlKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlID8gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCp3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkg
OiBudWxscHRyOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
b250ZW5kQ3JlYXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgKaW5kZXggNzA0NDY0NGJmZjk1MjBlYWFlODZlZmQ0YjJhZTM5MTkyM2Zj
N2VmNC4uMWJiZjk0ZWZhNTIxMWFkMjE2YjRhMDBmZjY2YTkzMDc2NmE3MGJjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CiBjbGFzcyBQYWdlOwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKIAogLy8gRklYTUU6IG1vdmUgdGhpcyB0byBJbnNwZWN0b3Ig
bmFtZXNwYWNlIHdoZW4gcmVtYWluaW5nIGFnZW50cyBtb3ZlLgogc3RydWN0IFdlYkFnZW50Q29u
dGV4dCA6IHB1YmxpYyBJbnNwZWN0b3I6OkFnZW50Q29udGV4dCB7CkBAIC01NywxMyArNTcsMTMg
QEAgc3RydWN0IFBhZ2VBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsKIH07
CiAKIHN0cnVjdCBXb3JrZXJBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsK
LSAgICBXb3JrZXJBZ2VudENvbnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBXb3JrZXJH
bG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisgICAgV29ya2VyQWdlbnRDb250ZXh0KFdl
YkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKQogICAgICAgICA6IFdlYkFnZW50Q29udGV4dChjb250ZXh0
KQotICAgICAgICAsIHdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorICAgICAg
ICAsIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KQogICAgIHsKICAgICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlOwogfTsKIAogY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXIuY3BwCmluZGV4IDgwYzlhMTA1YzU0YTNlNTM3MGFjY2Q2YzEyZmYwNmYyYjM0MzVk
YTIuLjIyNzMxYTdlMjFjNWM0N2ZlYjIyZDkyNTgyZGM4OThjNjE1MmRiN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcApAQCAtMzQsMTYgKzM0LDE3IEBA
CiAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldv
cmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9WTS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKLVdvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihXb3JrZXJHbG9i
YWxTY29wZSYgY29udGV4dCkKK1dvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICA6IERlYnVnZ2VyKGNvbnRleHQuc2Ny
aXB0KCktPnZtKCkpCiAgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpCiB7CkBAIC02
MCw4ICs2MSw4IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGJvb2wgaXNC
ZWluZ0Rlc3Ryb3llZCkKIHsKICAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihpc0Jl
aW5nRGVzdHJveWVkKTsKIAotICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQot
ICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5kZXRhY2hEZWJ1Z2dlcih0aGlz
KTsKKyAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IG1fd29ya2VyR2xvYmFsU2NvcGUu
c2NyaXB0KCkpCisgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmRldGFjaERlYnVnZ2VyKHRoaXMp
OwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5j
dGlvbnMoKTsKIH0KQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlcjo6cnVuRXZl
bnRMb29wV2hpbGVQYXVzZWQoKQogCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQ7
CiAgICAgZG8gewotICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgp
LnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICAg
ICAgcmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+
cnVuTG9vcCgpLnJ1bkluRGVidWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIH0g
d2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJvY2Vzc2lu
Z0RlYnVnZ2VyRXZlbnRzKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyRGVidWdnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlci5oCmluZGV4IDFjNDU2OTk5YWVmNjJiNTQ0NmFmOTdkNjU0NjRmOGM1NmM5ZTFhZDMu
LjE0MDk0YTM2NTdjZTc1MGZkOGJhYmVlNjNkYjRmY2RhY2FmZTgxMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCkBAIC0zNSwxMyArMzUsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3JrZXJEZWJ1Z2dlciBmaW5hbCA6IHB1
YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJEZWJ1
Z2dlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2Vy
RGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBXb3JrZXJEZWJ1Z2dlcihXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlcigpIG92ZXJyaWRlID0g
ZGVmYXVsdDsKIAogCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5FdmVu
dExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOwogICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCi0gICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggOTBlOTg1NDRiNTNhNTAyZWI5OGE1ZDhjMjI1YjcwMzNi
MzlhMDY3Zi4uZmVhM2QwY2I0YjIxOWM5MjJlMjJhNmY4ZTY0N2EzMWUxZjgwNzE3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5o
IgogI2luY2x1ZGUgIldvcmtlckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJE
ZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrZXJOZXR3b3JrQWdlbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oIgpAQCAt
NTcsMTYgKzU3LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSkKK1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNy
ZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3Jl
YXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3Rv
cHdhdGNoOjpjcmVhdGUoKSkKLSAgICAsIG1fZGVidWdnZXIod29ya2VyR2xvYmFsU2NvcGUpCi0g
ICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorICAgICwgbV9kZWJ1
Z2dlcih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKHdv
cmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQod29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogCiAgICAgYXV0byB3b3JrZXJD
b250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lk
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9leGVj
dXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0
KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VG
cm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGluZ0No
YW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250
ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBXb3JrZXJBZ2VudENvbnRleHQg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KCkKIAogICAgIFdv
cmtlckFnZW50Q29udGV4dCB3b3JrZXJDb250ZXh0ID0gewogICAgICAgICB3ZWJDb250ZXh0LAot
ICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLAorICAgICAgICBtX3dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLAogICAgIH07CiAKICAgICByZXR1cm4gd29ya2VyQ29udGV4dDsKQEAgLTE2OCw3
ICsxNjgsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2Vu
dHMoKQogICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4o
d29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChp
czxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7CisgICAg
aWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkpIHsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtl
ckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5p
cXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KQEAgLTE5OSw3
ICsxOTksNyBAQCBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6ZXZhbHVhdGVIYW5kbGVyKCkgY29uc3QKIAogVk0mIFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OnZtKCkKIHsKLSAgICByZXR1cm4gbV93b3JrZXJHbG9iYWxTY29wZS52bSgpOworICAg
IHJldHVybiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnZtKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDdhNTNkODA0YmZiY2UwZjYyZTExNTNjNTEzYjE3
OGQ3NDIzODNlZGUuLjlmZDBiOWMzNTQ0ZWFiNjkzOTBkMmVkNGNlOWRiZjA5NzVkMDE0N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaApAQCAtNDEsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNs
YXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7
CiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0OwogCiBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1lbnQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBleHBsaWNpdCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAg
fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd29ya2Vy
VGVybWluYXRpbmcoKTsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V1RGOjpT
dG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFdvcmtlckRlYnVnZ2VyIG1fZGVi
dWdnZXI7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAgIFdvcmtl
ckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9mb3J3YXJkaW5nQ2hhbm5lbDsKICAg
ICBib29sIG1fZGlkQ3JlYXRlTGF6eUFnZW50cyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oCmlu
ZGV4IGMwMjYyMTEzNWM1NWViZDcwNmUwNDM1MWI1YzEzZjYxM2JlYTY1MzQuLmQyNjMwZDUxY2Zk
NGQ3MWNlNTgxYTlmNjQ5NWEzMTYyZjZkODMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgKQEAgLTI2LDcgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgot
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KIApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisgICAgZXhw
bGljaXQgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdv
cmtlckdsb2JhbFNjb3BlKQogICAgIHsKICAgICB9CkBAIC00NiwxMCArNDYsMTAgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCku
d29ya2VyRGVidWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKKyAg
ICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2Vy
RGVidWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKICAgICB9CiAK
LSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCmluZGV4IGJiZTJjYzAzZDY0
NWZjMTI5MDg0ZGJlZTlkZDgwNDIyYmJkNjNmZDguLmVmZmQyYmVlMGEwYTcwOWJkOWFkN2EzMTIz
MzI0ZDA3MjEyYWIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtMzgsMTAgKzM4
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFNlcnZpY2VXb3JrZXJBZ2VudDo6
U2VydmljZVdvcmtlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiU2VydmljZVdvcmtlciJfcywgY29udGV4dCkKLSAgICAsIG1fc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OlNlcnZpY2VXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3Bl
LmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJBZ2VudDo6
flNlcnZpY2VXb3JrZXJBZ2VudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKaW5k
ZXggZjY0ZDU3NTMwYjdiNjE3MGVhYWRlOTIzZTQwOWI1YmRkZWE3MmU0MC4uM2I1ZTU0ZTQxNWZj
MmFlODZkMzNhMjdlY2I5ZGVlNTk2ZjdjMTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKQEAg
LTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXb3JrZXJBdWRpdEFnZW50LmgiCiAKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0TWFuYWdlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KQEAg
LTQxLDkgKzQxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyQXVkaXRB
Z2VudDo6V29ya2VyQXVkaXRBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JBdWRpdEFnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3Bl
KGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJU
KGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VS
VChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsK
IH0KIAogV29ya2VyQXVkaXRBZ2VudDo6fldvcmtlckF1ZGl0QWdlbnQoKSA9IGRlZmF1bHQ7CkBA
IC01NSw3ICs1NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZSkp
OworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihn
bG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJlY2IwZWVi
OGVkZDczMzllYzA0NTliZDM3MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4MzhmZjhm
Y2YyZWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXb3JrZXJBdWRpdEFnZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9i
YWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2ODdmMDQz
ZWQ1NjdlM2I4ZjRiMTU4MDc2OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFmYmU2Njhh
MWJjZGQ3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25z
b2xlQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFn
ZW50KGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXND
b250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50Ojp+V29y
a2VyQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCAzYWUzNWM2N2EzMDM0MWQ3ZWUxMmY2Y2M1Njg4ZGUxZWM3OGM2M2UwLi4zNTU4Y2IzNGY5
NzNlZDYyYzg2OTEyM2I2NTc1M2NjZjM1MzNjNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIK
IAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaD4KQEAgLTQxLDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAs
IG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1f
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRU
aHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
aXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVi
dWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xl
TWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENh
bGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNz
YWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKIH0KIAog
SW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpS
dW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpAQCAtNjAs
NyArNjAsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCku
aW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKKyAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFs
T2JqZWN0KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IDdjYTY0ZTQwMTNhNTRiNDE4
ZDUzZTQ3NDgwMmU3MzJiZjE5MDhjOTcuLjk5NDdmNzE1NDU2MTRhZDkzZmY3ZWZlMjVmMmUwNTg0
ODI3ODVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJp
dmF0ZToKIAogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAotICAgIFdvcmtl
ckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNWRjZTgyNmY0YjEw
ZTBjZDQ4NWM4NTlhYTM3MjkzMmJlZTY0YjVhOS4uMTQxMGEyNzg5NDBmZGMxY2ZhNWIzNjAyYWJj
YzU3NjQzN2Y3YjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC0zNiw5ICszNiw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlck5ldHdvcmtBZ2VudDo6V29y
a2VyTmV0d29ya0FnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250
ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250
ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29u
dGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAK
IFdvcmtlck5ldHdvcmtBZ2VudDo6fldvcmtlck5ldHdvcmtBZ2VudCgpID0gZGVmYXVsdDsKQEAg
LTYxLDEyICs2MSwxMiBAQCBWZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0FnZW50Ojph
Y3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQogCiB2b2lkIFdvcmtlck5ldHdvcmtB
Z2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRlcm5hbChib29sIGRpc2FibGVkKQog
ewotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyRGVidWdnZXJQcm94eSgp
LnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQpOworICAg
IG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndv
cmtlckRlYnVnZ2VyUHJveHkoKS5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVj
dG9yKGRpc2FibGVkKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV29ya2VyTmV0d29y
a0FnZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNv
bnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJikKIHsKLSAgICByZXR1cm4gJm1fd29ya2Vy
R2xvYmFsU2NvcGU7CisgICAgcmV0dXJuICZtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCmluZGV4IGRk
ODdkODEwMjAyZTViMTdkZTljZjA3Yjc2MmI1MjVlZWUyZTNiZTguLmQ3YmViZDBkZWExMGFmYjAx
MmI0NmFjYzQ5Njc1YTI5YTllZDRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCkBAIC00NCw3
ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKTsKICAgICBib29sIHNob3VsZEZv
cmNlQnVmZmVyaW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
YWE1OGExZjBkN2E4MWIwMDY4MWY2NjhhOWZjNGE3MjU4NmIxM2RjZC4uOGU4NGRhMDAzMTlhYThh
ZjIzNDQ0OWNjMjc4MDZhNzFjMjUxYTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oPgogCkBAIC00NCw5ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChXb3JrZXJBZ2Vu
dENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX3dvcmtlckdsb2Jh
bFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAg
QVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAg
IEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVh
ZCgpKTsKIH0KIAogV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVudGltZUFnZW50KCkgPSBk
ZWZhdWx0OwpAQCAtNTgsNyArNTgsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAg
IHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9i
YWxTY29wZSkpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNj
cmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDZiOTk4
ZjRkMTczMTg1MWY5OWI2N2VlMTVhNWQyMDAxNTg3ZjRkMDYuLmJjY2MyYjdkMDcxNWEzNGU3YzQ3
NzIzMjZkMjQxZGE5NmM3YmUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC0zNiw3ICsz
Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2VyUnVudGlt
ZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJSdW50aW1lQWdlbnQpOwpAQCAtNTMsNyAr
NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpIHsgfQogCiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDI3MTdjODYxYzc0YjBmMmFlYmNkZTQwODcwMGUyYTlhMDM3
Mzc1OTUuLjE4ZmYzZjk0ZjA0MmQxYTFmZDAzYTUxYmMxMWQ1YmQxNDZmMzNiNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKIHsKLSAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpIHx8IChpczxXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29y
a2VyT3JXb3JrbGV0VGhyZWFkKCkpKQorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpKQogICAgICAgICByZXR1cm4gV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJj4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgV1RG
TW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZlcnJlcikpOwogCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKQEAgLTExOCw4ICsxMTgsOCBAQCBSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVlc3Qu
dXJsKCk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwg
b3B0aW9ucyk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KSkKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1v
dmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwogICAg
IGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXgg
ZTExMzk2YmZkODMzNmUzZTg2NzRhNDljYjVjODE4NGJmMTU4MGE3ZS4uZWY0OTQ5MjI1YjI4YjUw
ZjM4NjZjMGY3ZDM2NmUwYjc5MjY2Y2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFk
YWJsZUxvYWRlckNsaWVuCiAgICAgICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0
aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KGdsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Vu
ZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwgbV93b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsU2VuZFJlcXVlc3QoZ2xvYmFsU2NvcGUsIG1fd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIHJlcXVlc3QpOwogCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5n
IGFuIHItdmFsdWUgdG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/
CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVx
dWVzdC5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250
ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0yMjYsOCAr
MjI1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgICAgICBBU1NFUlQoY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsK
ICAgICAgICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmZyb21Dcm9zc1RocmVh
ZERhdGEoV1RGTW92ZShyZXNwb25zZURhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xp
ZW50V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAg
ICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
cmVzcG9uc2UpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250
ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApAQCAtMjM4LDggKzIzNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwKICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVu
dFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRh
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yNDksOCAr
MjQ2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWQKICAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0
cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5p
c2hMb2FkaW5nKGlkZW50aWZpZXIpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9h
ZE1ldHJpY3MpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yNjEsOCArMjU3LDcgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm8KICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAg
IFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKGNvbnRleHQsIGVycm9yLCBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5pbml0aWF0b3IoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtl
clJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+
KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0sIG1fdGFz
a01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCA2N2Y0YjJiNThhYjVhZGVm
ZjZmY2QxY2Q5NTlkNGI2M2I5ZmY1OTVkLi5iYmU4MTY0OTFlOWZmMjM1MTc4OTI4NDhhN2U2MWQ3
OTcyMzJlNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgYm9vbCB3YXNUZXJtaW5hdGVkKCkgY29u
c3QgeyByZXR1cm4gbV93YXNUZXJtaW5hdGVkOyB9CiAKLSAgICBTdHJpbmcgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2
ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCA3MjE1ODFmMWI3YzgxNjM0
NDQzOGFlNGVjY2JhMGY5MGExNDIyNDViLi5hNTNhYTY5NWMxYWY4Yzg5ZWNjNmNiYTNhNWQ3ZjVh
YzAzODA1Mjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKLVdvcmtlckNvbnNvbGVDbGllbnQ6OldvcmtlckNvbnNvbGVD
bGllbnQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorV29ya2VyQ29uc29s
ZUNsaWVudDo6V29ya2VyQ29uc29sZUNsaWVudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUpCiAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b25zb2xlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuaAppbmRleCA5NzdiMDdkNTQxMzc4MmZmNTUwMzE3NmFmMzAxZjA2MmYzNDRlNmRlLi5mYWE1
MWZmNzQzMGY3YzE1MDY5YTFlMGE2YjUxOGViOGMyOGE1YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJDb25zb2xlQ2xpZW50IGZpbmFsIDog
cHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2VyQ29uc29sZUNsaWVudChXb3JrZXJHbG9iYWxT
Y29wZSYpOworICAgIGV4cGxpY2l0IFdvcmtlckNvbnNvbGVDbGllbnQoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJDb25zb2xlQ2xpZW50KCk7CiAKIHBy
aXZhdGU6CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmRFbmQoSlND
OjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5z
cGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogCi0gICAgV29ya2VyR2xvYmFs
U2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCmluZGV4
IDYzMmI4MmUyOGI3MmRhNjEzNzFjMjRlYmZiYWYyZGQ1NTkxMGQwNzEuLjkzZDY4YTNjNDcxNWE3
YzgzZWYzYmY2NGM0OTRlNzc4ZjFmOTg3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCkBAIC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogCisjaW5jbHVk
ZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29y
a2VyUnVuTG9vcC5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCkBAIC0zOSw2ICs0MCwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAorc3RhdGljIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIm
IGluc3BlY3RvckNvbnRyb2xsZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sK
KyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIGlmIChpczxBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZT4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpOworI2VuZGlmCisgICAgcmV0dXJu
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVy
KCk7Cit9CisKIEhhc2hTZXQ8V29ya2VySW5zcGVjdG9yUHJveHkqPiYgV29ya2VySW5zcGVjdG9y
UHJveHk6OmFsbFdvcmtlckluc3BlY3RvclByb3hpZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFdvcmtlckluc3BlY3RvclByb3h5Kj4+IHByb3hpZXM7CkBAIC02Miw3
ICs3Miw3IEBAIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29y
a2VyU3RhcnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgcmV0dXJuIHBhdXNlT25TdGFy
dCA/IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3BlY3RvciA6IFdvcmtlclRocmVh
ZFN0YXJ0TW9kZTo6Tm9ybWFsOwogfQogCi12b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3Jr
ZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
KQordm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJPcldvcmtsZXRUaHJlYWQq
IHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NF
UlQoIW1fd29ya2VyVGhyZWFkKTsKIApAQCAtOTMsNyArMTAzLDcgQEAgdm9pZCBXb3JrZXJJbnNw
ZWN0b3JQcm94eTo6d29ya2VyVGVybWluYXRlZCgpCiB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5
OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCgpCiB7CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3Ao
KS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5z
dG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5zdG9wUnVu
bmluZ0RlYnVnZ2VyVGFza3MoKTsKICAgICB9KTsKIH0KIApAQCAtMTA2LDcgKzExNiw3IEBAIHZv
aWQgV29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RUb1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIoUGFnZUNoYW5uZWwmIGNoYW5uCiAgICAgbV9wYWdlQ2hhbm5lbCA9ICZjaGFubmVsOwogCiAg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCk7
CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuY29ubmVjdEZyb250ZW5kKCk7
CiAgICAgfSk7CiB9CiAKQEAgLTExOSwxMSArMTI5LDExIEBAIHZvaWQgV29ya2VySW5zcGVjdG9y
UHJveHk6OmRpc2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAgbV9w
YWdlQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAg
ICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVz
dHJveWVkKTsKKyAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlcihjb250ZXh0KS5kaXNjb25uZWN0
RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAogICAgICAg
ICAvLyBJbiBjYXNlIHRoZSB3b3JrZXIgaXMgcGF1c2VkIHJ1bm5pbmcgZGVidWdnZXIgdGFza3Ms
IGVuc3VyZSB3ZSBicmVhayBvdXQgb2YKICAgICAgICAgLy8gdGhlIHBhdXNlIHNpbmNlIHRoaXMg
d2lsbCBiZSB0aGUgbGFzdCBkZWJ1Z2dlciB0YXNrIHdlIHNlbmQgdG8gdGhlIHdvcmtlci4KLSAg
ICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLnN0b3BS
dW5uaW5nRGVidWdnZXJUYXNrcygpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnN0b3BSdW5uaW5n
RGVidWdnZXJUYXNrcygpOwogICAgIH0pOwogfQogCkBAIC0xMzQsNyArMTQ0LDcgQEAgdm9pZCBX
b3JrZXJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIoY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAKICAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW21lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgaW5zcGVjdG9yQ29udHJv
bGxlcihjb250ZXh0KS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVj
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHku
aAppbmRleCA1ZThhMWRjMGVkMGQ5YWE1MzJjMzY3NDY0Yzg2N2ZiNGY3ZjlhYTVmLi5iZWZjMDFk
OTU3MGE4YzRhOGI3ZGRlZTg1ZWExMDYxOGE3N2E0NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3Jr
ZXJUaHJlYWQ7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQ7CiAKIGVudW0gY2xhc3MgV29y
a2VyVGhyZWFkU3RhcnRNb2RlOwogCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOyB9CiAKICAgICBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgd29ya2VyU3RhcnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICB2
b2lkIHdvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlclRocmVhZCos
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCB3b3JrZXJTdGFydGVk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgd29ya2VyVGVybWluYXRlZCgpOwog
CiAgICAgdm9pZCByZXN1bWVXb3JrZXJJZlBhdXNlZCgpOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFkPiBtX3dvcmtlclRo
cmVhZDsKKyAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0VGhyZWFkPiBtX3dvcmtlclRocmVhZDsK
ICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9u
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBkMjMyMWVjNDI2YWVjNjg4MjM5MDVmNmNkNmFiNzg5
MDA2NTkzNzUxLi5iNjQxOGQwMGY2ZmJkY2ZmNWEwYTYzNzQ3OWJjYjc5NGYwYWRmOWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaApAQCAtMjcsMTIgKzI3LDIzIEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1J1bkxvb3BUaW1lci5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIERlYnVnZ2Vy
OworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBWTTsKK30KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKCkgPSBkZWZhdWx0
OwogCisgICAgdmlydHVhbCBKU0M6OlZNJiB2bSgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBh
dHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VIZWFwQWNjZXNzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhY3F1aXJlSGVhcEFjY2Vzcygp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFk
LmgKaW5kZXggMzc4MDk2MWM3OTQ5ODU3YTFlMjA1ZjhjMzEyOTYyYzA3MGJlYWY4MS4uYTA3ZTlj
YWQ4OWRmZjQzM2VjNzY0OWU3ZWU1ZmZlNTU5MGJiMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNz
IFRocmVhZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXJEZWJ1Z2dlclBy
b3h5OwogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CiBjbGFzcyBXb3JrZXJSdW5Mb29wOwogCkBA
IC00Myw2ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFk
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsK
ICAgICB2aXJ0dWFsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsK
KyAgICB2aXJ0dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGIzZTcxYzkyZGYxNjdlOTgxYTZiNTA4OWU1MWJk
ZjA4MzQ2ZWM3ZmMuLjg3ZGQ5OTY5YzVlOTA2ZGVlNzJjNDQ3NzViYzJjZTZkZjVhMWE1ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgot
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpA
QCAtNTAsMTYgKzUwLDE2IEBAIFdvcmtlclNjcmlwdExvYWRlcjo6fldvcmtlclNjcmlwdExvYWRl
cigpID0gZGVmYXVsdDsKIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjps
b2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0
aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRv
cklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAg
IGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CiAKICAgICBtX3VybCA9IHVybDsKICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBib29sIGlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSk7CiAKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkg
eworICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJj
ZSh1cmwpKSB7CiAgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNj
cmlwdCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3Bv
bnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2Ut
Pm1pbWVUeXBlOwpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
IGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkpOwogCiAgICAgLy8gT25seSB1c2VkIGZvciBpbXBvcnRTY3JpcHRzIHRoYXQgcHJlc2Ny
aWJlcyBOb0NvcnMgbW9kZS4KICAgICBBU1NFUlQobW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6
Ok5vQ29ycyk7CkBAIC04NywxMCArODcsMTAgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAg
ICBvcHRpb25zLmRlc3RpbmF0aW9uID0gbV9kZXN0aW5hdGlvbjsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBpc1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJz
TW9kZTo6QWxsOwotICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyR2xv
YmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQorICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2
aWNlV29ya2VyID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtl
cigpKQogICAgICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
ID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlm
Ci0gICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3
b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAg
ICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMp
OwogCiAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdv
cmtFcnJvciBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICBpZiAoZmFp
bGVkKCkpCkBAIC0xMDEsNyArMTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAg
ICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShy
ZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdv
cmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5
cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdv
cmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNw
b25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNw
b25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAx
MjE0YjkxOWRhMzRkMzJmMmZjYWM5YTI5ODEyZjZmZDZhODdhMTI4Li44YjJhNjcyZjAwM2NlMTky
Mjg5MjZlY2EzMjU2ZDM1OGUyZjkxODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFRocmVhZCogdGhyZWFkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KICAgICBXb3JrZXJSdW5Mb29wJiBy
dW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94
eTsgfQotICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25z
dCB7IHJldHVybiBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclBy
b3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93b3JrZXJE
ZWJ1Z2dlclByb3h5OyB9CiAgICAgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGlu
Z1Byb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCiAgICAg
Ly8gTnVtYmVyIG9mIGFjdGl2ZSB3b3JrZXIgdGhyZWFkcy4KQEAgLTEwMyw4ICsxMDMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXROb3RpZmljYXRpb25DbGllbnQoTm90aWZpY2F0aW9uQ2xpZW50
KiBjbGllbnQpIHsgbV9ub3RpZmljYXRpb25DbGllbnQgPSBjbGllbnQ7IH0KICNlbmRpZgogCi0g
ICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7Ci0gICAgdm9pZCBzdG9wUnVubmlu
Z0RlYnVnZ2VyVGFza3MoKTsKKyAgICB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSBm
aW5hbDsKKyAgICB2b2lkIHN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpIGZpbmFsOwogICAgIAog
ICAgIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVu
dGltZUZsYWdzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oCmluZGV4IDNiNzEzZGMzZjRlZGMxYmE3NDJkZTNjOWVhZDBiNTAwYzZm
NzQyYzYuLmM0MTIzNDljNTdjOTViZTQwNzg5NDdkZjQ4Y2M5Njc1M2RkYjJlM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAt
MzgsNiArMzgsOCBAQCBjbGFzcyBWTTsKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBKU0RPTUdsb2Jh
bE9iamVjdDsKIAogY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xl
dEdsb2JhbFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKaW5kZXggMzkwOGJk
ZjNhMjk2YzgxYjZmNGJhOGU4ZTA4ZTNmYzU4MmVlNWUzYS4uNDg3NWM3YjRkZWQ0NDk3N2I4NGI0
ODE0NTI0YjJhYzM5OTdlM2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrbGV0R2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQZW5kaW5nVGFz
a3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNp
bmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogCkBAIC00Miw2ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXb3JrbGV0KTsKIAogV29ya2xldDo6V29ya2xldChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKCJ3b3JrbGV0
OiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKaW5kZXggNDE2ODY3NGM3M2IyOTkwOWJh
NjI5NjI1NzIxYjM4MDUzZTIyN2JlZS4uZmRiNjYzZDdhMzVhODRmYjc3MGZmMDExZDg2MTJhZTRj
YzIyYzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApAQCAtNTIsNiArNTIsNyBAQCBw
dWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7CiAKICAgICBjb25zdCBWZWN0b3I8UmVm
PFdvcmtsZXRHbG9iYWxTY29wZVByb3h5Pj4mIHByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3By
b3hpZXM7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdvcmtsZXQoRG9jdW1l
bnQmKTsKQEAgLTYyLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3Qu
CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCisg
ICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBWZWN0b3I8UmVmPFdvcmtsZXRHbG9iYWxTY29w
ZVByb3h5Pj4gbV9wcm94aWVzOwogICAgIEhhc2hTZXQ8UmVmUHRyPFdvcmtsZXRQZW5kaW5nVGFz
a3M+PiBtX3BlbmRpbmdUYXNrc1NldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZkZjU1MGY0NDk5MmQ5ZTYwNDMxZTdkMjNmZGZiMzlkMWQwZTkzYzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrbGV0Q29uc29s
ZUNsaWVudC5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3Jp
cHRDYWxsU3RhY2suaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tG
YWN0b3J5Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7Ci0KLVdvcmtsZXRDb25zb2xlQ2xpZW50OjpXb3JrbGV0Q29uc29sZUNsaWVudChXb3JrbGV0
R2xvYmFsU2NvcGUmIHdvcmtsZXRHbG9iYWxTY29wZSkKLSAgICA6IG1fd29ya2xldEdsb2JhbFNj
b3BlKHdvcmtsZXRHbG9iYWxTY29wZSkKLXsKLX0KLQotV29ya2xldENvbnNvbGVDbGllbnQ6On5X
b3JrbGV0Q29uc29sZUNsaWVudCgpID0gZGVmYXVsdDsKLQotdm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQotewotICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKLSAg
ICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAg
YXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUo
YXJndW1lbnRzKSwgZXhlYyk7Ci0gICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1l
c3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Ci19Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQgV29y
a2xldENvbnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYpIHsgfQotCi12b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGll
bnQ6OnRpbWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIFJlZjxTY3Jp
cHRBcmd1bWVudHM+JiYpIHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZUVuZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYp
IHsgfQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6
OnRha2VIZWFwU25hcHNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIHsg
fQotdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KLQotdm9pZCBXb3JrbGV0Q29uc29sZUNs
aWVudDo6cmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYm
KSB7IH0KLXZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6OnJlY29yZEVuZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikgeyB9Ci0KLXZvaWQgV29ya2xldENvbnNv
bGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1
bWVudHM+JiYpIHsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTJiYjQ5YTVkYWZiOGFmM2MzY2Q5OTY3ZjZmMGJhMWRjM2I1NTNhOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiV29ya2xldEdsb2Jh
bFNjb3BlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZUNsaWVudC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQ2FsbEZyYW1l
OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdvcmtsZXRDb25zb2xlQ2xpZW50
IGZpbmFsIDogcHVibGljIEpTQzo6Q29uc29sZUNsaWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2xldENvbnNvbGVDbGllbnQoV29y
a2xldEdsb2JhbFNjb3BlJik7Ci0gICAgdmlydHVhbCB+V29ya2xldENvbnNvbGVDbGllbnQoKTsK
LQotcHJpdmF0ZToKLSAgICB2b2lkIG1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRBcmd1bWVudHM+JiYpIGZpbmFsOwotICAgIHZvaWQgY291bnQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpIGZpbmFsOwotICAgIHZvaWQgY291bnRSZXNldChKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCkgZmluYWw7Ci0gICAgdm9pZCBw
cm9maWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBmaW5hbDsK
LSAgICB2b2lkIHByb2ZpbGVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
dGl0bGUpIGZpbmFsOwotICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgZmluYWw7Ci0gICAgdm9pZCB0aW1lKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVM
b2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0
b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0gICAgdm9pZCB0aW1lRW5kKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBmaW5hbDsKLSAgICB2b2lkIHRpbWVT
dGFtcChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRz
PiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlY29yZEVuZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIFJlZjxJbnNw
ZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgZmluYWw7Ci0KLSAgICBXb3JrbGV0R2xvYmFsU2Nv
cGUmIG1fd29ya2xldEdsb2JhbFNjb3BlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXgg
N2IzYjQyMTBmNzRiNmQ2YjZhMjYzY2VlOWJlYzA0MWM3NjQyNzk4OS4uNDNkODM0NTI0MjI1NDJl
ZWY5MDBlMmQyZDc2Y2EyMjUxZTAzYTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xNjMsMjMgKzE2Myw0MyBAQCB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBjb25zdAogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkK
IHsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFt
ZXNzYWdlKQorICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2so
QWRkQ29uc29sZU1lc3NhZ2VUYXNrKG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgp
LCBtZXNzYWdlLT5tZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
bWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVz
c2FnZS0+bWVzc2FnZSgpLCAwKSk7CisgICAgfQorCisgICAgaWYgKG1fZG9jdW1lbnQpCisgICAg
ICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2Fn
ZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CisgICAgZWxzZQorICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1v
dmUobWVzc2FnZSkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlm
ICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgaWYgKCFpc0Nv
bnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2so
c291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgIH0KKworICAgIGlmIChtX2RvY3VtZW50KQorICAgICAgICBtX2RvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRp
Zmllcik7CisgICAgZWxzZQorICAgICAgICBhZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3Nh
Z2UsIHsgfSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOwogfQog
Ci12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
dW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlz
SlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICBpZiAobV9kb2N1bWVudCkgeworICAgICAgICBt
X2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRy
LCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5h
ZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxscHRyLCByZXF1ZXN0SWRl
bnRpZmllcik7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+IG1lc3NhZ2U7CisgICAgaWYgKGNhbGxTdGFjaykKKyAgICAgICAgbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogUmVmZXJy
ZXJQb2xpY3kgV29ya2xldEdsb2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0CkBAIC0y
MTYsOCArMjM2LDkgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByb2Nlc3NOZXh0U2NyaXB0
RmV0Y2hKb2JJZk5lZWRlZCgpCiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNs
eSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmZXRjaE9wdGlvbnMpLCBjb250ZW50
U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlz
KTsKIH0KIAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3ZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikKIHsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVTY3JpcHRSZXNwb25zZSh0aGlzLCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKQEAgLTIzMyw2ICsyNTQsOCBAQCB2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQogICAgIFVSTCBtb2R1bGVVUkwobV9z
Y3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ldmFs
dWF0ZWRNb2R1bGVzLmFkZChtb2R1bGVVUkwpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRy
eSkgeworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCp0
aGlzLCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0
KCkpOworCiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAg
ICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9hZGVyLT5z
Y3JpcHQoKSwgV1RGTW92ZShtb2R1bGVVUkwpKSwgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCmlu
ZGV4IDNhNGY0ZTczNzljZGJmMTE5MTcyYTgyNmU5ZDNhMDI4N2ZiMjEzZDguLjk4MzZjZjBhMDM1
ODFiZTgyNjNiNTUwZDg0MjYzMTkzMTNmZmU2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFBhcmFtZXRlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtMzQsMTMgKzM1LDE1IEBA
IHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVycyB7CiAgICAgVVJMIHdpbmRvd1VSTDsKICAgICBKU0M6
OlJ1bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFnczsKICAgICBmbG9hdCBzYW1wbGVSYXRlOworICAg
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGU7CiAKICAgICBXb3JrbGV0UGFyYW1ldGVy
cyBpc29sYXRlZENvcHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAg
ICAgIHdpbmRvd1VSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgICAgIGpzUnVudGltZUZsYWdz
LAotICAgICAgICAgICAgc2FtcGxlUmF0ZQorICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAg
ICAgICAgIHN0YXJ0TW9kZQogICAgICAgICB9OwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYzJjMTU0
MWMxNTgwMjNiYjZmYWE1ZTc1MzIyNmY2MWM3ZWZmOGM0MC4uMjNiNDYwMzY2ODNmOTUyZDQ1MDE1
M2JhMWNlMjBlMzVmY2ZmY2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
IkpTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgIldvcmtsZXRD
b25zb2xlQ2xpZW50LmgiCisjaW5jbHVkZSAiV29ya2VyQ29uc29sZUNsaWVudC5oIgogCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0RlZmVycmVkV29ya1RpbWVyLmg+CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcygpCiAgICAgQVNTRVJUKG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xv
YmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IG1h
a2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7Cisg
ICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93
b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0
Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCkBAIC0yNjcsNiArMjY3
LDE3IEBAIGJvb2wgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmlzVGVybWluYXRpbmdFeGVjdXRp
b24oKSBjb25zdAogICAgIHJldHVybiBtX2lzVGVybWluYXRpbmdFeGVjdXRpb247CiB9CiAKK3Zv
aWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIq
IGRlYnVnZ2VyKQoreworICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOworICAgIGRlYnVnZ2VyLT5h
dHRhY2gobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKK30KKwordm9pZCBXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIpCit7CisgICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIu
Z2V0KCksIEpTQzo6RGVidWdnZXI6OlRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbik7Cit9CisK
IEpTQzo6SlNHbG9iYWxPYmplY3QqIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpnbG9iYWxTY29w
ZVdyYXBwZXIoKQogewogICAgIHJldHVybiB3b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBlMTM4Y2E2Mzg2NjFjYThmNGIzMTgyMjNkN2RlZDkxNzExZjAwNTI0Li41YjJjYzdhNTdj
ODMyZDBiYjcyMDhjYjkyZTQwNTJlZWQ4YzJmNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKQEAgLTQxLDkgKzQxLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1dvcmtsZXRHbG9iYWxTY29wZTsKIGNsYXNzIFNj
cmlwdFNvdXJjZUNvZGU7Ci1jbGFzcyBXb3JrbGV0Q29uc29sZUNsaWVudDsKK2NsYXNzIFdvcmtl
ckNvbnNvbGVDbGllbnQ7CiBjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGU7Ci1jbGFzcyBXb3JrbGV0
Q29uc29sZUNsaWVudDsKIAogLy8gRklYTUU6IFdlIHNob3VsZCBzaGFyZSBtb3JlIGNvZGUgd2l0
aCBXb3JrZXJTY3JpcHRDb250cm9sbGVyLgogY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXIg
OiBwdWJsaWMgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciB7CkBAIC04MSw3ICs4MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiopOwog
Ci0gICAgSlNDOjpWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorICAgIEpTQzo6Vk0mIHZtKCkg
ZmluYWwgeyByZXR1cm4gKm1fdm07IH0KKworICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoSlNDOjpE
ZWJ1Z2dlciopIGZpbmFsOworICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciop
IGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKQEAgLTk3
LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXhlY3V0aW9uRm9yYmlkZGVuIHsgZmFs
c2UgfTsKICAgICBSZWZQdHI8SlNDOjpWTT4gbV92bTsKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUq
IG1fd29ya2xldEdsb2JhbFNjb3BlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0Q29uc29s
ZUNsaWVudD4gbV9jb25zb2xlQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJDb25z
b2xlQ2xpZW50PiBtX2NvbnNvbGVDbGllbnQ7CiAgICAgSlNDOjpTdHJvbmc8SlNXb3JrbGV0R2xv
YmFsU2NvcGU+IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcjsKICAgICBtdXRhYmxlIExvY2sg
bV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxvY2s7CiAgICAgYm9vbCBtX2lzVGVybWluYXRpbmdFeGVj
dXRpb24geyBmYWxzZSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411986</attachid>
            <date>2020-10-21 08:19:47 -0700</date>
            <delta_ts>2020-10-21 08:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201021081946.patch</filename>
            <type>text/plain</type>
            <size>86712</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNTJjMWYzYjhiY2M3
MmM5YjBiODQwNjYzMTZhMGM4NWU1ODgyYi4uMDQxYWE2MGIyY2E3ZWY1ODRkNWQ3OThiMDk4YzVl
NjQ4YTBkMThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMC0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0ODg3NjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBBdWRp
b1dvcmtsZXRzIHVwIHRvIFdlYkluc3BlY3Rvciwgc2ltaWxhcmx5IHRvIFdlYiBXb3JrZXJzLiBU
aGlzIGJhc2ljYWxseSBwb3J0cworICAgICAgICBXZWJJbnNwZWN0b3IgY29kZSB0byB1c2UgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgaW5zdGVhZCBvZiBXb3JrZXJHbG9iYWxTY29wZQorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgc2FtZSBjb2RlIGZvciB3b3JrbGV0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yVGVybWluYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjppbnNwZWN0b3JDb250cm9sbGVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcik6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckRlYnVnZ2VyUHJveHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6c3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVu
dExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdl
bnQ6OlNlcnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFn
ZW50OjpXb3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVMb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpyZXN1bWVXb3Jr
ZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29u
bmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldDo6V29ya2xldCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldC5o
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKwogMjAyMC0xMC0yMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAg
PHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIGZsZXgtYmFzaXMg
bm90IGFuaW1hdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2NjOTIzNGU3MWUyNGZj
ODBjMzlmZTg1ZmVhNmEyMDhlMGM2OTU2MS4uMmIyN2U3OTMyOWJiMDI5OWU5NDg2NmUyZWRjNGNm
Y2NiOWUzZTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlKTsKIEF1ZGlv
V29ya2xldEdsb2JhbFNjb3BlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZShBdWRpb1dvcmtsZXRU
aHJlYWQmIHRocmVhZCwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAg
OiBXb3JrbGV0R2xvYmFsU2NvcGUodGhyZWFkLCBwYXJhbWV0ZXJzKQogICAgICwgbV9zYW1wbGVS
YXRlKHBhcmFtZXRlcnMuc2FtcGxlUmF0ZSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlciht
YWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKIH0KQEAgLTE0OSw2ICsxNTAsOCBAQCB2b2lkIEF1ZGlvV29y
a2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yVGVybWluYXRpb24oKQogICAgICAgICBkZWZhdWx0
VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7CiAgICAgc3RvcEFjdGl2ZURPTU9i
amVjdHMoKTsKIAorICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+d29ya2VyVGVybWluYXRpbmco
KTsKKwogICAgIG1fcHJvY2Vzc29yQ29uc3RydWN0b3JNYXAuY2xlYXIoKTsKIAogICAgIC8vIEV2
ZW50IGxpc3RlbmVycyB3b3VsZCBrZWVwIERPTVdyYXBwZXJXb3JsZCBvYmplY3RzIGFsaXZlIGZv
ciB0b28gbG9uZy4gQWxzbywgdGhleSBoYXZlIHJlZmVyZW5jZXMgdG8gSlMgb2JqZWN0cywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuaAppbmRleCAzZTYxNzVkMWFlNDM5ZWY4YzI2ZDM2ZmE4NWQ0NDhhMmM0NTli
OTY4Li5iOWEyNTg2NTBlZTNkMWI2YTFhYWQ3MzI5MGM1MGMyYjcxNGUyN2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNs
dWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2lu
Y2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsNiArNzEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOwogICAgIHZvaWQgaGFuZGxlUG9z
dFJlbmRlclRhc2tzKHNpemVfdCBjdXJyZW50RnJhbWUpOwogCisgICAgV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2luc3Bl
Y3RvckNvbnRyb2xsZXI7IH0KKwogcHJpdmF0ZToKICAgICBBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZShBdWRpb1dvcmtsZXRUaHJlYWQmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwogCkBAIC04
MCw2ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxKU0F1ZGlv
V29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yPj4gbV9wcm9jZXNzb3JDb25zdHJ1Y3Rvck1hcDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0
YT4gbV9wZW5kaW5nUHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YTsKICAgICBPcHRpb25hbDxKU0M6
OkpTTG9ja0hvbGRlcj4gbV9sb2NrRHVyaW5nUmVuZGVyaW5nOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCmluZGV4
IGE3MDYxM2U5ODA0MGE2MDIwM2RjNzdmNjkzMGE2NTcwYzc3YWU0NWYuLjYxZTBmYjBlOTc5OTMz
ZjYyNDU2ZjhlZDQzODZkMWE0M2ZhMmQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3Bw
CkBAIC0zNywzNiArMzcsNDMgQEAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldvcmtlckluc3BlY3RvclBy
b3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXb3JrbGV0
UGVuZGluZ1Rhc2tzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFdvcmtsZXRQ
YXJhbWV0ZXJzIGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0
KQorc3RhdGljIFdvcmtsZXRQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMoQXVk
aW9Xb3JrbGV0JiB3b3JrbGV0LCBXb3JrZXJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yUHJveHkp
CiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSB3b3JrbGV0LmRvY3VtZW50KCk7CiAgICAgYXV0byBq
c1J1bnRpbWVGbGFncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpLmphdmFTY3JpcHRSdW50aW1lRmxh
Z3MoKTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlID0gaW5zcGVjdG9yUHJv
eHkud29ya2VyU3RhcnRNb2RlKCp3b3JrbGV0LmRvY3VtZW50KCkpOwogCiAgICAgcmV0dXJuIHsK
ICAgICAgICAgZG9jdW1lbnQtPnVybCgpLAogICAgICAgICBqc1J1bnRpbWVGbGFncywKLSAgICAg
ICAgd29ya2xldC5hdWRpb0NvbnRleHQoKSA/IHdvcmtsZXQuYXVkaW9Db250ZXh0KCktPnNhbXBs
ZVJhdGUoKSA6IDAuMGYKKyAgICAgICAgd29ya2xldC5hdWRpb0NvbnRleHQoKSA/IHdvcmtsZXQu
YXVkaW9Db250ZXh0KCktPnNhbXBsZVJhdGUoKSA6IDAuMGYsCisgICAgICAgIHN0YXJ0TW9kZQog
ICAgIH07CiB9CiAKIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eShBdWRpb1dvcmtsZXQmIHdvcmtsZXQpCiAgICAgOiBtX3dvcmtsZXQobWFrZVdl
YWtQdHIod29ya2xldCkpCiAgICAgLCBtX2RvY3VtZW50KCp3b3JrbGV0LmRvY3VtZW50KCkpCi0g
ICAgLCBtX3dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0VGhyZWFkOjpjcmVhdGUoKnRoaXMsIGdl
bmVyYXRlV29ya2xldFBhcmFtZXRlcnMod29ya2xldCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94
eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrbGV0LmlkZW50aWZpZXIoKSkp
CisgICAgLCBtX3dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0VGhyZWFkOjpjcmVhdGUoKnRoaXMs
IGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMod29ya2xldCwgKm1faW5zcGVjdG9yUHJveHkpKSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgbV93b3JrbGV0VGhyZWFkLT5z
dGFydCgpOworICAgIG1faW5zcGVjdG9yUHJveHktPndvcmtlclN0YXJ0ZWQod29ya2xldC5kb2N1
bWVudCgpLCBtX3dvcmtsZXRUaHJlYWQucHRyKCksIHsgfSwgIkF1ZGlvV29ya2xldCJfcyk7CiB9
CiAKIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkoKQogeworICAgIG1faW5zcGVjdG9yUHJveHktPndvcmtlclRlcm1pbmF0ZWQoKTsKICAgICBt
X3dvcmtsZXRUaHJlYWQtPnN0b3AoKTsKIH0KIApAQCAtMTAwLDYgKzEwNywyMiBAQCB2b2lkIEF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvQXVkaW9Xb3JrbGV0KEZ1bmN0aW9u
PHZvaWQoQXVkaW9Xb3JrbAogICAgIH0pOwogfQogCit2b2lkIEF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBt
X2luc3BlY3RvclByb3h5LT5zZW5kTWVzc2FnZUZyb21Xb3JrZXJUb0Zyb250ZW5kKG1lc3NhZ2Up
OworICAgIH0pOworfQorCit2b2lkIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpzZXRSZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wgZGlzYWJsZWQpCit7CisgICAg
cG9zdFRhc2tUb0xvYWRlcihbZGlzYWJsZWRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSkKKyAgICAgICAgICAg
IHBhZ2UtPnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQp
OworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCmluZGV4IGE2YmM4NTg5MTdhNWQw
ZWI3NTA0ZTY0NjhkMDhhZjU0ZTAyNTliNmIuLjEzN2ZhNDE0Y2RiOWI4MzZkOTFkYWNjMTE4ZTc4
MTA1N2Q0YzczZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJXb3JrZXJE
ZWJ1Z2dlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrbGV0R2xvYmFsU2NvcGVQcm94eS5oIgogCkBAIC0zNyw4ICszOCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvV29ya2xldDsKIGNsYXNzIEF1ZGlvV29ya2xldFRocmVh
ZDsKIGNsYXNzIERvY3VtZW50OworY2xhc3MgV29ya2VySW5zcGVjdG9yUHJveHk7CiAKLWNsYXNz
IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVBy
b3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHkgeworY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJM
b2FkZXJQcm94eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk+IGNyZWF0ZShBdWRpb1dvcmtsZXQm
IHdvcmtsZXQpCiAgICAgewpAQCAtNjIsMTAgKzY0LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
b3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CiAg
ICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKIAor
ICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkuCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdn
ZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNh
YmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wpIGZpbmFsOworCiAgICAgYm9vbCBpc0F1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgV2Vh
a1B0cjxBdWRpb1dvcmtsZXQ+IG1fd29ya2xldDsKICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlckluc3BlY3RvclByb3h5PiBtX2luc3BlY3Rv
clByb3h5OwogICAgIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IG1fd29ya2xldFRocmVhZDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0VGhyZWFkLmNwcAppbmRleCBhMDY4ZGNkMDQ0ZDBmYTMyNjcxNmVmZTA3N2JjOGNkM2Q4NDJm
OGZmLi5hMWY0NTIxYjJlMGMyMTJhOGI4MjUyNThjMjk3OGQ1NTQyOGJiNTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQu
Y3BwCkBAIC0xMzIsNiArMTMyLDE0IEBAIHZvaWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrbGV0
VGhyZWFkKCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtX3BhcmFtZXRlcnMuc3RhcnRN
b2RlID09IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3BlY3RvcikgeworICAgICAg
ICBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CisKKyAgICAgICAgLy8gSWYgdGhlIHdvcmtl
ciB3YXMgc29tZWhvdyB0ZXJtaW5hdGVkIHdoaWxlIHByb2Nlc3NpbmcgZGVidWdnZXIgY29tbWFu
ZHMuCisgICAgICAgIGlmIChtX3J1bkxvb3AudGVybWluYXRlZCgpKQorICAgICAgICAgICAgc2Ny
aXB0Q29udHJvbGxlci0+Zm9yYmlkRXhlY3V0aW9uKCk7CisgICAgfQorCiAgICAgcnVuRXZlbnRM
b29wKCk7CiAKICNpZiBVU0UoR0xJQikKQEAgLTE3Nyw2ICsxODUsMjcgQEAgV29ya2VyTG9hZGVy
UHJveHkmIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2VyTG9hZGVyUHJveHkoKQogICAgIHJldHVy
biBtX21lc3NhZ2luZ1Byb3h5OwogfQogCitXb3JrZXJEZWJ1Z2dlclByb3h5JiBBdWRpb1dvcmts
ZXRUaHJlYWQ6OndvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdAoreworICAgIHJldHVybiBtX21l
c3NhZ2luZ1Byb3h5OworfQorCit2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6c3RhcnRSdW5uaW5n
RGVidWdnZXJUYXNrcygpCit7CisgICAgQVNTRVJUKCFtX3BhdXNlZEZvckRlYnVnZ2VyKTsKKyAg
ICBtX3BhdXNlZEZvckRlYnVnZ2VyID0gdHJ1ZTsKKworICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1
bHQgcmVzdWx0OworICAgIGRvIHsKKyAgICAgICAgcmVzdWx0ID0gbV9ydW5Mb29wLnJ1bkluRGVi
dWdnZXJNb2RlKCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgfSB3aGlsZSAocmVzdWx0ICE9
IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgbV9wYXVzZWRGb3JEZWJ1Z2dlcik7Cit9CisKK3Zv
aWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjpzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKQoreworICAg
IG1fcGF1c2VkRm9yRGVidWdnZXIgPSBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCmluZGV4IDAzMGM2MWY5ZDUx
ODAyMjkyY2IzNDM4MTRkOTEwYzJiZWE3YjNlYjkuLjc5MDdlNTdlOTVlOWE0M2E0NjhhM2IxMmEx
ODJhN2YyOGZjY2UwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaApAQCAtNTQsMTEgKzU0LDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKKyAgICB2b2lkIHN0YXJ0UnVubmlu
Z0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSdW5uaW5nRGVidWdnZXJUYXNr
cygpIGZpbmFsOworCiAgICAgLy8gV29ya2VyT3JXb3JrbGV0VGhyZWFkLgogICAgIFdvcmtlclJ1
bkxvb3AmIHJ1bkxvb3AoKSBmaW5hbCB7IHJldHVybiBtX3J1bkxvb3A7IH0KICAgICBXb3JrZXJM
b2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBmaW5hbDsKICAgICBUaHJlYWQqIHRocmVh
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAgICAgQXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHkmIG1lc3NhZ2luZ1Byb3h5KCkgeyByZXR1cm4gbV9tZXNzYWdpbmdQ
cm94eTsgfQorICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBj
b25zdCBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHkmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwpAQCAtNzIsNiAr
NzYsNyBAQCBwcml2YXRlOgogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAg
ICBSZWZQdHI8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+IG1fd29ya2xldEdsb2JhbFNjb3BlOwog
ICAgIExvY2sgbV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29wZUxvY2s7CisgICAg
Ym9vbCBtX3BhdXNlZEZvckRlYnVnZ2VyIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCAzN2E2YmZhOTYwYmQ2NzE0NzVkODA5Y2E5OTg4ZDEzYTZmODQzMGJjLi45MTdjOGJk
ZGRiZDkzNDA3YmE2MTkyMGY3MGQwMzlmMDgwODY5ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00ODEsMTAgKzQ4MSw4IEBAIEpTQzo6
Vk0mIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKCkKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+
KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGNvbW1vblZNKCk7Ci0gICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpLnNjcmlwdCgpLT52bSgpOwotICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2Nv
cGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4o
KnRoaXMpLnNjcmlwdCgpLT52bSgpOworICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4oKnRoaXMpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGNvbW1vblZNKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDAyYWJl
MTY2NDE0MmRiZWE5YWJmZmMwMGVjMzc1M2JkMTRlMzYyM2YuLjM0YzE0OGFjZjU2ZTk4OWU3ZWY4
NDkwMmExNzlhNmRkNGRkOTMxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAK
KyNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlLmgiCiAjaW5jbHVkZSAiQ29tcHV0ZWRFZmZlY3RUaW1pbmcuaCIKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIlBhZ2VIZWFwQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlUnVudGltZUFn
ZW50LmgiCisjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCkBAIC03Myw2ICs3NSw4IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJh
bWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oPgpAQCAtMTMyMCw5ICsxMzI0LDE4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zCiAgICAg
ICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJMYXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7CiB9
CiAKLUluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKK0luc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsK
LSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5z
dHJ1bWVudGluZ0FnZW50czsKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIGlmIChpczxBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKS5pbnNwZWN0b3JDb250cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRz
LnB0cigpOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBQYWludFdvcmtsZXRzLgorICAgIGlmIChpczxQYWludFdvcmts
ZXRHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2lu
c3RydW1lbnRpbmdBZ2VudHMucHRyKCk7CiB9CiAKIEluc3RydW1lbnRpbmdBZ2VudHMmIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYgcGFn
ZSkKQEAgLTEzMzUsOCArMTM0OCw4IEBAIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoU2NyCiB7CiAgICAg
aWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdB
Z2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5wYWdlKCkpOwotICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiAmaW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNWFkNzllMGQxNmE5
NTMyYjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZS4uZDBlODBlNjIxY2M1MWFmNDNkZGM4MTkwNmJm
YTY4Zjc5MWU0YjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBTaGFkb3dSb290
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFt
ZWRGbG93OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKQEAg
LTIwMSwxMSArMjAxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdv
cmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhX
b3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyR2xv
YmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOworICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCiAgICAgLy8gU29tZSBuZXR3b3JrIHJlcXVlc3RzIGRvIG5vdCBnbyB0
aHJvdWdoIHRoZSBub3JtYWwgbmV0d29yayBsb2FkaW5nIHBhdGguCiAgICAgLy8gVGhlc2UgbmV0
d29yayByZXF1ZXN0cyBoYXZlIHRvIGlzc3VlIHRoZWlyIG93biB3aWxsU2VuZFJlcXVlc3QgLyBk
aWRSZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5pc2hMb2FkaW5nIC8gZGlkRmFpbExvYWRpbmcKQEAg
LTI0MywyMCArMjQzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNz
YWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFs
U2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOworICAg
IHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCiAgICAg
c3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFdvcmtlckds
b2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwor
ICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYs
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMg
dm9pZCBjb25zb2xlQ291bnRSZXNldChQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtl
ckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwp
OworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCiAg
ICAgc3RhdGljIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0
bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBzdGFy
dENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5n
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUm
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rv
cjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb25zb2xlVGltaW5n
KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
bGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CisgICAgc3RhdGljIHZv
aWQgbG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2
b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xl
VGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3RhbXAo
RnJhbWUmLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2
b2lkIHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQYWdlJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTMyLDcgKzUzMiw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYpOwogCiAgICAgc3RhdGljIEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKLSAgICBz
dGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFtZSYpOwogICAgIHN0
YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoY29u
c3QgRnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQm
KTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0aWMg
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSopOwogfTsKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1MCwxMCArMTA1MCwxMSBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUsIHVu
c2lnbmVkIGxvbgogICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFModm9pZCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxw
dHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICBpZiAoYXV0byogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHdpbGxTZW5kUmVx
dWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RPZlR5cGUoRnJhbWUqIGZyYW1lLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9hZFR5cGUpCkBAIC0xMDc1LDkgKzEwNzYsMTAgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShGcmFtZSYgZnJhbWUsIHUKICAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlLCBy
ZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlc3BvbnNlLCBudWxscHRyKTsKKyAgICBp
ZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCisgICAg
ICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
aWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVz
cG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwOTQsMTAgKzEwOTYsMTEgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJh
bWUsIHVuc2lnbmVkIGxvbmcKICAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURhdGFJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGlmIChh
dXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAgICAgICAg
ZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRh
LCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVy
KQpAQCAtMTEwNywxMCArMTExMCwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYQogICAgICAg
ICBkaWRGaW5pc2hMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwg
bG9hZGVyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkRmlu
aXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdv
cmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgbmV0d29ya0xvYWRNZXRyaWNz
LCBudWxscHRyKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkpCisgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBpZGVudGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIp
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2Fk
aW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTExMTksOSArMTEyMywx
MCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGRpZEZhaWxMb2FkaW5nSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVu
dGlmaWVyLCBudWxscHRyLCBlcnJvcik7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIG51bGxwdHIsIGVycm9yKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0
aW9uc0RlbmllZChGcmFtZSYgZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0x
NTcxLDkgKzE1NzYsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5pcXUKICAgICBhZGRNZXNzYWdl
VG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
TWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0gICAgYWRk
TWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgaWYgKGF1dG8q
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQorICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgV1RGTW92ZShtZXNzYWdl
KSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNv
dW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQpAQCAtMTU4MSw5ICsxNTg3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplCiAg
ICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3Rh
dGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
b25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
c3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgY29uc29sZUNvdW50SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBz
dGF0ZSwgbGFiZWwpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKSkKKyAgICAgICAgY29uc29sZUNvdW50SW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgc3RhdGUsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQYWdlJiBwYWdlLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE1OTEsOSArMTU5OCwxMCBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KFBhZ2Um
IHBhZ2UsIEpTQzo6SlNHbG9iYQogICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
b25zb2xlQ291bnRSZXNldChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewotICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOwor
ICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkK
KyAgICAgICAgY29uc29sZUNvdW50UmVzZXRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0
ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnRh
a2VIZWFwU25hcHNob3QoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTYw
OSw5ICsxNjE3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3Rh
cnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsCiAgICAgICAgIHN0YXJ0Q29u
c29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xl
VGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkpCisgICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE2MjAsOSArMTYyOSwxMCBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmIGZy
YW1lLCBKU0M6OkpTR2xvYgogICAgICAgICBsb2dDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhXb3JrZXJH
bG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBh
cmd1bWVudHMpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNv
bGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIGxvZ0Nv
bnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3
b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAg
IGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKKyAg
ICAgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIGxh
YmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE2MzEsOSArMTY0MSwxMCBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5n
KEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsbwogICAgICAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCiB7Ci0gICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsK
KyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkp
CisgICAgICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhl
YywgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVUaW1lU3RhbXAoRnJhbWUmIGZyYW1lLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYgYXJndW1lbnRzKQpAQCAtMTc1Niw5ICsxNzY3LDkgQEAgaW5saW5lIEluc3RydW1lbnRp
bmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UKICAgICByZXR1cm4gcGFnZSA/ICZpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgqcGFn
ZSkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUo
V29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQoraW5saW5lIEluc3RydW1lbnRp
bmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiB3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2Nv
cGUgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKCp3b3JrZXJHbG9i
YWxTY29wZSkgOiBudWxscHRyOworICAgIHJldHVybiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgqd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpIDogbnVsbHB0cjsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IDcwNDQ2NDRiZmY5
NTIwZWFhZTg2ZWZkNGIyYWUzOTE5MjNmYzdlZjQuLjFiYmY5NGVmYTUyMTFhZDIxNmI0YTAwZmY2
NmE5MzA3NjZhNzBiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNsYXNzIFdvcmtlckds
b2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIC8vIEZJWE1F
OiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVuIHJlbWFpbmluZyBhZ2VudHMg
bW92ZS4KIHN0cnVjdCBXZWJBZ2VudENvbnRleHQgOiBwdWJsaWMgSW5zcGVjdG9yOjpBZ2VudENv
bnRleHQgewpAQCAtNTcsMTMgKzU3LDEzIEBAIHN0cnVjdCBQYWdlQWdlbnRDb250ZXh0IDogcHVi
bGljIFdlYkFnZW50Q29udGV4dCB7CiB9OwogCiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0IDog
cHVibGljIFdlYkFnZW50Q29udGV4dCB7Ci0gICAgV29ya2VyQWdlbnRDb250ZXh0KFdlYkFnZW50
Q29udGV4dCYgY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQor
ICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICAgICAg
OiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCB3b3JrZXJHbG9iYWxTY29wZSh3
b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgLCB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICB7CiAgICAgfQogCi0gICAgV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIGNsYXNzIEluc3BlY3RvckFn
ZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAppbmRleCA4MGM5YTEwNWM1NGEz
ZTUzNzBhY2NkNmMxMmZmMDZmMmIzNDM1ZGEyLi4yMjczMWE3ZTIxYzVjNDdmZWIyMmQ5MjU4MmRj
ODk4YzYxNTJkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dl
ci5jcHAKQEAgLTM0LDE2ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmts
ZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJEZWJ1Z2dlcjo6
V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCitXb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQpCiAg
ICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQogICAgICwgbV93b3JrZXJHbG9i
YWxTY29wZShjb250ZXh0KQogewpAQCAtNjAsOCArNjEsOCBAQCB2b2lkIFdvcmtlckRlYnVnZ2Vy
OjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAgICAgSlNDOjpEZWJ1
Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CiAKLSAgICBpZiAobV93b3Jr
ZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3Jp
cHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRyb2xs
ZXIgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICBzY3JpcHRDb250cm9s
bGVyLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAg
ICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CkBAIC04MCw3ICs4MSw3IEBAIHZv
aWQgV29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIAogICAgIE1lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgcmVzdWx0ID0gbV93
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUobV93
b3JrZXJHbG9iYWxTY29wZSk7CisgICAgICAgIHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUu
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dv
cmtlckdsb2JhbFNjb3BlKTsKICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVy
bWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAppbmRleCAxYzQ1Njk5OWFlZjYyYjU0
NDZhZjk3ZDY1NDY0ZjhjNTZjOWUxYWQzLi4xNDA5NGEzNjU3Y2U3NTBmZDhiYWJlZTYzZGI0ZmNk
YWNhZmU4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaApA
QCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3Mg
V29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdvcmtlckRlYnVnZ2VyKFdvcmtlckdsb2JhbFNjb3BlJik7Cisg
ICAgV29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICB+V29y
a2VyRGVidWdnZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKIApAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKICAgICB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24q
KSBjb25zdCBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNj
b3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3Bl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDkwZTk4NTQ0
YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5YTA2N2YuLmZlYTNkMGNiNGIyMTljOTIyZTIyYTZm
OGU2NDdhMzFlMWY4MDcxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNs
dWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJET01EZWJ1Z2dlckFn
ZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5oIgotI2luY2x1ZGUgIldvcmtl
ckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmV0d29ya0FnZW50LmgiCisjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50aW1l
QWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWwuaCIKQEAgLTU3LDE2ICs1NywxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAot
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50
cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBX
ZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIo
RnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAs
IG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCi0gICAgLCBtX2RlYnVn
Z2VyKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJH
bG9iYWxTY29wZSkKKyAgICAsIG1fZGVidWdnZXIod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
CisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKQogewotICAgIEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgQVNTRVJUKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVh
ZCgpKTsKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwog
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1f
ZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9
IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNj
b3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VG
cm9udGVuZENoYW5uZWw+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fZnJv
bnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7
CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91
dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0xNDgsNyArMTQ4
LDcgQEAgV29ya2VyQWdlbnRDb250ZXh0IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Ondvcmtl
ckFnZW50Q29udGV4dCgpCiAKICAgICBXb3JrZXJBZ2VudENvbnRleHQgd29ya2VyQ29udGV4dCA9
IHsKICAgICAgICAgd2ViQ29udGV4dCwKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSwKKyAg
ICAgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwKICAgICB9OwogCiAgICAgcmV0dXJu
IHdvcmtlckNvbnRleHQ7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dv
cmtlckdsb2JhbFNjb3BlKSkgeworICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+
KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgICAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNv
bnRleHQpKTsKICAgICB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW5zcGVjdG9yRXZhbHVhdGVIYW5k
bGVyIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmV2YWx1YXRlSGFuZGxlcigpIGNvbnN0CiAK
IFZNJiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCiB7Ci0gICAgcmV0dXJuIG1fd29y
a2VyR2xvYmFsU2NvcGUudm0oKTsKKyAgICByZXR1cm4gbV93b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS52bSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3YTUz
ZDgwNGJmYmNlMGY2MmUxMTUzYzUxM2IxNzhkNzQyMzgzZWRlLi45ZmQwYjljMzU0NGVhYjY5Mzkw
ZDJlZDRjZTlkYmYwOTc1ZDAxNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogc3RydWN0IFdvcmtlckFnZW50Q29udGV4dDsKIAog
Y2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNj
b3BlJik7CisgICAgZXhwbGljaXQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0aW5nKCk7CkBAIC04MSw3ICs4MSw3IEBA
IHByaXZhdGU6CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsK
ICAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdp
c3RyeSBtX2FnZW50czsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29w
ZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+
IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAgYm9vbCBtX2RpZENyZWF0ZUxhenlBZ2VudHMgeyBm
YWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRleCBjMDI2MjExMzVjNTVlYmQ3MDZlMDQzNTFiNWMx
M2Y2MTNiZWE2NTM0Li5kMjYzMGQ1MWNmZDRkNzFjZTU4MWE5ZjY0OTVhMzE2MmY2ZDgzMGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLmg+CiAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV29y
a2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQorICAgIGV4cGxpY2l0IFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgICAg
IDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAgICB7CiAgICAgfQpA
QCAtNDYsMTAgKzQ2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0TWVzc2Fn
ZVRvRGVidWdnZXIobWVzc2FnZSk7CisgICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUud29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0TWVzc2FnZVRvRGVi
dWdnZXIobWVzc2FnZSk7CiAgICAgfQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2Vy
R2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyR2xv
YmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFn
ZW50LmNwcAppbmRleCBiYmUyY2MwM2Q2NDVmYzEyOTA4NGRiZWU5ZGQ4MDQyMmJiZDYzZmQ4Li5l
ZmZkMmJlZTBhMGE3MDliZDlhZDdhMzEyMzMyNGQwNzIxMmFiM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3Jr
ZXJBZ2VudC5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VXb3JrZXJBZ2VudChXb3JrZXJBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlNlcnZpY2VXb3JrZXIi
X3MsIGNvbnRleHQpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpKQorICAg
ICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpTZXJ2aWNlV29ya2VyQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKLSAgICBBU1NFUlQo
Y29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJU
KGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwog
fQogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6On5TZXJ2aWNlV29ya2VyQWdlbnQoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IGY2NGQ1NzUzMGI3YjYxNzBlYWFkZTkyM2U0MDli
NWJkZGVhNzJlNDAuLjNiNWU1NGU0MTVmYzJhZTg2ZDMzYTI3ZWNiOWRlZTU5NmY3YzEwODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1
ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV29ya2Vy
QXVkaXRBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC00MSw5ICs0MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1ZGl0QWdlbnQoV29ya2VyQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQXVkaXRBZ2VudChjb250ZXh0KQot
ICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQorICAg
ICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29u
dGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlckF1ZGl0QWdlbnQ6On5Xb3JrZXJB
dWRpdEFnZW50KCkgPSBkZWZhdWx0OwpAQCAtNTUsNyArNTUsNyBAQCBJbmplY3RlZFNjcmlwdCBX
b3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2Jq
ZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5o
CmluZGV4IGQyNTljNmE3NmMyZWNiMGVlYjhlZGQ3MzM5ZWMwNDU5YmQzNzJiM2QuLmYxOTFlMDQ5
NTAxNDMyZWQ3MjIyOThmZjQzODM4ZmY4ZmNmMmVmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3Jr
ZXJBdWRpdEFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2Vu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyQXVkaXRBZ2VudCk7CkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcm
LCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0
SWQ+JiYpOwogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7Cisg
ICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNw
cAppbmRleCBlYWQ0MmRjMzNkNjg3ZjA0M2VkNTY3ZTNiOGY0YjE1ODA3Njk2Njc2Li5mYmE1NjE0
ZTc3ZjEzYjlhZGVlMDI1MTBhZmJlNjY4YTFiY2RkNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2Vu
dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdvcmtl
ckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0KQogewotICAgIEFTU0VSVChjb250
ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29u
dGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAK
IFdvcmtlckNvbnNvbGVBZ2VudDo6fldvcmtlckNvbnNvbGVBZ2VudCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggM2FlMzVjNjdhMzAzNDFkN2VlMTJmNmNjNTY4
OGRlMWVjNzhjNjNlMC4uMzU1OGNiMzRmOTczZWQ2MmM4NjkxMjNiNjU3NTNjY2YzNTMzYzUwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRl
ICJXb3JrZXJEZWJ1Z2dlckFnZW50LmgiCiAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC00MSwxNiArNDEsMTYgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2Vy
RGVidWdnZXJBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBXZWJEZWJ1
Z2dlckFnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQud29y
a2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGNvbnRl
eHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29y
a2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2Vy
RGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQg
V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fd29y
a2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9n
LCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsK
KyAgICBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpKSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4
ZWN1dGlvbkNvbnRleHRJZCkKQEAgLTYwLDcgKzYwLDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2Vy
RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCht
X3dvcmtlckdsb2JhbFNjb3BlKSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigp
LmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
aAppbmRleCA3Y2E2NGU0MDEzYTU0YjQxOGQ1M2U0NzQ4MDJlNzMyYmYxOTA4Yzk3Li45OTQ3Zjcx
NTQ1NjE0YWQ5M2ZmN2VmZTI1ZjJlMDU4NDgyNzg1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNv
bnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29w
ZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdl
bnQuY3BwCmluZGV4IDVkY2U4MjZmNGIxMGUwY2Q0ODVjODU5YWEzNzI5MzJiZWU2NGI1YTkuLjE0
MTBhMjc4OTQwZmRjMWNmYTViMzYwMmFiY2M1NzY0MzdmN2IyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29y
a0FnZW50LmNwcApAQCAtMzYsOSArMzYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBXb3JrZXJOZXR3b3JrQWdlbnQ6Oldvcmtlck5ldHdvcmtBZ2VudChXb3JrZXJBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQoY29udGV4dCkKLSAgICAs
IG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1f
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRU
aHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
aXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJOZXR3b3JrQWdlbnQ6On5Xb3JrZXJOZXR3
b3JrQWdlbnQoKSA9IGRlZmF1bHQ7CkBAIC02MSwxMiArNjEsMTIgQEAgVmVjdG9yPFdlYlNvY2tl
dCo+IFdvcmtlck5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9sZGVy
JikKIAogdm9pZCBXb3JrZXJOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
SW50ZXJuYWwoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVh
ZCgpLndvcmtlckRlYnVnZ2VyUHJveHkoKS5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2Vi
SW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLndv
cmtlck9yV29ya2xldFRocmVhZCgpLT53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3VyY2VD
YWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CiB9CiAKIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIFdvcmtlck5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dChQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYp
CiB7Ci0gICAgcmV0dXJuICZtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIHJldHVybiAmbV93b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0
d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJOZXR3b3JrQWdlbnQuaAppbmRleCBkZDg3ZDgxMDIwMmU1YjE3ZGU5Y2YwN2I3NjJiNTI1ZWVl
MmUzYmU4Li5kN2JlYmQwZGVhMTBhZmIwMTJiNDZhY2M0OTY3NWEyOWE5ZWQ0YmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3Jr
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJOZXR3b3JrQWdlbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFt
ZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJjZURhdGEo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3Jr
ZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRp
bWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGFhNThhMWYwZDdhODFiMDA2ODFmNjY4YTlmYzRhNzI1
ODZiMTNkY2QuLjhlODRkYTAwMzE5YWE4YWYyMzQ0NDljYzI3ODA2YTcxYzI1MWE0YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRp
bWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIldvcmtl
clJ1bnRpbWVBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KIApAQCAtNDQsOSArNDQs
OSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2VyUnVudGltZUFnZW50OjpXb3Jr
ZXJSdW50aW1lQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVj
dG9yUnVudGltZUFnZW50KGNvbnRleHQpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRp
bWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3Bl
KQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3Bl
LmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlclJ1bnRpbWVBZ2VudDo6
fldvcmtlclJ1bnRpbWVBZ2VudCgpID0gZGVmYXVsdDsKQEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0
ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9
CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Io
Z2xvYmFsT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGlt
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJS
dW50aW1lQWdlbnQuaAppbmRleCA2Yjk5OGY0ZDE3MzE4NTFmOTliNjdlZTE1YTVkMjAwMTU4N2Y0
ZDA2Li5iY2NjMmI3ZDA3MTVhMzRlN2M0NzcyMzI2ZDI0MWRhOTZjN2JlMjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJS
dW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2Vy
UnVudGltZUFnZW50KTsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVubXV0
ZUNvbnNvbGUoKSB7IH0KIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93
b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyNzE3Yzg2MWM3
NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1Li4xOGZmM2Y5NGYwNDJkMWExZmQwM2E1MWJj
MTFkNWJkMTQ2ZjMzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFJlZlB0cjxUaHJlYWRh
YmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgU3Ry
aW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXb3JrbGV0
R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpKSkKKyAgICBpZiAo
aXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkK
ICAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFdURk1vdmUo
cmVmZXJyZXIpKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7CkBAIC0xMTgs
OCArMTE4LDggQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIHZvaWQgVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1
dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkpCi0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOworICAgIGlmIChpczxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwog
ICAgIGVsc2UKICAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0
KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBjb250ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkocmVzb3VyY2VVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUxMTM5NmJmZDgzMzZlM2U4Njc0YTQ5Y2I1YzgxODRi
ZjE1ODBhN2UuLmVmNDk0OTIyNWIyOGI1MGYzODY2YzBmN2QzNjZlMGI3OTI2NmNhM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTEzNyw4ICsxMzcsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgICAgICBvcHRpb25z
Q29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2
ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgogCi0gICAg
aWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGdsb2JhbFNjb3Bl
LCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKIAogICAgIC8vIENhbiB3ZSBi
ZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRvIGNyZWF0ZSBtb3JlIGVmZmlj
aWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBX
VEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUo
Y29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewpAQCAtMjI2LDggKzIyNSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQu
aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKFdURk1vdmUocmVzcG9uc2VEYXRhKSk7CiAg
ICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25zZShp
ZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwg
d29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShkb3duY2FzdDxXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBy
ZXNwb25zZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTIzOCw4ICsyMzYsNyBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
ID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcild
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xv
YmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAgICAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShk
b3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVl
c3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICB9LCBtX3Rh
c2tNb2RlKTsKIH0KIApAQCAtMjQ5LDggKzI0Niw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJD
bGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29s
YXRlZENvcHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkg
fHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKLSAgICAgICAg
aWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJp
Y3MpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmco
ZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsK
IH0KIApAQCAtMjYxLDggKzI1Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvCiAgICAgICAg
IEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xl
dEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihjb250
ZXh0LCBlcnJvciwgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+aW5pdGlhdG9yKCkpOwog
ICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKLSAg
ICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOworICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNkOTU5ZDRiNjNiOWZmNTk1ZC4uYmJlODE2
NDkxZTlmZjIzNTE3ODkyODQ4YTdlNjFkNzk3MjMyZTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogICAg
IGJvb2wgd2FzVGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVGVybWluYXRlZDsgfQog
Ci0gICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
IAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5j
cHAKaW5kZXggN2I0MjkzMDBhZmZjYjA1MTg5ZDQ4MTYwNTlmNDA1ZDY2ODZjNGY1MS4uMDllMjA3
NmJmN2FiYTAxYTY3OWI1OGEyOGE4ODhmOTk1MDRlNDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC01MywzNyArNTMsMjcgQEAgdm9p
ZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxX
b3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2ds
b2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29uc29sZUNvdW50KG1fZ2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAogdm9pZCBXb3Jr
ZXJDb25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3Jr
bGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNj
b3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNl
dChkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVs
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KG1fZ2xv
YmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0
aW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0g
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwp
OwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVMb2coSlNDOjpKU0dsb2JhbE9i
amVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBh
cmd1bWVudHMpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFs
U2NvcGUuCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUo
YXJndW1lbnRzKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGlt
aW5nKG1fZ2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQog
CiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1f
Z2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25z
b2xlVGltaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhl
YywgbGFiZWwpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1p
bmcobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwogfQogCiAvLyBGSVhNRTogPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE1MzQ5OT4gV2ViIEluc3BlY3RvcjogY29uc29sZS5wcm9maWxlIHNob3Vs
ZCB1c2UgdGhlIG5ldyBTYW1wbGluZyBQcm9maWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCA2MzJiODJlMjhiNzJkYTYxMzcxYzI0
ZWJmYmFmMmRkNTU5MTBkMDcxLi45M2Q2OGEzYzQ3MTVhN2M4M2VmM2JmNjRjNDk0ZTc3OGYxZjk4
NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5
LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V29ya2VySW5zcGVjdG9yUHJveHkuaCIKIAorI2luY2x1ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2Vu
dEJhc2UuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzksNiArNDAs
MTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
K3N0YXRpYyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisjaWYgRU5BQkxFKFdFQl9BVURJTykK
KyAgICBpZiAoaXM8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpOworfQorCiBIYXNoU2V0PFdvcmtl
ckluc3BlY3RvclByb3h5Kj4mIFdvcmtlckluc3BlY3RvclByb3h5OjphbGxXb3JrZXJJbnNwZWN0
b3JQcm94aWVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXb3JrZXJJ
bnNwZWN0b3JQcm94eSo+PiBwcm94aWVzOwpAQCAtNjIsNyArNzIsNyBAQCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIHJldHVybiBwYXVzZU9uU3RhcnQgPyBXb3JrZXJUaHJlYWRTdGFydE1v
ZGU6OldhaXRGb3JJbnNwZWN0b3IgOiBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbDsKIH0K
IAotdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJUaHJlYWQqIHRocmVhZCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgV29ya2VySW5zcGVjdG9y
UHJveHk6OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlclRocmVhZCk7CiAK
QEAgLTkzLDcgKzEwMyw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclRlcm1p
bmF0ZWQoKQogdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVzdW1lV29ya2VySWZQYXVzZWQo
KQogewogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tz
KCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CiAg
ICAgfSk7CiB9CiAKQEAgLTEwNiw3ICsxMTYsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5
Ojpjb25uZWN0VG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2VDaGFubmVsJiBjaGFubgog
ICAgIG1fcGFnZUNoYW5uZWwgPSAmY2hhbm5lbDsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVj
dG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOworICAgICAgICBpbnNwZWN0b3JDb250
cm9sbGVyKGNvbnRleHQpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0pOwogfQogCkBAIC0xMTks
MTEgKzEyOSwxMSBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpkaXNjb25uZWN0RnJvbVdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIG1fcGFnZUNoYW5uZWwgPSBudWxscHRyOwog
CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFz
b246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICAgICAgLy8gSW4gY2FzZSB0aGUgd29ya2Vy
IGlzIHBhdXNlZCBydW5uaW5nIGRlYnVnZ2VyIHRhc2tzLCBlbnN1cmUgd2UgYnJlYWsgb3V0IG9m
CiAgICAgICAgIC8vIHRoZSBwYXVzZSBzaW5jZSB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgZGVidWdn
ZXIgdGFzayB3ZSBzZW5kIHRvIHRoZSB3b3JrZXIuCi0gICAgICAgIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsK
KyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndv
cmtlck9yV29ya2xldFRocmVhZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKICAgICB9
KTsKIH0KIApAQCAtMTM0LDcgKzE0NCw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OnNl
bmRNZXNzYWdlVG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKGNvbnN0IFN0cmluZyYKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJU
YXNrKFttZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQo
bWVzc2FnZSk7CisgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXIoY29udGV4dCkuZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKaW5kZXggNWU4YTFkYzBlZDBkOWFh
NTMyYzM2NzQ2NGM4NjdmYjRmN2Y5YWE1Zi4uYmVmYzAxZDk1NzBhOGM0YThiN2RkZWU4NWVhMTA2
MThhNzdhNDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9y
UHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyVGhyZWFkOworY2xhc3MgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkOwogCiBlbnVtIGNsYXNzIFdvcmtlclRocmVhZFN0YXJ0TW9kZTsKIApA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5nZXQoKTsgfQogCiAgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHdvcmtlclN0YXJ0TW9k
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgdm9pZCB3b3JrZXJTdGFydGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIG5hbWUpOworICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoKTsKIAogICAgIHZvaWQgcmVzdW1lV29ya2Vy
SWZQYXVzZWQoKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0g
ICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisgICAgUmVmUHRyPFdvcmtl
ck9yV29ya2xldFRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAgICAgU3RyaW5nIG1faWRlbnRpZmll
cjsKICAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCmluZGV4IDM3ODA5NjFjNzk0OTg1N2Ex
ZTIwNWY4YzMxMjk2MmMwNzBiZWFmODEuLmEwN2U5Y2FkODlkZmY0MzNlYzc2NDllN2VlNWZmZTU1
OTBiYjA4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRU
aHJlYWQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBUaHJlYWQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgV29ya2VyRGVidWdnZXJQcm94eTsKIGNsYXNzIFdvcmtlckxvYWRlclBy
b3h5OwogY2xhc3MgV29ya2VyUnVuTG9vcDsKIApAQCAtNDMsNiArNDQsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgV1RGOjpUaHJlYWQqIHRocmVhZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSA9IDA7CiAgICAgdmlydHVhbCBXb3JrZXJMb2FkZXJQ
cm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCBXb3JrZXJEZWJ1Z2dl
clByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRl
eCBiM2U3MWM5MmRmMTY3ZTk4MWE2YjUwODllNTFiZGYwODM0NmVjN2ZjLi44N2RkOTk2OWM1ZTkw
NmRlZTcyYzQ0Nzc1YmMyY2U2ZGY1YTFhNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTUwLDE2ICs1MCwxNiBAQCBXb3JrZXJT
Y3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRlZmF1bHQ7CiBPcHRpb25hbDxF
eGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIEZl
dGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5LCBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBhdXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgYXV0byYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgbV91cmwg
PSB1cmw7CiAgICAgbV9kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNj
cmlwdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBib29sIGlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9i
YWxTY29wZSk7CisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGlzPFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogCiAgICAg
aWYgKGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzY3Jp
cHRSZXNvdXJjZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xv
YmFsU2NvcGUpLnNjcmlwdFJlc291cmNlKHVybCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNjcmlw
dFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3JpcHQpOwogICAgICAgICAgICAgbV9yZXNw
b25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVz
cG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKQEAgLTcyLDcgKzcyLDcg
QEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAogICAgIC8vIE9ubHkgdXNl
ZCBmb3IgaW1wb3J0U2NyaXB0cyB0aGF0IHByZXNjcmliZXMgTm9Db3JzIG1vZGUuCiAgICAgQVNT
RVJUKG1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpOwpAQCAtODcsMTAgKzg3LDEw
IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25v
dXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgb3B0aW9ucy5kZXN0aW5hdGlvbiA9IG1f
ZGVzdGluYXRpb247CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG9wdGlvbnMuc2Vy
dmljZVdvcmtlcnNNb2RlID0gaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPyBTZXJ2aWNlV29y
a2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbDsKLSAgICBpZiAoYXV0byog
YWN0aXZlU2VydmljZVdvcmtlciA9IHdvcmtlckdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3Jr
ZXIoKSkKKyAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKICAgICAgICAgb3B0aW9ucy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJl
Z2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgotICAgIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUo
KnJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CisgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgV1RG
TW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIAogICAgIC8vIElmIHRoZSBmZXRjaGlu
ZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBOZXR3b3JrRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9y
dCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGZhaWxlZCgpKQpAQCAtMTAxLDcgKzEwMSw3IEBA
IE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNs
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90
IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0
UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsg
c2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAg
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlw
ZSB9KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMTIxNGI5MTlkYTM0ZDMyZjJmY2FjOWEyOTgx
MmY2ZmQ2YTg3YTEyOC4uOGIyYTY3MmYwMDNjZTE5MjI4OTI2ZWNhMzI1NmQzNThlMmY5MTg0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1
YmxpYzoKICAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGhyZWFk
LmdldCgpOyB9CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1f
cnVuTG9vcDsgfQogICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZp
bmFsIHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJveHk7IH0KLSAgICBXb3JrZXJEZWJ1Z2dlclBy
b3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dl
clByb3h5OyB9CisgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQogICAgIFdvcmtl
clJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1f
d29ya2VyUmVwb3J0aW5nUHJveHk7IH0KIAogICAgIC8vIE51bWJlciBvZiBhY3RpdmUgd29ya2Vy
IHRocmVhZHMuCkBAIC0xMDMsOCArMTAzLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Tm90aWZp
Y2F0aW9uQ2xpZW50KE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KSB7IG1fbm90aWZpY2F0aW9u
Q2xpZW50ID0gY2xpZW50OyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdn
ZXJUYXNrcygpOwotICAgIHZvaWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CisgICAgdm9p
ZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUnVubmlu
Z0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKICAgICAKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBydW50
aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAzYjcx
M2RjM2Y0ZWRjMWJhNzQyZGUzYzllYWQwYjUwMGM2Zjc0MmM2Li5kMjhjMDRlMmUwOGQ0ODUxZWM4
NjRkZGYwYzgxZTg3NDJiMjVmYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgVk07CiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBKU0RPTUds
b2JhbE9iamVjdDsKIAogY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29y
a2xldEdsb2JhbFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKaW5kZXggMzkw
OGJkZjNhMjk2YzgxYjZmNGJhOGU4ZTA4ZTNmYzU4MmVlNWUzYS4uNDg3NWM3YjRkZWQ0NDk3N2I4
NGI0ODE0NTI0YjJhYzM5OTdlM2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJXb3JrbGV0R2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQZW5kaW5n
VGFza3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4K
ICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogCkBAIC00Miw2ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXb3JrbGV0KTsKIAogV29ya2xldDo6V29ya2xldChEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKCJ3b3Jr
bGV0OiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKaW5kZXggNDE2ODY3NGM3M2IyOTkw
OWJhNjI5NjI1NzIxYjM4MDUzZTIyN2JlZS4uZmRiNjYzZDdhMzVhODRmYjc3MGZmMDExZDg2MTJh
ZTRjYzIyYzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7CiAKICAgICBjb25zdCBWZWN0b3I8
UmVmPFdvcmtsZXRHbG9iYWxTY29wZVByb3h5Pj4mIHByb3hpZXMoKSBjb25zdCB7IHJldHVybiBt
X3Byb3hpZXM7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdvcmtsZXQoRG9j
dW1lbnQmKTsKQEAgLTYyLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmpl
Y3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwog
CisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBWZWN0b3I8UmVmPFdvcmtsZXRHbG9iYWxT
Y29wZVByb3h5Pj4gbV9wcm94aWVzOwogICAgIEhhc2hTZXQ8UmVmUHRyPFdvcmtsZXRQZW5kaW5n
VGFza3M+PiBtX3BlbmRpbmdUYXNrc1NldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwZGI1MTk1YmE5ZmU0ZGJiNmU1ZWQwMmI4
NmU2MGNkMmYyYWZlOGExLi4wOGYxMjAyOTkzYWI0ZmQ3ZWQ0ZjljMjcwMDQ1NWQxOTdmYWIxOWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAK
QEAgLTE2MiwyMyArMTYyLDQzIEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRp
b25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0CiAKIHZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlmICghbV9kb2N1bWVudCB8
fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCisgICAgaWYgKCFpc0NvbnRl
eHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVz
c2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkpOwog
ICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2Fn
ZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAg
ICB9CisKKyAgICBpZiAobV9kb2N1bWVudCkKKyAgICAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5z
b3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNz
YWdlKCksIDApKTsKKyAgICBlbHNlCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVj
dXRpb25Gb3JiaWRkZW4oKSkKKyAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7CisgICAgICAg
IHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgfQorCisgICAgaWYg
KG1fZG9jdW1lbnQpCisgICAgICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAg
IGFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgeyB9LCAwLCAwLCBudWxscHRyLCBu
dWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3Rh
Y2s+JiYgY2FsbFN0YWNrLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNp
Z25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQor
ICAgIGlmIChtX2RvY3VtZW50KSB7CisgICAgICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291
cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwg
bWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3Zl
KGNhbGxTdGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKKyAgICBp
ZiAoY2FsbFN0YWNrKQorICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4
dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBl
bHNlCisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMs
IFdURk1vdmUobWVzc2FnZSkpOwogfQogCiBSZWZlcnJlclBvbGljeSBXb3JrbGV0R2xvYmFsU2Nv
cGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKQEAgLTIxNSw4ICsyMzUsOSBAQCB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCkKICAgICBt
X3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKGZldGNoT3B0aW9ucyksIGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMpOwogfQogCi12b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogeworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHRoaXMs
IGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNo
ZWQoKQpAQCAtMjMyLDYgKzI1Myw4IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlG
aW5pc2hlZCgpCiAgICAgVVJMIG1vZHVsZVVSTChtX3NjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwo
KSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2V2YWx1YXRlZE1vZHVsZXMuYWRkKG1vZHVsZVVS
TCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIG1fc2NyaXB0TG9hZGVyLT5pZGVu
dGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CisKICAgICAgICAgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAgc2NyaXB0KCktPmV2YWx1YXRlKFNj
cmlwdFNvdXJjZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBXVEZNb3ZlKG1vZHVsZVVS
TCkpLCBleGNlcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXggM2E0ZjRlNzM3OWNkYmYxMTkxNzJh
ODI2ZTlkM2EwMjg3ZmIyMTNkOC4uOTgzNmNmMGEwMzU4MWJlODI2M2I1NTBkODQyNjMxOTMxM2Zm
ZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCkBAIC0zNCwxMyArMzUsMTUgQEAgc3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJz
IHsKICAgICBVUkwgd2luZG93VVJMOwogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZs
YWdzOwogICAgIGZsb2F0IHNhbXBsZVJhdGU7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0
YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgICAgICBzYW1wbGVSYXRl
CisgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgc3RhcnRNb2RlCiAgICAgICAg
IH07CiAgICAgfQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411990</attachid>
            <date>2020-10-21 08:44:20 -0700</date>
            <delta_ts>2020-10-21 09:03:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201021084419.patch</filename>
            <type>text/plain</type>
            <size>88463</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNTJjMWYzYjhiY2M3
MmM5YjBiODQwNjYzMTZhMGM4NWU1ODgyYi4uMDQxYWE2MGIyY2E3ZWY1ODRkNWQ3OThiMDk4YzVl
NjQ4YTBkMThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMC0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0ODg3NjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBBdWRp
b1dvcmtsZXRzIHVwIHRvIFdlYkluc3BlY3Rvciwgc2ltaWxhcmx5IHRvIFdlYiBXb3JrZXJzLiBU
aGlzIGJhc2ljYWxseSBwb3J0cworICAgICAgICBXZWJJbnNwZWN0b3IgY29kZSB0byB1c2UgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgaW5zdGVhZCBvZiBXb3JrZXJHbG9iYWxTY29wZQorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgc2FtZSBjb2RlIGZvciB3b3JrbGV0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yVGVybWluYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjppbnNwZWN0b3JDb250cm9sbGVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcik6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckRlYnVnZ2VyUHJveHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6c3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVu
dExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdl
bnQ6OlNlcnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFn
ZW50OjpXb3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVMb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpyZXN1bWVXb3Jr
ZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29u
bmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldDo6V29ya2xldCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldC5o
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKwogMjAyMC0xMC0yMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAg
PHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIGZsZXgtYmFzaXMg
bm90IGFuaW1hdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2NjOTIzNGU3MWUyNGZj
ODBjMzlmZTg1ZmVhNmEyMDhlMGM2OTU2MS4uNzUyZTI3YjI4YjJlNzU5YjRiYzg2N2E2YTgyOWQ5
YThlZjBmMTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJKU0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkpTQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNp
bmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTE0OSw2ICsxNTAsOCBAQCB2b2lkIEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yVGVybWluYXRpb24oKQogICAgICAgICBk
ZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7CiAgICAgc3RvcEFjdGl2
ZURPTU9iamVjdHMoKTsKIAorICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS53b3JrZXJUZXJtaW5h
dGluZygpOworCiAgICAgbV9wcm9jZXNzb3JDb25zdHJ1Y3Rvck1hcC5jbGVhcigpOwogCiAgICAg
Ly8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9iamVjdHMgYWxp
dmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBKUyBvYmplY3Rz
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzA2MTNlOTgwNDBhNjAyMDNkYzc3
ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2MjQ1NmY4ZWQ0Mzg2ZDFhNDNmYTJk
OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcsMzYgKzM3LDQzIEBACiAj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldvcmts
ZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmts
ZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRpYyBXb3JrbGV0UGFyYW1l
dGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCwgV29y
a2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAgIGF1dG8qIGRvY3VtZW50
ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1lRmxhZ3MgPSBkb2N1bWVu
dC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CisgICAgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5LndvcmtlclN0YXJ0TW9kZSgqd29y
a2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAgIGRvY3VtZW50LT51cmwo
KSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0
KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmCisgICAgICAg
IHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVS
YXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAgICB9OwogfQogCiBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoQXVkaW9Xb3JrbGV0
JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFrUHRyKHdvcmtsZXQpKQogICAgICwg
bV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAgICwgbV93b3JrbGV0VGhyZWFkKEF1
ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJz
KHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVuaXF1ZTxXb3JrZXJJbnNw
ZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQorICAgICwgbV93b3JrbGV0VGhyZWFk
KEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0
ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsKKyAgICBtX2luc3BlY3Rv
clByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1lbnQoKSwgbV93b3JrbGV0VGhyZWFk
LnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkKIHsKKyAgICBtX2luc3BlY3Rv
clByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93b3JrbGV0VGhyZWFkLT5zdG9wKCk7
CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2b2lkKEF1ZGlvV29ya2wKICAgICB9
KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb0Rl
YnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1l
c3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9pbnNwZWN0b3JQcm94eS0+c2VuZE1l
c3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICB9KTsKK30KKwordm9pZCBB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBvc3RUYXNrVG9Mb2FkZXIoW2Rpc2Fi
bGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5zZXRSZXNvdXJjZUNhY2hp
bmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICB9KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5n
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGViNzUwNGU2NDY4ZDA4YWY1NGUwMjU5
YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEwNTdkNGM3M2U2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlUHJv
eHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRp
b1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFzcyBEb2N1bWVudDsKK2Ns
YXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtlckxvYWRl
clByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDogcHVibGljIFdvcmts
ZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3Jr
ZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIHsKQEAgLTYy
LDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclBy
b3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29s
KSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHI8QXVkaW9Xb3JrbGV0PiBtX3dv
cmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsKICAgICBSZWY8QXVkaW9X
b3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggYTA2
OGRjZDA0NGQwZmEzMjY3MTZlZmUwNzdiYzhjZDNkODQyZjhmZi4uYTFmNDUyMWIyZTBjMjEyYThi
ODI1MjU4YzI5NzhkNTU0MjhiYjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMTMyLDYgKzEzMiwxNCBA
QCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCgpCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9kZSA9PSBXb3JrZXJUaHJlYWRTdGFy
dE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAgc3RhcnRSdW5uaW5nRGVidWdnZXJU
YXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNvbWVob3cgdGVybWluYXRl
ZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgorICAgICAgICBpZiAobV9ydW5M
b29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmZvcmJpZEV4
ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9vcCgpOwogCiAjaWYgVVNFKEdMSUIp
CkBAIC0xNzcsNiArMTg1LDI3IEBAIFdvcmtlckxvYWRlclByb3h5JiBBdWRpb1dvcmtsZXRUaHJl
YWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKIH0K
IAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJEZWJ1Z2dl
clByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKK30KKwordm9p
ZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKQoreworICAg
IEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAgbV9wYXVzZWRGb3JEZWJ1Z2dlciA9
IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKKyAgICBkbyB7Cisg
ICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9kZSgqbV93b3JrbGV0R2xv
YmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
ICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6
c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBtX3BhdXNlZEZvckRlYnVnZ2VyID0g
ZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgwMjI5MmNiMzQzODE0ZDkxMGMyYmVh
N2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgyYTdmMjhmY2NlMGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFk
LmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZv
aWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7
CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKwogICAgIC8vIFdv
cmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwg
eyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRl
clByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNz
YWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1
Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6
CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgY29u
c3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBX
b3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAgICBMb2NrIG1fdGhyZWFkQ3JlYXRp
b25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJvb2wgbV9wYXVzZWRGb3JEZWJ1Z2dl
ciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMzdhNmJmYTk2MGJkNjcx
NDc1ZDgwOWNhOTk4OGQxM2E2Zjg0MzBiYy4uOTE3YzhiZGRkYmQ5MzQwN2JhNjE5MjBmNzBkMDM5
ZjA4MDg2OWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcApAQCAtNDgxLDEwICs0ODEsOCBAQCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSgpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50PigqdGhpcykpCiAgICAgICAgIHJldHVy
biBjb21tb25WTSgpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+
dm0oKTsKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsK
KyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0
KCktPnZtKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBjb21tb25WTSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAwMmFiZTE2NjQxNDJkYmVhOWFiZmZjMDBlYzM3
NTNiZDE0ZTM2MjNmLi40OWRiODcyNjdjNDMwMDhkNmNmNWVlYjZiMmI2YjZiNTljNThjMWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNv
bXB1dGVkRWZmZWN0VGltaW5nLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC02MSw2ICs2
Miw3IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJQYWdlSGVh
cEFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5oIgorI2luY2x1ZGUgIlBhaW50
V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtNzMs
NiArNzUsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KQEAgLTEzMjAsOSArMTMyNCw5
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5k
ZXJMYXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMm
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1l
bnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFs
U2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBy
ZXR1cm4gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1f
aW5zdHJ1bWVudGluZ0FnZW50czsKIH0KIAogSW5zdHJ1bWVudGluZ0FnZW50cyYgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlJiBwYWdlKQpA
QCAtMTMzNSw4ICsxMzM5LDggQEAgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3IKIHsKICAgICBpZiAo
aXM8RG9jdW1lbnQ+KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSk7Ci0gICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4
dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNWFkNzllMGQxNmE5NTMy
YjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZS4uZjA3ZTJmNWM4YmQyNDQwZGMzMmVhOGQ3MGRmZjEy
OTgyN2UyODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBTaGFkb3dSb290Owog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRG
bG93OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKQEAgLTIw
MSwxMSArMjAxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBS
ZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtl
ckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3Jr
ZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyR2xvYmFs
U2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCiAgICAgLy8gU29tZSBuZXR3b3JrIHJlcXVlc3RzIGRvIG5vdCBnbyB0aHJv
dWdoIHRoZSBub3JtYWwgbmV0d29yayBsb2FkaW5nIHBhdGguCiAgICAgLy8gVGhlc2UgbmV0d29y
ayByZXF1ZXN0cyBoYXZlIHRvIGlzc3VlIHRoZWlyIG93biB3aWxsU2VuZFJlcXVlc3QgLyBkaWRS
ZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5pc2hMb2FkaW5nIC8gZGlkRmFpbExvYWRpbmcKQEAgLTI0
MywyMCArMjQzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2Nv
cGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOworICAgIHN0
YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgc3Rh
dGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFdvcmtlckdsb2Jh
bFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAg
IHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMgdm9p
ZCBjb25zb2xlQ291bnRSZXNldChQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlckds
b2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwor
ICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCiAgICAg
c3RhdGljIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBzdGFydENv
bnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb25zb2xlVGltaW5nKFdv
cmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CisgICAgc3RhdGljIHZvaWQg
bG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lk
IHN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGlt
aW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3RhbXAoRnJh
bWUmLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lk
IHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQYWdlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYpOwogCiAgICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKLSAgICBzdGF0
aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFtZSYpOwogICAgIHN0YXRp
YyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoY29uc3Qg
RnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQmKTsK
ICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRv
Y3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSopOwogfTsKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFw
cGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1MCwxMCArMTA1MCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2ln
bmVkIGxvbgogICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JX
b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICB3aWxsU2VuZFJlcXVlc3RJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UgeyB9KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsU2VuZFJlcXVlc3RPZlR5cGUoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgTG9hZFR5cGUgbG9hZFR5cGUpCkBAIC0xMDc1LDkgKzEwNzUsOSBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1l
JiBmcmFtZSwgdQogICAgICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIHJlc291cmNlTG9h
ZGVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5z
dHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwg
aWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOworICAgIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxs
cHRyLCByZXNwb25zZSwgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXImIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQpAQCAtMTA5NCwxMCArMTA5NCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9u
ZwogICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwg
ZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5n
dGgpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCkBAIC0xMTA3LDEwICsxMTA3LDEw
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGlu
ZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hCiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIG5ldHdvcmtMb2FkTWV0
cmljcywgcmVzb3VyY2VMb2FkZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2Jh
bFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVu
dGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIpOworICAgIGRpZEZp
bmlzaExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIs
IG5ldHdvcmtMb2FkTWV0cmljcywgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQpAQCAtMTExOSw5ICsxMTE5LDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGUK
ICAgICAgICAgZGlkRmFpbExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBsb2FkZXIsIGVycm9yKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGYWlsTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgZXJyb3IpOworICAg
IGRpZEZhaWxMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxs
cHRyLCBlcnJvcik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUmIGZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMTU3MSw5ICsxNTcxLDkgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6
dW5pcXUKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
UGFnZShwYWdlKSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPiBtZXNzYWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
IG1lc3NhZ2UpCiB7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNz
YWdlKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwg
V1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU4MSw5ICsxNTgxLDkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpK
U0dsb2JhbE9iamUKICAgICBjb25zb2xlQ291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpLCBzdGF0ZSwgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBjb25zb2xl
Q291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJH
bG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CisgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU5MSw5ICsxNTkxLDkg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNl
dChQYWdlJiBwYWdlLCBKU0M6OkpTR2xvYmEKICAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHN0YXRlLCBsYWJlbCk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUNvdW50UmVzZXQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3Qg
U3RyaW5nJiBsYWJlbCkKIHsKLSAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgc3RhdGUsIGxh
YmVsKTsKKyAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgc3Rh
dGUsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0
YWtlSGVhcFNuYXBzaG90KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTE2
MDksOSArMTYwOSw5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3Rh
cnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsCiAgICAgICAgIHN0YXJ0Q29u
c29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xl
VGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJn
dW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE2MjAsOSArMTYyMCw5IEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpT
Qzo6SlNHbG9iCiAgICAgICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50
cykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWlu
ZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNw
ZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgbG9nQ29uc29sZVRp
bWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckds
b2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgbG9nQ29u
c29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUo
YXJndW1lbnRzKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RvcENvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTYzMSw5ICsxNjMxLDkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUs
IEpTQzo6SlNHbG8KICAgICAgICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBmcmFtZSwgZXhlYywgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBs
YWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVU
aW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewot
ICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgc3RvcENvbnNv
bGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKEZyYW1l
JiBmcmFtZSwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAg
LTE3NTYsOSArMTc1Niw5IEBAIGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlCiAgICAgcmV0dXJuIHBh
Z2UgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoKnBhZ2UpIDogbnVsbHB0cjsKIH0KIAot
aW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSkKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gJmluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSgqd29ya2VyR2xvYmFsU2NvcGUpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCp3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkgOiBudWxscHRyOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyb250ZW5kQ3JlYXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgKaW5kZXggNzA0NDY0NGJmZjk1MjBlYWFlODZlZmQ0YjJhZTM5
MTkyM2ZjN2VmNC4uMWJiZjk0ZWZhNTIxMWFkMjE2YjRhMDBmZjY2YTkzMDc2NmE3MGJjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7CiBjbGFzcyBQYWdlOwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogLy8gRklYTUU6IG1vdmUgdGhpcyB0byBJbnNw
ZWN0b3IgbmFtZXNwYWNlIHdoZW4gcmVtYWluaW5nIGFnZW50cyBtb3ZlLgogc3RydWN0IFdlYkFn
ZW50Q29udGV4dCA6IHB1YmxpYyBJbnNwZWN0b3I6OkFnZW50Q29udGV4dCB7CkBAIC01NywxMyAr
NTcsMTMgQEAgc3RydWN0IFBhZ2VBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0
IHsKIH07CiAKIHN0cnVjdCBXb3JrZXJBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250
ZXh0IHsKLSAgICBXb3JrZXJBZ2VudENvbnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisgICAgV29ya2VyQWdlbnRDb250
ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogICAgICAgICA6IFdlYkFnZW50Q29udGV4dChj
b250ZXh0KQotICAgICAgICAsIHdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQor
ICAgICAgICAsIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKQogICAgIHsKICAgICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlOwogfTsKIAogY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXIuY3BwCmluZGV4IDgwYzlhMTA1YzU0YTNlNTM3MGFjY2Q2YzEyZmYwNmYy
YjM0MzVkYTIuLjIyNzMxYTdlMjFjNWM0N2ZlYjIyZDkyNTgyZGM4OThjNjE1MmRiN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcApAQCAtMzQsMTYgKzM0
LDE3IEBACiAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1
ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKLVdvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihXb3Jr
ZXJHbG9iYWxTY29wZSYgY29udGV4dCkKK1dvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICA6IERlYnVnZ2VyKGNvbnRl
eHQuc2NyaXB0KCktPnZtKCkpCiAgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpCiB7
CkBAIC02MCw4ICs2MSw4IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGJv
b2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKICAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dl
cihpc0JlaW5nRGVzdHJveWVkKTsKIAotICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlw
dCgpKQotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5kZXRhY2hEZWJ1Z2dl
cih0aGlzKTsKKyAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IG1fd29ya2VyR2xvYmFs
U2NvcGUuc2NyaXB0KCkpCisgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmRldGFjaERlYnVnZ2Vy
KHRoaXMpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoKTsKIH0KQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlcjo6
cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQogCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBy
ZXN1bHQ7CiAgICAgZG8gewotICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnRo
cmVhZCgpLnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICAgICAgcmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKS0+cnVuTG9vcCgpLnJ1bkluRGVidWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5oCmluZGV4IDFjNDU2OTk5YWVmNjJiNTQ0NmFmOTdkNjU0NjRmOGM1NmM5
ZTFhZDMuLjE0MDk0YTM2NTdjZTc1MGZkOGJhYmVlNjNkYjRmY2RhY2FmZTgxMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCkBAIC0zNSwxMyArMzUsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNz
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3JrZXJEZWJ1Z2dlciBmaW5h
bCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJEZWJ1Z2dlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBXb3JrZXJEZWJ1Z2dlcihX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlcigpIG92ZXJy
aWRlID0gZGVmYXVsdDsKIAogCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOwogICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCi0g
ICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOTBlOTg1NDRiNTNhNTAyZWI5OGE1ZDhjMjI1
YjcwMzNiMzlhMDY3Zi4uZmVhM2QwY2I0YjIxOWM5MjJlMjJhNmY4ZTY0N2EzMWUxZjgwNzE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVB
Z2VudC5oIgogI2luY2x1ZGUgIldvcmtlckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJX
b3JrZXJEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJXb3JrZXJOZXR3b3JrQWdlbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5o
IgpAQCAtNTcsMTYgKzU3LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKK1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2Vu
dHM6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5p
cXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9z
dDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3Jl
YXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0
Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKLSAgICAsIG1fZGVidWdnZXIod29ya2VyR2xvYmFsU2Nv
cGUpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorICAgICwg
bV9kZWJ1Z2dlcih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNT
RVJUKHdvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQod29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogCiAgICAgYXV0byB3
b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBA
QCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAg
bV9leGVjdXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gt
PnN0YXJ0KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2Fy
ZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVj
dEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBXb3JrZXJBZ2VudENv
bnRleHQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KCkKIAog
ICAgIFdvcmtlckFnZW50Q29udGV4dCB3b3JrZXJDb250ZXh0ID0gewogICAgICAgICB3ZWJDb250
ZXh0LAotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLAorICAgICAgICBtX3dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLAogICAgIH07CiAKICAgICByZXR1cm4gd29ya2VyQ29udGV4dDsKQEAg
LTE2OCw3ICsxNjgsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMoKQogICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVB
Z2VudD4od29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7
CisgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkpIHsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2Vydmlj
ZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KQEAg
LTE5OSw3ICsxOTksNyBAQCBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6ZXZhbHVhdGVIYW5kbGVyKCkgY29uc3QKIAogVk0mIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OnZtKCkKIHsKLSAgICByZXR1cm4gbV93b3JrZXJHbG9iYWxTY29wZS52bSgp
OworICAgIHJldHVybiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnZtKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDdhNTNkODA0YmZiY2UwZjYyZTExNTNj
NTEzYjE3OGQ3NDIzODNlZGUuLjlmZDBiOWMzNTQ0ZWFiNjkzOTBkMmVkNGNlOWRiZjA5NzVkMDE0
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtNDEsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
cjsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0OwogCiBjbGFzcyBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1l
bnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7
CiAgICAgfldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
d29ya2VyVGVybWluYXRpbmcoKTsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFdvcmtlckRlYnVnZ2Vy
IG1fZGVidWdnZXI7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAg
IFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9mb3J3YXJkaW5nQ2hhbm5l
bDsKICAgICBib29sIG1fZGlkQ3JlYXRlTGF6eUFnZW50cyB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bC5oCmluZGV4IGMwMjYyMTEzNWM1NWViZDcwNmUwNDM1MWI1YzEzZjYxM2JlYTY1MzQuLmQyNjMw
ZDUxY2ZkNGQ3MWNlNTgxYTlmNjQ5NWEzMTYyZjZkODMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgKQEAgLTI2
LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94
eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KIApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJUb1BhZ2VGcm9udGVuZENo
YW5uZWwgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisg
ICAgZXhwbGljaXQgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICAgICAgOiBtX3dvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKQogICAgIHsKICAgICB9CkBAIC00NiwxMCArNDYsMTAgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkud29ya2VyRGVidWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdl
KTsKKyAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+
d29ya2VyRGVidWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKICAg
ICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCmluZGV4IGJiZTJj
YzAzZDY0NWZjMTI5MDg0ZGJlZTlkZDgwNDIyYmJkNjNmZDguLmVmZmQyYmVlMGEwYTcwOWJkOWFk
N2EzMTIzMzI0ZDA3MjEyYWIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtMzgs
MTAgKzM4LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFNlcnZpY2VXb3JrZXJB
Z2VudDo6U2VydmljZVdvcmtlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2VydmljZVdvcmtlciJfcywgY29udGV4dCkKLSAgICAs
IG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNw
ZWN0b3I6OlNlcnZpY2VXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJB
Z2VudDo6flNlcnZpY2VXb3JrZXJBZ2VudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5j
cHAKaW5kZXggZjY0ZDU3NTMwYjdiNjE3MGVhYWRlOTIzZTQwOWI1YmRkZWE3MmU0MC4uM2I1ZTU0
ZTQxNWZjMmFlODZkMzNhMjdlY2I5ZGVlNTk2ZjdjMTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5j
cHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXb3JrZXJBdWRpdEFnZW50LmgiCiAKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVj
dGVkU2NyaXB0TWFuYWdlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KQEAgLTQxLDkgKzQxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2Vy
QXVkaXRBZ2VudDo6V29ya2VyQXVkaXRBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBdWRpdEFnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2Jh
bFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAg
QVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAg
IEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVh
ZCgpKTsKIH0KIAogV29ya2VyQXVkaXRBZ2VudDo6fldvcmtlckF1ZGl0QWdlbnQoKSA9IGRlZmF1
bHQ7CkBAIC01NSw3ICs1NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9iYWxT
Y29wZSkpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlw
dEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJl
Y2IwZWViOGVkZDczMzllYzA0NTliZDM3MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4
MzhmZjhmY2YyZWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXb3JrZXJBdWRpdEFnZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
RXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2
ODdmMDQzZWQ1NjdlM2I4ZjRiMTU4MDc2OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFm
YmU2NjhhMWJjZGQ3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3Jr
ZXJDb25zb2xlQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29u
c29sZUFnZW50KGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2Nv
cGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50
Ojp+V29ya2VyQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCAzYWUzNWM2N2EzMDM0MWQ3ZWUxMmY2Y2M1Njg4ZGUxZWM3OGM2M2UwLi4zNTU4
Y2IzNGY5NzNlZDYyYzg2OTEyM2I2NTc1M2NjZjM1MzNjNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdl
bnQuaCIKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTQxLDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtl
ckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkK
LSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAg
ICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29y
a2VyRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50
OjpicmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNj
cmlwdENhbGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9n
LCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsK
IH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpA
QCAtNjAsNyArNjAsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUp
KTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Io
Z2xvYmFsT2JqZWN0KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IDdjYTY0ZTQwMTNh
NTRiNDE4ZDUzZTQ3NDgwMmU3MzJiZjE5MDhjOTcuLjk5NDdmNzE1NDU2MTRhZDkzZmY3ZWZlMjVm
MmUwNTg0ODI3ODVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAotICAg
IFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNWRjZTgy
NmY0YjEwZTBjZDQ4NWM4NTlhYTM3MjkzMmJlZTY0YjVhOS4uMTQxMGEyNzg5NDBmZGMxY2ZhNWIz
NjAyYWJjYzU3NjQzN2Y3YjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC0zNiw5
ICszNiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlck5ldHdvcmtBZ2Vu
dDo6V29ya2VyTmV0d29ya0FnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3Rvck5ldHdvcmtBZ2VudChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29w
ZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VS
VChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NF
UlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7
CiB9CiAKIFdvcmtlck5ldHdvcmtBZ2VudDo6fldvcmtlck5ldHdvcmtBZ2VudCgpID0gZGVmYXVs
dDsKQEAgLTYxLDEyICs2MSwxMiBAQCBWZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0Fn
ZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQogCiB2b2lkIFdvcmtlck5l
dHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRlcm5hbChib29sIGRpc2Fi
bGVkKQogewotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyRGVidWdnZXJQ
cm94eSgpLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQp
OworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFk
KCktPndvcmtlckRlYnVnZ2VyUHJveHkoKS5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2Vi
SW5zcGVjdG9yKGRpc2FibGVkKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV29ya2Vy
TmV0d29ya0FnZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KFByb3RvY29sOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJikKIHsKLSAgICByZXR1cm4gJm1f
d29ya2VyR2xvYmFsU2NvcGU7CisgICAgcmV0dXJuICZtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCmlu
ZGV4IGRkODdkODEwMjAyZTViMTdkZTljZjA3Yjc2MmI1MjVlZWUyZTNiZTguLmQ3YmViZDBkZWEx
MGFmYjAxMmI0NmFjYzQ5Njc1YTI5YTllZDRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCkBA
IC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKTsKICAgICBib29sIHNo
b3VsZEZvcmNlQnVmZmVyaW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAg
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
aW5kZXggYWE1OGExZjBkN2E4MWIwMDY4MWY2NjhhOWZjNGE3MjU4NmIxM2RjZC4uOGU4NGRhMDAz
MTlhYThhZjIzNDQ0OWNjMjc4MDZhNzFjMjUxYTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oPgogCkBAIC00NCw5ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChXb3Jr
ZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29u
dGV4dCkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX3dvcmtl
ckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7
Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkp
OworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4
dFRocmVhZCgpKTsKIH0KIAogV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVudGltZUFnZW50
KCkgPSBkZWZhdWx0OwpAQCAtNTgsNyArNTgsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50
aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3Jr
ZXJHbG9iYWxTY29wZSkpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4
IDZiOTk4ZjRkMTczMTg1MWY5OWI2N2VlMTVhNWQyMDAxNTg3ZjRkMDYuLmJjY2MyYjdkMDcxNWEz
NGU3YzQ3NzIzMjZkMjQxZGE5NmM3YmUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC0z
Niw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFs
U2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2Vy
UnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFn
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJSdW50aW1lQWdlbnQpOwpAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpIHsgfQogCiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOwotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwor
ICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDI3MTdjODYxYzc0YjBmMmFlYmNkZTQwODcwMGUy
YTlhMDM3Mzc1OTUuLjE4ZmYzZjk0ZjA0MmQxYTFmZDAzYTUxYmMxMWQ1YmQxNDZmMzNiNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKIHsK
LSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpIHx8IChpczxXb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4
dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkpKQorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpKQogICAgICAgICByZXR1cm4gV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJj4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZlcnJlcikpOwogCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKQEAgLTExOCw4ICsxMTgsOCBAQCBSZWZQdHI8
VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byByZXNvdXJjZVVSTCA9IHJl
cXVlc3QudXJsKCk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAg
ICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNs
aWVudCwgb3B0aW9ucyk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KSkKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCks
IFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMp
OwogICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggZTExMzk2YmZkODMzNmUzZTg2NzRhNDljYjVjODE4NGJmMTU4MGE3ZS4uZWY0OTQ5MjI1
YjI4YjUwZjM4NjZjMGY3ZDM2NmUwYjc5MjY2Y2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVn
aXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGdsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwg
bV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoZ2xvYmFsU2NvcGUsIG1fd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIHJlcXVlc3QpOwogCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0
IGJlaW5nIGFuIHItdmFsdWUgdG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVk
IGNvcHk/CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0
ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkp
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0y
MjYsOCArMjI1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgICAgICBBU1NFUlQoY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmZyb21Dcm9z
c1RocmVhZERhdGEoV1RGTW92ZShyZXNwb25zZURhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNl
KTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgcmVzcG9uc2UpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApAQCAtMjM4LDggKzIzNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtl
ckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0y
NDksOCArMjQ2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWQKICAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtM
b2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBpZGVudGlm
aWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xl
dEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5k
aWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yNjEsOCArMjU3
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm8KICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKGNvbnRleHQsIGVycm9yLCBwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5pbml0aWF0b3IoKSk7CiAgICAgICAgIHByb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBpZiAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0s
IG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCA2N2Y0YjJiNThh
YjVhZGVmZjZmY2QxY2Q5NTlkNGI2M2I5ZmY1OTVkLi5iYmU4MTY0OTFlOWZmMjM1MTc4OTI4NDhh
N2U2MWQ3OTcyMzJlNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgYm9vbCB3YXNUZXJtaW5hdGVk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNUZXJtaW5hdGVkOyB9CiAKLSAgICBTdHJpbmcgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0
cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCA3YjQyOTMwMGFm
ZmNiMDUxODlkNDgxNjA1OWY0MDVkNjY4NmM0ZjUxLi4wOWUyMDc2YmY3YWJhMDFhNjc5YjU4YTI4
YTg4OGY5OTUwNGU0NjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
c29sZUNsaWVudC5jcHAKQEAgLTUzLDM3ICs1MywyNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bAogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPiht
X2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xl
Q291bnQoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBs
YWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQobV9nbG9i
YWxTY29wZSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNv
dW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkK
IHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KLSAg
ICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQobV9nbG9iYWxTY29wZSwgZXhlYywgbGFi
ZWwpOwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpKU0dsb2JhbE9i
amVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0
YXJ0Q29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29u
c29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2Vy
Q29uc29sZUNsaWVudDo6dGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KLSAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcobV9nbG9iYWxTY29wZSwg
ZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29s
ZUNsaWVudDo6dGltZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNj
b3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBl
eGVjLCBsYWJlbCk7CiB9CiAKIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUzNDk5
PiBXZWIgSW5zcGVjdG9yOiBjb25zb2xlLnByb2ZpbGUgc2hvdWxkIHVzZSB0aGUgbmV3IFNhbXBs
aW5nIFByb2ZpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCmluZGV4IDI0MGVjOTMwNDIxOGU2N2VkNTc1NzZkMjI5YWE4NWE2YzQyYmMzYWEuLmI3MWU2
MzE1MTYzYjZiMTFmZDBmZjU3YzZiZjU3NWQ1YjRhM2E1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Niw3ICs2Niw2IEBAIFdvcmtlckds
b2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJh
bXMsIFJlZjxTZWN1cml0CiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1zLmlkZW50aWZpZXIpCiAg
ICAgLCBtX3VzZXJBZ2VudChwYXJhbXMudXNlckFnZW50KQogICAgICwgbV90aHJlYWQodGhyZWFk
KQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9pc09ubGluZShwYXJhbXMuaXNPbmxpbmUpCiAg
ICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShwYXJhbXMu
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV90b3BP
cmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pKQpAQCAtMTM3LDcgKzEzNiw3IEBAIHZvaWQgV29ya2Vy
R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JUZXJtaW5hdGlvbigpCiAgICAgaWYgKG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbikKICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhclBl
bmRpbmdSZXF1ZXN0cygpOwogCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT53b3JrZXJUZXJt
aW5hdGluZygpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS53b3JrZXJUZXJtaW5hdGluZygp
OwogCiAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9i
amVjdHMgYWxpdmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBK
UyBvYmplY3RzLAogICAgIC8vIHdoaWNoIGJlY29tZSBkYW5nbGluZyBvbmNlIEhlYXAgaXMgZGVz
dHJveWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4
IGU0OGNmYjg1ZTFiZTA1YzlmYmU4YjViMTIwYmM3ZmI3OTgwNGU3MjkuLjdmOGVmMjQ4NmRlOGI0
ZWFmNGVlMDI2M2RhODJmY2MwYzc3ZDk4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmgKQEAgLTUwLDcgKzUwLDYgQEAgY2xhc3MgRXZlbnRMb29wVGFza0dy
b3VwOwogY2xhc3MgUGVyZm9ybWFuY2U7CiBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CiBjbGFzcyBX
b3JrZXJFdmVudExvb3A7Ci1jbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3Mg
V29ya2VyTG9jYXRpb247CiBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CiBjbGFzcyBXb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb247CkBAIC04Niw4ICs4NSw2IEBAIHB1YmxpYzoKICAgICBXb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24mIHN3Q2xpZW50Q29ubmVjdGlvbigpOwogI2VuZGlmCiAKLSAgICBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gKm1faW5zcGVjdG9yQ29udHJvbGxlcjsgfQotCiAgICAgV29ya2VyVGhyZWFkJiB0aHJlYWQo
KSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQogCiAgICAgdXNpbmcgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5OwpAQCAtMTkzLDcgKzE5MCw2IEBAIHByaXZhdGU6
CiAKICAgICBXb3JrZXJUaHJlYWQmIG1fdGhyZWFkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogCiAg
ICAgYm9vbCBtX2Nsb3NpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc09ubGluZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggNjMy
YjgyZTI4YjcyZGE2MTM3MWMyNGViZmJhZjJkZDU1OTEwZDA3MS4uOTNkNjhhM2M0NzE1YTdjODNl
ZjNiZjY0YzQ5NGU3NzhmMWY5ODcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvclByb3h5LmgiCiAKKyNpbmNsdWRlICJB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJS
dW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKQEAgLTM5LDYgKzQwLDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCitzdGF0aWMgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciYgaW5z
cGVjdG9yQ29udHJvbGxlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisgICAgaWYgKGlzPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEF1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKTsK
K30KKwogSGFzaFNldDxXb3JrZXJJbnNwZWN0b3JQcm94eSo+JiBXb3JrZXJJbnNwZWN0b3JQcm94
eTo6YWxsV29ya2VySW5zcGVjdG9yUHJveGllcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8V29ya2VySW5zcGVjdG9yUHJveHkqPj4gcHJveGllczsKQEAgLTYyLDcgKzcy
LDcgQEAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJT
dGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICByZXR1cm4gcGF1c2VPblN0YXJ0ID8g
V29ya2VyVGhyZWFkU3RhcnRNb2RlOjpXYWl0Rm9ySW5zcGVjdG9yIDogV29ya2VyVGhyZWFkU3Rh
cnRNb2RlOjpOb3JtYWw7CiB9CiAKLXZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0
YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV29y
a2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2
b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdvcmtlck9yV29ya2xldFRocmVhZCogdGhy
ZWFkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCgh
bV93b3JrZXJUaHJlYWQpOwogCkBAIC05Myw3ICsxMDMsNyBAQCB2b2lkIFdvcmtlckluc3BlY3Rv
clByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKCkKIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OnJl
c3VtZVdvcmtlcklmUGF1c2VkKCkKIHsKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAg
ICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLnN0b3BS
dW5uaW5nRGVidWdnZXJUYXNrcygpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnN0b3BSdW5uaW5n
RGVidWdnZXJUYXNrcygpOwogICAgIH0pOwogfQogCkBAIC0xMDYsNyArMTE2LDcgQEAgdm9pZCBX
b3JrZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihQ
YWdlQ2hhbm5lbCYgY2hhbm4KICAgICBtX3BhZ2VDaGFubmVsID0gJmNoYW5uZWw7CiAKICAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKKyAg
ICAgICAgaW5zcGVjdG9yQ29udHJvbGxlcihjb250ZXh0KS5jb25uZWN0RnJvbnRlbmQoKTsKICAg
ICB9KTsKIH0KIApAQCAtMTE5LDExICsxMjksMTEgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94
eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBtX3BhZ2VD
aGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERl
YnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95
ZWQpOworICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyKGNvbnRleHQpLmRpc2Nvbm5lY3RGcm9u
dGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogCiAgICAgICAgIC8v
IEluIGNhc2UgdGhlIHdvcmtlciBpcyBwYXVzZWQgcnVubmluZyBkZWJ1Z2dlciB0YXNrcywgZW5z
dXJlIHdlIGJyZWFrIG91dCBvZgogICAgICAgICAvLyB0aGUgcGF1c2Ugc2luY2UgdGhpcyB3aWxs
IGJlIHRoZSBsYXN0IGRlYnVnZ2VyIHRhc2sgd2Ugc2VuZCB0byB0aGUgd29ya2VyLgotICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5p
bmdEZWJ1Z2dlclRhc2tzKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1
Z2dlclRhc2tzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEzNCw3ICsxNDQsNyBAQCB2b2lkIFdvcmtl
ckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihj
b25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdERlYnVnZ2VyVGFzayhbbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hN
ZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVy
KGNvbnRleHQpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCmlu
ZGV4IDVlOGExZGMwZWQwZDlhYTUzMmMzNjc0NjRjODY3ZmI0ZjdmOWFhNWYuLmJlZmMwMWQ5NTcw
YThjNGE4YjdkZGVlODVlYTEwNjE4YTc3YTQ0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdvcmtlclRo
cmVhZDsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZDsKIAogZW51bSBjbGFzcyBXb3JrZXJU
aHJlYWRTdGFydE1vZGU7CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7IH0KIAogICAgIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSB3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAgIHZvaWQg
d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyVGhyZWFkKiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHdvcmtlclN0YXJ0ZWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck9yV29ya2xldFRocmVhZCosIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKCk7CiAKICAg
ICB2b2lkIHJlc3VtZVdvcmtlcklmUGF1c2VkKCk7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotICAgIFJlZlB0cjxXb3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFk
OworICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOwogICAg
IFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX25hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmluZGV4IGQ1YThkNTk4NThhOWYyZTcxNmI3NjE2MDgzY2VkZDAzZWUwYzliNzQu
LjZlNTYwYzEzOWYzMjVkZjI2NTA0Mzg4NGNhNDIwMjdmY2FmYjVmZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBA
IC0yNiwyMCArMjYsMjUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIgogCisjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoKQogICAgIDogbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJv
bGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKIHsKIH0K
IAogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFJlZjxKU0M6OlZNPiYmIHZtKQogICAgIDogbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyPihXVEZNb3ZlKHZtKSwgdGhpcykpCisgICAgLCBtX2luc3Bl
Y3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhp
cykpCiB7CiB9CiAKK1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CisKIHZvaWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU6OmNsZWFyU2NyaXB0KCkKIHsKICAgICBtX3NjcmlwdCA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
ZTc5ZWJjZjljNWVlMjU5OTZlYmRjYWZhZjAzZGVjNmVjNTFmYjJiYi4uODQ2OGJiZmMyOWVjMTg1
MDY5NWY4MTg0MmIwNzM0MjI1ODFkYjdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjksMTIgKzI5LDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsK
IGNsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJPcldv
cmtsZXRUaHJlYWQ7CiAKIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogcHVibGljOgotICAgIHZpcnR1YWwgfldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zaW5nKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmtsZXRU
aHJlYWQoKSBjb25zdCA9IDA7CkBAIC00Miw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3JpcHQoKTsKIAorICAgIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNw
ZWN0b3JDb250cm9sbGVyOyB9CisKICAgICB1bnNpZ25lZCBsb25nIGNyZWF0ZVVuaXF1ZUlkZW50
aWZpZXIoKSB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXIrKzsgfQogCiBwcm90ZWN0ZWQ6CkBA
IC01MCw2ICs1Myw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxl
cjsKICAgICB1bnNpZ25lZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCmluZGV4IDM3
ODA5NjFjNzk0OTg1N2ExZTIwNWY4YzMxMjk2MmMwNzBiZWFmODEuLmEwN2U5Y2FkODlkZmY0MzNl
Yzc2NDllN2VlNWZmZTU1OTBiYjA4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBUaHJlYWQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VyRGVidWdnZXJQcm94eTsKIGNsYXNz
IFdvcmtlckxvYWRlclByb3h5OwogY2xhc3MgV29ya2VyUnVuTG9vcDsKIApAQCAtNDMsNiArNDQs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV1RGOjpUaHJlYWQqIHRocmVhZCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSA9IDA7CiAgICAgdmlydHVh
bCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSA9IDA7CisgICAgdmlydHVh
bCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcAppbmRleCBiM2U3MWM5MmRmMTY3ZTk4MWE2YjUwODllNTFiZGYwODM0NmVjN2Zj
Li44N2RkOTk2OWM1ZTkwNmRlZTcyYzQ0Nzc1YmMyY2U2ZGY1YTFhNWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTUwLDE2ICs1
MCwxNiBAQCBXb3JrZXJTY3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRlZmF1
bHQ7CiBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9u
b3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgVVJMJiB1cmwsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OkNhY2hl
IGNhY2hlUG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBjb250ZW50U2Vj
dXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBhdXRvJiB3b3Jr
ZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgYXV0byYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBkb3du
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogCiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNjcmlwdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBi
b29sIGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPih3b3JrZXJHbG9iYWxTY29wZSk7CisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSA9IGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpOwogCiAgICAgaWYgKGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlwdFJlc291cmNlKHVybCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgewog
ICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3JpcHQpOwogICAg
ICAgICAgICAgbV9yZXNwb25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAg
ICAgICAgICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsK
QEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBpZiAoIXJlcXVl
c3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAog
ICAgIC8vIE9ubHkgdXNlZCBmb3IgaW1wb3J0U2NyaXB0cyB0aGF0IHByZXNjcmliZXMgTm9Db3Jz
IG1vZGUuCiAgICAgQVNTRVJUKG1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpOwpA
QCAtODcsMTAgKzg3LDEwIEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgb3B0aW9ucy5k
ZXN0aW5hdGlvbiA9IG1fZGVzdGluYXRpb247CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbDsK
LSAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IHdvcmtlckdsb2JhbFNjb3BlLmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKSkKKyAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKICAgICAg
ICAgb3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNl
cnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgotICAgIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFs
U2NvcGUsIFdURk1vdmUoKnJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CisgICAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIAogICAgIC8v
IElmIHRoZSBmZXRjaGluZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBOZXR3b3JrRXJyb3IgZXhj
ZXB0aW9uIGFuZCBhYm9ydCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGZhaWxlZCgpKQpAQCAt
MTAxLDcgKzEwMSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjps
b2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1F
VHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJt
aW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAK
LSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxT
Y29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlw
ZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1f
cmVzcG9uc2VNSU1FVHlwZSB9KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMTIxNGI5MTlkYTM0
ZDMyZjJmY2FjOWEyOTgxMmY2ZmQ2YTg3YTEyOC4uOGIyYTY3MmYwMDNjZTE5MjI4OTI2ZWNhMzI1
NmQzNThlMmY5MTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZp
bmFsIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQogICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJM
b2FkZXJQcm94eSgpIGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJveHk7IH0KLSAgICBX
b3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgeyByZXR1cm4g
bV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CisgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2Vy
RGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94
eTsgfQogICAgIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIG1fd29ya2VyUmVwb3J0aW5nUHJveHk7IH0KIAogICAgIC8vIE51bWJlciBv
ZiBhY3RpdmUgd29ya2VyIHRocmVhZHMuCkBAIC0xMDMsOCArMTAzLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2xpZW50KE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KSB7
IG1fbm90aWZpY2F0aW9uQ2xpZW50ID0gY2xpZW50OyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc3Rh
cnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOwotICAgIHZvaWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRh
c2tzKCk7CisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7CisgICAg
dm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKICAgICAKICAgICBKU0M6OlJ1
bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaAppbmRleCAzYjcxM2RjM2Y0ZWRjMWJhNzQyZGUzYzllYWQwYjUwMGM2Zjc0MmM2Li5kMjhj
MDRlMmUwOGQ0ODUxZWM4NjRkZGYwYzgxZTg3NDJiMjVmYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM4LDYgKzM4LDcg
QEAgY2xhc3MgVk07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKIAogY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dC5jcHAKaW5kZXggMzkwOGJkZjNhMjk2YzgxYjZmNGJhOGU4ZTA4ZTNmYzU4MmVlNWUzYS4uNDg3
NWM3YjRkZWQ0NDk3N2I4NGI0ODE0NTI0YjJhYzM5OTdlM2M2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtsZXRQZW5kaW5nVGFza3MuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlm
aWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00Miw2ICs0Myw3IEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0KTsKIAogV29ya2xldDo6V29ya2xldChEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9p
ZGVudGlmaWVyKCJ3b3JrbGV0OiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKaW5kZXgg
NDE2ODY3NGM3M2IyOTkwOWJhNjI5NjI1NzIxYjM4MDUzZTIyN2JlZS4uZmRiNjYzZDdhMzVhODRm
Yjc3MGZmMDExZDg2MTJhZTRjYzIyYzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApA
QCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7CiAKICAg
ICBjb25zdCBWZWN0b3I8UmVmPFdvcmtsZXRHbG9iYWxTY29wZVByb3h5Pj4mIHByb3hpZXMoKSBj
b25zdCB7IHJldHVybiBtX3Byb3hpZXM7IH0KKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IFdvcmtsZXQoRG9jdW1lbnQmKTsKQEAgLTYyLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBBY3RpdmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0IGZpbmFsOwogCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBWZWN0b3I8UmVm
PFdvcmtsZXRHbG9iYWxTY29wZVByb3h5Pj4gbV9wcm94aWVzOwogICAgIEhhc2hTZXQ8UmVmUHRy
PFdvcmtsZXRQZW5kaW5nVGFza3M+PiBtX3BlbmRpbmdUYXNrc1NldDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwZGI1MTk1YmE5
ZmU0ZGJiNmU1ZWQwMmI4NmU2MGNkMmYyYWZlOGExLi5hZmI5ZDY4N2IzMDIzYmYwZjdiMWIyYjIx
Y2ZjZTY4NDBkMzBiOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKQEAgLTE2MiwyMyArMTYyLDMyIEBAIHZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNv
bnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlm
ICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCisg
ICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xl
TWVzc2FnZVRhc2sobWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2Ut
Pm1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5z
b3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNz
YWdlKCksIDApKTsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCiB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9u
Rm9yYmlkZGVuKCkpCisgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0
VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAg
ICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIH0KKworICAgIGFkZE1lc3Nh
Z2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgeyB9LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2Fs
bFN0YWNrLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1
bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAg
ICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdl
VGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0
YWNrKSwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOworICAgIGlmIChjYWxsU3RhY2spCisg
ICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNv
dXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVs
ZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgbWVz
c2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNz
YWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdl
KSk7CiB9CiAKIFJlZmVycmVyUG9saWN5IFdvcmtsZXRHbG9iYWxTY29wZTo6cmVmZXJyZXJQb2xp
Y3koKSBjb25zdApAQCAtMjE1LDggKzIyNCw5IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpw
cm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKQogICAgIG1fc2NyaXB0TG9hZGVyLT5s
b2FkQXN5bmNocm9ub3VzbHkoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZmV0Y2hP
cHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3JrZXJz
TW9kZTo6QWxsLCAqdGhpcyk7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit2b2lk
IFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodGhpcywgaWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCkBAIC0yMzIsNiAr
MjQyLDggQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBV
UkwgbW9kdWxlVVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fZXZhbHVhdGVkTW9kdWxlcy5hZGQobW9kdWxlVVJMKTsKICAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
Y3JpcHRJbXBvcnRlZCgqdGhpcywgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3Jp
cHRMb2FkZXItPnNjcmlwdCgpKTsKKwogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4g
ZXhjZXB0aW9uOwogICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZSht
X3NjcmlwdExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlvbik7
CiAgICAgICAgIGlmIChleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFBhcmFtZXRlcnMuaAppbmRleCAzYTRmNGU3Mzc5Y2RiZjExOTE3MmE4MjZlOWQzYTAyODdmYjIx
M2Q4Li45ODM2Y2YwYTAzNTgxYmU4MjYzYjU1MGQ4NDI2MzE5MzEzZmZlNjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKQEAg
LTM0LDEzICszNSwxNSBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAgIFVSTCB3aW5k
b3dVUkw7CiAgICAgSlNDOjpSdW50aW1lRmxhZ3MganNSdW50aW1lRmxhZ3M7CiAgICAgZmxvYXQg
c2FtcGxlUmF0ZTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlOwogCiAgICAg
V29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiB7CiAgICAgICAgICAgICB3aW5kb3dVUkwuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgICAg
ICBqc1J1bnRpbWVGbGFncywKLSAgICAgICAgICAgIHNhbXBsZVJhdGUKKyAgICAgICAgICAgIHNh
bXBsZVJhdGUsCisgICAgICAgICAgICBzdGFydE1vZGUKICAgICAgICAgfTsKICAgICB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411993</attachid>
            <date>2020-10-21 09:03:12 -0700</date>
            <delta_ts>2020-10-21 10:04:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201021090311.patch</filename>
            <type>text/plain</type>
            <size>86327</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzNTJjMWYzYjhiY2M3
MmM5YjBiODQwNjYzMTZhMGM4NWU1ODgyYi4uMDQxYWE2MGIyY2E3ZWY1ODRkNWQ3OThiMDk4YzVl
NjQ4YTBkMThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMC0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0ODg3NjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBBdWRp
b1dvcmtsZXRzIHVwIHRvIFdlYkluc3BlY3Rvciwgc2ltaWxhcmx5IHRvIFdlYiBXb3JrZXJzLiBU
aGlzIGJhc2ljYWxseSBwb3J0cworICAgICAgICBXZWJJbnNwZWN0b3IgY29kZSB0byB1c2UgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgaW5zdGVhZCBvZiBXb3JrZXJHbG9iYWxTY29wZQorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgc2FtZSBjb2RlIGZvciB3b3JrbGV0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yVGVybWluYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjppbnNwZWN0b3JDb250cm9sbGVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcik6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckRlYnVnZ2VyUHJveHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6c3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVu
dExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdl
bnQ6OlNlcnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFn
ZW50OjpXb3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVMb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpyZXN1bWVXb3Jr
ZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29u
bmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldDo6V29ya2xldCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldC5o
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKwogMjAyMC0xMC0yMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAg
PHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIGZsZXgtYmFzaXMg
bm90IGFuaW1hdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2NjOTIzNGU3MWUyNGZj
ODBjMzlmZTg1ZmVhNmEyMDhlMGM2OTU2MS4uNzUyZTI3YjI4YjJlNzU5YjRiYzg2N2E2YTgyOWQ5
YThlZjBmMTgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlICJKU0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkpTQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNp
bmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTE0OSw2ICsxNTAsOCBAQCB2b2lkIEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yVGVybWluYXRpb24oKQogICAgICAgICBk
ZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7CiAgICAgc3RvcEFjdGl2
ZURPTU9iamVjdHMoKTsKIAorICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS53b3JrZXJUZXJtaW5h
dGluZygpOworCiAgICAgbV9wcm9jZXNzb3JDb25zdHJ1Y3Rvck1hcC5jbGVhcigpOwogCiAgICAg
Ly8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9iamVjdHMgYWxp
dmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBKUyBvYmplY3Rz
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzA2MTNlOTgwNDBhNjAyMDNkYzc3
ZjY5MzBhNjU3MGM3N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2MjQ1NmY4ZWQ0Mzg2ZDFhNDNmYTJk
OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcsMzYgKzM3LDQzIEBACiAj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldvcmts
ZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmts
ZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRpYyBXb3JrbGV0UGFyYW1l
dGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCwgV29y
a2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAgIGF1dG8qIGRvY3VtZW50
ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1lRmxhZ3MgPSBkb2N1bWVu
dC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CisgICAgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5LndvcmtlclN0YXJ0TW9kZSgqd29y
a2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAgIGRvY3VtZW50LT51cmwo
KSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0gICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0
KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmCisgICAgICAg
IHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVS
YXRlKCkgOiAwLjBmLAorICAgICAgICBzdGFydE1vZGUKICAgICB9OwogfQogCiBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoQXVkaW9Xb3JrbGV0
JiB3b3JrbGV0KQogICAgIDogbV93b3JrbGV0KG1ha2VXZWFrUHRyKHdvcmtsZXQpKQogICAgICwg
bV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQotICAgICwgbV93b3JrbGV0VGhyZWFkKEF1
ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJz
KHdvcmtsZXQpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVuaXF1ZTxXb3JrZXJJbnNw
ZWN0b3JQcm94eT4od29ya2xldC5pZGVudGlmaWVyKCkpKQorICAgICwgbV93b3JrbGV0VGhyZWFk
KEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0
ZXJzKHdvcmtsZXQsICptX2luc3BlY3RvclByb3h5KSkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsKKyAgICBtX2luc3BlY3Rv
clByb3h5LT53b3JrZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1lbnQoKSwgbV93b3JrbGV0VGhyZWFk
LnB0cigpLCB7IH0sICJBdWRpb1dvcmtsZXQiX3MpOwogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkKIHsKKyAgICBtX2luc3BlY3Rv
clByb3h5LT53b3JrZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93b3JrbGV0VGhyZWFkLT5zdG9wKCk7
CiB9CiAKQEAgLTEwMCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eTo6cG9zdFRhc2tUb0F1ZGlvV29ya2xldChGdW5jdGlvbjx2b2lkKEF1ZGlvV29ya2wKICAgICB9
KTsKIH0KIAordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb0Rl
YnVnZ2VyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1l
c3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbV9pbnNwZWN0b3JQcm94eS0+c2VuZE1l
c3NhZ2VGcm9tV29ya2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICB9KTsKK30KKwordm9pZCBB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3Rvcihib29sIGRpc2FibGVkKQoreworICAgIHBvc3RUYXNrVG9Mb2FkZXIoW2Rpc2Fi
bGVkXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5zZXRSZXNvdXJjZUNhY2hp
bmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICB9KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5n
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkuaAppbmRleCBhNmJjODU4OTE3YTVkMGViNzUwNGU2NDY4ZDA4YWY1NGUwMjU5
YjZiLi4xMzdmYTQxNGNkYjliODM2ZDkxZGFjYzExOGU3ODEwNTdkNGM3M2U2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlUHJv
eHkuaCIKIApAQCAtMzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRp
b1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFzcyBEb2N1bWVudDsKK2Ns
YXNzIFdvcmtlckluc3BlY3RvclByb3h5OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtlckxvYWRl
clByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDogcHVibGljIFdvcmts
ZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3Jr
ZXJEZWJ1Z2dlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIHsKQEAgLTYy
LDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclBy
b3h5LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29s
KSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHI8QXVkaW9Xb3JrbGV0PiBtX3dv
cmtsZXQ7CiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXb3JrZXJJbnNwZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsKICAgICBSZWY8QXVkaW9X
b3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggYTA2
OGRjZDA0NGQwZmEzMjY3MTZlZmUwNzdiYzhjZDNkODQyZjhmZi4uYTFmNDUyMWIyZTBjMjEyYThi
ODI1MjU4YzI5NzhkNTU0MjhiYjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMTMyLDYgKzEzMiwxNCBA
QCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCgpCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9kZSA9PSBXb3JrZXJUaHJlYWRTdGFy
dE1vZGU6OldhaXRGb3JJbnNwZWN0b3IpIHsKKyAgICAgICAgc3RhcnRSdW5uaW5nRGVidWdnZXJU
YXNrcygpOworCisgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNvbWVob3cgdGVybWluYXRl
ZCB3aGlsZSBwcm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgorICAgICAgICBpZiAobV9ydW5M
b29wLnRlcm1pbmF0ZWQoKSkKKyAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmZvcmJpZEV4
ZWN1dGlvbigpOworICAgIH0KKwogICAgIHJ1bkV2ZW50TG9vcCgpOwogCiAjaWYgVVNFKEdMSUIp
CkBAIC0xNzcsNiArMTg1LDI3IEBAIFdvcmtlckxvYWRlclByb3h5JiBBdWRpb1dvcmtsZXRUaHJl
YWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKIH0K
IAorV29ya2VyRGVidWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJEZWJ1Z2dl
clByb3h5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKK30KKwordm9p
ZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKQoreworICAg
IEFTU0VSVCghbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CisgICAgbV9wYXVzZWRGb3JEZWJ1Z2dlciA9
IHRydWU7CisKKyAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKKyAgICBkbyB7Cisg
ICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9kZSgqbV93b3JrbGV0R2xv
YmFsU2NvcGUpOworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
ICYmIG1fcGF1c2VkRm9yRGVidWdnZXIpOworfQorCit2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6
c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBtX3BhdXNlZEZvckRlYnVnZ2VyID0g
ZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRUaHJlYWQuaAppbmRleCAwMzBjNjFmOWQ1MTgwMjI5MmNiMzQzODE0ZDkxMGMyYmVh
N2IzZWI5Li43OTA3ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgyYTdmMjhmY2NlMGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFk
LmgKQEAgLTU0LDExICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZv
aWQgc3RvcCgpOwogCisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7
CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKwogICAgIC8vIFdv
cmtlck9yV29ya2xldFRocmVhZC4KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwg
eyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRl
clByb3h5KCkgZmluYWw7CiAgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3RocmVhZC5nZXQoKTsgfQogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNz
YWdpbmdQcm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1
Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6
CiAgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgY29u
c3QgV29ya2xldFBhcmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBX
b3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlPiBtX3dvcmtsZXRHbG9iYWxTY29wZTsKICAgICBMb2NrIG1fdGhyZWFkQ3JlYXRp
b25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrOworICAgIGJvb2wgbV9wYXVzZWRGb3JEZWJ1Z2dl
ciB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMzdhNmJmYTk2MGJkNjcx
NDc1ZDgwOWNhOTk4OGQxM2E2Zjg0MzBiYy4uOTE3YzhiZGRkYmQ5MzQwN2JhNjE5MjBmNzBkMDM5
ZjA4MDg2OWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcApAQCAtNDgxLDEwICs0ODEsOCBAQCBKU0M6OlZNJiBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp2bSgpCiB7CiAgICAgaWYgKGlzPERvY3VtZW50PigqdGhpcykpCiAgICAgICAgIHJldHVy
biBjb21tb25WTSgpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpKQotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+
dm0oKTsKLSAgICBpZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKS5zY3JpcHQoKS0+dm0oKTsK
KyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0
KCktPnZtKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBjb21tb25WTSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAwMmFiZTE2NjQxNDJkYmVhOWFiZmZjMDBlYzM3
NTNiZDE0ZTM2MjNmLi4wODdjZDk0OGI1MWQwMWUzNzk2YzUxZGM1OTFkMzA4NGNkYmZmYzYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgi
CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KQEAgLTEzMjAsOSArMTMyMSw5IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJMYXllckRlc3Ryb3ll
ZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1lbnRpbmdBZ2VudHMmIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUuaW5zcGVjdG9y
Q29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICByZXR1cm4gd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0Fn
ZW50czsKIH0KIAogSW5zdHJ1bWVudGluZ0FnZW50cyYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlJiBwYWdlKQpAQCAtMTMzNSw4ICsxMzM2
LDggQEAgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3IKIHsKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNv
bnRleHQpKQogICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29y
a2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKKyAg
ICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShk
b3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNWFkNzllMGQxNmE5NTMyYjgxYzhiNWFmODBhYWNh
Y2U1OTg2OWQxZS4uZjA3ZTJmNWM4YmQyNDQwZGMzMmVhOGQ3MGRmZjEyOTgyN2UyODRkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwotY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogI2lm
IEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKQEAgLTIwMSwxMSArMjAxLDExIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmco
RnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtl
ckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3Qm
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJHbG9i
YWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtlckdsb2JhbFNjb3BlJiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgLy8gU29tZSBuZXR3b3JrIHJlcXVlc3RzIGRvIG5vdCBnbyB0aHJvdWdoIHRoZSBub3JtYWwg
bmV0d29yayBsb2FkaW5nIHBhdGguCiAgICAgLy8gVGhlc2UgbmV0d29yayByZXF1ZXN0cyBoYXZl
IHRvIGlzc3VlIHRoZWlyIG93biB3aWxsU2VuZFJlcXVlc3QgLyBkaWRSZWNlaXZlUmVzcG9uc2Ug
LyBkaWRGaW5pc2hMb2FkaW5nIC8gZGlkRmFpbExvYWRpbmcKQEAgLTI0MywyMCArMjQzLDIwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2Um
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwotICAgIHN0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOworICAgIHN0YXRpYyB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgc3RhdGljIHZvaWQgY29uc29s
ZUNvdW50KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7
Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIGNv
bnNvbGVDb3VudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRS
ZXNldChQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwot
ICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlckdsb2JhbFNjb3BlJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lk
IGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCiAgICAgc3RhdGljIHZvaWQgdGFr
ZUhlYXBTbmFwc2hvdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2
b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmcoV29y
a2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJl
bCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwog
ICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRz
PiYmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3Bl
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0
b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29uc29sZVRpbWlu
ZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAg
IHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGlt
aW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFi
ZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3RhbXAoRnJhbWUmLCBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0UHJvZmlsaW5n
KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAg
c3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZW5kZXJMYXllciYpOwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckds
b2JhbFNjb3BlJik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYpOwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFtZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoY29uc3QgRnJhbWUqKTsKQEAgLTU0
MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3VtZW50
Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNj
b3BlKik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSopOwogfTsKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxk
KQpAQCAtMTA1MCwxMCArMTA1MCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbgogICAgICAg
ICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBs
b2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
U2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICB3
aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UgeyB9KTsKKyAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9
KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJl
cXVlc3RPZlR5cGUoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZFR5cGUgbG9h
ZFR5cGUpCkBAIC0xMDc1LDkgKzEwNzUsOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lJiBmcmFtZSwgdQogICAg
ICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKLSAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVs
bHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOworICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRyLCByZXNwb25zZSwg
bnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVMb2FkZXIm
IGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAt
MTA5NCwxMCArMTA5NCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZwogICAgICAgICBkaWRS
ZWNlaXZlRGF0YUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRh
dGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwg
aW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKLSAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0
aCwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUq
IGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxv
YWRlciogcmVzb3VyY2VMb2FkZXIpCkBAIC0xMTA3LDEwICsxMTA3LDEwIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSogZnJhbWUs
IERvY3VtZW50TG9hCiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIG5ldHdvcmtMb2FkTWV0cmljcywgcmVzb3VyY2VM
b2FkZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hM
b2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKLSAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRy
LCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIpOworICAgIGRpZEZpbmlzaExvYWRpbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIG5ldHdvcmtMb2FkTWV0
cmljcywgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAt
MTExOSw5ICsxMTE5LDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGUKICAgICAgICAgZGlkRmFp
bExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIGVy
cm9yKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBkaWRGYWlsTG9hZGlu
Z0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgZXJyb3IpOworICAgIGRpZEZhaWxMb2FkaW5n
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRyLCBlcnJvcik7CiB9
CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhG
cmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUmIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpAQCAtMTU3MSw5ICsxNTcxLDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5pcXUKICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xl
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgYWRk
TWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdl
KSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNv
dW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQpAQCAtMTU4MSw5ICsxNTgxLDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpKU0dsb2JhbE9iamUKICAg
ICBjb25zb2xlQ291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBzdGF0
ZSwgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVDb3VudChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBjb25zb2xlQ291bnRJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIHN0
YXRlLCBsYWJlbCk7CisgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBz
dGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNvbnNvbGVDb3VudFJlc2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU5MSw5ICsxNTkxLDkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQYWdlJiBwYWdlLCBK
U0M6OkpTR2xvYmEKICAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UocGFnZSksIHN0YXRlLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5n
JiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNv
dW50UmVzZXQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkK
IHsKLSAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtl
ckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgc3RhdGUsIGxhYmVsKTsKKyAgICBjb25z
b2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgc3RhdGUsIGxhYmVsKTsKIH0K
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0YWtlSGVhcFNuYXBzaG90
KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTE2MDksOSArMTYwOSw5IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5n
KEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsCiAgICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVs
KTsKKyAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGV4ZWMs
IGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dD
b25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3Vt
ZW50cykKQEAgLTE2MjAsOSArMTYyMCw5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpTQzo6SlNHbG9iCiAgICAg
ICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCBsYWJl
bCwgV1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwg
UmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgZXhl
YywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwo
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9
CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1p
bmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQpAQCAtMTYzMSw5ICsxNjMxLDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpTQzo6SlNHbG8KICAg
ICAgICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwg
ZXhlYywgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIHN0b3BDb25zb2xl
VGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKEZyYW1lJiBmcmFtZSwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE3NTYsOSArMTc1Niw5
IEBAIGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlCiAgICAgcmV0dXJuIHBhZ2UgPyAmaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UoKnBhZ2UpIDogbnVsbHB0cjsKIH0KIAotaW5saW5lIEluc3RydW1l
bnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29w
ZSkKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSogd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAg
cmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJH
bG9iYWxTY29wZSgqd29ya2VyR2xvYmFsU2NvcGUpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKCp3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkgOiBudWxscHRy
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3Jl
YXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRC
YXNlLmgKaW5kZXggNzA0NDY0NGJmZjk1MjBlYWFlODZlZmQ0YjJhZTM5MTkyM2ZjN2VmNC4uMWJi
Zjk0ZWZhNTIxMWFkMjE2YjRhMDBmZjY2YTkzMDc2NmE3MGJjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFz
cyBQYWdlOwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZTsKIAogLy8gRklYTUU6IG1vdmUgdGhpcyB0byBJbnNwZWN0b3IgbmFtZXNwYWNl
IHdoZW4gcmVtYWluaW5nIGFnZW50cyBtb3ZlLgogc3RydWN0IFdlYkFnZW50Q29udGV4dCA6IHB1
YmxpYyBJbnNwZWN0b3I6OkFnZW50Q29udGV4dCB7CkBAIC01NywxMyArNTcsMTMgQEAgc3RydWN0
IFBhZ2VBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsKIH07CiAKIHN0cnVj
dCBXb3JrZXJBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0IHsKLSAgICBXb3Jr
ZXJBZ2VudENvbnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUpCisgICAgV29ya2VyQWdlbnRDb250ZXh0KFdlYkFnZW50Q29u
dGV4dCYgY29udGV4dCwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKQogICAgICAgICA6IFdlYkFnZW50Q29udGV4dChjb250ZXh0KQotICAgICAg
ICAsIHdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorICAgICAgICAsIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogICAgIHsK
ICAgICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGU7CisgICAg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwog
fTsKIAogY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQWdlbnRCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJEZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIu
Y3BwCmluZGV4IDgwYzlhMTA1YzU0YTNlNTM3MGFjY2Q2YzEyZmYwNmYyYjM0MzVkYTIuLjIyNzMx
YTdlMjFjNWM0N2ZlYjIyZDkyNTgyZGM4OThjNjE1MmRiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcApAQCAtMzQsMTYgKzM0LDE3IEBACiAKICNpbmNs
dWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxv
b3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9WTS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKLVdvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihXb3JrZXJHbG9iYWxTY29wZSYg
Y29udGV4dCkKK1dvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgY29udGV4dCkKICAgICA6IERlYnVnZ2VyKGNvbnRleHQuc2NyaXB0KCktPnZt
KCkpCiAgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpCiB7CkBAIC02MCw4ICs2MSw4
IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ry
b3llZCkKIHsKICAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJv
eWVkKTsKIAotICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAgICBt
X3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKKyAgICBp
ZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCkp
CisgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmRldGFjaERlYnVnZ2VyKHRoaXMpOwogICAgIGlm
ICghaXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsK
IH0KQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hp
bGVQYXVzZWQoKQogCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQ7CiAgICAgZG8g
ewotICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3Ao
KS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICAgICAgcmVzdWx0
ID0gbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+cnVuTG9vcCgp
LnJ1bkluRGVidWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIH0gd2hpbGUgKHJl
c3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5o
CmluZGV4IDFjNDU2OTk5YWVmNjJiNTQ0NmFmOTdkNjU0NjRmOGM1NmM5ZTFhZDMuLjE0MDk0YTM2
NTdjZTc1MGZkOGJhYmVlNjNkYjRmY2RhY2FmZTgxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCkBAIC0zNSwxMyArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3JrZXJEZWJ1Z2dlciBmaW5hbCA6IHB1YmxpYyBKU0M6
OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJEZWJ1Z2dlcik7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV29ya2VyRGVidWdnZXIo
V29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBXb3JrZXJEZWJ1Z2dlcihXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsK
IAogCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5FdmVudExvb3BXaGls
ZVBhdXNlZCgpIGZpbmFsOwogICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCi0gICAgV29ya2VyR2xvYmFs
U2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggOTBlOTg1NDRiNTNhNTAyZWI5OGE1ZDhjMjI1YjcwMzNiMzlhMDY3Zi4u
ZmVhM2QwY2I0YjIxOWM5MjJlMjJhNmY4ZTY0N2EzMWUxZjgwNzE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5oIgogI2luY2x1
ZGUgIldvcmtlckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlckFn
ZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJO
ZXR3b3JrQWdlbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogI2luY2x1ZGUgIldvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oIgpAQCAtNTcsMTYgKzU3
LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
K1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogICAg
IDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhp
cykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQog
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJv
dXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpj
cmVhdGUoKSkKLSAgICAsIG1fZGVidWdnZXIod29ya2VyR2xvYmFsU2NvcGUpCi0gICAgLCBtX3dv
cmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorICAgICwgbV9kZWJ1Z2dlcih3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKHdvcmtlckdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQod29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0g
d29ya2VyQWdlbnRDb250ZXh0KCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9leGVjdXRpb25TdG9w
d2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAg
ICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENo
YW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBt
YWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKCptX2Zv
cndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdl
dCgpKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBXb3JrZXJBZ2VudENvbnRleHQgV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KCkKIAogICAgIFdvcmtlckFnZW50
Q29udGV4dCB3b3JrZXJDb250ZXh0ID0gewogICAgICAgICB3ZWJDb250ZXh0LAotICAgICAgICBt
X3dvcmtlckdsb2JhbFNjb3BlLAorICAgICAgICBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LAogICAgIH07CiAKICAgICByZXR1cm4gd29ya2VyQ29udGV4dDsKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29u
dGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpczxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7CisgICAgaWYgKGlzPFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpIHsK
ICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3
b3JrZXJDb250ZXh0KSk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtl
ck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KQEAgLTE5OSw3ICsxOTksNyBA
QCBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZXZh
bHVhdGVIYW5kbGVyKCkgY29uc3QKIAogVk0mIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OnZt
KCkKIHsKLSAgICByZXR1cm4gbV93b3JrZXJHbG9iYWxTY29wZS52bSgpOworICAgIHJldHVybiBt
X3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnZtKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IDdhNTNkODA0YmZiY2UwZjYyZTExNTNjNTEzYjE3OGQ3NDIzODNl
ZGUuLjlmZDBiOWMzNTQ0ZWFiNjkzOTBkMmVkNGNlOWRiZjA5NzVkMDE0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtNDEsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKIGNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFdvcmtl
ckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiBzdHJ1Y3Qg
V29ya2VyQWdlbnRDb250ZXh0OwogCiBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyIGZp
bmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1lbnQgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAgfldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd29ya2VyVGVybWluYXRp
bmcoKTsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+
IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFdvcmtlckRlYnVnZ2VyIG1fZGVidWdnZXI7CiAg
ICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAgIFdvcmtlckdsb2JhbFNj
b3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9mb3J3YXJkaW5nQ2hhbm5lbDsKICAgICBib29sIG1f
ZGlkQ3JlYXRlTGF6eUFnZW50cyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oCmluZGV4IGMwMjYy
MTEzNWM1NWViZDcwNmUwNDM1MWI1YzEzZjYxM2JlYTY1MzQuLmQyNjMwZDUxY2ZkNGQ3MWNlNTgx
YTlmNjQ5NWEzMTYyZjZkODMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KIApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisgICAgZXhwbGljaXQgV29y
a2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKICAgICAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKQogICAgIHsKICAgICB9CkBAIC00NiwxMCArNDYsMTAgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyRGVi
dWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKKyAgICAgICAgbV93
b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdnZXJQ
cm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKICAgICB9CiAKLSAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCmluZGV4IGJiZTJjYzAzZDY0NWZjMTI5MDg0
ZGJlZTlkZDgwNDIyYmJkNjNmZDguLmVmZmQyYmVlMGEwYTcwOWJkOWFkN2EzMTIzMzI0ZDA3MjEy
YWIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtMzgsMTAgKzM4LDEwIEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFNlcnZpY2VXb3JrZXJBZ2VudDo6U2VydmljZVdv
cmtlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiU2VydmljZVdvcmtlciJfcywgY29udGV4dCkKLSAgICAsIG1fc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dC53
b3JrZXJHbG9iYWxTY29wZSkpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlNlcnZpY2VX
b3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJBZ2VudDo6flNlcnZpY2VX
b3JrZXJBZ2VudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKaW5kZXggZjY0ZDU3
NTMwYjdiNjE3MGVhYWRlOTIzZTQwOWI1YmRkZWE3MmU0MC4uM2I1ZTU0ZTQxNWZjMmFlODZkMzNh
MjdlY2I5ZGVlNTk2ZjdjMTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJXb3JrZXJBdWRpdEFnZW50LmgiCiAKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3Rl
ZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KQEAgLTQxLDkgKzQx
LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyQXVkaXRBZ2VudDo6V29y
a2VyQXVkaXRBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBdWRpdEFnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQu
d29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGNv
bnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQu
d29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0
Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29y
a2VyQXVkaXRBZ2VudDo6fldvcmtlckF1ZGl0QWdlbnQoKSA9IGRlZmF1bHQ7CkBAIC01NSw3ICs1
NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZSkpOworICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmpl
Y3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJBdWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJlY2IwZWViOGVkZDczMzll
YzA0NTliZDM3MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4MzhmZjhmY2YyZWZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
QXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckF1ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJBdWRpdEFnZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2ODdmMDQzZWQ1NjdlM2I4
ZjRiMTU4MDc2OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFmYmU2NjhhMWJjZGQ3MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3JrZXJDb25zb2xlQWdlbnQo
V29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29uc29sZUFnZW50KGNvbnRl
eHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhy
ZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlz
Q29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50Ojp+V29ya2VyQ29uc29s
ZUFnZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzYWUz
NWM2N2EzMDM0MWQ3ZWUxMmY2Y2M1Njg4ZGUxZWM3OGM2M2UwLi4zNTU4Y2IzNGY5NzNlZDYyYzg2
OTEyM2I2NTc1M2NjZjM1MzNjNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKIAogI2luY2x1
ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRT
Y3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aD4KQEAgLTQxLDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3Jr
ZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkKLSAgICAsIG1fd29ya2Vy
R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsK
LSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7
CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0
VGhyZWFkKCkpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2Vu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0
aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVh
dGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsKIH0KIAogSW5qZWN0ZWRT
Y3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29s
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpAQCAtNjAsNyArNjAsNyBA
QCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2
YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQo
KTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRT
Y3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKKyAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1f
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IDdjYTY0ZTQwMTNhNTRiNDE4ZDUzZTQ3NDgw
MmU3MzJiZjE5MDhjOTcuLjk5NDdmNzE1NDU2MTRhZDkzZmY3ZWZlMjVmMmUwNTg0ODI3ODVkNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAotICAgIFdvcmtlckdsb2JhbFNj
b3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNWRjZTgyNmY0YjEwZTBjZDQ4NWM4
NTlhYTM3MjkzMmJlZTY0YjVhOS4uMTQxMGEyNzg5NDBmZGMxY2ZhNWIzNjAyYWJjYzU3NjQzN2Y3
YjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29y
a0FnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rvck5ldHdv
cmtBZ2VudChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtl
ckdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0
Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtl
ckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlck5l
dHdvcmtBZ2VudDo6fldvcmtlck5ldHdvcmtBZ2VudCgpID0gZGVmYXVsdDsKQEAgLTYxLDEyICs2
MSwxMiBAQCBWZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0FnZW50OjphY3RpdmVXZWJT
b2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQogCiB2b2lkIFdvcmtlck5ldHdvcmtBZ2VudDo6c2V0
UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRlcm5hbChib29sIGRpc2FibGVkKQogewotICAgIG1f
d29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyRGVidWdnZXJQcm94eSgpLnNldFJlc291
cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQpOworICAgIG1fd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVn
Z2VyUHJveHkoKS5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGRpc2Fi
bGVkKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV29ya2VyTmV0d29ya0FnZW50Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KFByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IFByb3Rv
Y29sOjpOZXR3b3JrOjpGcmFtZUlkJikKIHsKLSAgICByZXR1cm4gJm1fd29ya2VyR2xvYmFsU2Nv
cGU7CisgICAgcmV0dXJuICZtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCmluZGV4IGRkODdkODEwMjAy
ZTViMTdkZTljZjA3Yjc2MmI1MjVlZWUyZTNiZTguLmQ3YmViZDBkZWExMGFmYjAxMmI0NmFjYzQ5
Njc1YTI5YTllZDRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCkBAIC00NCw3ICs0NCw3IEBA
IHByaXZhdGU6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKTsKICAgICBib29sIHNob3VsZEZvcmNlQnVmZmVy
aW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFdv
cmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggYWE1OGExZjBk
N2E4MWIwMDY4MWY2NjhhOWZjNGE3MjU4NmIxM2RjZC4uOGU4NGRhMDAzMTlhYThhZjIzNDQ0OWNj
Mjc4MDZhNzFjMjUxYTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAKICNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbmpl
Y3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oPgogCkBAIC00NCw5ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBX
b3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChXb3JrZXJBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNv
bnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNv
bnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChj
b250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0K
IAogV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVudGltZUFnZW50KCkgPSBkZWZhdWx0OwpA
QCAtNTgsNyArNTgsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZSkp
OworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihn
bG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDZiOTk4ZjRkMTczMTg1
MWY5OWI2N2VlMTVhNWQyMDAxNTg3ZjRkMDYuLmJjY2MyYjdkMDcxNWEzNGU3YzQ3NzIzMjZkMjQx
ZGE5NmM3YmUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2VyUnVudGltZUFnZW50IGZp
bmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXb3JrZXJSdW50aW1lQWdlbnQpOwpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpIHsgfQogCiAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAg
IFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDI3MTdjODYxYzc0YjBmMmFlYmNkZTQwODcwMGUyYTlhMDM3Mzc1OTUuLjE4
ZmYzZjk0ZjA0MmQxYTFmZDAzYTUxYmMxMWQ1YmQxNDZmMzNiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKIHsKLSAgICBpZiAoaXM8V29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpIHx8IChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRl
eHQpICYmIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3Jr
bGV0VGhyZWFkKCkpKQorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndv
cmtlck9yV29ya2xldFRocmVhZCgpKQogICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJj4oY29u
dGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgV1RGTW92ZShyZXF1
ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZlcnJlcikpOwogCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbnVsbHB0cjsKQEAgLTExOCw4ICsxMTgsOCBAQCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRl
cj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVlc3QudXJsKCk7Ci0g
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7
CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVz
dCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwogICAgIGNvbnRleHQu
ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZTExMzk2YmZk
ODMzNmUzZTg2NzRhNDljYjVjODE4NGJmMTU4MGE3ZS4uZWY0OTQ5MjI1YjI4YjUwZjM4NjZjMGY3
ZDM2NmUwYjc5MjY2Y2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRl
ckNsaWVuCiAgICAgICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRp
ZmllcigpOwogI2VuZGlmCiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNj
b3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3Qo
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwgbV93b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
U2VuZFJlcXVlc3QoZ2xvYmFsU2NvcGUsIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVl
c3QpOwogCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFs
dWUgdG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29s
YXRlZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0yMjYsOCArMjI1LDcgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZl
UmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAg
YXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmZyb21Dcm9zc1RocmVhZERhdGEoV1RG
TW92ZShyZXNwb25zZURhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2Up
OworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0K
IApAQCAtMjM4LDggKzIzNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwKICAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3Rl
Y3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkg
fHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yNDksOCArMjQ2LDcgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWQKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBw
ZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyA9IG1f
bmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkp
OwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5n
KGlkZW50aWZpZXIpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
KQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5n
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yNjEsOCArMjU3LDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm8KICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIFRocmVhZGFi
bGVMb2FkZXI6OmxvZ0Vycm9yKGNvbnRleHQsIGVycm9yLCBwcm90ZWN0ZWRXb3JrZXJDbGllbnRX
cmFwcGVyLT5pbml0aWF0b3IoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9h
ZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0sIG1fdGFza01vZGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApp
bmRleCA3YjQyOTMwMGFmZmNiMDUxODlkNDgxNjA1OWY0MDVkNjY4NmM0ZjUxLi4wOWUyMDc2YmY3
YWJhMDFhNjc5YjU4YTI4YTg4OGY5OTUwNGU0NjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTUzLDM3ICs1MywyNyBAQCB2b2lkIFdv
cmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbAogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnQoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFs
U2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25z
b2xlQ291bnQobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3Qg
U3RyaW5nJiBsYWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRH
bG9iYWxTY29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUp
KQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQobV9nbG9iYWxT
Y29wZSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KLSAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9
CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3Vt
ZW50cykKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29w
ZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1
bWVudHMpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmco
bV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZv
aWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
V29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVU
aW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBs
YWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyht
X2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9CiAKIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTUzNDk5PiBXZWIgSW5zcGVjdG9yOiBjb25zb2xlLnByb2ZpbGUgc2hvdWxkIHVz
ZSB0aGUgbmV3IFNhbXBsaW5nIFByb2ZpbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDI0MGVjOTMwNDIxOGU2N2VkNTc1NzZkMjI5YWE4NWE2
YzQyYmMzYWEuLmI3MWU2MzE1MTYzYjZiMTFmZDBmZjU3YzZiZjU3NWQ1YjRhM2E1OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Niw3ICs2
Niw2IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0CiAgICAgLCBtX2lkZW50aWZpZXIocGFyYW1z
LmlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudChwYXJhbXMudXNlckFnZW50KQogICAgICwg
bV90aHJlYWQodGhyZWFkKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9pc09ubGluZShwYXJh
bXMuaXNPbmxpbmUpCiAgICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeShwYXJhbXMuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KQogICAgICwgbV90b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pKQpAQCAtMTM3LDcgKzEzNiw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnByZXBhcmVGb3JUZXJtaW5hdGlvbigpCiAgICAg
aWYgKG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLT5jbGVhclBlbmRpbmdSZXF1ZXN0cygpOwogCi0gICAgbV9pbnNwZWN0b3JDb250cm9s
bGVyLT53b3JrZXJUZXJtaW5hdGluZygpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS53b3Jr
ZXJUZXJtaW5hdGluZygpOwogCiAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIHdvdWxkIGtlZXAgRE9N
V3JhcHBlcldvcmxkIG9iamVjdHMgYWxpdmUgZm9yIHRvbyBsb25nLiBBbHNvLCB0aGV5IGhhdmUg
cmVmZXJlbmNlcyB0byBKUyBvYmplY3RzLAogICAgIC8vIHdoaWNoIGJlY29tZSBkYW5nbGluZyBv
bmNlIEhlYXAgaXMgZGVzdHJveWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCmluZGV4IGU0OGNmYjg1ZTFiZTA1YzlmYmU4YjViMTIwYmM3ZmI3OTgwNGU3Mjku
LjdmOGVmMjQ4NmRlOGI0ZWFmNGVlMDI2M2RhODJmY2MwYzc3ZDk4ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTUwLDcgKzUwLDYgQEAgY2xhc3Mg
RXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgUGVyZm9ybWFuY2U7CiBjbGFzcyBTY2hlZHVsZWRB
Y3Rpb247CiBjbGFzcyBXb3JrZXJFdmVudExvb3A7Ci1jbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOwogY2xhc3MgV29ya2VyTG9jYXRpb247CiBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CiBj
bGFzcyBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb247CkBAIC04Niw4ICs4NSw2IEBAIHB1YmxpYzoK
ICAgICBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24mIHN3Q2xpZW50Q29ubmVjdGlvbigpOwogI2Vu
ZGlmCiAKLSAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gKm1faW5zcGVjdG9yQ29udHJvbGxlcjsgfQotCiAgICAgV29ya2Vy
VGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQogCiAgICAgdXNpbmcg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5OwpAQCAtMTkzLDcgKzE5
MCw2IEBAIHByaXZhdGU6CiAKICAgICBXb3JrZXJUaHJlYWQmIG1fdGhyZWFkOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JD
b250cm9sbGVyOwogCiAgICAgYm9vbCBtX2Nsb3NpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c09ubGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVj
dG9yUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94
eS5jcHAKaW5kZXggNjMyYjgyZTI4YjcyZGE2MTM3MWMyNGViZmJhZjJkZDU1OTEwZDA3MS4uYjFi
ZTNlOTI0Y2VhNDdhMzk1MjAwMTNjNzY3ZGI2MGM3ODhiN2YwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTI4LDggKzI4LDkgQEAK
IAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgog
I2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KQEAgLTYyLDcgKzYz
LDcgQEAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJT
dGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICByZXR1cm4gcGF1c2VPblN0YXJ0ID8g
V29ya2VyVGhyZWFkU3RhcnRNb2RlOjpXYWl0Rm9ySW5zcGVjdG9yIDogV29ya2VyVGhyZWFkU3Rh
cnRNb2RlOjpOb3JtYWw7CiB9CiAKLXZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0
YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV29y
a2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2
b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdvcmtlck9yV29ya2xldFRocmVhZCogdGhy
ZWFkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCgh
bV93b3JrZXJUaHJlYWQpOwogCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9y
UHJveHk6OndvcmtlclRlcm1pbmF0ZWQoKQogdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVz
dW1lV29ya2VySWZQYXVzZWQoKQogewogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1
bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEwNiw3ICsxMDcsNyBAQCB2b2lkIFdv
cmtlckluc3BlY3RvclByb3h5Ojpjb25uZWN0VG9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2VDaGFubmVsJiBjaGFubgogICAgIG1fcGFnZUNoYW5uZWwgPSAmY2hhbm5lbDsKIAogICAgIG1f
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOworICAg
ICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVj
dG9yQ29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZCgpOwogICAgIH0pOwogfQogCkBAIC0xMTks
MTEgKzEyMCwxMSBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpkaXNjb25uZWN0RnJvbVdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIG1fcGFnZUNoYW5uZWwgPSBudWxscHRyOwog
CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGRvd25j
YXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ry
b3llZCk7CiAKICAgICAgICAgLy8gSW4gY2FzZSB0aGUgd29ya2VyIGlzIHBhdXNlZCBydW5uaW5n
IGRlYnVnZ2VyIHRhc2tzLCBlbnN1cmUgd2UgYnJlYWsgb3V0IG9mCiAgICAgICAgIC8vIHRoZSBw
YXVzZSBzaW5jZSB0aGlzIHdpbGwgYmUgdGhlIGxhc3QgZGVidWdnZXIgdGFzayB3ZSBzZW5kIHRv
IHRoZSB3b3JrZXIuCi0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KS50aHJlYWQoKS5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICAgICAgZG93bmNhc3Q8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVh
ZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKICAgICB9KTsKIH0KIApAQCAtMTM0LDcg
KzEzNSw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFttZXNzYWdlID0gbWVz
c2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNv
bnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAgICAg
IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgK
aW5kZXggNWU4YTFkYzBlZDBkOWFhNTMyYzM2NzQ2NGM4NjdmYjRmN2Y5YWE1Zi4uYmVmYzAxZDk1
NzBhOGM0YThiN2RkZWU4NWVhMTA2MThhNzdhNDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2Vy
VGhyZWFkOworY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwogCiBlbnVtIGNsYXNzIFdvcmtl
clRocmVhZFN0YXJ0TW9kZTsKIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsgfQogCiAgICAgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlIHdvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgdm9p
ZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWQqLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgd29ya2VyU3RhcnRlZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoKTsKIAog
ICAgIHZvaWQgcmVzdW1lV29ya2VySWZQYXVzZWQoKTsKQEAgLTczLDcgKzczLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJl
YWQ7CisgICAgUmVmUHRyPFdvcmtlck9yV29ya2xldFRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAg
ICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5jcHAKaW5kZXggZDVhOGQ1OTg1OGE5ZjJlNzE2Yjc2MTYwODNjZWRkMDNlZTBjOWI3
NC4uNmU1NjBjMTM5ZjMyNWRmMjY1MDQzODg0Y2E0MjAyN2ZjYWZiNWZkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAK
QEAgLTI2LDIwICsyNiwyNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpCiAgICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250
cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogewog
fQogCiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoUmVmPEpTQzo6Vk0+JiYgdm0pCiAgICAgOiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KFdURk1vdmUodm0pLCB0aGlzKSkKKyAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzKSkKIHsKIH0KIAorV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSgpID0gZGVmYXVsdDsKKwogdm9pZCBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZTo6Y2xlYXJTY3JpcHQoKQogewogICAgIG1fc2NyaXB0ID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRl
eCBlNzllYmNmOWM1ZWUyNTk5NmViZGNhZmFmMDNkZWM2ZWM1MWZiMmJiLi44NDY4YmJmYzI5ZWMx
ODUwNjk1ZjgxODQyYjA3MzQyMjU4MWRiN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0yOSwxMiArMjksMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OwogY2xhc3MgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjsKIGNsYXNzIFdvcmtlck9y
V29ya2xldFRocmVhZDsKIAogY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NpbmcoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xl
dFRocmVhZCgpIGNvbnN0ID0gMDsKQEAgLTQyLDYgKzQzLDggQEAgcHVibGljOgogICAgIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
aXB0LmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclNjcmlwdCgpOwogCisgICAgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2lu
c3BlY3RvckNvbnRyb2xsZXI7IH0KKwogICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpIHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcisrOyB9CiAKIHByb3RlY3RlZDoK
QEAgLTUwLDYgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9s
bGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXgg
Mzc4MDk2MWM3OTQ5ODU3YTFlMjA1ZjhjMzEyOTYyYzA3MGJlYWY4MS4uYTA3ZTljYWQ4OWRmZjQz
M2VjNzY0OWU3ZWU1ZmZlNTU5MGJiMDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRocmVhZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXJEZWJ1Z2dlclByb3h5OwogY2xh
c3MgV29ya2VyTG9hZGVyUHJveHk7CiBjbGFzcyBXb3JrZXJSdW5Mb29wOwogCkBAIC00Myw2ICs0
NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKICAgICB2aXJ0
dWFsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKKyAgICB2aXJ0
dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgPSAwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCmluZGV4IGIzZTcxYzkyZGYxNjdlOTgxYTZiNTA4OWU1MWJkZjA4MzQ2ZWM3
ZmMuLjg3ZGQ5OTY5YzVlOTA2ZGVlNzJjNDQ3NzViYzJjZTZkZjVhMWE1ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgotI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTAsMTYg
KzUwLDE2IEBAIFdvcmtlclNjcmlwdExvYWRlcjo6fldvcmtlclNjcmlwdExvYWRlcigpID0gZGVm
YXVsdDsKIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZldGNoT3B0aW9uczo6Q2Fj
aGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGF1dG8mIHdv
cmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAKICAgICBtX3VybCA9IHVybDsKICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2NyaXB0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSk7CiAKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgeworICAgICAg
ICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7
CiAgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwog
ICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBl
OwpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRl
cjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIGlmICghcmVx
dWVzdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
czxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwog
CiAgICAgLy8gT25seSB1c2VkIGZvciBpbXBvcnRTY3JpcHRzIHRoYXQgcHJlc2NyaWJlcyBOb0Nv
cnMgbW9kZS4KICAgICBBU1NFUlQobW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyk7
CkBAIC04NywxMCArODcsMTAgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBvcHRpb25z
LmRlc3RpbmF0aW9uID0gbV9kZXN0aW5hdGlvbjsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBpc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
OwotICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyR2xvYmFsU2NvcGUu
YWN0aXZlU2VydmljZVdvcmtlcigpKQorICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2Vy
ID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQogICAg
ICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZl
U2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCi0gICAgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9i
YWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogCiAgICAg
Ly8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdvcmtFcnJvciBl
eGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICBpZiAoZmFpbGVkKCkpCkBA
IC0xMDEsNyArMTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1J
TUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwg
Im1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsK
IAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVU
eXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwg
bV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAxMjE0YjkxOWRh
MzRkMzJmMmZjYWM5YTI5ODEyZjZmZDZhODdhMTI4Li44YjJhNjcyZjAwM2NlMTkyMjg5MjZlY2Ez
MjU2ZDM1OGUyZjkxODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAg
LTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkg
ZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtl
ckxvYWRlclByb3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAg
IFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3Jr
ZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclBy
b3h5OyB9CiAgICAgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCiAgICAgLy8gTnVtYmVy
IG9mIGFjdGl2ZSB3b3JrZXIgdGhyZWFkcy4KQEAgLTEwMyw4ICsxMDMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXROb3RpZmljYXRpb25DbGllbnQoTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQp
IHsgbV9ub3RpZmljYXRpb25DbGllbnQgPSBjbGllbnQ7IH0KICNlbmRpZgogCi0gICAgdm9pZCBz
dGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7Ci0gICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2Vy
VGFza3MoKTsKKyAgICB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpIGZpbmFsOwogICAgIAogICAgIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fcnVudGltZUZsYWdz
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKaW5kZXggMzkwOGJkZjNhMjk2Yzgx
YjZmNGJhOGU4ZTA4ZTNmYzU4MmVlNWUzYS4uNDg3NWM3YjRkZWQ0NDk3N2I4NGI0ODE0NTI0YjJh
YzM5OTdlM2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQZW5kaW5nVGFza3MuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCkBAIC00Miw2ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0
KTsKIAogV29ya2xldDo6V29ya2xldChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmRvY3VtZW50KQorICAgICwgbV9pZGVudGlmaWVyKCJ3b3JrbGV0OiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKaW5kZXggNDE2ODY3NGM3M2IyOTkwOWJhNjI5NjI1NzIx
YjM4MDUzZTIyN2JlZS4uZmRiNjYzZDdhMzVhODRmYjc3MGZmMDExZDg2MTJhZTRjYzIyYzRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCk7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmPFdvcmtsZXRH
bG9iYWxTY29wZVByb3h5Pj4mIHByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3hpZXM7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFdvcmtsZXQoRG9jdW1lbnQmKTsKQEAg
LTYyLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QuCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCisgICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKICAgICBWZWN0b3I8UmVmPFdvcmtsZXRHbG9iYWxTY29wZVByb3h5Pj4g
bV9wcm94aWVzOwogICAgIEhhc2hTZXQ8UmVmUHRyPFdvcmtsZXRQZW5kaW5nVGFza3M+PiBtX3Bl
bmRpbmdUYXNrc1NldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcAppbmRleCAwZGI1MTk1YmE5ZmU0ZGJiNmU1ZWQwMmI4NmU2MGNkMmYyYWZl
OGExLi5hZmI5ZDY4N2IzMDIzYmYwZjdiMWIyYjIxY2ZjZTY4NDBkMzBiOTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE2MiwyMyAr
MTYyLDMyIEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUo
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4mJiBtZXNzYWdlKQogewotICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0
aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCisgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkg
eworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2sobWVzc2FnZS0+c291cmNl
KCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1
cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBt
ZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICB9CisKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1v
dmUobWVzc2FnZSkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlm
ICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgaWYgKCFpc0Nv
bnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2so
c291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgIH0KKworICAgIGFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwg
eyB9LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIs
IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3ZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRk
TWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIFdURk1vdmUoY2FsbFN0YWNrKSwgbnVsbHB0ciwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBt
ZXNzYWdlOworICAgIGlmIChjYWxsU3RhY2spCisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVz
dElkZW50aWZpZXIpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRv
Q29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIFJlZmVycmVyUG9saWN5IFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVmZXJyZXJQb2xpY3koKSBjb25zdApAQCAtMjE1LDggKzIyNCw5
IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZO
ZWVkZWQoKQogICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKnRoaXMsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUoZmV0Y2hPcHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9s
aWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcyk7CiB9CiAKLXZv
aWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlU2NyaXB0
UmVzcG9uc2UodGhpcywgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
Ojpub3RpZnlGaW5pc2hlZCgpCkBAIC0yMzIsNiArMjQyLDggQEAgdm9pZCBXb3JrbGV0R2xvYmFs
U2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBVUkwgbW9kdWxlVVJMKG1fc2NyaXB0TG9hZGVy
LT5yZXNwb25zZVVSTCgpKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZXZhbHVhdGVkTW9kdWxl
cy5hZGQobW9kdWxlVVJMKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqdGhpcywgbV9zY3Jp
cHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKKwogICAg
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBzY3JpcHQo
KS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIFdU
Rk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAppbmRleCAzYTRmNGU3
Mzc5Y2RiZjExOTE3MmE4MjZlOWQzYTAyODdmYjIxM2Q4Li45ODM2Y2YwYTAzNTgxYmU4MjYzYjU1
MGQ4NDI2MzE5MzEzZmZlNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQ
YXJhbWV0ZXJzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3Mu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKQEAgLTM0LDEzICszNSwxNSBAQCBzdHJ1Y3QgV29y
a2xldFBhcmFtZXRlcnMgewogICAgIFVSTCB3aW5kb3dVUkw7CiAgICAgSlNDOjpSdW50aW1lRmxh
Z3MganNSdW50aW1lRmxhZ3M7CiAgICAgZmxvYXQgc2FtcGxlUmF0ZTsKKyAgICBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgc3RhcnRNb2RlOwogCiAgICAgV29ya2xldFBhcmFtZXRlcnMgaXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICB3aW5kb3dV
UkwuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgICAgICBqc1J1bnRpbWVGbGFncywKLSAgICAgICAg
ICAgIHNhbXBsZVJhdGUKKyAgICAgICAgICAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICBzdGFy
dE1vZGUKICAgICAgICAgfTsKICAgICB9CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412001</attachid>
            <date>2020-10-21 10:04:02 -0700</date>
            <delta_ts>2020-10-21 14:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201021100401.patch</filename>
            <type>text/plain</type>
            <size>85489</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkMGVlNjY1MDY4ODAw
ZGYxMTAzODUxYWIwZGJiZTdiMjRiOGM0Ni4uN2JlOTZhNjA4NzJjZTdkMmJkOWQyYTU3YmViYjAw
NTM1YzMwYjM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMC0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0ODg3NjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBBdWRp
b1dvcmtsZXRzIHVwIHRvIFdlYkluc3BlY3Rvciwgc2ltaWxhcmx5IHRvIFdlYiBXb3JrZXJzLiBU
aGlzIGJhc2ljYWxseSBwb3J0cworICAgICAgICBXZWJJbnNwZWN0b3IgY29kZSB0byB1c2UgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgaW5zdGVhZCBvZiBXb3JrZXJHbG9iYWxTY29wZQorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgc2FtZSBjb2RlIGZvciB3b3JrbGV0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yVGVybWluYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjppbnNwZWN0b3JDb250cm9sbGVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcik6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckRlYnVnZ2VyUHJveHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6c3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVu
dExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdl
bnQ6OlNlcnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFn
ZW50OjpXb3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVMb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpyZXN1bWVXb3Jr
ZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29u
bmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldDo6V29ya2xldCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldC5o
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKwogMjAyMC0xMC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZt
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggN2NjOTIzNGU3MWUyNGZjODBjMzlmZTg1ZmVh
NmEyMDhlMGM2OTU2MS4uNzUyZTI3YjI4YjJlNzU5YjRiYzg2N2E2YTgyOWQ5YThlZjBmMTgxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgIkpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KQEAgLTE0OSw2ICsxNTAsOCBAQCB2b2lkIEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlOjpwcmVwYXJlRm9yVGVybWluYXRpb24oKQogICAgICAgICBkZWZhdWx0VGFza0dy
b3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRhc2tzKCk7CiAgICAgc3RvcEFjdGl2ZURPTU9iamVjdHMo
KTsKIAorICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS53b3JrZXJUZXJtaW5hdGluZygpOworCiAg
ICAgbV9wcm9jZXNzb3JDb25zdHJ1Y3Rvck1hcC5jbGVhcigpOwogCiAgICAgLy8gRXZlbnQgbGlz
dGVuZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9iamVjdHMgYWxpdmUgZm9yIHRvbyBs
b25nLiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBKUyBvYmplY3RzLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzA2MTNlOTgwNDBhNjAyMDNkYzc3ZjY5MzBhNjU3MGM3
N2FlNDVmLi42MWUwZmIwZTk3OTkzM2Y2MjQ1NmY4ZWQ0Mzg2ZDFhNDNmYTJkOGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcsMzYgKzM3LDQzIEBACiAjaW5jbHVkZSAiQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJz
KEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0
ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9y
UHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5k
b2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1lRmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3Mo
KS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0
YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5LndvcmtlclN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVu
dCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAgIGRvY3VtZW50LT51cmwoKSwKICAgICAgICAg
anNSdW50aW1lRmxhZ3MsCi0gICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0
LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmCisgICAgICAgIHdvcmtsZXQuYXVk
aW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBm
LAorICAgICAgICBzdGFydE1vZGUKICAgICB9OwogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQog
ICAgIDogbV93b3JrbGV0KG1ha2VXZWFrUHRyKHdvcmtsZXQpKQogICAgICwgbV9kb2N1bWVudCgq
d29ya2xldC5kb2N1bWVudCgpKQotICAgICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRo
cmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkK
KyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4o
d29ya2xldC5pZGVudGlmaWVyKCkpKQorICAgICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xl
dFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQs
ICptX2luc3BlY3RvclByb3h5KSkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsKKyAgICBtX2luc3BlY3RvclByb3h5LT53b3Jr
ZXJTdGFydGVkKHdvcmtsZXQuZG9jdW1lbnQoKSwgbV93b3JrbGV0VGhyZWFkLnB0cigpLCB7IH0s
ICJBdWRpb1dvcmtsZXQiX3MpOwogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkKIHsKKyAgICBtX2luc3BlY3RvclByb3h5LT53b3Jr
ZXJUZXJtaW5hdGVkKCk7CiAgICAgbV93b3JrbGV0VGhyZWFkLT5zdG9wKCk7CiB9CiAKQEAgLTEw
MCw2ICsxMDcsMjIgQEAgdm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tU
b0F1ZGlvV29ya2xldChGdW5jdGlvbjx2b2lkKEF1ZGlvV29ya2wKICAgICB9KTsKIH0KIAordm9p
ZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgbV9pbnNwZWN0b3JQcm94eS0+c2VuZE1lc3NhZ2VGcm9tV29y
a2VyVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICB9KTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihi
b29sIGRpc2FibGVkKQoreworICAgIHBvc3RUYXNrVG9Mb2FkZXIoW2Rpc2FibGVkXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KS5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5
V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHku
aAppbmRleCBhNmJjODU4OTE3YTVkMGViNzUwNGU2NDY4ZDA4YWY1NGUwMjU5YjZiLi4xMzdmYTQx
NGNkYjliODM2ZDkxZGFjYzExOGU3ODEwNTdkNGM3M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCisjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckxv
YWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCIKIApAQCAt
MzcsOCArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBj
bGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFdvcmtlcklu
c3BlY3RvclByb3h5OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1Ymxp
YyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5IHsKK2Ns
YXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29w
ZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclBy
b3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIHsKQEAgLTYyLDEwICs2NCwxNSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrJiYpIGZpbmFsOwogICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0
cmluZyYgbW9kZSkgZmluYWw7CiAKKyAgICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5LgorICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQg
c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihib29sKSBmaW5hbDsKKwog
ICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHI8QXVkaW9Xb3JrbGV0PiBtX3dvcmtsZXQ7CiAgICAg
UmVmPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNw
ZWN0b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsKICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFk
PiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggYTA2OGRjZDA0NGQwZmEz
MjY3MTZlZmUwNzdiYzhjZDNkODQyZjhmZi4uYTFmNDUyMWIyZTBjMjEyYThiODI1MjU4YzI5Nzhk
NTU0MjhiYjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtMTMyLDYgKzEzMiwxNCBAQCB2b2lkIEF1ZGlv
V29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBp
ZiAobV9wYXJhbWV0ZXJzLnN0YXJ0TW9kZSA9PSBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRG
b3JJbnNwZWN0b3IpIHsKKyAgICAgICAgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOworCisg
ICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNvbWVob3cgdGVybWluYXRlZCB3aGlsZSBwcm9j
ZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgorICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0
ZWQoKSkKKyAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOwor
ICAgIH0KKwogICAgIHJ1bkV2ZW50TG9vcCgpOwogCiAjaWYgVVNFKEdMSUIpCkBAIC0xNzcsNiAr
MTg1LDI3IEBAIFdvcmtlckxvYWRlclByb3h5JiBBdWRpb1dvcmtsZXRUaHJlYWQ6Ondvcmtlckxv
YWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKIH0KIAorV29ya2VyRGVi
dWdnZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKK30KKwordm9pZCBBdWRpb1dvcmts
ZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKQoreworICAgIEFTU0VSVCghbV9w
YXVzZWRGb3JEZWJ1Z2dlcik7CisgICAgbV9wYXVzZWRGb3JEZWJ1Z2dlciA9IHRydWU7CisKKyAg
ICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKKyAgICBkbyB7CisgICAgICAgIHJlc3Vs
dCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9kZSgqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwor
ICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2Vk
Rm9yRGVidWdnZXIpOworfQorCit2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBtX3BhdXNlZEZvckRlYnVnZ2VyID0gZmFsc2U7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJl
YWQuaAppbmRleCAwMzBjNjFmOWQ1MTgwMjI5MmNiMzQzODE0ZDkxMGMyYmVhN2IzZWI5Li43OTA3
ZTU3ZTk1ZTlhNDNhNDY4YTNiMTJhMTgyYTdmMjhmY2NlMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTU0LDEx
ICs1NCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwog
CisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7CisgICAgdm9pZCBz
dG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKKwogICAgIC8vIFdvcmtlck9yV29ya2xl
dFRocmVhZC4KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9y
dW5Mb29wOyB9CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmlu
YWw7CiAgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5n
ZXQoKTsgfQogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgp
IHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KKyAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3
b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9X
b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBh
cmFtZXRlcnMmKTsKQEAgLTcyLDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBXb3JrbGV0UGFyYW1l
dGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPiBt
X3dvcmtsZXRHbG9iYWxTY29wZTsKICAgICBMb2NrIG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0
R2xvYmFsU2NvcGVMb2NrOworICAgIGJvb2wgbV9wYXVzZWRGb3JEZWJ1Z2dlciB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDAyYWJlMTY2NDE0
MmRiZWE5YWJmZmMwMGVjMzc1M2JkMTRlMzYyM2YuLjA4N2NkOTQ4YjUxZDAxZTM3OTZjNTFkYzU5
MWQzMDg0Y2RiZmZjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAi
V2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdl
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgpAQCAtMTMyMCw5ICsxMzIx
LDkgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnMKICAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJl
bmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKIH0KIAotSW5zdHJ1bWVudGluZ0FnZW50
cyYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQorSW5zdHJ1
bWVudGluZ0FnZW50cyYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdl
bnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9i
YWxTY29wZS5pbnNwZWN0b3JDb250cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzOworICAg
IHJldHVybiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pbnNwZWN0b3JDb250cm9sbGVyKCku
bV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfQogCiBJbnN0cnVtZW50aW5nQWdlbnRzJiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmIHBhZ2Up
CkBAIC0xMzM1LDggKzEzMzYsOCBAQCBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KFNjcgogewogICAgIGlm
IChpczxEb2N1bWVudD4oY29udGV4dCkpCiAgICAgICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yUGFnZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKTsKLSAgICBpZiAo
aXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gJmluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkpOworICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCkpCisgICAgICAgIHJldHVybiAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250
ZXh0KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA1YWQ3OWUwZDE2YTk1
MzJiODFjOGI1YWY4MGFhY2FjZTU5ODY5ZDFlLi5mMDdlMmY1YzhiZDI0NDBkYzMyZWE4ZDcwZGZm
MTI5ODI3ZTI4NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC05OSw3ICs5OSw3IEBAIGNsYXNzIFNoYWRvd1Jvb3Q7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1l
ZEZsb3c7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlOwogCiAjaWYgRU5BQkxFKFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAt
MjAxLDExICsyMDEsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBzdGF0aWMgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IFJlc291cmNlUmVxdWVzdCYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29y
a2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdv
cmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJHbG9i
YWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50
IGRhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKICAgICAvLyBTb21lIG5ldHdvcmsgcmVxdWVzdHMgZG8gbm90IGdvIHRo
cm91Z2ggdGhlIG5vcm1hbCBuZXR3b3JrIGxvYWRpbmcgcGF0aC4KICAgICAvLyBUaGVzZSBuZXR3
b3JrIHJlcXVlc3RzIGhhdmUgdG8gaXNzdWUgdGhlaXIgb3duIHdpbGxTZW5kUmVxdWVzdCAvIGRp
ZFJlY2VpdmVSZXNwb25zZSAvIGRpZEZpbmlzaExvYWRpbmcgLyBkaWRGYWlsTG9hZGluZwpAQCAt
MjQzLDIwICsyNDMsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPik7Ci0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxT
Y29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CisgICAg
c3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAKICAgICBz
dGF0aWMgdm9pZCBjb25zb2xlQ291bnQoUGFnZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQoV29ya2VyR2xv
YmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Cisg
ICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwg
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2
b2lkIGNvbnNvbGVDb3VudFJlc2V0KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50UmVzZXQoV29ya2Vy
R2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7
CisgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50UmVzZXQoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICAg
ICBzdGF0aWMgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEZyYW1lJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSk7CiAgICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIHN0YXJ0
Q29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmIGxhYmVsKTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmco
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCk7CiAgICAgc3RhdGljIHZvaWQgbG9nQ29uc29sZVRpbWluZyhGcmFtZSYs
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9y
OjpTY3JpcHRBcmd1bWVudHM+JiYpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmco
V29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKKyAgICBzdGF0aWMgdm9p
ZCBsb2dDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4mJik7CiAgICAgc3RhdGljIHZvaWQgc3RvcENvbnNvbGVUaW1pbmcoRnJhbWUmLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZv
aWQgc3RvcENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgc3RvcENvbnNvbGVU
aW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBsYWJlbCk7CiAgICAgc3RhdGljIHZvaWQgY29uc29sZVRpbWVTdGFtcChG
cmFtZSYsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CiAgICAgc3RhdGljIHZv
aWQgc3RhcnRQcm9maWxpbmcoUGFnZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdG9wUHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CkBAIC01MzIsNyArNTMyLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlbmRlckxheWVyJik7CiAKICAgICBzdGF0aWMgSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYpOwotICAgIHN0
YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGNvbnN0IEZyYW1lJik7CiAgICAgc3Rh
dGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25z
dCBGcmFtZSopOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCYp
OwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RG9jdW1lbnQoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKFJlbmRlck9iamVjdCYpOwotICAgIHN0YXRpYyBJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2Nv
cGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKik7CiB9OwogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCkBAIC0xMDUwLDEwICsxMDUwLDEwIEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiBmcmFtZSwgdW5z
aWduZWQgbG9uCiAgICAgICAgIHdpbGxTZW5kUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOwotICAgIHdpbGxTZW5kUmVxdWVzdEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0
ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSB7IH0pOworICAgIHdpbGxTZW5kUmVxdWVzdElt
cGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSB7IH0pOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxTZW5kUmVxdWVzdE9mVHlwZShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBMb2FkVHlwZSBsb2FkVHlwZSkKQEAgLTEwNzUsOSArMTA3NSw5IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJh
bWUmIGZyYW1lLCB1CiAgICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSwgcmVzb3VyY2VM
b2FkZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29w
ZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewotICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUp
LCBpZGVudGlmaWVyLCBudWxscHRyLCByZXNwb25zZSwgbnVsbHB0cik7CisgICAgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51
bGxwdHIsIHJlc3BvbnNlLCBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlciYgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCkBAIC0xMDk0LDEwICsxMDk0LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBs
b25nCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRl
bnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVudGlmaWVy
LCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YUltcGwo
aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxl
bmd0aCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTExMDcsMTAgKzExMDcs
MTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2EKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ0lt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgbmV0d29ya0xvYWRN
ZXRyaWNzLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlk
ZW50aWZpZXIsIG51bGxwdHIsIG5ldHdvcmtMb2FkTWV0cmljcywgbnVsbHB0cik7CisgICAgZGlk
RmluaXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0
ciwgbmV0d29ya0xvYWRNZXRyaWNzLCBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCkBAIC0xMTE5LDkgKzExMTksOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2Fk
ZQogICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50
aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxT
Y29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmco
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewot
ICAgIGRpZEZhaWxMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxscHRyLCBlcnJvcik7Cisg
ICAgZGlkRmFpbExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51
bGxwdHIsIGVycm9yKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSYgZnJhbWUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xNTcxLDkgKzE1NzEsOSBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYgcGFnZSwgc3Rk
Ojp1bmlxdQogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKHBhZ2UpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+IG1lc3NhZ2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4gbWVzc2FnZSkKIHsKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBXVEZNb3ZlKG1l
c3NhZ2UpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
LCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3Rh
dGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xNTgxLDkgKzE1ODEsOSBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChQYWdlJiBwYWdlLCBKU0M6
OkpTR2xvYmFsT2JqZQogICAgIGNvbnNvbGVDb3VudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UocGFnZSksIHN0YXRlLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9i
YWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6
SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIGNvbnNv
bGVDb3VudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtl
ckdsb2JhbFNjb3BlKSwgc3RhdGUsIGxhYmVsKTsKKyAgICBjb25zb2xlQ291bnRJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQoUGFnZSYgcGFnZSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xNTkxLDkgKzE1OTEs
OSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJl
c2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYQogICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGxhYmVsKQogewotICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwg
bGFiZWwpOworICAgIGNvbnNvbGVDb3VudFJlc2V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBz
dGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnRha2VIZWFwU25hcHNob3QoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAt
MTYwOSw5ICsxNjA5LDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydENvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2wKICAgICAgICAgc3RhcnRD
b25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIGV4ZWMsIGxhYmVs
KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNv
bGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIHN0YXJ0Q29uc29sZVRpbWluZ0lt
cGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNj
b3BlKSwgZXhlYywgbGFiZWwpOworICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMTYyMCw5ICsxNjIwLDkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwg
SlNDOjpKU0dsb2IKICAgICAgICAgbG9nQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1l
bnRzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGlt
aW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAgICBsb2dDb25zb2xl
VGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICBsb2dD
b25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCwgV1RGTW92
ZShhcmd1bWVudHMpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xNjMxLDkgKzE2MzEsOSBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFt
ZSwgSlNDOjpKU0dsbwogICAgICAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRp
bmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7
Ci0gICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJH
bG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBzdG9wQ29u
c29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwogfQogCiBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAoRnJh
bWUmIGZyYW1lLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQpA
QCAtMTc1Niw5ICsxNzU2LDkgQEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UKICAgICByZXR1cm4g
cGFnZSA/ICZpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgqcGFnZSkgOiBudWxscHRyOwogfQog
Ci1pbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUq
IHdvcmtlckdsb2JhbFNjb3BlKQoraW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiB3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKCp3b3JrZXJHbG9iYWxTY29wZSkgOiBudWxscHRy
OworICAgIHJldHVybiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA/ICZpbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKndvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKSA6IG51bGxwdHI7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZnJvbnRlbmRDcmVhdGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaAppbmRleCA3MDQ0NjQ0YmZmOTUyMGVhYWU4NmVmZDRiMmFl
MzkxOTIzZmM3ZWY0Li4xYmJmOTRlZmE1MjExYWQyMTZiNGEwMGZmNjZhOTMwNzY2YTcwYmM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zdHJ1bWVu
dGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNz
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiAvLyBGSVhNRTogbW92ZSB0aGlzIHRvIElu
c3BlY3RvciBuYW1lc3BhY2Ugd2hlbiByZW1haW5pbmcgYWdlbnRzIG1vdmUuCiBzdHJ1Y3QgV2Vi
QWdlbnRDb250ZXh0IDogcHVibGljIEluc3BlY3Rvcjo6QWdlbnRDb250ZXh0IHsKQEAgLTU3LDEz
ICs1NywxMyBAQCBzdHJ1Y3QgUGFnZUFnZW50Q29udGV4dCA6IHB1YmxpYyBXZWJBZ2VudENvbnRl
eHQgewogfTsKIAogc3RydWN0IFdvcmtlckFnZW50Q29udGV4dCA6IHB1YmxpYyBXZWJBZ2VudENv
bnRleHQgewotICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQs
IFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKKyAgICBXb3JrZXJBZ2VudENv
bnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiAgICAgICAgIDogV2ViQWdlbnRDb250ZXh0
KGNvbnRleHQpCi0gICAgICAgICwgd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUp
CisgICAgICAgICwgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpCiAgICAgewogICAgIH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJH
bG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU7CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2UgOiBwdWJsaWMg
SW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJEZWJ1Z2dlci5jcHAKaW5kZXggODBjOWExMDVjNTRhM2U1MzcwYWNjZDZjMTJmZjA2
ZjJiMzQzNWRhMi4uMjI3MzFhN2UyMWM1YzQ3ZmViMjJkOTI1ODJkYzg5OGM2MTUyZGI3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCkBAIC0zNCwxNiAr
MzQsMTcgQEAKIAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5j
bHVkZSAiV29ya2VyUnVuTG9vcC5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAotV29ya2VyRGVidWdnZXI6OldvcmtlckRlYnVnZ2VyKFdv
cmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQorV29ya2VyRGVidWdnZXI6OldvcmtlckRlYnVnZ2Vy
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIDogRGVidWdnZXIoY29u
dGV4dC5zY3JpcHQoKS0+dm0oKSkKICAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCkK
IHsKQEAgLTYwLDggKzYxLDggQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIo
Ym9vbCBpc0JlaW5nRGVzdHJveWVkKQogewogICAgIEpTQzo6RGVidWdnZXI6OmRldGFjaERlYnVn
Z2VyKGlzQmVpbmdEZXN0cm95ZWQpOwogCi0gICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUuc2Ny
aXB0KCkpCi0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmRldGFjaERlYnVn
Z2VyKHRoaXMpOworICAgIGlmIChhdXRvKiBzY3JpcHRDb250cm9sbGVyID0gbV93b3JrZXJHbG9i
YWxTY29wZS5zY3JpcHQoKSkKKyAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZGV0YWNoRGVidWdn
ZXIodGhpcyk7CiAgICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQogICAgICAgICByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9ucygpOwogfQpAQCAtODAsNyArODEsNyBAQCB2b2lkIFdvcmtlckRlYnVnZ2Vy
OjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiAKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUu
dGhyZWFkKCkucnVuTG9vcCgpLnJ1bkluRGVidWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUp
OworICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRo
cmVhZCgpLT5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUobV93b3JrZXJHbG9iYWxTY29wZSk7
CiAgICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgIWRvbmVQ
cm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckRlYnVnZ2VyLmgKaW5kZXggMWM0NTY5OTlhZWY2MmI1NDQ2YWY5N2Q2NTQ2NGY4YzU2
YzllMWFkMy4uMTQwOTRhMzY1N2NlNzUwZmQ4YmFiZWU2M2RiNGZjZGFjYWZlODExNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmgKQEAgLTM1LDEzICszNSwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xh
c3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlckRlYnVnZ2VyIGZp
bmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdv
cmtlckRlYnVnZ2VyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBXb3JrZXJEZWJ1Z2dlcihXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIFdvcmtlckRlYnVnZ2Vy
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAgfldvcmtlckRlYnVnZ2VyKCkgb3Zl
cnJpZGUgPSBkZWZhdWx0OwogCiAKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgZmluYWw7CiAgICAgdm9pZCByZXBvcnRFeGNlcHRp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7CiAK
LSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA5MGU5ODU0NGI1M2E1MDJlYjk4YTVkOGMy
MjViNzAzM2IzOWEwNjdmLi5mZWEzZDBjYjRiMjE5YzkyMmUyMmE2ZjhlNjQ3YTMxZTFmODA3MTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiV29ya2VyQ29uc29s
ZUFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUg
IldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtlck5ldHdvcmtBZ2VudC5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVs
LmgiCkBAIC01NywxNiArNTcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLVdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQorV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0Fn
ZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VV
bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpj
cmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3
YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQotICAgICwgbV9kZWJ1Z2dlcih3b3JrZXJHbG9iYWxT
Y29wZSkKLSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCisgICAg
LCBtX2RlYnVnZ2VyKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICBB
U1NFUlQod29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVCh3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBhdXRv
IHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAg
ICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRj
aC0+c3RhcnQoKTsKIAotICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtl
clRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3
YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPiht
X3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25u
ZWN0RnJvbnRlbmQoKm1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFdvcmtlckFnZW50
Q29udGV4dCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp3b3JrZXJBZ2VudENvbnRleHQoKQog
CiAgICAgV29ya2VyQWdlbnRDb250ZXh0IHdvcmtlckNvbnRleHQgPSB7CiAgICAgICAgIHdlYkNv
bnRleHQsCi0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUsCisgICAgICAgIG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUsCiAgICAgfTsKIAogICAgIHJldHVybiB3b3JrZXJDb250ZXh0OwpA
QCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRl
TGF6eUFnZW50cygpCiAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyUnVudGlt
ZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJHbG9iYWxTY29wZSkp
IHsKKyAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKSkgewogICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxTZXJ2
aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5k
KG1ha2VVbmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgfQpA
QCAtMTk5LDcgKzE5OSw3IEBAIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyOjpldmFsdWF0ZUhhbmRsZXIoKSBjb25zdAogCiBWTSYgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6dm0oKQogewotICAgIHJldHVybiBtX3dvcmtlckdsb2JhbFNjb3BlLnZt
KCk7CisgICAgcmV0dXJuIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUudm0oKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggN2E1M2Q4MDRiZmJjZTBmNjJlMTE1
M2M1MTNiMTc4ZDc0MjM4M2VkZS4uOWZkMGI5YzM1NDRlYWI2OTM5MGQyZWQ0Y2U5ZGJmMDk3NWQw
MTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oCkBAIC00MSwxNCArNDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgV2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKIHN0cnVjdCBXb3JrZXJBZ2VudENvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JFbnZpcm9u
bWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIGV4cGxp
Y2l0IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
KTsKICAgICB+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCB3b3JrZXJUZXJtaW5hdGluZygpOwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgV29ya2VyRGVidWdn
ZXIgbV9kZWJ1Z2dlcjsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0g
ICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2ZvcndhcmRpbmdDaGFu
bmVsOwogICAgIGJvb2wgbV9kaWRDcmVhdGVMYXp5QWdlbnRzIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFu
bmVsLmgKaW5kZXggYzAyNjIxMTM1YzU1ZWJkNzA2ZTA0MzUxYjVjMTNmNjEzYmVhNjUzNC4uZDI2
MzBkNTFjZmQ0ZDcxY2U1ODFhOWY2NDk1YTMxNjJmNmQ4MzBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaApAQCAt
MjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dlclBy
b3h5LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV29ya2VyVG9Q
YWdlRnJvbnRlbmRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
KyAgICBleHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgICAgICA6IG1fd29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCiAgICAgewogICAgIH0KQEAgLTQ2LDEwICs0NiwxMCBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS50
aHJlYWQoKS53b3JrZXJEZWJ1Z2dlclByb3h5KCkucG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKG1lc3Nh
Z2UpOworICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgp
LT53b3JrZXJEZWJ1Z2dlclByb3h5KCkucG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKG1lc3NhZ2UpOwog
ICAgIH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAg
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggYmJl
MmNjMDNkNjQ1ZmMxMjkwODRkYmVlOWRkODA0MjJiYmQ2M2ZkOC4uZWZmZDJiZWUwYTBhNzA5YmQ5
YWQ3YTMxMjMzMjRkMDcyMTJhYjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC0z
OCwxMCArMzgsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogU2VydmljZVdvcmtl
ckFnZW50OjpTZXJ2aWNlV29ya2VyQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJTZXJ2aWNlV29ya2VyIl9zLCBjb250ZXh0KQotICAg
ICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKSkKKyAgICAsIG1fc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dC53
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6U2VydmljZVdvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xv
YmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogU2VydmljZVdvcmtl
ckFnZW50Ojp+U2VydmljZVdvcmtlckFnZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50
LmNwcAppbmRleCBmNjRkNTc1MzBiN2I2MTcwZWFhZGU5MjNlNDA5YjViZGRlYTcyZTQwLi4zYjVl
NTRlNDE1ZmMyYWU4NmQzM2EyN2VjYjlkZWU1OTZmN2MxMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50
LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckF1ZGl0QWdlbnQuaCIKIAog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgpAQCAtNDEsOSArNDEsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3Jr
ZXJBdWRpdEFnZW50OjpXb3JrZXJBdWRpdEFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckF1ZGl0QWdlbnQoY29udGV4dCkKLSAgICAsIG1fd29ya2VyR2xv
YmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAg
ICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhy
ZWFkKCkpOwogfQogCiBXb3JrZXJBdWRpdEFnZW50Ojp+V29ya2VyQXVkaXRBZ2VudCgpID0gZGVm
YXVsdDsKQEAgLTU1LDcgKzU1LDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXIKICAgICAgICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlckdsb2Jh
bFNjb3BlKSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2Ny
aXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaAppbmRleCBkMjU5YzZhNzZj
MmVjYjBlZWI4ZWRkNzMzOWVjMDQ1OWJkMzcyYjNkLi5mMTkxZTA0OTUwMTQzMmVkNzIyMjk4ZmY0
MzgzOGZmOGZjZjJlZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2VyQXVkaXRBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFdvcmtlckF1ZGl0QWdlbnQpOwpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAotICAgIFdv
cmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZWFkNDJkYzMz
ZDY4N2YwNDNlZDU2N2UzYjhmNGIxNTgwNzY5NjY3Ni4uZmJhNTYxNGU3N2YxM2I5YWRlZTAyNTEw
YWZiZTY2OGExYmNkZDczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBXb3JrZXJDb25zb2xlQWdlbnQ6Oldv
cmtlckNvbnNvbGVBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBXZWJD
b25zb2xlQWdlbnQoY29udGV4dCkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxT
Y29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJDb25zb2xlQWdl
bnQ6On5Xb3JrZXJDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDNhZTM1YzY3YTMwMzQxZDdlZTEyZjZjYzU2ODhkZTFlYzc4YzYzZTAuLjM1
NThjYjM0Zjk3M2VkNjJjODY5MTIzYjY1NzUzY2NmMzUzM2M1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJB
Z2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVj
dGVkU2NyaXB0TWFuYWdlci5oPgpAQCAtNDEsMTYgKzQxLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OldvcmtlckRlYnVnZ2VyQWdlbnQoV29y
a2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViRGVidWdnZXJBZ2VudChjb250ZXh0
KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQor
ICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlz
Q29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlckRlYnVnZ2VyQWdlbnQ6On5X
b3JrZXJEZWJ1Z2dlckFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFk
ZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpKSk7CisgICAgbV93b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpM
b2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSkp
OwogfQogCiBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlw
dEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgT3B0aW9uYWw8UHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQp
CkBAIC02MCw3ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9iYWxTY29w
ZSkpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZv
cihnbG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5kZXggN2NhNjRlNDAx
M2E1NGI0MThkNTNlNDc0ODAyZTczMmJmMTkwOGM5Ny4uOTk0N2Y3MTU0NTYxNGFkOTNmZjdlZmUy
NWYyZTA1ODQ4Mjc4NWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBPcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYpOwogCi0g
ICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAppbmRleCA1ZGNl
ODI2ZjRiMTBlMGNkNDg1Yzg1OWFhMzcyOTMyYmVlNjRiNWE5Li4xNDEwYTI3ODk0MGZkYzFjZmE1
YjM2MDJhYmNjNTc2NDM3ZjdiMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKQEAgLTM2
LDkgKzM2LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyTmV0d29ya0Fn
ZW50OjpXb3JrZXJOZXR3b3JrQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yTmV0d29ya0FnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNj
b3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNT
RVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFT
U0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgp
KTsKIH0KIAogV29ya2VyTmV0d29ya0FnZW50Ojp+V29ya2VyTmV0d29ya0FnZW50KCkgPSBkZWZh
dWx0OwpAQCAtNjEsMTIgKzYxLDEyIEBAIFZlY3RvcjxXZWJTb2NrZXQqPiBXb3JrZXJOZXR3b3Jr
QWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpCiAKIHZvaWQgV29ya2Vy
TmV0d29ya0FnZW50OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wgZGlz
YWJsZWQpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJEZWJ1Z2dl
clByb3h5KCkuc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxl
ZCk7CisgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKS0+d29ya2VyRGVidWdnZXJQcm94eSgpLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlX
ZWJJbnNwZWN0b3IoZGlzYWJsZWQpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXb3Jr
ZXJOZXR3b3JrQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiwgY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKQogewotICAgIHJldHVybiAm
bV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICByZXR1cm4gJm1fd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgK
aW5kZXggZGQ4N2Q4MTAyMDJlNWIxN2RlOWNmMDdiNzYyYjUyNWVlZTJlM2JlOC4uZDdiZWJkMGRl
YTEwYWZiMDEyYjQ2YWNjNDk2NzVhMjlhOWVkNGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwg
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYpOwogICAgIGJvb2wg
c2hvdWxkRm9yY2VCdWZmZXJpbmdOZXR3b3JrUmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7Cisg
ICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNw
cAppbmRleCBhYTU4YTFmMGQ3YTgxYjAwNjgxZjY2OGE5ZmM0YTcyNTg2YjEzZGNkLi44ZTg0ZGEw
MDMxOWFhOGFmMjM0NDQ5Y2MyNzgwNmE3MWMyNTFhNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIK
IAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAKQEAgLTQ0LDkgKzQ0LDkgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KFdv
cmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChj
b250ZXh0KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fd29y
a2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkK
IHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250
ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJSdW50aW1lQWdlbnQ6On5Xb3JrZXJSdW50aW1lQWdl
bnQoKSA9IGRlZmF1bHQ7CkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1
bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYK
ICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dv
cmtlckdsb2JhbFNjb3BlKSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmlu
amVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmgKaW5k
ZXggNmI5OThmNGQxNzMxODUxZjk5YjY3ZWUxNWE1ZDIwMDE1ODdmNGQwNi4uYmNjYzJiN2QwNzE1
YTM0ZTdjNDc3MjMyNmQyNDFkYTk2YzdiZTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmgKQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3Jr
ZXJSdW50aW1lQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1l
QWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclJ1bnRpbWVBZ2VudCk7CkBA
IC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bm11dGVDb25zb2xlKCkgeyB9CiAK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7Ci0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7
CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjcxN2M4NjFjNzRiMGYyYWViY2RlNDA4NzAw
ZTJhOWEwMzczNzU5NS4uMThmZjNmOTRmMDQyZDFhMWZkMDNhNTFiYzExZDViZDE0NmYzM2I0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
Ojppc29sYXRlZENvcHkoKSBjb25zdAogCiBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQog
ewotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkgfHwgKGlzPFdvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPihjb250
ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkpCisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmPihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7CiAKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwpAQCAtMTE4LDggKzExOCw4IEBAIFJlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4CiB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHJlc291cmNlVVJMID0g
cmVxdWVzdC51cmwoKTsKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQot
ICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwg
Y2xpZW50LCBvcHRpb25zKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+
KGNvbnRleHQpKQorICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAg
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxEb2N1bWVudD4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9u
cyk7CiAgICAgY29udGV4dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlc291cmNlVVJM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBlMTEzOTZiZmQ4MzM2ZTNlODY3NGE0OWNiNWM4MTg0YmYxNTgwYTdlLi5lZjQ5NDky
MjViMjhiNTBmMzg2NmMwZjdkMzY2ZTBiNzkyNjZjYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMzcsOCArMTM3LDcgQEAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRn
ZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICAgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29ya2VyLT5y
ZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7CiAjZW5kaWYKIAotICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kUmVxdWVzdChkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUp
LCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChnbG9iYWxTY29wZSwgbV93b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJlcXVl
c3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNvbGF0
ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVl
c3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29w
eSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBv
bGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKQEAg
LTIyNiw4ICsyMjUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nCiAgICAgICAgIEFTU0VSVChj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNj
b3BlKCkpOwogICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNy
b3NzVGhyZWFkRGF0YShXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOwogICAgICAgICBwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9u
c2UpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVu
dGlmaWVyLCByZXNwb25zZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0s
IG1fdGFza01vZGUpOwogfQogCkBAIC0yMzgsOCArMjM2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBk
YXRhLAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29y
a2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAg
LTI0OSw4ICsyNDYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZAogICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29y
a0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCksIGlkZW50
aWZpZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3Jr
bGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTI2MSw4ICsy
NTcsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJybwogICAgICAgICBBU1NFUlQoY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsK
ICAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJyb3IoY29udGV4dCwgZXJyb3IsIHByb3Rl
Y3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmluaXRpYXRvcigpKTsKICAgICAgICAgcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbChlcnJvcik7Ci0gICAgICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CiAgICAg
fSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuY3BwCmluZGV4IDdiNDI5MzAwYWZmY2IwNTE4OWQ0ODE2MDU5ZjQwNWQ2Njg2
YzRmNTEuLjA5ZTIwNzZiZjdhYmEwMWE2NzliNThhMjhhODg4Zjk5NTA0ZTQ2NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAtNTMsMzcg
KzUzLDI3IEBAIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2
ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsCiAKIHZvaWQgV29ya2VyQ29uc29sZUNs
aWVudDo6Y291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJl
bCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4K
LSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9
CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3Vw
cG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29w
ZT4obV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50UmVzZXQoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUp
LCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291
bnRSZXNldChtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29u
c29sZUNsaWVudDo6dGltZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNj
b3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKG1fZ2xvYmFsU2NvcGUs
IGV4ZWMsIGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lTG9nKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxTY3JpcHRB
cmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
V29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRp
bWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxh
YmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bG9nQ29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1
bWVudHMpKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0
b3BDb25zb2xlVGltaW5nKG1fZ2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAogLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTM0OTk+IFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUu
cHJvZmlsZSBzaG91bGQgdXNlIHRoZSBuZXcgU2FtcGxpbmcgUHJvZmlsZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMjQwZWM5MzA0MjE4ZTY3
ZWQ1NzU3NmQyMjlhYTg1YTZjNDJiYzNhYS4uYjcxZTYzMTUxNjNiNmIxMWZkMGZmNTdjNmJmNTc1
ZDViNGEzYTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKQEAgLTY2LDcgKzY2LDYgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXQKICAgICAsIG1f
aWRlbnRpZmllcihwYXJhbXMuaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHBhcmFtcy51
c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX2luc3BlY3RvckNvbnRy
b2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAgICAg
LCBtX2lzT25saW5lKHBhcmFtcy5pc09ubGluZSkKICAgICAsIG1fc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KHBhcmFtcy5zaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgLCBtX3RvcE9yaWdpbihXVEZNb3ZlKHRvcE9yaWdpbikp
CkBAIC0xMzcsNyArMTM2LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cHJlcGFyZUZvclRl
cm1pbmF0aW9uKCkKICAgICBpZiAobV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQogICAgICAgICBt
X2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyUGVuZGluZ1JlcXVlc3RzKCk7CiAKLSAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPndvcmtlclRlcm1pbmF0aW5nKCk7CisgICAgaW5zcGVjdG9y
Q29udHJvbGxlcigpLndvcmtlclRlcm1pbmF0aW5nKCk7CiAKICAgICAvLyBFdmVudCBsaXN0ZW5l
cnMgd291bGQga2VlcCBET01XcmFwcGVyV29ybGQgb2JqZWN0cyBhbGl2ZSBmb3IgdG9vIGxvbmcu
IEFsc28sIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIEpTIG9iamVjdHMsCiAgICAgLy8gd2hpY2gg
YmVjb21lIGRhbmdsaW5nIG9uY2UgSGVhcCBpcyBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZTQ4Y2ZiODVlMWJlMDVjOWZiZThiNWIx
MjBiYzdmYjc5ODA0ZTcyOS4uN2Y4ZWYyNDg2ZGU4YjRlYWY0ZWUwMjYzZGE4MmZjYzBjNzdkOThm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNTAs
NyArNTAsNiBAQCBjbGFzcyBFdmVudExvb3BUYXNrR3JvdXA7CiBjbGFzcyBQZXJmb3JtYW5jZTsK
IGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKIGNsYXNzIFdvcmtlckV2ZW50TG9vcDsKLWNsYXNzIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsKIGNsYXNzIFdv
cmtlck5hdmlnYXRvcjsKIGNsYXNzIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjsKQEAgLTg2LDgg
Kzg1LDYgQEAgcHVibGljOgogICAgIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbiYgc3dDbGllbnRD
b25uZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXImIGlu
c3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVy
OyB9Ci0KICAgICBXb3JrZXJUaHJlYWQmIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFk
OyB9CiAKICAgICB1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZp
dHk7CkBAIC0xOTMsNyArMTkwLDYgQEAgcHJpdmF0ZToKIAogICAgIFdvcmtlclRocmVhZCYgbV90
aHJlYWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXI+IG1fc2NyaXB0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyPiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAKICAgICBib29sIG1fY2xvc2luZyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzT25saW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCA2MzJiODJlMjhiNzJkYTYxMzcxYzI0ZWJmYmFm
MmRkNTU5MTBkMDcxLi5iMWJlM2U5MjRjZWE0N2EzOTUyMDAxM2M3NjdkYjYwYzc4OGI3ZjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcApA
QCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JX
b3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFz
ZS5oPgpAQCAtNjIsNyArNjMsNyBAQCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgV29ya2VySW5zcGVj
dG9yUHJveHk6OndvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIHJldHVy
biBwYXVzZU9uU3RhcnQgPyBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3Ig
OiBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbDsKIH0KIAotdm9pZCBXb3JrZXJJbnNwZWN0
b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3ZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0ZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV29ya2VyT3JX
b3JrbGV0VGhyZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlclRocmVhZCk7CiAKQEAgLTkzLDcgKzk0LDcgQEAgdm9p
ZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyVGVybWluYXRlZCgpCiB2b2lkIFdvcmtlcklu
c3BlY3RvclByb3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCgpCiB7CiAgICAgbV93b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KS50aHJlYWQoKS5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICAgICAgZG93bmNhc3Q8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVh
ZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKICAgICB9KTsKIH0KIApAQCAtMTA2LDcg
KzEwNyw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RUb1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIoUGFnZUNoYW5uZWwmIGNoYW5uCiAgICAgbV9wYWdlQ2hhbm5lbCA9ICZj
aGFubmVsOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNr
KFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVj
dEZyb250ZW5kKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250ZW5kKCk7CiAgICAg
fSk7CiB9CiAKQEAgLTExOSwxMSArMTIwLDExIEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6
OmRpc2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAgbV9wYWdlQ2hh
bm5lbCA9IG51bGxwdHI7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1
Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIo
KS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVk
KTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQp
Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAogICAgICAgICAvLyBJbiBjYXNlIHRoZSB3b3JrZXIg
aXMgcGF1c2VkIHJ1bm5pbmcgZGVidWdnZXIgdGFza3MsIGVuc3VyZSB3ZSBicmVhayBvdXQgb2YK
ICAgICAgICAgLy8gdGhlIHBhdXNlIHNpbmNlIHRoaXMgd2lsbCBiZSB0aGUgbGFzdCBkZWJ1Z2dl
ciB0YXNrIHdlIHNlbmQgdG8gdGhlIHdvcmtlci4KLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOwor
ICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29y
a2VyT3JXb3JrbGV0VGhyZWFkKCktPnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOwogICAgIH0p
OwogfQogCkBAIC0xMzQsNyArMTM1LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6c2Vu
ZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoY29uc3QgU3RyaW5nJgogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRh
c2soW21lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCht
ZXNzYWdlKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQo
bWVzc2FnZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
SW5zcGVjdG9yUHJveHkuaAppbmRleCA1ZThhMWRjMGVkMGQ5YWE1MzJjMzY3NDY0Yzg2N2ZiNGY3
ZjlhYTVmLi5iZWZjMDFkOTU3MGE4YzRhOGI3ZGRlZTg1ZWExMDYxOGE3N2E0NGQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCkBAIC0zNiw3ICsz
Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci1jbGFzcyBXb3JrZXJUaHJlYWQ7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQ7CiAK
IGVudW0gY2xhc3MgV29ya2VyVGhyZWFkU3RhcnRNb2RlOwogCkBAIC02Miw3ICs2Miw3IEBAIHB1
YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpOyB9CiAKICAg
ICBXb3JrZXJUaHJlYWRTdGFydE1vZGUgd29ya2VyU3RhcnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKLSAgICB2b2lkIHdvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdvcmtlclRocmVhZCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9p
ZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJPcldvcmtsZXRU
aHJlYWQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgd29ya2Vy
VGVybWluYXRlZCgpOwogCiAgICAgdm9pZCByZXN1bWVXb3JrZXJJZlBhdXNlZCgpOwpAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBSZWZQdHI8V29ya2VyVGhy
ZWFkPiBtX3dvcmtlclRocmVhZDsKKyAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0VGhyZWFkPiBt
X3dvcmtlclRocmVhZDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFVSTCBtX3VybDsK
ICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCBkNWE4ZDU5ODU4YTlmMmU3MTZiNzYx
NjA4M2NlZGQwM2VlMGM5Yjc0Li42ZTU2MGMxMzlmMzI1ZGYyNjUwNDM4ODRjYTQyMDI3ZmNhZmI1
ZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmNwcApAQCAtMjYsMjAgKzI2LDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKIAorI2luY2x1ZGUgIldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCkKICAgICA6IG1fc2NyaXB0
KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAg
LCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcykpCiB7CiB9CiAKIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShSZWY8SlNDOjpWTT4mJiB2bSkKICAgICA6IG1fc2NyaXB0KG1h
a2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4oV1RGTW92ZSh2bSksIHRo
aXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcj4oKnRoaXMpKQogewogfQogCitXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZTo6fldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCkgPSBkZWZhdWx0OworCiB2b2lkIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlOjpjbGVhclNjcmlwdCgpCiB7CiAgICAgbV9zY3JpcHQgPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oCmluZGV4IGU3OWViY2Y5YzVlZTI1OTk2ZWJkY2FmYWYwM2RlYzZlYzUxZmIy
YmIuLjg0NjhiYmZjMjllYzE4NTA2OTVmODE4NDJiMDczNDIyNTgxZGI3ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAg
LTI5LDEyICsyOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
OwogY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwogCiBjbGFzcyBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpOwogCiAgICAgdmlydHVhbCBib29s
IGlzQ2xvc2luZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlck9yV29ya2xldFRocmVh
ZCogd29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgY29uc3QgPSAwOwpAQCAtNDIsNiArNDMsOCBAQCBw
dWJsaWM6CiAgICAgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyU2NyaXB0KCk7CiAK
KyAgICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gKm1faW5zcGVjdG9yQ29udHJvbGxlcjsgfQorCiAgICAgdW5zaWduZWQgbG9u
ZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7
IH0KIAogcHJvdGVjdGVkOgpAQCAtNTAsNiArNTMsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1f
c2NyaXB0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBt
X2luc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1ZUlkZW50aWZp
ZXIgeyAxIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRUaHJlYWQuaAppbmRleCAzNzgwOTYxYzc5NDk4NTdhMWUyMDVmOGMzMTI5NjJjMDcwYmVhZjgx
Li5hMDdlOWNhZDg5ZGZmNDMzZWM3NjQ5ZTdlZTVmZmU1NTkwYmIwODZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKQEAgLTMzLDYgKzMzLDcg
QEAgY2xhc3MgVGhyZWFkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdvcmtlckRl
YnVnZ2VyUHJveHk7CiBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIGNsYXNzIFdvcmtlclJ1bkxv
b3A7CiAKQEAgLTQzLDYgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdURjo6VGhyZWFk
KiB0aHJlYWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXb3JrZXJSdW5Mb29wJiBydW5Mb29w
KCkgPSAwOwogICAgIHZpcnR1YWwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5
KCkgPSAwOworICAgIHZpcnR1YWwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQ
cm94eSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dl
clRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3Mo
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggYjNlNzFjOTJkZjE2N2U5ODFhNmI1
MDg5ZTUxYmRmMDgzNDZlYzdmYy4uODdkZDk5NjljNWU5MDZkZWU3MmM0NDc3NWJjMmNlNmRmNWEx
YTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC01MCwxNiArNTAsMTYgQEAgV29ya2VyU2NyaXB0TG9hZGVyOjp+V29ya2VyU2Ny
aXB0TG9hZGVyKCkgPSBkZWZhdWx0OwogT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZSwg
RmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIGNvbnN0IFN0cmluZyYg
aW5pdGlhdG9ySWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7Ci0gICAgYXV0byYgd29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGF1dG8mIHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIG1fdXJsID0gdXJsOwogICAgIG1fZGVzdGluYXRp
b24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTY3JpcHQ7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGlzPFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpOworICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSkgewotICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJj
ZSh1cmwpKSB7CisgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRvd25jYXN0PFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLnNjcmlw
dFJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRSZXNv
dXJjZS0+c2NyaXB0KTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJj
ZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRS
ZXNvdXJjZS0+bWltZVR5cGU7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4g
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyR2xvYmFsU2NvcGU+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KSk7CiAKICAgICAvLyBPbmx5IHVzZWQgZm9yIGltcG9ydFNjcmlwdHMgdGhh
dCBwcmVzY3JpYmVzIE5vQ29ycyBtb2RlLgogICAgIEFTU0VSVChtb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6Tm9Db3JzKTsKQEAgLTg3LDEwICs4NywxMCBAQCBPcHRpb25hbDxFeGNlcHRpb24+
IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogICAgIG9wdGlvbnMuZGVzdGluYXRpb24gPSBtX2Rlc3RpbmF0aW9uOwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IGlzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlID8gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2Vydmlj
ZVdvcmtlcnNNb2RlOjpBbGw7Ci0gICAgaWYgKGF1dG8qIGFjdGl2ZVNlcnZpY2VXb3JrZXIgPSB3
b3JrZXJHbG9iYWxTY29wZS5hY3RpdmVTZXJ2aWNlV29ya2VyKCkpCisgICAgaWYgKGF1dG8qIGFj
dGl2ZVNlcnZpY2VXb3JrZXIgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5hY3RpdmVTZXJ2
aWNlV29ya2VyKCkpCiAgICAgICAgIG9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29ya2VyLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7
CiAjZW5kaWYKLSAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlv
bnMpOworICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFdURk1vdmUoKnJlcXVlc3QpLCAqdGhpcywg
b3B0aW9ucyk7CiAKICAgICAvLyBJZiB0aGUgZmV0Y2hpbmcgYXR0ZW1wdCBmYWlsZWQsIHRocm93
IGEgTmV0d29ya0Vycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgogICAg
IGlmIChmYWlsZWQoKSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0
IG1pbWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJM
LCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNl
KHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgp
LCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQogI2VuZGlmCiAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CmluZGV4IDEyMTRiOTE5ZGEzNGQzMmYyZmNhYzlhMjk4MTJmNmZkNmE4N2ExMjguLjhiMmE2NzJm
MDAzY2UxOTIyODkyNmVjYTMyNTZkMzU4ZTJmOTE4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgVGhyZWFkKiB0aHJl
YWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAgIFdvcmtlclJ1
bkxvb3AmIHJ1bkxvb3AoKSBmaW5hbCB7IHJldHVybiBtX3J1bkxvb3A7IH0KICAgICBXb3JrZXJM
b2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBmaW5hbCB7IHJldHVybiBtX3dvcmtlckxv
YWRlclByb3h5OyB9Ci0gICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94
eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQorICAgIFdvcmtlckRl
YnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KICAgICBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2Vy
UmVwb3J0aW5nUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlclJlcG9ydGluZ1Byb3h5OyB9
CiAKICAgICAvLyBOdW1iZXIgb2YgYWN0aXZlIHdvcmtlciB0aHJlYWRzLgpAQCAtMTAzLDggKzEw
Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vdGlmaWNhdGlvbkNsaWVudChOb3RpZmljYXRp
b25DbGllbnQqIGNsaWVudCkgeyBtX25vdGlmaWNhdGlvbkNsaWVudCA9IGNsaWVudDsgfQogI2Vu
ZGlmCiAKLSAgICB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKLSAgICB2b2lkIHN0
b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOworICAgIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJU
YXNrcygpIGZpbmFsOworICAgIHZvaWQgc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7
CiAgICAgCiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1
cm4gbV9ydW50aW1lRmxhZ3M7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRl
eCAzOTA4YmRmM2EyOTZjODFiNmY0YmE4ZThlMDhlM2ZjNTgyZWU1ZTNhLi40ODc1YzdiNGRlZDQ0
OTc3Yjg0YjQ4MTQ1MjRiMmFjMzk5N2UzYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2xldFBl
bmRpbmdUYXNrcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9y
eS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTQyLDYgKzQzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdvcmtsZXQpOwogCiBXb3JrbGV0OjpXb3JrbGV0KERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2lkZW50aWZpZXIo
IndvcmtsZXQ6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaAppbmRleCA0MTY4Njc0Yzcz
YjI5OTA5YmE2Mjk2MjU3MjFiMzgwNTNlMjI3YmVlLi5mZGI2NjNkN2EzNWE4NGZiNzcwZmYwMTFk
ODYxMmFlNGNjMjJjNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCkBAIC01Miw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKTsKIAogICAgIGNvbnN0IFZl
Y3RvcjxSZWY8V29ya2xldEdsb2JhbFNjb3BlUHJveHk+PiYgcHJveGllcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJveGllczsgfQorICAgIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgV29ya2xl
dChEb2N1bWVudCYpOwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURP
TU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmlu
YWw7CiAKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFZlY3RvcjxSZWY8V29ya2xldEds
b2JhbFNjb3BlUHJveHk+PiBtX3Byb3hpZXM7CiAgICAgSGFzaFNldDxSZWZQdHI8V29ya2xldFBl
bmRpbmdUYXNrcz4+IG1fcGVuZGluZ1Rhc2tzU2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDBkYjUxOTViYTlmZTRkYmI2ZTVl
ZDAyYjg2ZTYwY2QyZjJhZmU4YTEuLmFmYjlkNjg3YjMwMjNiZjBmN2IxYjJiMjFjZmNlNjg0MGQz
MGI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcApAQCAtMTYyLDIzICsxNjIsMzIgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmxvZ0V4
Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QKIAogdm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2RvY3Vt
ZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSB8fCAhbWVzc2FnZSkKKyAgICBpZiAoIWlz
Q29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFz
ayhtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgp
KSk7CiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZSht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBt
ZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkp
OworICAgIH0KKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29u
c29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4o
KSkKKyAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHBvc3RUYXNrKEFkZENv
bnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNz
YWdlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgfQorCisgICAgYWRkTWVzc2FnZShzb3VyY2Us
IGxldmVsLCBtZXNzYWdlLCB7IH0sIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIHJlcXVlc3RJZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
VGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2ln
bmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQordm9p
ZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
UmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmICghbV9k
b2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2RvY3VtZW50LT5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShjYWxsU3RhY2spLCBudWxs
cHRyLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CisgICAgaWYgKGNhbGxTdGFjaykKKyAgICAgICAgbWVz
c2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNz
YWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVs
bCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAog
UmVmZXJyZXJQb2xpY3kgV29ya2xldEdsb2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0
CkBAIC0yMTUsOCArMjI0LDkgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByb2Nlc3NOZXh0
U2NyaXB0RmV0Y2hKb2JJZk5lZWRlZCgpCiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hy
b25vdXNseSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmZXRjaE9wdGlvbnMpLCBj
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGws
ICp0aGlzKTsKIH0KIAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3ZvaWQgV29ya2xldEds
b2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZSh0aGlzLCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKQEAgLTIzMiw2ICsyNDIsOCBAQCB2
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQogICAgIFVSTCBtb2R1bGVV
UkwobV9zY3JpcHRMb2FkZXItPnJlc3BvbnNlVVJMKCkpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9ldmFsdWF0ZWRNb2R1bGVzLmFkZChtb2R1bGVVUkwpOwogICAgIGlmIChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkgeworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9y
dGVkKCp0aGlzLCBtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+
c2NyaXB0KCkpOworCiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247
CiAgICAgICAgIHNjcmlwdCgpLT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9h
ZGVyLT5zY3JpcHQoKSwgV1RGTW92ZShtb2R1bGVVUkwpKSwgZXhjZXB0aW9uKTsKICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVy
cy5oCmluZGV4IDNhNGY0ZTczNzljZGJmMTE5MTcyYTgyNmU5ZDNhMDI4N2ZiMjEzZDguLjk4MzZj
ZjBhMDM1ODFiZTgyNjNiNTUwZDg0MjYzMTkzMTNmZmU2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldFBhcmFtZXRlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtMzQsMTMgKzM1
LDE1IEBAIHN0cnVjdCBXb3JrbGV0UGFyYW1ldGVycyB7CiAgICAgVVJMIHdpbmRvd1VSTDsKICAg
ICBKU0M6OlJ1bnRpbWVGbGFncyBqc1J1bnRpbWVGbGFnczsKICAgICBmbG9hdCBzYW1wbGVSYXRl
OworICAgIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGU7CiAKICAgICBXb3JrbGV0UGFy
YW1ldGVycyBpc29sYXRlZENvcHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHsKICAg
ICAgICAgICAgIHdpbmRvd1VSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgICAgIGpzUnVudGlt
ZUZsYWdzLAotICAgICAgICAgICAgc2FtcGxlUmF0ZQorICAgICAgICAgICAgc2FtcGxlUmF0ZSwK
KyAgICAgICAgICAgIHN0YXJ0TW9kZQogICAgICAgICB9OwogICAgIH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412032</attachid>
            <date>2020-10-21 14:44:20 -0700</date>
            <delta_ts>2020-10-22 15:59:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201021144419.patch</filename>
            <type>text/plain</type>
            <size>84966</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM4M2RhYzI1NzlmMjJk
ODA0ZTAxYzUyM2Q2YjkwYWZhZGU0MzRkOS4uZDljNDVjNmZiODEzMmYzYzA4ZWI2ZmYxZTRkMTky
NTIyODVlYTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMC0xMC0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0ODg3NjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBBdWRp
b1dvcmtsZXRzIHVwIHRvIFdlYkluc3BlY3Rvciwgc2ltaWxhcmx5IHRvIFdlYiBXb3JrZXJzLiBU
aGlzIGJhc2ljYWxseSBwb3J0cworICAgICAgICBXZWJJbnNwZWN0b3IgY29kZSB0byB1c2UgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgaW5zdGVhZCBvZiBXb3JrZXJHbG9iYWxTY29wZQorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgc2FtZSBjb2RlIGZvciB3b3JrbGV0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OkF1ZGlvV29ya2xldEds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpw
cmVwYXJlRm9yVGVybWluYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlOjppbnNwZWN0b3JDb250cm9sbGVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcik6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6d29ya2xldFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OndvcmtlckRlYnVnZ2VyUHJveHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6c3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnZtKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVu
dExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdl
bnQ6OlNlcnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFn
ZW50OjpXb3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25z
b2xlQWdlbnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50
aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVMb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpyZXN1bWVXb3Jr
ZXJJZlBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29u
bmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldDo6V29ya2xldCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldC5o
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
ICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0UGFyYW1ldGVyczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKwogMjAyMC0xMC0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIFdvcmtlckdsb2Jh
bFNjb3BlIGFuZCBXb3JrbGV0R2xvYmFsU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXgg
MzBjNzNmNmQ4OThlN2YyYTk4MGVkZGZkOGMzODAxYjg1NGEzODg1MC4uNDAwYzBlZWQ4N2U3NzIw
ZjhlYmMxOTJiYWYzZGRlYzU0NDkzZGI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKU0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oIgogI2luY2x1
ZGUgIkpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnQuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eS5jcHAKaW5kZXggYTcwNjEzZTk4MDQwYTYwMjAzZGM3N2Y2OTMwYTY1NzBjNzdh
ZTQ1Zi4uNjFlMGZiMGU5Nzk5MzNmNjI0NTZmOGVkNDM4NmQxYTQzZmEyZDhmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTM3LDM2ICszNyw0MyBAQAogI2luY2x1ZGUgIkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVk
ZSAiV29ya2VySW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIldvcmtsZXRQZW5kaW5nVGFza3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgV29ya2xldFBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyhB
dWRpb1dvcmtsZXQmIHdvcmtsZXQpCitzdGF0aWMgV29ya2xldFBhcmFtZXRlcnMgZ2VuZXJhdGVX
b3JrbGV0UGFyYW1ldGVycyhBdWRpb1dvcmtsZXQmIHdvcmtsZXQsIFdvcmtlckluc3BlY3RvclBy
b3h5JiBpbnNwZWN0b3JQcm94eSkKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IHdvcmtsZXQuZG9j
dW1lbnQoKTsKICAgICBhdXRvIGpzUnVudGltZUZsYWdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCku
amF2YVNjcmlwdFJ1bnRpbWVGbGFncygpOworICAgIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUgPSBpbnNwZWN0b3JQcm94eS53b3JrZXJTdGFydE1vZGUoKndvcmtsZXQuZG9jdW1lbnQo
KSk7CiAKICAgICByZXR1cm4gewogICAgICAgICBkb2N1bWVudC0+dXJsKCksCiAgICAgICAgIGpz
UnVudGltZUZsYWdzLAotICAgICAgICB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpID8gd29ya2xldC5h
dWRpb0NvbnRleHQoKS0+c2FtcGxlUmF0ZSgpIDogMC4wZgorICAgICAgICB3b3JrbGV0LmF1ZGlv
Q29udGV4dCgpID8gd29ya2xldC5hdWRpb0NvbnRleHQoKS0+c2FtcGxlUmF0ZSgpIDogMC4wZiwK
KyAgICAgICAgc3RhcnRNb2RlCiAgICAgfTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAg
ICA6IG1fd29ya2xldChtYWtlV2Vha1B0cih3b3JrbGV0KSkKICAgICAsIG1fZG9jdW1lbnQoKndv
cmtsZXQuZG9jdW1lbnQoKSkKLSAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJl
YWQ6OmNyZWF0ZSgqdGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0KSkpCisg
ICAgLCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdv
cmtsZXQuaWRlbnRpZmllcigpKSkKKyAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRU
aHJlYWQ6OmNyZWF0ZSgqdGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0LCAq
bV9pbnNwZWN0b3JQcm94eSkpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAg
ICBtX3dvcmtsZXRUaHJlYWQtPnN0YXJ0KCk7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2Vy
U3RhcnRlZCh3b3JrbGV0LmRvY3VtZW50KCksIG1fd29ya2xldFRocmVhZC5wdHIoKSwgeyB9LCAi
QXVkaW9Xb3JrbGV0Il9zKTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6On5BdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eSgpCiB7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2Vy
VGVybWluYXRlZCgpOwogICAgIG1fd29ya2xldFRocmVhZC0+c3RvcCgpOwogfQogCkBAIC0xMDAs
NiArMTA3LDIyIEBAIHZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9B
dWRpb1dvcmtsZXQoRnVuY3Rpb248dm9pZChBdWRpb1dvcmtsCiAgICAgfSk7CiB9CiAKK3ZvaWQg
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVk
Q29weSgpXSB7CisgICAgICAgIG1faW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlRnJvbVdvcmtl
clRvRnJvbnRlbmQobWVzc2FnZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9v
bCBkaXNhYmxlZCkKK3sKKyAgICBwb3N0VGFza1RvTG9hZGVyKFtkaXNhYmxlZF0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCku
cGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdl
Ykluc3BlY3RvcihkaXNhYmxlZCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgK
aW5kZXggYTZiYzg1ODkxN2E1ZDBlYjc1MDRlNjQ2OGQwOGFmNTRlMDI1OWI2Yi4uMTM3ZmE0MTRj
ZGI5YjgzNmQ5MWRhY2MxMThlNzgxMDU3ZDRjNzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHku
aApAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQorI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2Fk
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAKQEAgLTM3
LDggKzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9Xb3JrbGV0OwogY2xh
c3MgQXVkaW9Xb3JrbGV0VGhyZWFkOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBXb3JrZXJJbnNw
ZWN0b3JQcm94eTsKIAotY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBwdWJsaWMg
V29ya2xldEdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSB7CitjbGFz
cyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQ
cm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94
eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eT4g
Y3JlYXRlKEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAgICB7CkBAIC02MiwxMCArNjQsMTUgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayYmKSBmaW5hbDsKICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJp
bmcmIG1vZGUpIGZpbmFsOwogCisgICAgLy8gV29ya2VyRGVidWdnZXJQcm94eS4KKyAgICB2b2lk
IHBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNl
dFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkgZmluYWw7CisKICAg
ICBib29sIGlzQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBXZWFrUHRyPEF1ZGlvV29ya2xldD4gbV93b3JrbGV0OwogICAgIFJl
ZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVj
dG9yUHJveHk+IG1faW5zcGVjdG9yUHJveHk7CiAgICAgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4g
bV93b3JrbGV0VGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IDgxNTYxNDBjZTM1YmY2NTli
OWU1ZTMwNDUwYjhlNTEyNWVkZjM1NTQuLjllM2E1ZTQ2ZTE4Nzg0NDFhZDVjMTA1ZmUxZmZiNjU0
MjUzMjQ1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFRocmVhZC5jcHAKQEAgLTEzMiw2ICsxMzIsMTQgQEAgdm9pZCBBdWRpb1dv
cmtsZXRUaHJlYWQ6OndvcmtsZXRUaHJlYWQoKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg
KG1fcGFyYW1ldGVycy5zdGFydE1vZGUgPT0gV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpXYWl0Rm9y
SW5zcGVjdG9yKSB7CisgICAgICAgIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKworICAg
ICAgICAvLyBJZiB0aGUgd29ya2VyIHdhcyBzb21laG93IHRlcm1pbmF0ZWQgd2hpbGUgcHJvY2Vz
c2luZyBkZWJ1Z2dlciBjb21tYW5kcy4KKyAgICAgICAgaWYgKG1fcnVuTG9vcC50ZXJtaW5hdGVk
KCkpCisgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5mb3JiaWRFeGVjdXRpb24oKTsKKyAg
ICB9CisKICAgICBydW5FdmVudExvb3AoKTsKIAogI2lmIFVTRShHTElCKQpAQCAtMTc3LDYgKzE4
NSwyNyBAQCBXb3JrZXJMb2FkZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJMb2Fk
ZXJQcm94eSgpCiAgICAgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7CiB9CiAKK1dvcmtlckRlYnVn
Z2VyUHJveHkmIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7Cit9CisKK3ZvaWQgQXVkaW9Xb3JrbGV0
VGhyZWFkOjpzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKK3sKKyAgICBBU1NFUlQoIW1fcGF1
c2VkRm9yRGVidWdnZXIpOworICAgIG1fcGF1c2VkRm9yRGVidWdnZXIgPSB0cnVlOworCisgICAg
TWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQ7CisgICAgZG8geworICAgICAgICByZXN1bHQg
PSBtX3J1bkxvb3AucnVuSW5EZWJ1Z2dlck1vZGUoKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAg
ICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiBtX3BhdXNlZEZv
ckRlYnVnZ2VyKTsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0b3BSdW5uaW5nRGVi
dWdnZXJUYXNrcygpCit7CisgICAgbV9wYXVzZWRGb3JEZWJ1Z2dlciA9IGZhbHNlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFk
LmgKaW5kZXggMDMwYzYxZjlkNTE4MDIyOTJjYjM0MzgxNGQ5MTBjMmJlYTdiM2ViOS4uNzkwN2U1
N2U5NWU5YTQzYTQ2OGEzYjEyYTE4MmE3ZjI4ZmNjZTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBAIC01NCwxMSAr
NTQsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKIAor
ICAgIHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpIGZpbmFsOworICAgIHZvaWQgc3Rv
cFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmluYWw7CisKICAgICAvLyBXb3JrZXJPcldvcmtsZXRU
aHJlYWQuCiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1fcnVu
TG9vcDsgfQogICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFs
OwogICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQuZ2V0
KCk7IH0KICAgICBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHkoKSB7
IHJldHVybiBtX21lc3NhZ2luZ1Byb3h5OyB9CisgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29y
a2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIEF1ZGlvV29y
a2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYsIGNvbnN0IFdvcmtsZXRQYXJh
bWV0ZXJzJik7CkBAIC03Miw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgV29ya2xldFBhcmFtZXRl
cnMgbV9wYXJhbWV0ZXJzOwogICAgIFJlZlB0cjxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4gbV93
b3JrbGV0R2xvYmFsU2NvcGU7CiAgICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kV29ya2xldEds
b2JhbFNjb3BlTG9jazsKKyAgICBib29sIG1fcGF1c2VkRm9yRGVidWdnZXIgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAwMmFiZTE2NjQxNDJk
YmVhOWFiZmZjMDBlYzM3NTNiZDE0ZTM2MjNmLi4wODdjZDk0OGI1MWQwMWUzNzk2YzUxZGM1OTFk
MzA4NGNkYmZmYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgIldl
YlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KQEAgLTEzMjAsOSArMTMyMSw5
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5k
ZXJMYXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMm
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckds
b2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK0luc3RydW1l
bnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKIHsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFs
U2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsKKyAgICBy
ZXR1cm4gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1f
aW5zdHJ1bWVudGluZ0FnZW50czsKIH0KIAogSW5zdHJ1bWVudGluZ0FnZW50cyYgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlJiBwYWdlKQpA
QCAtMTMzNSw4ICsxMzM2LDggQEAgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3IKIHsKICAgICBpZiAo
aXM8RG9jdW1lbnQ+KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSk7Ci0gICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuICZpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4
dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNWFkNzllMGQxNmE5NTMy
YjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZS4uZjA3ZTJmNWM4YmQyNDQwZGMzMmVhOGQ3MGRmZjEy
OTgyN2UyODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBTaGFkb3dSb290Owog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRG
bG93OwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKQEAgLTIw
MSwxMSArMjAxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBS
ZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtl
ckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3Jr
ZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyR2xvYmFs
U2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCiAgICAgLy8gU29tZSBuZXR3b3JrIHJlcXVlc3RzIGRvIG5vdCBnbyB0aHJv
dWdoIHRoZSBub3JtYWwgbmV0d29yayBsb2FkaW5nIHBhdGguCiAgICAgLy8gVGhlc2UgbmV0d29y
ayByZXF1ZXN0cyBoYXZlIHRvIGlzc3VlIHRoZWlyIG93biB3aWxsU2VuZFJlcXVlc3QgLyBkaWRS
ZWNlaXZlUmVzcG9uc2UgLyBkaWRGaW5pc2hMb2FkaW5nIC8gZGlkRmFpbExvYWRpbmcKQEAgLTI0
MywyMCArMjQzLDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2Nv
cGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOworICAgIHN0
YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgc3Rh
dGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCk7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFdvcmtlckdsb2Jh
bFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAg
IHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMgdm9p
ZCBjb25zb2xlQ291bnRSZXNldChQYWdlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlckds
b2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwor
ICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCiAgICAg
c3RhdGljIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBzdGFydENv
bnNvbGVUaW1pbmcoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBsYWJlbCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoRnJhbWUmLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb25zb2xlVGltaW5nKFdv
cmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CisgICAgc3RhdGljIHZvaWQg
bG9nQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1
bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lk
IHN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGlt
aW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgbGFiZWwpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3RhbXAoRnJh
bWUmLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwogICAgIHN0YXRpYyB2b2lk
IHN0YXJ0UHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQYWdlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYpOwogCiAgICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmKTsKLSAgICBzdGF0
aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShjb25zdCBGcmFtZSYpOwogICAgIHN0YXRp
YyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoY29uc3Qg
RnJhbWUqKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQmKTsK
ICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRv
Y3VtZW50KERvY3VtZW50Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3Bl
KFdvcmtlckdsb2JhbFNjb3BlKik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSopOwogfTsKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFw
cGVyV29ybGQmIHdvcmxkKQpAQCAtMTA1MCwxMCArMTA1MCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUsIHVuc2ln
bmVkIGxvbgogICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKLSAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JX
b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UgeyB9KTsKKyAgICB3aWxsU2VuZFJlcXVlc3RJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2UgeyB9KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsU2VuZFJlcXVlc3RPZlR5cGUoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgTG9hZFR5cGUgbG9hZFR5cGUpCkBAIC0xMDc1LDkgKzEwNzUsOSBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1l
JiBmcmFtZSwgdQogICAgICAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIHJlc291cmNlTG9h
ZGVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5z
dHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwg
aWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOworICAgIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxs
cHRyLCByZXNwb25zZSwgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXImIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKQpAQCAtMTA5NCwxMCArMTA5NCwxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9u
ZwogICAgICAgICBkaWRSZWNlaXZlRGF0YUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwg
ZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5n
dGgpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCkBAIC0xMTA3LDEwICsxMTA3LDEw
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGlu
ZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hCiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIG5ldHdvcmtMb2FkTWV0
cmljcywgcmVzb3VyY2VMb2FkZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2Jh
bFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBpZGVu
dGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIpOworICAgIGRpZEZp
bmlzaExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIs
IG5ldHdvcmtMb2FkTWV0cmljcywgbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQpAQCAtMTExOSw5ICsxMTE5LDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGUK
ICAgICAgICAgZGlkRmFpbExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBsb2FkZXIsIGVycm9yKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGYWlsTG9hZGluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2Nv
cGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgZXJyb3IpOworICAg
IGRpZEZhaWxMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBudWxs
cHRyLCBlcnJvcik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUmIGZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpAQCAtMTU3MSw5ICsxNTcxLDkgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6
dW5pcXUKICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
UGFnZShwYWdlKSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2xvYmFsU2NvcGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPiBtZXNzYWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
IG1lc3NhZ2UpCiB7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNz
YWdlKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwg
V1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU4MSw5ICsxNTgxLDkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpK
U0dsb2JhbE9iamUKICAgICBjb25zb2xlQ291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpLCBzdGF0ZSwgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFs
U2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBjb25zb2xl
Q291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJH
bG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CisgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTU5MSw5ICsxNTkxLDkg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNl
dChQYWdlJiBwYWdlLCBKU0M6OkpTR2xvYmEKICAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHN0YXRlLCBsYWJlbCk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUNvdW50UmVzZXQoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3Qg
U3RyaW5nJiBsYWJlbCkKIHsKLSAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgc3RhdGUsIGxh
YmVsKTsKKyAgICBjb25zb2xlQ291bnRSZXNldEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgc3Rh
dGUsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0
YWtlSGVhcFNuYXBzaG90KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTE2
MDksOSArMTYwOSw5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3Rh
cnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsCiAgICAgICAgIHN0YXJ0Q29u
c29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBleGVjLCBsYWJlbCk7
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xl
VGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJn
dW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTE2MjAsOSArMTYyMCw5IEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpT
Qzo6SlNHbG9iCiAgICAgICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBleGVjLCBsYWJlbCwgV1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50
cykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWlu
ZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNw
ZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgbG9nQ29uc29sZVRp
bWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckds
b2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgbG9nQ29u
c29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUo
YXJndW1lbnRzKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RvcENvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTYzMSw5ICsxNjMxLDkgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUs
IEpTQzo6SlNHbG8KICAgICAgICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBmcmFtZSwgZXhlYywgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBs
YWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVU
aW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewot
ICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgc3RvcENvbnNv
bGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKEZyYW1l
JiBmcmFtZSwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKQEAg
LTE3NTYsOSArMTc1Niw5IEBAIGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlCiAgICAgcmV0dXJuIHBh
Z2UgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoKnBhZ2UpIDogbnVsbHB0cjsKIH0KIAot
aW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
dHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSkKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpCiB7Ci0gICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gJmluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSgqd29ya2VyR2xvYmFsU2NvcGUpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPyAmaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCp3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkgOiBudWxscHRyOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyb250ZW5kQ3JlYXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgKaW5kZXggNzA0NDY0NGJmZjk1MjBlYWFlODZlZmQ0YjJhZTM5
MTkyM2ZjN2VmNC4uMWJiZjk0ZWZhNTIxMWFkMjE2YjRhMDBmZjY2YTkzMDc2NmE3MGJjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXZWJBZ2VudEJhc2UuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7CiBjbGFzcyBQYWdlOwotY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CitjbGFzcyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogLy8gRklYTUU6IG1vdmUgdGhpcyB0byBJbnNw
ZWN0b3IgbmFtZXNwYWNlIHdoZW4gcmVtYWluaW5nIGFnZW50cyBtb3ZlLgogc3RydWN0IFdlYkFn
ZW50Q29udGV4dCA6IHB1YmxpYyBJbnNwZWN0b3I6OkFnZW50Q29udGV4dCB7CkBAIC01NywxMyAr
NTcsMTMgQEAgc3RydWN0IFBhZ2VBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250ZXh0
IHsKIH07CiAKIHN0cnVjdCBXb3JrZXJBZ2VudENvbnRleHQgOiBwdWJsaWMgV2ViQWdlbnRDb250
ZXh0IHsKLSAgICBXb3JrZXJBZ2VudENvbnRleHQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisgICAgV29ya2VyQWdlbnRDb250
ZXh0KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogICAgICAgICA6IFdlYkFnZW50Q29udGV4dChj
b250ZXh0KQotICAgICAgICAsIHdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQor
ICAgICAgICAsIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKQogICAgIHsKICAgICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlOwogfTsKIAogY2xhc3MgSW5zcGVjdG9yQWdlbnRCYXNlIDogcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXIuY3BwCmluZGV4IDgwYzlhMTA1YzU0YTNlNTM3MGFjY2Q2YzEyZmYwNmYy
YjM0MzVkYTIuLjIyNzMxYTdlMjFjNWM0N2ZlYjIyZDkyNTgyZGM4OThjNjE1MmRiN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcApAQCAtMzQsMTYgKzM0
LDE3IEBACiAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1
ZGUgIldvcmtlclJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKLVdvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihXb3Jr
ZXJHbG9iYWxTY29wZSYgY29udGV4dCkKK1dvcmtlckRlYnVnZ2VyOjpXb3JrZXJEZWJ1Z2dlcihX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICA6IERlYnVnZ2VyKGNvbnRl
eHQuc2NyaXB0KCktPnZtKCkpCiAgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpCiB7
CkBAIC02MCw4ICs2MSw4IEBAIHZvaWQgV29ya2VyRGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGJv
b2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKICAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dl
cihpc0JlaW5nRGVzdHJveWVkKTsKIAotICAgIGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlw
dCgpKQotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5kZXRhY2hEZWJ1Z2dl
cih0aGlzKTsKKyAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IG1fd29ya2VyR2xvYmFs
U2NvcGUuc2NyaXB0KCkpCisgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmRldGFjaERlYnVnZ2Vy
KHRoaXMpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoKTsKIH0KQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlcjo6
cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQogCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBy
ZXN1bHQ7CiAgICAgZG8gewotICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnRo
cmVhZCgpLnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICAgICAgcmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJl
YWQoKS0+cnVuTG9vcCgpLnJ1bkluRGVidWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5oCmluZGV4IDFjNDU2OTk5YWVmNjJiNTQ0NmFmOTdkNjU0NjRmOGM1NmM5
ZTFhZDMuLjE0MDk0YTM2NTdjZTc1MGZkOGJhYmVlNjNkYjRmY2RhY2FmZTgxMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5oCkBAIC0zNSwxMyArMzUsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNz
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBXb3JrZXJEZWJ1Z2dlciBmaW5h
bCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJEZWJ1Z2dlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBXb3JrZXJEZWJ1Z2dlcihX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlcigpIG92ZXJy
aWRlID0gZGVmYXVsdDsKIAogCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOwogICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCi0g
ICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggOTBlOTg1NDRiNTNhNTAyZWI5OGE1ZDhjMjI1
YjcwMzNiMzlhMDY3Zi4uZmVhM2QwY2I0YjIxOWM5MjJlMjJhNmY4ZTY0N2EzMWUxZjgwNzE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVB
Z2VudC5oIgogI2luY2x1ZGUgIldvcmtlckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJX
b3JrZXJEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJXb3JrZXJOZXR3b3JrQWdlbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5o
IgpAQCAtNTcsMTYgKzU3LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSkKK1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2Vu
dHM6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5p
cXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9z
dDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3Jl
YXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0
Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKLSAgICAsIG1fZGVidWdnZXIod29ya2VyR2xvYmFsU2Nv
cGUpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorICAgICwg
bV9kZWJ1Z2dlcih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKKyAgICAsIG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNT
RVJUKHdvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQod29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogCiAgICAgYXV0byB3
b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBA
QCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAg
bV9leGVjdXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gt
PnN0YXJ0KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2Fy
ZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVj
dEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBXb3JrZXJBZ2VudENv
bnRleHQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6d29ya2VyQWdlbnRDb250ZXh0KCkKIAog
ICAgIFdvcmtlckFnZW50Q29udGV4dCB3b3JrZXJDb250ZXh0ID0gewogICAgICAgICB3ZWJDb250
ZXh0LAotICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLAorICAgICAgICBtX3dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLAogICAgIH07CiAKICAgICByZXR1cm4gd29ya2VyQ29udGV4dDsKQEAg
LTE2OCw3ICsxNjgsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMoKQogICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVB
Z2VudD4od29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7
CisgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkpIHsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2Vydmlj
ZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KQEAg
LTE5OSw3ICsxOTksNyBAQCBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6ZXZhbHVhdGVIYW5kbGVyKCkgY29uc3QKIAogVk0mIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OnZtKCkKIHsKLSAgICByZXR1cm4gbV93b3JrZXJHbG9iYWxTY29wZS52bSgp
OworICAgIHJldHVybiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnZtKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDdhNTNkODA0YmZiY2UwZjYyZTExNTNj
NTEzYjE3OGQ3NDIzODNlZGUuLjlmZDBiOWMzNTQ0ZWFiNjkzOTBkMmVkNGNlOWRiZjA5NzVkMDE0
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuaApAQCAtNDEsMTQgKzQxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
cjsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0OwogCiBjbGFzcyBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRW52aXJvbm1l
bnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7
CiAgICAgfldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
d29ya2VyVGVybWluYXRpbmcoKTsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFdvcmtlckRlYnVnZ2Vy
IG1fZGVidWdnZXI7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAg
IFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbD4gbV9mb3J3YXJkaW5nQ2hhbm5l
bDsKICAgICBib29sIG1fZGlkQ3JlYXRlTGF6eUFnZW50cyB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5l
bC5oCmluZGV4IGMwMjYyMTEzNWM1NWViZDcwNmUwNDM1MWI1YzEzZjYxM2JlYTY1MzQuLmQyNjMw
ZDUxY2ZkNGQ3MWNlNTgxYTlmNjQ5NWEzMTYyZjZkODMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgKQEAgLTI2
LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJQcm94
eS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KIApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJUb1BhZ2VGcm9udGVuZENo
YW5uZWwgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlclRvUGFn
ZUZyb250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCisg
ICAgZXhwbGljaXQgV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICAgICAgOiBtX3dvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKQogICAgIHsKICAgICB9CkBAIC00NiwxMCArNDYsMTAgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkud29ya2VyRGVidWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdl
KTsKKyAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+
d29ya2VyRGVidWdnZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKICAg
ICB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCmluZGV4IGJiZTJj
YzAzZDY0NWZjMTI5MDg0ZGJlZTlkZDgwNDIyYmJkNjNmZDguLmVmZmQyYmVlMGEwYTcwOWJkOWFk
N2EzMTIzMzI0ZDA3MjEyYWIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtMzgs
MTAgKzM4LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFNlcnZpY2VXb3JrZXJB
Z2VudDo6U2VydmljZVdvcmtlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2VydmljZVdvcmtlciJfcywgY29udGV4dCkKLSAgICAs
IG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNw
ZWN0b3I6OlNlcnZpY2VXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2Jh
bFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJB
Z2VudDo6flNlcnZpY2VXb3JrZXJBZ2VudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5j
cHAKaW5kZXggZjY0ZDU3NTMwYjdiNjE3MGVhYWRlOTIzZTQwOWI1YmRkZWE3MmU0MC4uM2I1ZTU0
ZTQxNWZjMmFlODZkMzNhMjdlY2I5ZGVlNTk2ZjdjMTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5j
cHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXb3JrZXJBdWRpdEFnZW50LmgiCiAKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVj
dGVkU2NyaXB0TWFuYWdlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KQEAgLTQxLDkgKzQxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2Vy
QXVkaXRBZ2VudDo6V29ya2VyQXVkaXRBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBdWRpdEFnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2Jh
bFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAg
QVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAg
IEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVh
ZCgpKTsKIH0KIAogV29ya2VyQXVkaXRBZ2VudDo6fldvcmtlckF1ZGl0QWdlbnQoKSA9IGRlZmF1
bHQ7CkBAIC01NSw3ICs1NSw3IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJHbG9iYWxT
Y29wZSkpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlw
dEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgKaW5kZXggZDI1OWM2YTc2YzJl
Y2IwZWViOGVkZDczMzllYzA0NTliZDM3MmIzZC4uZjE5MWUwNDk1MDE0MzJlZDcyMjI5OGZmNDM4
MzhmZjhmY2YyZWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIGNsYXNzIFdvcmtlckF1ZGl0QWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXb3JrZXJBdWRpdEFnZW50KTsKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
RXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVhZDQyZGMzM2Q2
ODdmMDQzZWQ1NjdlM2I4ZjRiMTU4MDc2OTY2NzYuLmZiYTU2MTRlNzdmMTNiOWFkZWUwMjUxMGFm
YmU2NjhhMWJjZGQ3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50LmNwcApAQCAtMzUsNyArMzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2VyQ29uc29sZUFnZW50OjpXb3Jr
ZXJDb25zb2xlQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogV2ViQ29u
c29sZUFnZW50KGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2Nv
cGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29ya2VyQ29uc29sZUFnZW50
Ojp+V29ya2VyQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCAzYWUzNWM2N2EzMDM0MWQ3ZWUxMmY2Y2M1Njg4ZGUxZWM3OGM2M2UwLi4zNTU4
Y2IzNGY5NzNlZDYyYzg2OTEyM2I2NTc1M2NjZjM1MzNjNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdl
bnQuaCIKIAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTQxLDE2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiBXb3JrZXJEZWJ1Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtl
ckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IFdlYkRlYnVnZ2VyQWdlbnQoY29udGV4dCkK
LSAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAg
ICAsIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0Nv
bnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29y
a2VyRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50
OjpicmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNj
cmlwdENhbGxTdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KSkpOworICAgIG1fd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9n
LCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkpKTsK
IH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIE9wdGlvbmFsPFByb3Rv
Y29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpA
QCAtNjAsNyArNjAsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUp
KTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Io
Z2xvYmFsT2JqZWN0KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IDdjYTY0ZTQwMTNh
NTRiNDE4ZDUzZTQ3NDgwMmU3MzJiZjE5MDhjOTcuLjk5NDdmNzE1NDU2MTRhZDkzZmY3ZWZlMjVm
MmUwNTg0ODI3ODVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmKTsKIAotICAg
IFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNWRjZTgy
NmY0YjEwZTBjZDQ4NWM4NTlhYTM3MjkzMmJlZTY0YjVhOS4uMTQxMGEyNzg5NDBmZGMxY2ZhNWIz
NjAyYWJjYzU3NjQzN2Y3YjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC0zNiw5
ICszNiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlck5ldHdvcmtBZ2Vu
dDo6V29ya2VyTmV0d29ya0FnZW50KFdvcmtlckFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3Rvck5ldHdvcmtBZ2VudChjb250ZXh0KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29w
ZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VS
VChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NF
UlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7
CiB9CiAKIFdvcmtlck5ldHdvcmtBZ2VudDo6fldvcmtlck5ldHdvcmtBZ2VudCgpID0gZGVmYXVs
dDsKQEAgLTYxLDEyICs2MSwxMiBAQCBWZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0Fn
ZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQogCiB2b2lkIFdvcmtlck5l
dHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRlcm5hbChib29sIGRpc2Fi
bGVkKQogewotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyRGVidWdnZXJQ
cm94eSgpLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoZGlzYWJsZWQp
OworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFk
KCktPndvcmtlckRlYnVnZ2VyUHJveHkoKS5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2Vi
SW5zcGVjdG9yKGRpc2FibGVkKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV29ya2Vy
TmV0d29ya0FnZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KFByb3RvY29sOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJikKIHsKLSAgICByZXR1cm4gJm1f
d29ya2VyR2xvYmFsU2NvcGU7CisgICAgcmV0dXJuICZtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCmlu
ZGV4IGRkODdkODEwMjAyZTViMTdkZTljZjA3Yjc2MmI1MjVlZWUyZTNiZTguLmQ3YmViZDBkZWEx
MGFmYjAxMmI0NmFjYzQ5Njc1YTI5YTllZDRiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCkBA
IC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKTsKICAgICBib29sIHNo
b3VsZEZvcmNlQnVmZmVyaW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAg
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
aW5kZXggYWE1OGExZjBkN2E4MWIwMDY4MWY2NjhhOWZjNGE3MjU4NmIxM2RjZC4uOGU4NGRhMDAz
MTlhYThhZjIzNDQ0OWNjMjc4MDZhNzFjMjUxYTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oPgogCkBAIC00NCw5ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2VudChXb3Jr
ZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29u
dGV4dCkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX3dvcmtl
ckdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7
Ci0gICAgQVNTRVJUKGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkp
OworICAgIEFTU0VSVChjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4
dFRocmVhZCgpKTsKIH0KIAogV29ya2VyUnVudGltZUFnZW50Ojp+V29ya2VyUnVudGltZUFnZW50
KCkgPSBkZWZhdWx0OwpAQCAtNTgsNyArNTgsNyBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50
aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3Jr
ZXJHbG9iYWxTY29wZSkpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4
IDZiOTk4ZjRkMTczMTg1MWY5OWI2N2VlMTVhNWQyMDAxNTg3ZjRkMDYuLmJjY2MyYjdkMDcxNWEz
NGU3YzQ3NzIzMjZkMjQxZGE5NmM3YmUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC0z
Niw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29ya2VyR2xvYmFs
U2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xhc3MgV29ya2Vy
UnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFn
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJSdW50aW1lQWdlbnQpOwpAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpIHsgfQogCiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOwotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwor
ICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDI3MTdjODYxYzc0YjBmMmFlYmNkZTQwODcwMGUy
YTlhMDM3Mzc1OTUuLjE4ZmYzZjk0ZjA0MmQxYTFmZDAzYTUxYmMxMWQ1YmQxNDZmMzNiNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKIHsK
LSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpIHx8IChpczxXb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4
dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkpKQorICAgIGlmIChpczxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpKQogICAgICAgICByZXR1cm4gV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJj4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZlcnJlcikpOwogCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKQEAgLTExOCw4ICsxMTgsOCBAQCBSZWZQdHI8
VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byByZXNvdXJjZVVSTCA9IHJl
cXVlc3QudXJsKCk7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAg
ICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNs
aWVudCwgb3B0aW9ucyk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KSkKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCks
IFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMp
OwogICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggZTExMzk2YmZkODMzNmUzZTg2NzRhNDljYjVjODE4NGJmMTU4MGE3ZS4uZWY0OTQ5MjI1
YjI4YjUwZjM4NjZjMGY3ZDM2NmUwYjc5MjY2Y2EzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVn
aXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2VuZGlmCiAKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGdsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwg
bV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoZ2xvYmFsU2NvcGUsIG1fd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIHJlcXVlc3QpOwogCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0
IGJlaW5nIGFuIHItdmFsdWUgdG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVk
IGNvcHk/CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0
ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkp
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0y
MjYsOCArMjI1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgICAgICBBU1NFUlQoY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgYXV0byByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmZyb21Dcm9z
c1RocmVhZERhdGEoV1RGTW92ZShyZXNwb25zZURhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNl
KTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgcmVzcG9uc2UpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApAQCAtMjM4LDggKzIzNiw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtl
ckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0y
NDksOCArMjQ2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWQKICAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtM
b2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBpZGVudGlm
aWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xl
dEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5k
aWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yNjEsOCArMjU3
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm8KICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKGNvbnRleHQsIGVycm9yLCBwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5pbml0aWF0b3IoKSk7CiAgICAgICAgIHByb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBpZiAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0s
IG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25z
b2xlQ2xpZW50LmNwcAppbmRleCA3YjQyOTMwMGFmZmNiMDUxODlkNDgxNjA1OWY0MDVkNjY4NmM0
ZjUxLi4wOWUyMDc2YmY3YWJhMDFhNjc5YjU4YTI4YTg4OGY5OTUwNGU0NjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTUzLDM3ICs1
MywyNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVs
KE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGll
bnQ6OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0g
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnQobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwogfQog
CiB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNDOjpKU0dsb2JhbE9iamVj
dCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNv
bGVDb3VudFJlc2V0KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwg
ZXhlYywgbGFiZWwpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50
UmVzZXQobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNvbnNv
bGVDbGllbnQ6OnRpbWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBs
YWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29w
ZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBl
eGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8U2NyaXB0QXJn
dW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdv
cmtsZXRHbG9iYWxTY29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFs
U2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1p
bmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBleGVjLCBsYWJl
bCwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omxv
Z0NvbnNvbGVUaW1pbmcobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1l
bnRzKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c3RvcENvbnNvbGVUaW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFs
U2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9w
Q29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9CiAKIC8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUzNDk5PiBXZWIgSW5zcGVjdG9yOiBjb25zb2xlLnBy
b2ZpbGUgc2hvdWxkIHVzZSB0aGUgbmV3IFNhbXBsaW5nIFByb2ZpbGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDU3YjlmNzIzN2ZmN2YxNjZh
NWJiYzRhNjIzYWIyMWVjMTVhMTY0NjcuLjlhNzY1MjE5MjQyNjVkODFkNDNhOGE0NzNjM2FjZjY0
OGQ2NTYyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC02NSw3ICs2NSw2IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0CiAgICAgLCBtX3Vy
bChwYXJhbXMuc2NyaXB0VVJMKQogICAgICwgbV9pZGVudGlmaWVyKHBhcmFtcy5pZGVudGlmaWVy
KQogICAgICwgbV91c2VyQWdlbnQocGFyYW1zLnVzZXJBZ2VudCkKLSAgICAsIG1faW5zcGVjdG9y
Q29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkK
ICAgICAsIG1faXNPbmxpbmUocGFyYW1zLmlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kocGFyYW1zLnNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAsIG1fdG9wT3JpZ2luKFdURk1vdmUodG9wT3Jp
Z2luKSkKQEAgLTEyMSw4ICsxMjAsNiBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24oKQogCiAgICAgaWYgKG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAg
ICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhclBlbmRpbmdSZXF1ZXN0cygpOwot
Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT53b3JrZXJUZXJtaW5hdGluZygpOwogfQogCiB2
b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpyZW1vdmVBbGxFdmVudExpc3RlbmVycygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMmY1YTkxYzI2NmVkZDdm
NjA1YmI1NmM4M2IyYzk5YmZkNmYxZTBkNi4uZTM2NWRiZjM0MDA3NzRjOTMwN2JkYjZhZWJkM2Jj
MjExYmFiNjk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM7CiBjbGFzcyBDcnlwdG87CiBjbGFzcyBQZXJmb3JtYW5jZTsKIGNsYXNzIFNjaGVkdWxl
ZEFjdGlvbjsKLWNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJM
b2NhdGlvbjsKIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKIGNsYXNzIFdvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbjsKQEAgLTgxLDggKzgwLDYgQEAgcHVibGljOgogICAgIFdvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbiYgc3dDbGllbnRDb25uZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIFdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9p
bnNwZWN0b3JDb250cm9sbGVyOyB9Ci0KICAgICBXb3JrZXJUaHJlYWQmIHRocmVhZCgpIGNvbnN0
OwogCiAgICAgdXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5
OwpAQCAtMTY4LDcgKzE2NSw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZWZQdHI8V29ya2Vy
TmF2aWdhdG9yPiBtX25hdmlnYXRvcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogCiAgICAgYm9v
bCBtX2lzT25saW5lOwogICAgIGJvb2wgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlcklu
c3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9y
UHJveHkuY3BwCmluZGV4IDYzMmI4MmUyOGI3MmRhNjEzNzFjMjRlYmZiYWYyZGQ1NTkxMGQwNzEu
LmIxYmUzZTkyNGNlYTQ3YTM5NTIwMDEzYzc2N2RiNjBjNzg4YjdmMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCkBAIC0yOCw4ICsyOCw5
IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQu
aCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNlLmg+CkBAIC02Miw3
ICs2Myw3IEBAIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29y
a2VyU3RhcnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgcmV0dXJuIHBhdXNlT25TdGFy
dCA/IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3BlY3RvciA6IFdvcmtlclRocmVh
ZFN0YXJ0TW9kZTo6Tm9ybWFsOwogfQogCi12b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3Jr
ZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
KQordm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJPcldvcmtsZXRUaHJlYWQq
IHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NF
UlQoIW1fd29ya2VyVGhyZWFkKTsKIApAQCAtOTMsNyArOTQsNyBAQCB2b2lkIFdvcmtlckluc3Bl
Y3RvclByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKCkKIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6
OnJlc3VtZVdvcmtlcklmUGF1c2VkKCkKIHsKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLnN0
b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnN0b3BSdW5u
aW5nRGVidWdnZXJUYXNrcygpOwogICAgIH0pOwogfQogCkBAIC0xMDYsNyArMTA3LDcgQEAgdm9p
ZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlQ2hhbm5lbCYgY2hhbm4KICAgICBtX3BhZ2VDaGFubmVsID0gJmNoYW5uZWw7CiAKICAg
ICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsK
KyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKICAgICB9KTsKIH0KIApAQCAt
MTE5LDExICsxMjAsMTEgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZy
b21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBtX3BhZ2VDaGFubmVsID0gbnVsbHB0
cjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RG
cm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBk
b3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JE
ZXN0cm95ZWQpOwogCiAgICAgICAgIC8vIEluIGNhc2UgdGhlIHdvcmtlciBpcyBwYXVzZWQgcnVu
bmluZyBkZWJ1Z2dlciB0YXNrcywgZW5zdXJlIHdlIGJyZWFrIG91dCBvZgogICAgICAgICAvLyB0
aGUgcGF1c2Ugc2luY2UgdGhpcyB3aWxsIGJlIHRoZSBsYXN0IGRlYnVnZ2VyIHRhc2sgd2Ugc2Vu
ZCB0byB0aGUgd29ya2VyLgotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CisgICAgICAgIGRvd25j
YXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRU
aHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CiAgICAgfSk7CiB9CiAKQEAgLTEz
NCw3ICsxMzUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcihjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFzayhbbWVzc2FnZSA9
IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0
b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2UpOworICAg
ICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNzYWdlKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94
eS5oCmluZGV4IDVlOGExZGMwZWQwZDlhYTUzMmMzNjc0NjRjODY3ZmI0ZjdmOWFhNWYuLmJlZmMw
MWQ5NTcwYThjNGE4YjdkZGVlODVlYTEwNjE4YTc3YTQ0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFdv
cmtlclRocmVhZDsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZDsKIAogZW51bSBjbGFzcyBX
b3JrZXJUaHJlYWRTdGFydE1vZGU7CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7IH0KIAogICAgIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSB3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAg
IHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyVGhyZWFk
KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHdvcmtlclN0YXJ0
ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck9yV29ya2xldFRocmVhZCosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKCk7
CiAKICAgICB2b2lkIHJlc3VtZVdvcmtlcklmUGF1c2VkKCk7CkBAIC03Myw3ICs3Myw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFJlZlB0cjxXb3JrZXJUaHJlYWQ+IG1fd29ya2Vy
VGhyZWFkOworICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+IG1fd29ya2VyVGhyZWFk
OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBt
X25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDQ4OGE0OTg4MTQzMWFhNjI2YTFiMjU1YmY0MjE2YzlkODM4
MzZhNjMuLjkzODk1NjEwOWEyMDdmMDViMzgzYmZiNzVlYTNlYmNjMTc3M2M1YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKIAogI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzcsNiAr
MzgsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUpOwogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6Oldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFJlZjxKU0M6OlZNPiYmIHZtLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHRocmVhZCkK
ICAgICA6IG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cj4oV1RGTW92ZSh2bSksIHRoaXMpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQorICAgICwgbV9p
bnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4o
KnRoaXMpKQogewogfQogCkBAIC01Nyw2ICs1OSw4IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAgICAgaWYgKG1fZXZlbnRMb29wKQog
ICAgICAgICBtX2V2ZW50TG9vcC0+Y2xlYXJNaWNyb3Rhc2tRdWV1ZSgpOwogICAgIHJlbW92ZVJl
amVjdGVkUHJvbWlzZVRyYWNrZXIoKTsKKworICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS53b3Jr
ZXJUZXJtaW5hdGluZygpOwogfQogCiB2b2lkIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpj
bGVhclNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgKaW5kZXggYzBiMWNmOTEyODU1OTM2NTQ1YTEzZDJlNDUwNGFiOTc2
ZjljM2U3ZS4uMWQyZjgwZTA4YTA2ZGRkYjhlNDRlMjcwNjdiYzUzODNhMzRlMWVlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
aApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50TG9v
cFRhc2tHcm91cDsKIGNsYXNzIFdvcmtlckV2ZW50TG9vcDsKK2NsYXNzIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOwogY2xh
c3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwogCkBAIC00Nyw2ICs0OCw4IEBAIHB1YmxpYzoKICAg
ICBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSBjb25zdCB7IHJldHVy
biBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3JpcHQoKTsKIAorICAgIFdvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biAqbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9CisKICAgICB1bnNpZ25lZCBsb25nIGNyZWF0ZVVu
aXF1ZUlkZW50aWZpZXIoKSB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXIrKzsgfQogCiAgICAg
Ly8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KQEAgLTgzLDYgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIG1fdGhyZWFkOwogICAgIFJlZlB0cjxXb3JrZXJFdmVu
dExvb3A+IG1fZXZlbnRMb29wOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrR3Jv
dXA+IG1fZGVmYXVsdFRhc2tHcm91cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIHVuc2lnbmVkIGxvbmcg
bV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogICAgIGJvb2wgbV9pc0Nsb3NpbmcgeyBmYWxzZSB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5o
CmluZGV4IDM3ODA5NjFjNzk0OTg1N2ExZTIwNWY4YzMxMjk2MmMwNzBiZWFmODEuLmEwN2U5Y2Fk
ODlkZmY0MzNlYzc2NDllN2VlNWZmZTU1OTBiYjA4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBU
aHJlYWQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VyRGVidWdnZXJQcm94
eTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwogY2xhc3MgV29ya2VyUnVuTG9vcDsKIApAQCAt
NDMsNiArNDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV1RGOjpUaHJlYWQqIHRocmVhZCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSA9IDA7CiAg
ICAgdmlydHVhbCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSA9IDA7Cisg
ICAgdmlydHVhbCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiM2U3MWM5MmRmMTY3ZTk4MWE2YjUwODllNTFiZGYw
ODM0NmVjN2ZjLi44N2RkOTk2OWM1ZTkwNmRlZTcyYzQ0Nzc1YmMyY2U2ZGY1YTFhNWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAg
LTUwLDE2ICs1MCwxNiBAQCBXb3JrZXJTY3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIo
KSA9IGRlZmF1bHQ7CiBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9h
ZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgY29uc3QgVVJMJiB1cmwsIEZldGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlv
bnM6OkNhY2hlIGNhY2hlUG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBj
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJ
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBh
dXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgYXV0byYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUgPSBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogCiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9kZXN0aW5hdGlvbiA9IEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OlNjcmlwdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSk7CisgICAgYm9vbCBpc1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUpOwogCiAgICAgaWYgKGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlwdFJlc291cmNlKHVybCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2Uo
dXJsKSkgewogICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3Jp
cHQpOwogICAgICAgICAgICAgbV9yZXNwb25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25z
ZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5t
aW1lVHlwZTsKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBp
ZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpKTsKIAogICAgIC8vIE9ubHkgdXNlZCBmb3IgaW1wb3J0U2NyaXB0cyB0aGF0IHByZXNjcmli
ZXMgTm9Db3JzIG1vZGUuCiAgICAgQVNTRVJUKG1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpO
b0NvcnMpOwpAQCAtODcsMTAgKzg3LDEwIEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAg
b3B0aW9ucy5kZXN0aW5hdGlvbiA9IG1fZGVzdGluYXRpb247CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gaXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01v
ZGU6OkFsbDsKLSAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IHdvcmtlckdsb2Jh
bFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKKyAgICBpZiAoYXV0byogYWN0aXZlU2Vydmlj
ZVdvcmtlciA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIo
KSkKICAgICAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9
IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgot
ICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29y
a2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoKnJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CisgICAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsK
IAogICAgIC8vIElmIHRoZSBmZXRjaGluZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBOZXR3b3Jr
RXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGZhaWxl
ZCgpKQpAQCAtMTAxLDcgKzEwMSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0
TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAg
IGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVz
cG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3Jr
RXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBl
Il9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3Jr
ZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9u
c2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9u
c2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMTIx
NGI5MTlkYTM0ZDMyZjJmY2FjOWEyOTgxMmY2ZmQ2YTg3YTEyOC4uOGIyYTY3MmYwMDNjZTE5MjI4
OTI2ZWNhMzI1NmQzNThlMmY5MTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAgICAgV29ya2VyUnVuTG9vcCYgcnVu
TG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQogICAgIFdvcmtlckxvYWRlclByb3h5
JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJveHk7
IH0KLSAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3Qg
eyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CisgICAgV29ya2VyRGVidWdnZXJQcm94
eSYgd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyRGVi
dWdnZXJQcm94eTsgfQogICAgIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQ
cm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyUmVwb3J0aW5nUHJveHk7IH0KIAogICAgIC8v
IE51bWJlciBvZiBhY3RpdmUgd29ya2VyIHRocmVhZHMuCkBAIC0xMDMsOCArMTAzLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2xpZW50KE5vdGlmaWNhdGlvbkNsaWVudCog
Y2xpZW50KSB7IG1fbm90aWZpY2F0aW9uQ2xpZW50ID0gY2xpZW50OyB9CiAjZW5kaWYKIAotICAg
IHZvaWQgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOwotICAgIHZvaWQgc3RvcFJ1bm5pbmdE
ZWJ1Z2dlclRhc2tzKCk7CisgICAgdm9pZCBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkgZmlu
YWw7CisgICAgdm9pZCBzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKSBmaW5hbDsKICAgICAKICAg
ICBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRp
bWVGbGFnczsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCmluZGV4IDM5MDhiZGYz
YTI5NmM4MWI2ZjRiYThlOGUwOGUzZmM1ODJlZTVlM2EuLjQ4NzVjN2I0ZGVkNDQ5NzdiODRiNDgx
NDUyNGIyYWMzOTk3ZTNjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrbGV0UGVuZGluZ1Rhc2tz
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5j
bHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIApAQCAtNDIsNiArNDMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V29ya2xldCk7CiAKIFdvcmtsZXQ6OldvcmtsZXQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAgICAsIG1faWRlbnRpZmllcigid29ya2xldDoi
ICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5oCmluZGV4IDQxNjg2NzRjNzNiMjk5MDliYTYy
OTYyNTcyMWIzODA1M2UyMjdiZWUuLmZkYjY2M2Q3YTM1YTg0ZmI3NzBmZjAxMWQ4NjEyYWU0Y2My
MmM0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVi
bGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpOwogCiAgICAgY29uc3QgVmVjdG9yPFJlZjxX
b3JrbGV0R2xvYmFsU2NvcGVQcm94eT4+JiBwcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm94
aWVzOyB9CisgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBXb3JrbGV0KERvY3VtZW50
Jik7CkBAIC02Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Lgog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAorICAg
IFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgVmVjdG9yPFJlZjxXb3JrbGV0R2xvYmFsU2NvcGVQ
cm94eT4+IG1fcHJveGllczsKICAgICBIYXNoU2V0PFJlZlB0cjxXb3JrbGV0UGVuZGluZ1Rhc2tz
Pj4gbV9wZW5kaW5nVGFza3NTZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNjk4YmI1YzQ5MWM1YjUzZGRlMGNjZTk0NzJkMDg0
MzFiNGJiOWRkMi4uOGE1MGQ1OTJhMWZmYWJlMzc2NzNmZDQzNGMzM2E1OTA4OTYwYThlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0x
MzAsMjMgKzEzMCwzMiBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bG9nRXhjZXB0aW9uVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdAogCiB2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQorICAgIGlmICghaXNDb250ZXh0VGhy
ZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKG1lc3NhZ2Ut
PnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCkpKTsKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5
cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CisgICAgfQor
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlz
LCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsK
LSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgIGlm
ICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwotICAgIG1f
ZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBhZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1l
c3NhZ2UsIHsgfSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpOwog
fQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8
IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1l
bnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIG51bGxwdHIsIHJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4gbWVzc2FnZTsKKyAgICBpZiAoY2FsbFN0YWNrKQorICAgICAgICBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWws
IG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUs
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCiBSZWZlcnJlclBv
bGljeSBXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKQEAgLTE4Myw4
ICsxOTIsOSBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3JpcHRGZXRj
aEpvYklmTmVlZGVkKCkKICAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGZldGNoT3B0aW9ucyksIGNvbnRlbnRTZWN1
cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMpOwog
fQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVNjcmlwdFJlc3BvbnNlKHRoaXMsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQpAQCAtMjAwLDYgKzIxMCw4IEBAIHZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCiAgICAgVVJMIG1vZHVsZVVSTChtX3Njcmlw
dExvYWRlci0+cmVzcG9uc2VVUkwoKSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2V2YWx1YXRl
ZE1vZHVsZXMuYWRkKG1vZHVsZVVSTCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMs
IG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7
CisKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICAgICAg
c2NyaXB0KCktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlw
dCgpLCBXVEZNb3ZlKG1vZHVsZVVSTCkpLCBleGNlcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKaW5kZXgg
M2E0ZjRlNzM3OWNkYmYxMTkxNzJhODI2ZTlkM2EwMjg3ZmIyMTNkOC4uOTgzNmNmMGEwMzU4MWJl
ODI2M2I1NTBkODQyNjMxOTMxM2ZmZTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvV29ya2xldFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0UGFyYW1ldGVycy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGlt
ZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCkBAIC0zNCwxMyArMzUsMTUgQEAgc3Ry
dWN0IFdvcmtsZXRQYXJhbWV0ZXJzIHsKICAgICBVUkwgd2luZG93VVJMOwogICAgIEpTQzo6UnVu
dGltZUZsYWdzIGpzUnVudGltZUZsYWdzOwogICAgIGZsb2F0IHNhbXBsZVJhdGU7CisgICAgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlz
b2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAg
d2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICAgICAganNSdW50aW1lRmxhZ3MsCi0g
ICAgICAgICAgICBzYW1wbGVSYXRlCisgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAg
ICAgc3RhcnRNb2RlCiAgICAgICAgIH07CiAgICAgfQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412140</attachid>
            <date>2020-10-22 16:00:01 -0700</date>
            <delta_ts>2020-10-23 08:05:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201022160000.patch</filename>
            <type>text/plain</type>
            <size>87727</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU1ZTk3YzQ0NDNlYTc4
NjliYmE5NWM2NmU0NDdhMDA2Nzk1YTg4MS4uMTE2ZGU0NTZjMWM2ZDE0YmU1NzJlOTliMzU2MzVm
MWNkYWVmYWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMC0xMC0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgQXVkaW9Xb3JrbGV0
cyB1cCB0byBXZWJJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0ODg3NjM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBBdWRp
b1dvcmtsZXRzIHVwIHRvIFdlYkluc3BlY3Rvciwgc2ltaWxhcmx5IHRvIFdlYiBXb3JrZXJzLiBU
aGlzIGJhc2ljYWxseSBwb3J0cworICAgICAgICBXZWJJbnNwZWN0b3IgY29kZSB0byB1c2UgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgaW5zdGVhZCBvZiBXb3JrZXJHbG9iYWxTY29wZQorICAg
ICAgICBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgc2FtZSBjb2RlIGZvciB3b3JrbGV0cy4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
On5BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNh
YmxlZEJ5V2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3
b3JrZXJEZWJ1Z2dlclByb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xl
dFRocmVhZDo6c2hvdWxkV2FpdEZvcldlYkluc3BlY3Rvck9uU3RhcnR1cCBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QWdlbnRDb250ZXh0OjpXb3JrZXJBZ2VudENvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6V29y
a2VyRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OmRldGFjaERl
YnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BX
aGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6d29ya2VyQWdlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6dm0pOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VX
b3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OlNl
cnZpY2VXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBdWRpdEFnZW50OjpX
b3JrZXJBdWRpdEFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQWdl
bnQ6OldvcmtlckNvbnNvbGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1
Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6V29ya2VyTmV0d29ya0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OldvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNvbnNvbGVDbGllbnQ6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNv
bGVDbGllbnQ6OmNvdW50UmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNs
aWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1l
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWVFbmQpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlckdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JQcm94eTo6cmVzdW1lV29ya2VySWZQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RUb1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yUHJveHk6OmRpc2Nvbm5lY3RGcm9t
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6aW5zcGVjdG9y
Q29udHJvbGxlciBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJl
ZmVycmVyUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29w
ZTo6ZmV0Y2hBbmRJbnZva2VTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2Jh
bFNjb3BlOjpwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldFBhcmFtZXRlcnM6Omlzb2xhdGVkQ29weSBjb25zdCk6CisK
IDIwMjAtMTAtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBT
aGFyZSBtb3JlIGNvZGUgYmV0d2VlbiBXb3JrZXJUaHJlYWQgYW5kIEF1ZGlvV29ya2xldFRocmVh
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBiOTAyYTYzMjMxZjFmYzM0YjZkY2E5
NDljODRmMTBmYTQ5MzJiOTA0Li5kN2FlNTdjNzBkNGVmZWZiOWExMjcyM2NiMjA0MWI4ODU2MWI2
NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcsMzcgKzM3LDQ0IEBACiAj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldvcmts
ZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmts
ZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRpYyBXb3JrbGV0UGFyYW1l
dGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCwgV29y
a2VySW5zcGVjdG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAgIGF1dG8qIGRvY3VtZW50
ID0gd29ya2xldC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1lRmxhZ3MgPSBkb2N1bWVu
dC0+c2V0dGluZ3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CisgICAgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5LndvcmtlclN0YXJ0TW9kZSgqd29y
a2xldC5kb2N1bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAgIGRvY3VtZW50LT51cmwo
KSwKICAgICAgICAganNSdW50aW1lRmxhZ3MsCiAgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0
KCkgPyB3b3JrbGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAotICAgICAg
ICB3b3JrbGV0LmlkZW50aWZpZXIoKQorICAgICAgICB3b3JrbGV0LmlkZW50aWZpZXIoKSwKKyAg
ICAgICAgc3RhcnRNb2RlCiAgICAgfTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAgICA6
IG1fd29ya2xldChtYWtlV2Vha1B0cih3b3JrbGV0KSkKICAgICAsIG1fZG9jdW1lbnQoKndvcmts
ZXQuZG9jdW1lbnQoKSkKLSAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6
OmNyZWF0ZSgqdGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0KSkpCisgICAg
LCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmts
ZXQuaWRlbnRpZmllcigpKSkKKyAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJl
YWQ6OmNyZWF0ZSgqdGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0LCAqbV9p
bnNwZWN0b3JQcm94eSkpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBt
X3dvcmtsZXRUaHJlYWQtPnN0YXJ0KCk7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyU3Rh
cnRlZCh3b3JrbGV0LmRvY3VtZW50KCksIG1fd29ya2xldFRocmVhZC5wdHIoKSwgeyB9LCAiQXVk
aW9Xb3JrbGV0Il9zKTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6On5BdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eSgpCiB7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyVGVy
bWluYXRlZCgpOwogICAgIG1fd29ya2xldFRocmVhZC0+c3RvcCgpOwogfQogCkBAIC0xMDEsNiAr
MTA4LDIyIEBAIHZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9BdWRp
b1dvcmtsZXQoRnVuY3Rpb248dm9pZChBdWRpb1dvcmtsCiAgICAgfSk7CiB9CiAKK3ZvaWQgQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSB7CisgICAgICAgIG1faW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlRnJvbVdvcmtlclRv
RnJvbnRlbmQobWVzc2FnZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCBk
aXNhYmxlZCkKK3sKKyAgICBwb3N0VGFza1RvTG9hZGVyKFtkaXNhYmxlZF0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFn
ZSgpKQorICAgICAgICAgICAgcGFnZS0+c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYklu
c3BlY3RvcihkaXNhYmxlZCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKaW5k
ZXggYTZiYzg1ODkxN2E1ZDBlYjc1MDRlNjQ2OGQwOGFmNTRlMDI1OWI2Yi4uMTM3ZmE0MTRjZGI5
YjgzNmQ5MWRhY2MxMThlNzgxMDU3ZDRjNzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaApA
QCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQor
I2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAKQEAgLTM3LDgg
KzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9Xb3JrbGV0OwogY2xhc3Mg
QXVkaW9Xb3JrbGV0VGhyZWFkOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBXb3JrZXJJbnNwZWN0
b3JQcm94eTsKIAotY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBwdWJsaWMgV29y
a2xldEdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSB7CitjbGFzcyBB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94
eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eT4gY3Jl
YXRlKEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAgICB7CkBAIC02MiwxMCArNjQsMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmKSBmaW5hbDsKICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcm
IG1vZGUpIGZpbmFsOwogCisgICAgLy8gV29ya2VyRGVidWdnZXJQcm94eS4KKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldFJl
c291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkgZmluYWw7CisKICAgICBi
b29sIGlzQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBXZWFrUHRyPEF1ZGlvV29ya2xldD4gbV93b3JrbGV0OwogICAgIFJlZjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9y
UHJveHk+IG1faW5zcGVjdG9yUHJveHk7CiAgICAgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gbV93
b3JrbGV0VGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IDIwZGM1ODkzMWEzZGJhMDAwZDlh
YjE3NmZhYjlmNTliYWU4MDExMDAuLjZhNzA5NTJiMTc1MGZlYjc3N2YxYzAyYTIzOWY0YTYyOGMy
NDk4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFRocmVhZC5jcHAKQEAgLTY4LDYgKzY4LDE2IEBAIEF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlKiBBdWRpb1dvcmtsZXRUaHJlYWQ6Omdsb2JhbFNjb3BlKCkgY29uc3QKICAgICByZXR1
cm4gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU+KFdvcmtlck9yV29ya2xldFRocmVh
ZDo6Z2xvYmFsU2NvcGUoKSk7CiB9CiAKK1dvcmtlckRlYnVnZ2VyUHJveHkmIEF1ZGlvV29ya2xl
dFRocmVhZDo6d29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVz
c2FnaW5nUHJveHk7Cit9CisKK2Jvb2wgQXVkaW9Xb3JrbGV0VGhyZWFkOjpzaG91bGRXYWl0Rm9y
V2ViSW5zcGVjdG9yT25TdGFydHVwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXJhbWV0ZXJz
LnN0YXJ0TW9kZSA9PSBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRGb3JJbnNwZWN0b3I7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRU
aHJlYWQuaAppbmRleCA0NmZhY2I2NWU3YjE0NWZlYjY5ZGUzMWE2ZDkyMWNhMTYzZTE0MTY4Li5l
YTlhMjRjMmM2NjYyNDBkZjdmYjUzYTgzY2U2MWZlYWI0MzZkMzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gV29ya2VyT3JXb3JrbGV0VGhyZWFkLgogICAg
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFsOworICAgIFdvcmtl
ckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCBmaW5hbDsKIAogICAg
IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgpIHsgcmV0dXJuIG1f
bWVzc2FnaW5nUHJveHk7IH0KIApAQCAtNTgsNiArNTksNyBAQCBwcml2YXRlOgogICAgIC8vIFdv
cmtlck9yV29ya2xldFRocmVhZC4KICAgICBSZWY8V1RGOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgp
IGZpbmFsOwogICAgIFJlZjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gY3JlYXRlR2xvYmFs
U2NvcGUoKSBmaW5hbDsKKyAgICBib29sIHNob3VsZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0
dXAoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtX21l
c3NhZ2luZ1Byb3h5OwogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggMDJhYmUxNjY0MTQyZGJlYTlhYmZmYzAwZWMzNzUzYmQxNGUzNjIzZi4uMDg3Y2Q5
NDhiNTFkMDFlMzc5NmM1MWRjNTkxZDMwODRjZGJmZmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTczLDYg
KzczLDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xl
VHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
Lmg+CkBAIC0xMzIwLDkgKzEzMjEsOSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlucwogICAgICAg
ICBsYXllclRyZWVBZ2VudC0+cmVuZGVyTGF5ZXJEZXN0cm95ZWQocmVuZGVyTGF5ZXIpOwogfQog
Ci1JbnN0cnVtZW50aW5nQWdlbnRzJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUpCitJbnN0cnVtZW50aW5nQWdlbnRzJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0g
ICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3Ry
dW1lbnRpbmdBZ2VudHM7CisgICAgcmV0dXJuIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHM7CiB9CiAKIEluc3RydW1l
bnRpbmdBZ2VudHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UoUGFnZSYgcGFnZSkKQEAgLTEzMzUsOCArMTMzNiw4IEBAIEluc3RydW1lbnRpbmdB
Z2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNv
bnRleHQoU2NyCiB7CiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKICAgICAgICAgcmV0
dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KS5wYWdlKCkpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAg
ICAgIHJldHVybiAmaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuICZpbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CmluZGV4IDVhZDc5ZTBkMTZhOTUzMmI4MWM4YjVhZjgwYWFjYWNlNTk4NjlkMWUuLmYwN2UyZjVj
OGJkMjQ0MGRjMzJlYThkNzBkZmYxMjk4MjdlMjg0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTk5LDcgKzk5LDcg
QEAgY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVyQmFz
ZTsKIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xh
c3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiBjbGFz
cyBXZWJHTFByb2dyYW07CkBAIC0yMDEsMTEgKzIwMSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRl
ciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAot
ICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwotICAgIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoV29ya2VyR2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZh
aWxMb2FkaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRh
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIC8vIFNvbWUgbmV0d29yayBy
ZXF1ZXN0cyBkbyBub3QgZ28gdGhyb3VnaCB0aGUgbm9ybWFsIG5ldHdvcmsgbG9hZGluZyBwYXRo
LgogICAgIC8vIFRoZXNlIG5ldHdvcmsgcmVxdWVzdHMgaGF2ZSB0byBpc3N1ZSB0aGVpciBvd24g
d2lsbFNlbmRSZXF1ZXN0IC8gZGlkUmVjZWl2ZVJlc3BvbnNlIC8gZGlkRmluaXNoTG9hZGluZyAv
IGRpZEZhaWxMb2FkaW5nCkBAIC0yNDMsMjAgKzI0MywyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAg
c3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKLSAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlKFdvcmtlckdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVDb3VudChQYWdlJiwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOwotICAgIHN0YXRpYyB2b2lkIGNv
bnNvbGVDb3VudChXb3JrZXJHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIGxhYmVsKTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBs
YWJlbCk7CiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50UmVzZXQoUGFnZSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKLSAgICBzdGF0aWMgdm9pZCBjb25z
b2xlQ291bnRSZXNldChXb3JrZXJHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmIGxhYmVsKTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRSZXNldChX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
dHJpbmcmIGxhYmVsKTsKIAogICAgIHN0YXRpYyB2b2lkIHRha2VIZWFwU25hcHNob3QoRnJhbWUm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1p
bmcoRnJhbWUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7Ci0g
ICAgc3RhdGljIHZvaWQgc3RhcnRDb25zb2xlVGltaW5nKFdvcmtlckdsb2JhbFNjb3BlJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbGFiZWwpOworICAgIHN0YXRpYyB2b2lk
IHN0YXJ0Q29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMgdm9pZCBsb2dD
b25zb2xlVGltaW5nKEZyYW1lJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
bGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7Ci0gICAgc3RhdGljIHZv
aWQgbG9nQ29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+
JiYpOworICAgIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVm
PEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKICAgICBzdGF0aWMgdm9pZCBzdG9wQ29u
c29sZVRpbWluZyhGcmFtZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxh
YmVsKTsKLSAgICBzdGF0aWMgdm9pZCBzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29w
ZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKKyAgICBzdGF0
aWMgdm9pZCBzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKICAgICBzdGF0aWMgdm9p
ZCBjb25zb2xlVGltZVN0YW1wKEZyYW1lJiwgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRz
PiYmKTsKICAgICBzdGF0aWMgdm9pZCBzdGFydFByb2ZpbGluZyhQYWdlJiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BQcm9m
aWxpbmcoUGFnZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
QEAgLTUzMiw3ICs1MzIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxheWVy
RGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVuZGVyTGF5ZXImKTsK
IAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
UGFnZShQYWdlJik7Ci0gICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIHN0
YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKIAogICAgIHN0
YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoY29u
c3QgRnJhbWUmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGNvbnN0IEZyYW1lKik7CkBAIC01NDEsNyArNTQxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckRvY3VtZW50KERvY3VtZW50Jik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCopOwogICAgIHN0YXRpYyBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIoUmVuZGVyT2Jq
ZWN0Jik7Ci0gICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOworICAgIHN0YXRpYyBJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKIH07CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTEwNTAsMTAgKzEwNTAs
MTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVl
c3QoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb24KICAgICAgICAgd2lsbFNlbmRSZXF1ZXN0SW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFJlcXVlc3QoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgd2lsbFNlbmRSZXF1ZXN0SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUp
LCBpZGVudGlmaWVyLCBudWxscHRyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlIHsgfSk7Cisg
ICAgd2lsbFNlbmRSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBu
dWxscHRyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlIHsgfSk7CiB9CiAKIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKEZyYW1lKiBm
cmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRUeXBlIGxvYWRUeXBlKQpAQCAtMTA3NSw5ICsx
MDc1LDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZShGcmFtZSYgZnJhbWUsIHUKICAgICAgICAgZGlkUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIs
IHJlc3BvbnNlLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZGlkUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIG51bGxwdHIsIHJlc3BvbnNlLCBudWxs
cHRyKTsKKyAgICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgcmVzcG9uc2UsIG51bGxwdHIpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9h
ZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiBkb2N1bWVudFRocmVhZGFibGVM
b2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTEwOTQsMTAgKzEwOTQsMTAgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFt
ZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcKICAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURh
dGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSksIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAg
IGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRh
LCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVy
KQpAQCAtMTEwNywxMCArMTEwNywxMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYQogICAgICAg
ICBkaWRGaW5pc2hMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwg
bG9hZGVyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkRmlu
aXNoTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdv
cmtlckdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgbmV0d29ya0xvYWRNZXRyaWNz
LCBudWxscHRyKTsKKyAgICBkaWRGaW5pc2hMb2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
LCBpZGVudGlmaWVyLCBudWxscHRyLCBuZXR3b3JrTG9hZE1ldHJpY3MsIG51bGxwdHIpOwogfQog
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZy
YW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTExMTksOSArMTExOSw5IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUq
IGZyYW1lLCBEb2N1bWVudExvYWRlCiAgICAgICAgIGRpZEZhaWxMb2FkaW5nSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBlcnJvcik7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgZGlkRmFpbExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGlkZW50aWZpZXIs
IG51bGxwdHIsIGVycm9yKTsKKyAgICBkaWRGYWlsTG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKSwgaWRlbnRpZmllciwgbnVsbHB0ciwgZXJyb3IpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZy
YW1lJiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYgbG9h
ZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTE1NzEsOSArMTU3MSw5
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlJiBwYWdlLCBzdGQ6OnVuaXF1CiAgICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwo
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIFdURk1vdmUobWVzc2FnZSkpOwogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQogewotICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSksIFdURk1vdmUobWVzc2FnZSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSksIFdURk1vdmUobWVzc2FnZSkpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChQYWdlJiBwYWdlLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE1ODEsOSAr
MTU4MSw5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNv
dW50KFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9iYWxPYmplCiAgICAgY29uc29sZUNvdW50SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29uc29sZUNvdW50KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYg
bGFiZWwpCiB7Ci0gICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29y
a2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwgbGFiZWwpOworICAgIGNv
bnNvbGVDb3VudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSwgc3RhdGUsIGxhYmVsKTsKIH0KIAog
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChQ
YWdlJiBwYWdlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJl
bCkKQEAgLTE1OTEsOSArMTU5MSw5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29uc29sZUNvdW50UmVzZXQoUGFnZSYgcGFnZSwgSlNDOjpKU0dsb2JhCiAgICAgY29u
c29sZUNvdW50UmVzZXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBzdGF0
ZSwgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVDb3VudFJlc2V0KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlND
OjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgY29uc29sZUNvdW50
UmVzZXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJH
bG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CisgICAgY29uc29sZUNvdW50UmVzZXRJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSksIHN0YXRlLCBsYWJlbCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6dGFrZUhlYXBTbmFwc2hvdChGcmFtZSYgZnJhbWUsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCkBAIC0xNjA5LDkgKzE2MDksOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIEpTQzo6
SlNHbAogICAgICAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBmcmFtZSwgZXhlYywgbGFiZWwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xv
YmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWlu
ZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAg
c3RhcnRDb25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgc3RhcnRDb25zb2xl
VGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CiB9CiAKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhGcmFtZSYg
ZnJhbWUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJl
ZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCkBAIC0xNjIwLDkgKzE2
MjAsOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvZ0NvbnNvbGVU
aW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvYgogICAgICAgICBsb2dDb25zb2xlVGltaW5n
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRz
KSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29s
ZVRpbWluZyhXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxvZ0NvbnNvbGVUaW1pbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRz
KQogewotICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFy
Z3VtZW50cykpOworICAgIGxvZ0NvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSks
IGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE2MzEsOSAr
MTYzMSw5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNv
bGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBKU0M6OkpTR2xvCiAgICAgICAgIHN0b3BDb25zb2xlVGlt
aW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIGV4ZWMsIGxhYmVsKTsKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgZXhlYywg
bGFiZWwpOworICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9y
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpLCBl
eGVjLCBsYWJlbCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29uc29sZVRpbWVTdGFtcChGcmFtZSYgZnJhbWUsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3Vt
ZW50cz4mJiBhcmd1bWVudHMpCkBAIC0xNzU2LDkgKzE3NTYsOSBAQCBpbmxpbmUgSW5zdHJ1bWVu
dGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZQogICAgIHJldHVybiBwYWdlID8gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKCpw
YWdlKSA6IG51bGxwdHI7CiB9CiAKLWlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29w
ZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCitpbmxpbmUgSW5zdHJ1bWVu
dGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRz
Rm9yV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUq
IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIHJldHVybiB3b3JrZXJHbG9iYWxT
Y29wZSA/ICZpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoKndvcmtlckds
b2JhbFNjb3BlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlID8gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgq
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpIDogbnVsbHB0cjsKIH0KIAogaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldlYkFnZW50QmFzZS5oCmluZGV4IDcwNDQ2NDRi
ZmY5NTIwZWFhZTg2ZWZkNGIyYWUzOTE5MjNmYzdlZjQuLjFiYmY5NGVmYTUyMTFhZDIxNmI0YTAw
ZmY2NmE5MzA3NjZhNzBiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXZWJBZ2VudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV2ViQWdlbnRCYXNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKLWNsYXNzIFdvcmtl
ckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKIC8vIEZJ
WE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVuIHJlbWFpbmluZyBhZ2Vu
dHMgbW92ZS4KIHN0cnVjdCBXZWJBZ2VudENvbnRleHQgOiBwdWJsaWMgSW5zcGVjdG9yOjpBZ2Vu
dENvbnRleHQgewpAQCAtNTcsMTMgKzU3LDEzIEBAIHN0cnVjdCBQYWdlQWdlbnRDb250ZXh0IDog
cHVibGljIFdlYkFnZW50Q29udGV4dCB7CiB9OwogCiBzdHJ1Y3QgV29ya2VyQWdlbnRDb250ZXh0
IDogcHVibGljIFdlYkFnZW50Q29udGV4dCB7Ci0gICAgV29ya2VyQWdlbnRDb250ZXh0KFdlYkFn
ZW50Q29udGV4dCYgY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3Bl
KQorICAgIFdvcmtlckFnZW50Q29udGV4dChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICAg
ICAgOiBXZWJBZ2VudENvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCB3b3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZSkKKyAgICAgICAgLCB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICB7CiAgICAgfQogCi0gICAgV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIGNsYXNzIEluc3BlY3Rv
ckFnZW50QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50QmFzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAppbmRleCA4MGM5YTEwNWM1
NGEzZTUzNzBhY2NkNmMxMmZmMDZmMmIzNDM1ZGEyLi4yMjczMWE3ZTIxYzVjNDdmZWIyMmQ5MjU4
MmRjODk4YzYxNTJkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1
Z2dlci5jcHAKQEAgLTM0LDE2ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1Xb3JrZXJEZWJ1Z2dl
cjo6V29ya2VyRGVidWdnZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCitXb3JrZXJEZWJ1
Z2dlcjo6V29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQp
CiAgICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQogICAgICwgbV93b3JrZXJH
bG9iYWxTY29wZShjb250ZXh0KQogewpAQCAtNjAsOCArNjEsOCBAQCB2b2lkIFdvcmtlckRlYnVn
Z2VyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CiAgICAgSlNDOjpE
ZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CiAKLSAgICBpZiAobV93
b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5z
Y3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CisgICAgaWYgKGF1dG8qIHNjcmlwdENvbnRy
b2xsZXIgPSBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpKQorICAgICAgICBzY3JpcHRDb250
cm9sbGVyLT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQp
CiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CkBAIC04MCw3ICs4MSw3IEBA
IHZvaWQgV29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIAogICAgIE1l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgcmVzdWx0ID0g
bV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUo
bV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgICAgIHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2Nv
cGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZSht
X3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuaAppbmRleCAxYzQ1Njk5OWFlZjYy
YjU0NDZhZjk3ZDY1NDY0ZjhjNTZjOWUxYWQzLi4xNDA5NGEzNjU3Y2U3NTBmZDhiYWJlZTYzZGI0
ZmNkYWNhZmU4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIu
aApAQCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGU7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAogY2xh
c3MgV29ya2VyRGVidWdnZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV29ya2VyRGVidWdnZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlckRlYnVnZ2VyKFdvcmtlckdsb2JhbFNjb3BlJik7
CisgICAgV29ya2VyRGVidWdnZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICB+
V29ya2VyRGVidWdnZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKIApAQCAtNTMsNyArNTMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKICAg
ICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRp
b24qKSBjb25zdCBmaW5hbDsKIAotICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2Jh
bFNjb3BlOworICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNj
b3BlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDkwZTk4
NTQ0YjUzYTUwMmViOThhNWQ4YzIyNWI3MDMzYjM5YTA2N2YuLmZlYTNkMGNiNGIyMTljOTIyZTIy
YTZmOGU2NDdhMzFlMWY4MDcxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNp
bmNsdWRlICJXb3JrZXJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJET01EZWJ1Z2dl
ckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5oIgotI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTmV0d29ya0FnZW50LmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50
aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWwuaCIKQEAgLTU3LDE2ICs1NywxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAotV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlz
LCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0
ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAg
ICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCi0gICAgLCBtX2Rl
YnVnZ2VyKHdvcmtlckdsb2JhbFNjb3BlKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSkKKyAgICAsIG1fZGVidWdnZXIod29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKQogewotICAgIEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJl
YWQoKSk7CisgICAgQVNTRVJUKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRo
cmVhZCgpKTsKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgp
OwogCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpj
b25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAg
IG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5l
bCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2Jh
bFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1f
ZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQo
KSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5k
Um91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0xNDgsNyAr
MTQ4LDcgQEAgV29ya2VyQWdlbnRDb250ZXh0IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Ondv
cmtlckFnZW50Q29udGV4dCgpCiAKICAgICBXb3JrZXJBZ2VudENvbnRleHQgd29ya2VyQ29udGV4
dCA9IHsKICAgICAgICAgd2ViQ29udGV4dCwKLSAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZSwK
KyAgICAgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwKICAgICB9OwogCiAgICAgcmV0
dXJuIHdvcmtlckNvbnRleHQ7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiht
X3dvcmtlckdsb2JhbFNjb3BlKSkgeworICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKSB7CiAgICAgICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAg
ICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtl
ckNvbnRleHQpKTsKICAgICB9CkBAIC0xOTksNyArMTk5LDcgQEAgSW5zcGVjdG9yRXZhbHVhdGVI
YW5kbGVyIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmV2YWx1YXRlSGFuZGxlcigpIGNvbnN0
CiAKIFZNJiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp2bSgpCiB7Ci0gICAgcmV0dXJuIG1f
d29ya2VyR2xvYmFsU2NvcGUudm0oKTsKKyAgICByZXR1cm4gbV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS52bSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3
YTUzZDgwNGJmYmNlMGY2MmUxMTUzYzUxM2IxNzhkNzQyMzgzZWRlLi45ZmQwYjljMzU0NGVhYjY5
MzkwZDJlZDRjZTlkYmYwOTc1ZDAxNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNz
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogc3RydWN0IFdvcmtlckFnZW50Q29udGV4dDsK
IAogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvckVudmlyb25tZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CisgICAgZXhwbGljaXQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0aW5nKCk7CkBAIC04MSw3ICs4MSw3
IEBAIHByaXZhdGU6CiAgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRj
aDsKICAgICBXb3JrZXJEZWJ1Z2dlciBtX2RlYnVnZ2VyOwogICAgIEluc3BlY3Rvcjo6QWdlbnRS
ZWdpc3RyeSBtX2FnZW50czsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxT
Y29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWw+IG1fZm9yd2FyZGluZ0NoYW5uZWw7CiAgICAgYm9vbCBtX2RpZENyZWF0ZUxhenlBZ2VudHMg
eyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRleCBjMDI2MjExMzVjNTVlYmQ3MDZlMDQzNTFi
NWMxM2Y2MTNiZWE2NTM0Li5kMjYzMGQ1MWNmZDRkNzFjZTU4MWE5ZjY0OTVhMzE2MmY2ZDgzMGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRl
bmRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZy
b250ZW5kQ2hhbm5lbC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIldvcmtlckRlYnVnZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmg+CiAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlKQorICAgIGV4cGxpY2l0IFdvcmtlclRvUGFnZUZyb250ZW5kQ2hh
bm5lbChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAg
ICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAgICB7CiAgICAg
fQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBt
X3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0TWVz
c2FnZVRvRGVidWdnZXIobWVzc2FnZSk7CisgICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUud29y
a2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHkoKS5wb3N0TWVzc2FnZVRv
RGVidWdnZXIobWVzc2FnZSk7CiAgICAgfQogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29y
a2VyR2xvYmFsU2NvcGU7CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2Vy
R2xvYmFsU2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtl
ckFnZW50LmNwcAppbmRleCBiYmUyY2MwM2Q2NDVmYzEyOTA4NGRiZWU5ZGQ4MDQyMmJiZDYzZmQ4
Li5lZmZkMmJlZTBhMGE3MDliZDlhZDdhMzEyMzMyNGQwNzIxMmFiM2JkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VX
b3JrZXJBZ2VudC5jcHAKQEAgLTM4LDEwICszOCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6OlNlcnZpY2VXb3JrZXJBZ2VudChXb3JrZXJBZ2Vu
dENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlNlcnZpY2VXb3Jr
ZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQud29ya2VyR2xvYmFsU2NvcGUpKQor
ICAgICwgbV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpTZXJ2aWNlV29ya2VyQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKLSAgICBBU1NF
UlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNT
RVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkp
OwogfQogCiBTZXJ2aWNlV29ya2VyQWdlbnQ6On5TZXJ2aWNlV29ya2VyQWdlbnQoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IGY2NGQ1NzUzMGI3YjYxNzBlYWFkZTkyM2U0
MDliNWJkZGVhNzJlNDAuLjNiNWU1NGU0MTVmYzJhZTg2ZDMzYTI3ZWNiOWRlZTU5NmY3YzEwODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV29y
a2VyQXVkaXRBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC00MSw5ICs0MSw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIFdvcmtlckF1ZGl0QWdlbnQ6OldvcmtlckF1ZGl0QWdlbnQoV29ya2Vy
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQXVkaXRBZ2VudChjb250ZXh0
KQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlKQor
ICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlz
Q29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlckF1ZGl0QWdlbnQ6On5Xb3Jr
ZXJBdWRpdEFnZW50KCkgPSBkZWZhdWx0OwpAQCAtNTUsNyArNTUsNyBAQCBJbmplY3RlZFNjcmlw
dCBXb3JrZXJBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFs
T2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2Vu
dC5oCmluZGV4IGQyNTljNmE3NmMyZWNiMGVlYjhlZGQ3MzM5ZWMwNDU5YmQzNzJiM2QuLmYxOTFl
MDQ5NTAxNDMyZWQ3MjIyOThmZjQzODM4ZmY4ZmNmMmVmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJH
bG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCiBjbGFzcyBX
b3JrZXJBdWRpdEFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRB
Z2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyQXVkaXRBZ2VudCk7CkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJp
bmcmLCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250
ZXh0SWQ+JiYpOwogCi0gICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7
CisgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyQ29uc29sZUFnZW50
LmNwcAppbmRleCBlYWQ0MmRjMzNkNjg3ZjA0M2VkNTY3ZTNiOGY0YjE1ODA3Njk2Njc2Li5mYmE1
NjE0ZTc3ZjEzYjlhZGVlMDI1MTBhZmJlNjY4YTFiY2RkNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJDb25zb2xlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckNvbnNvbGVB
Z2VudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIFdv
cmtlckNvbnNvbGVBZ2VudDo6V29ya2VyQ29uc29sZUFnZW50KFdvcmtlckFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0KQogewotICAgIEFTU0VSVChj
b250ZXh0Lndvcmtlckdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQo
Y29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9
CiAKIFdvcmtlckNvbnNvbGVBZ2VudDo6fldvcmtlckNvbnNvbGVBZ2VudCgpID0gZGVmYXVsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggM2FlMzVjNjdhMzAzNDFkN2VlMTJmNmNj
NTY4OGRlMWVjNzhjNjNlMC4uMzU1OGNiMzRmOTczZWQ2MmM4NjkxMjNiNjU3NTNjY2YzNTMzYzUw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs
dWRlICJXb3JrZXJEZWJ1Z2dlckFnZW50LmgiCiAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgot
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC00MSwxNiArNDEsMTYg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VyRGVidWdnZXJBZ2VudDo6V29y
a2VyRGVidWdnZXJBZ2VudChXb3JrZXJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBXZWJE
ZWJ1Z2dlckFnZW50KGNvbnRleHQpCi0gICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQu
d29ya2VyR2xvYmFsU2NvcGUpCisgICAgLCBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKGNv
bnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQu
d29ya2VyR2xvYmFsU2NvcGUuaXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0
Lndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmlzQ29udGV4dFRocmVhZCgpKTsKIH0KIAogV29y
a2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZv
aWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1f
d29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCkp
KTsKKyAgICBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpKSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2Vy
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYm
IGV4ZWN1dGlvbkNvbnRleHRJZCkKQEAgLTYwLDcgKzYwLDcgQEAgSW5qZWN0ZWRTY3JpcHQgV29y
a2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0
cmluZyYKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVj
dChtX3dvcmtlckdsb2JhbFNjb3BlKSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX3dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdl
bnQuaAppbmRleCA3Y2E2NGU0MDEzYTU0YjQxOGQ1M2U0NzQ4MDJlNzMyYmYxOTA4Yzk3Li45OTQ3
ZjcxNTQ1NjE0YWQ5M2ZmN2VmZTI1ZjJlMDU4NDgyNzg1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZyYsIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlv
bkNvbnRleHRJZD4mJik7CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxT
Y29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDVkY2U4MjZmNGIxMGUwY2Q0ODVjODU5YWEzNzI5MzJiZWU2NGI1YTku
LjE0MTBhMjc4OTQwZmRjMWNmYTViMzYwMmFiY2M1NzY0MzdmN2IyYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0
d29ya0FnZW50LmNwcApAQCAtMzYsOSArMzYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBXb3JrZXJOZXR3b3JrQWdlbnQ6Oldvcmtlck5ldHdvcmtBZ2VudChXb3JrZXJBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQoY29udGV4dCkKLSAg
ICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZSkKKyAgICAs
IG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoY29udGV4dC53b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSkKIHsKLSAgICBBU1NFUlQoY29udGV4dC53b3JrZXJHbG9iYWxTY29wZS5pc0NvbnRl
eHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQud29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaXNDb250ZXh0VGhyZWFkKCkpOwogfQogCiBXb3JrZXJOZXR3b3JrQWdlbnQ6On5Xb3JrZXJO
ZXR3b3JrQWdlbnQoKSA9IGRlZmF1bHQ7CkBAIC02MSwxMiArNjEsMTIgQEAgVmVjdG9yPFdlYlNv
Y2tldCo+IFdvcmtlck5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9s
ZGVyJikKIAogdm9pZCBXb3JrZXJOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2Fi
bGVkSW50ZXJuYWwoYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnRo
cmVhZCgpLndvcmtlckRlYnVnZ2VyUHJveHkoKS5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5
V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Lndvcmtlck9yV29ya2xldFRocmVhZCgpLT53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CiB9CiAKIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIFdvcmtlck5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dChQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJ
ZCYpCiB7Ci0gICAgcmV0dXJuICZtX3dvcmtlckdsb2JhbFNjb3BlOworICAgIHJldHVybiAmbV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJOZXR3b3JrQWdlbnQuaAppbmRleCBkZDg3ZDgxMDIwMmU1YjE3ZGU5Y2YwN2I3NjJiNTI1
ZWVlMmUzYmU4Li5kN2JlYmQwZGVhMTBhZmIwMTJiNDZhY2M0OTY3NWEyOWE5ZWQ0YmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3
b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJOZXR3b3JrQWdlbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpG
cmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJjZURh
dGEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93
b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IGFhNThhMWYwZDdhODFiMDA2ODFmNjY4YTlmYzRh
NzI1ODZiMTNkY2QuLjhlODRkYTAwMzE5YWE4YWYyMzQ0NDljYzI3ODA2YTcxYzI1MWE0YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIldv
cmtlclJ1bnRpbWVBZ2VudC5oIgogCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KIApAQCAtNDQsOSAr
NDQsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogV29ya2VyUnVudGltZUFnZW50OjpX
b3JrZXJSdW50aW1lQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1
bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQotICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlckdsb2JhbFNj
b3BlKQorICAgICwgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShjb250ZXh0Lndvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKQogewotICAgIEFTU0VSVChjb250ZXh0Lndvcmtlckdsb2JhbFNj
b3BlLmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC53b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5pc0NvbnRleHRUaHJlYWQoKSk7CiB9CiAKIFdvcmtlclJ1bnRpbWVBZ2Vu
dDo6fldvcmtlclJ1bnRpbWVBZ2VudCgpID0gZGVmYXVsdDsKQEAgLTU4LDcgKzU4LDcgQEAgSW5q
ZWN0ZWRTY3JpcHQgV29ya2VyUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRG
b3IoZ2xvYmFsT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGUpKTsKKyAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVu
dGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaAppbmRleCA2Yjk5OGY0ZDE3MzE4NTFmOTliNjdlZTE1YTVkMjAwMTU4
N2Y0ZDA2Li5iY2NjMmI3ZDA3MTVhMzRlN2M0NzcyMzI2ZDI0MWRhOTZjN2JlMjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1l
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiAKIGNsYXNzIFdvcmtlclJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29y
a2VyUnVudGltZUFnZW50KTsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVu
bXV0ZUNvbnNvbGUoKSB7IH0KIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyNzE3Yzg2
MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1Li4xOGZmM2Y5NGYwNDJkMWExZmQwM2E1
MWJjMTFkNWJkMTQ2ZjMzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
U3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXb3Jr
bGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpKSkKKyAgICBp
ZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFdURk1v
dmUocmVmZXJyZXIpKTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7CkBAIC0x
MTgsOCArMTE4LDggQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIHZvaWQgVGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOworICAgIGlmIChpczxXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMp
OwogICAgIGVsc2UKICAgICAgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgV1RGTW92ZShyZXF1
ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBjb250ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkocmVzb3VyY2VVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGUxMTM5NmJmZDgzMzZlM2U4Njc0YTQ5Y2I1Yzgx
ODRiZjE1ODBhN2UuLmVmNDk0OTIyNWIyOGI1MGYzODY2YzBmN2QzNjZlMGI3OTI2NmNhM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTEzNyw4ICsxMzcsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgICAgICBvcHRp
b25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFj
dGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgogCi0g
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3Qp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGdsb2JhbFNj
b3BlLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKIAogICAgIC8vIENhbiB3
ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRvIGNyZWF0ZSBtb3JlIGVm
ZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMg
PSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdURk1v
dmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewpAQCAtMjI2LDggKzIyNSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxv
bmcKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRl
eHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKFdURk1vdmUocmVzcG9uc2VEYXRhKSk7
CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShkb3duY2FzdDxXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVy
LCByZXNwb25zZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTIzOCw4ICsyMzYsNyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0
R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAgICAgICBpZiAo
aXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YShkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJl
cXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApAQCAtMjQ5LDggKzI0Niw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25n
IGlkCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3Jr
ZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVl
c3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5p
c29sYXRlZENvcHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKLSAgICAg
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1l
dHJpY3MpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRp
bmcoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICB9LCBtX3Rhc2tNb2Rl
KTsKIH0KIApAQCAtMjYxLDggKzI1Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvCiAgICAg
ICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29y
a2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihj
b250ZXh0LCBlcnJvciwgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+aW5pdGlhdG9yKCkp
OwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsK
LSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0
PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKaW5kZXggN2I0MjkzMDBhZmZjYjA1
MTg5ZDQ4MTYwNTlmNDA1ZDY2ODZjNGY1MS4uMDllMjA3NmJmN2FiYTAxYTY3OWI1OGEyOGE4ODhm
OTk1MDRlNDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25z
b2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVD
bGllbnQuY3BwCkBAIC01MywzNyArNTMsMjcgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpt
ZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIAog
dm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
V29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9i
YWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KG1fZ2xvYmFsU2Nv
cGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudFJl
c2V0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0g
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldChkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0KG1fZ2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsK
IH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPiht
X2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENv
bnNvbGVUaW1pbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpLCBl
eGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVU
aW1pbmcobV9nbG9iYWxTY29wZSwgZXhlYywgbGFiZWwpOwogfQogCiB2b2lkIFdvcmtlckNvbnNv
bGVDbGllbnQ6OnRpbWVMb2coSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2ds
b2JhbFNjb3BlKSwgZXhlYywgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xlVGltaW5nKG1fZ2xvYmFsU2NvcGUsIGV4ZWMs
IGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogfQogCiB2b2lkIFdvcmtlckNvbnNvbGVDbGll
bnQ6OnRpbWVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJl
bCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxTY29wZS4K
LSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcobV9nbG9iYWxTY29wZSwgZXhlYywg
bGFiZWwpOwogfQogCiAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MzQ5OT4gV2Vi
IEluc3BlY3RvcjogY29uc29sZS5wcm9maWxlIHNob3VsZCB1c2UgdGhlIG5ldyBTYW1wbGluZyBQ
cm9maWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApp
bmRleCA1N2I5ZjcyMzdmZjdmMTY2YTViYmM0YTYyM2FiMjFlYzE1YTE2NDY3Li5hMWI5ZjU0MjJi
MjU0MGFjNDE5ODg5NTJlNTY5MTFmMjg3NWI4MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjUsNyArNjUsNiBAQCBXb3JrZXJHbG9iYWxT
Y29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBS
ZWY8U2VjdXJpdAogICAgICwgbV91cmwocGFyYW1zLnNjcmlwdFVSTCkKICAgICAsIG1faWRlbnRp
ZmllcihwYXJhbXMuaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHBhcmFtcy51c2VyQWdl
bnQpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX2lzT25saW5lKHBhcmFtcy5pc09ubGluZSkK
ICAgICAsIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KHBhcmFt
cy5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgLCBtX3Rv
cE9yaWdpbihXVEZNb3ZlKHRvcE9yaWdpbikpCkBAIC0xMjEsOCArMTIwLDYgQEAgdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKIAogICAgIGlmIChtX2NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xl
YXJQZW5kaW5nUmVxdWVzdHMoKTsKLQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+d29ya2Vy
VGVybWluYXRpbmcoKTsKIH0KIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKQpAQCAtMzM3LDM2ICszMzQsNiBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3Bl
Ojpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0
CiAgICAgdGhyZWFkKCkud29ya2VyUmVwb3J0aW5nUHJveHkoKS5wb3N0RXhjZXB0aW9uVG9Xb3Jr
ZXJPYmplY3QoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TCk7CiB9CiAKLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIG1lc3NhZ2UpCi17Ci0gICAg
aWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVz
c2FnZVRhc2sobWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1l
c3NhZ2UoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsK
LX0KLQotdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQotewotICAgIGFkZE1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSwgeyB9LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCByZXF1ZXN0SWRl
bnRpZmllcik7Ci19Ci0KLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
VGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2ln
bmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxsU3RhY2ssIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
KQotewotICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRk
Q29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0KSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4gbWVzc2FnZTsKLSAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBl
OjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJl
cXVlc3RJZGVudGlmaWVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwotfQotCiAjaWYgRU5B
QkxFKFdFQl9DUllQVE8pCiAKIGNsYXNzIENyeXB0b0J1ZmZlckNvbnRhaW5lciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDcnlwdG9CdWZmZXJDb250YWluZXI+IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAyZGU4MGUxNGMyYjYzOGM0NTFj
OTMzZjYyODYxOTY3NmFmYjkzZmRlLi5kNTkwOTdhOGIzYjk2MTc1ZjVmMzk5NjEzOTk4ZGZmOTli
ZWFhYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC00Nyw3ICs0Nyw2IEBAIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
czsKIGNsYXNzIENyeXB0bzsKIGNsYXNzIFBlcmZvcm1hbmNlOwogY2xhc3MgU2NoZWR1bGVkQWN0
aW9uOwotY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIFdvcmtlckxvY2F0
aW9uOwogY2xhc3MgV29ya2VyTmF2aWdhdG9yOwogY2xhc3MgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOwpAQCAtODEsOCArODAsNiBAQCBwdWJsaWM6CiAgICAgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uJiBzd0NsaWVudENvbm5lY3Rpb24oKTsKICNlbmRpZgogCi0gICAgV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2luc3Bl
Y3RvckNvbnRyb2xsZXI7IH0KLQogICAgIFdvcmtlclRocmVhZCYgdGhyZWFkKCkgY29uc3Q7CiAK
ICAgICB1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHk7CkBA
IC0xMDYsOCArMTAzLDYgQEAgcHVibGljOgogICAgIFdvcmtlck5hdmlnYXRvciogb3B0aW9uYWxO
YXZpZ2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRvci5nZXQoKTsgfQogICAgIFdvcmtl
ckxvY2F0aW9uKiBvcHRpb25hbExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi5n
ZXQoKTsgfQogCi0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmluYWw7Ci0KICAgICBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KIAog
ICAgIENyeXB0byYgY3J5cHRvKCk7CkBAIC0xMzYsMTEgKzEzMSw2IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5hbDsK
IAotICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBhbmQgYWRkQ29uc29sZU1lc3NhZ2Ug
ZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLgotICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBj
cmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCi0gICAgdm9pZCBhZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2
b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKSBmaW5hbDsK
LQogICAgIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBGb3JjZVVURjggPSBG
b3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKQEAgLTE2OCw3ICsxNTgsNiBAQCBwcml2YXRlOgog
ICAgIG11dGFibGUgUmVmUHRyPFdvcmtlck5hdmlnYXRvcj4gbV9uYXZpZ2F0b3I7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVj
dG9yQ29udHJvbGxlcjsKIAogICAgIGJvb2wgbV9pc09ubGluZTsKICAgICBib29sIG1fc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCA2MzJiODJlMjhiNzJkYTYx
MzcxYzI0ZWJmYmFmMmRkNTU5MTBkMDcxLi5iMWJlM2U5MjRjZWE0N2EzOTUyMDAxM2M3NjdkYjYw
Yzc4OGI3ZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3Bl
Y3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3Rv
clByb3h5LmNwcApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1
ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgog
I2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckFnZW50QmFzZS5oPgpAQCAtNjIsNyArNjMsNyBAQCBXb3JrZXJUaHJlYWRTdGFydE1vZGUg
V29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250
ZQogICAgIHJldHVybiBwYXVzZU9uU3RhcnQgPyBXb3JrZXJUaHJlYWRTdGFydE1vZGU6OldhaXRG
b3JJbnNwZWN0b3IgOiBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbDsKIH0KIAotdm9pZCBX
b3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6Ondv
cmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlclRocmVhZCk7CiAKQEAgLTkzLDcg
Kzk0LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyVGVybWluYXRlZCgpCiB2
b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpyZXN1bWVXb3JrZXJJZlBhdXNlZCgpCiB7CiAgICAg
bV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KS50aHJlYWQoKS5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKKyAgICAg
ICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9y
V29ya2xldFRocmVhZCgpLT5zdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKTsKICAgICB9KTsKIH0K
IApAQCAtMTA2LDcgKzEwNyw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RU
b1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoUGFnZUNoYW5uZWwmIGNoYW5uCiAgICAgbV9wYWdl
Q2hhbm5lbCA9ICZjaGFubmVsOwogCiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
RGVidWdnZXJUYXNrKFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9s
bGVyKCkuY29ubmVjdEZyb250ZW5kKCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZyb250
ZW5kKCk7CiAgICAgfSk7CiB9CiAKQEAgLTExOSwxMSArMTIwLDExIEBAIHZvaWQgV29ya2VySW5z
cGVjdG9yUHJveHk6OmRpc2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpCiAg
ICAgbV9wYWdlQ2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dG9yRGVzdHJveWVkKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKIAogICAgICAgICAvLyBJbiBjYXNl
IHRoZSB3b3JrZXIgaXMgcGF1c2VkIHJ1bm5pbmcgZGVidWdnZXIgdGFza3MsIGVuc3VyZSB3ZSBi
cmVhayBvdXQgb2YKICAgICAgICAgLy8gdGhlIHBhdXNlIHNpbmNlIHRoaXMgd2lsbCBiZSB0aGUg
bGFzdCBkZWJ1Z2dlciB0YXNrIHdlIHNlbmQgdG8gdGhlIHdvcmtlci4KLSAgICAgICAgZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLnN0b3BSdW5uaW5nRGVidWdn
ZXJUYXNrcygpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
Y29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnN0b3BSdW5uaW5nRGVidWdnZXJUYXNr
cygpOwogICAgIH0pOwogfQogCkBAIC0xMzQsNyArMTM1LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0
b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoY29uc3QgU3Ry
aW5nJgogICAgICAgICByZXR1cm47CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3REZWJ1Z2dlclRhc2soW21lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZy
b21Gcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmQobWVzc2FnZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAppbmRleCA1ZThhMWRjMGVkMGQ5YWE1MzJjMzY3
NDY0Yzg2N2ZiNGY3ZjlhYTVmLi5iZWZjMDFkOTU3MGE4YzRhOGI3ZGRlZTg1ZWExMDYxOGE3N2E0
NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5o
CkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJUaHJlYWQ7CitjbGFzcyBXb3JrZXJPcldvcmts
ZXRUaHJlYWQ7CiAKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkU3RhcnRNb2RlOwogCkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdl
dCgpOyB9CiAKICAgICBXb3JrZXJUaHJlYWRTdGFydE1vZGUgd29ya2VyU3RhcnRNb2RlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICB2b2lkIHdvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdvcmtlclRocmVhZCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CisgICAgdm9pZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
IHZvaWQgd29ya2VyVGVybWluYXRlZCgpOwogCiAgICAgdm9pZCByZXN1bWVXb3JrZXJJZlBhdXNl
ZCgpOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBSZWZQ
dHI8V29ya2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKKyAgICBSZWZQdHI8V29ya2VyT3JXb3Jr
bGV0VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAg
IFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA1ZjY2MzVlYmIz
N2NjZWQzMjYwNTZiODIzYzcwMDk3OThjZGUyMjExLi4wMjc1MmRhNWI0NTE1NzE5YmZhMzg4OWZh
OTM5OGQwNWUwOTMwZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKICNpbmNsdWRlICJXb3JrZXJFdmVudExv
b3AuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmtlck9yV29y
a2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKQEAgLTM5LDYgKzQwLDcg
QEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KTsKIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShSZWY8SlNDOjpWTT4mJiB2bSwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB0aHJlYWQpCiAgICAg
OiBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+KFdU
Rk1vdmUodm0pLCB0aGlzKSkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKKyAgICAsIG1faW5zcGVj
dG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlz
KSkKIHsKIH0KIApAQCAtNTksNiArNjEsOCBAQCB2b2lkIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogICAgIGlmIChtX2V2ZW50TG9vcCkKICAgICAg
ICAgbV9ldmVudExvb3AtPmNsZWFyTWljcm90YXNrUXVldWUoKTsKICAgICByZW1vdmVSZWplY3Rl
ZFByb21pc2VUcmFja2VyKCk7CisKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyKCkud29ya2VyVGVy
bWluYXRpbmcoKTsKIH0KIAogdm9pZCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6Y2xlYXJT
Y3JpcHQoKQpAQCAtMTEwLDQgKzExNCwzNCBAQCB2b2lkIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlOjpwb3N0VGFzayhUYXNrJiYgdGFzaykKICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+
cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCit2b2lkIFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQoreworICAgIGlmICghaXNDb250ZXh0VGhy
ZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKG1lc3NhZ2Ut
PnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCkpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVz
c2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7Cit9CisKK3ZvaWQgV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICBhZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWws
IG1lc3NhZ2UsIHsgfSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIp
OworfQorCit2b2lkIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNp
Z25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKK3sKKyAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7CisgICAgICAgIHBvc3RUYXNrKEFk
ZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+IG1lc3NhZ2U7CisgICAgaWYgKGNhbGxTdGFjaykKKyAgICAgICAgbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDhhMTc4MGY2ODUwZDkxZDM1MDQxM2E3NTc5MDVl
ZWYyYTg5YTkxMTMuLjZkNTg5ZjRjMTViNWQyMzU4MWE2Y2IwMzJmYWNiMjIwZjliN2Q5YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVu
dExvb3BUYXNrR3JvdXA7CiBjbGFzcyBXb3JrZXJFdmVudExvb3A7CitjbGFzcyBXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOwogY2xhc3MgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjsK
IGNsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZDsKIApAQCAtNDgsNiArNDksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGVhclNjcmlwdCgpOwogCiAgICAgSlNDOjpWTSYgdm0oKSBmaW5hbDsKKyAg
ICBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gKm1faW5zcGVjdG9yQ29udHJvbGxlcjsgfQogCiAgICAgdW5zaWduZWQgbG9uZyBj
cmVhdGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7IH0K
IApAQCAtNTUsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRMb29wVGFza0dyb3VwJiBldmVu
dExvb3AoKSBmaW5hbDsKICAgICBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFsOwog
ICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24g
Y29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsK
IAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKIApAQCAtODQsMTAg
Kzg3LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAor
ICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBhbmQgYWRkQ29uc29sZU1lc3NhZ2UgZnVu
Y3Rpb25zIGFyZSBkZXByZWNhdGVkLgorICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVh
dGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCisgICAgdm9pZCBhZGRNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lk
IGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKSBmaW5hbDsKKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3Nj
cmlwdDsKICAgICBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIG1fdGhyZWFkOwogICAgIFJlZlB0cjxX
b3JrZXJFdmVudExvb3A+IG1fZXZlbnRMb29wOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrR3JvdXA+IG1fZGVmYXVsdFRhc2tHcm91cDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIHVuc2ln
bmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogICAgIGJvb2wgbV9pc0Nsb3Npbmcg
eyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5oCmluZGV4IGIzZTc5MjQwOWRjOTBhMTJjNWZmODllNzZiMDdkMzgxNDNlN2IwYTAu
LjgxMDBmZjE1MTM5ZWZjYmFhMDYxYjBiZDU0MjJhMDM4YjU0MDRjOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAtMzgsNiArMzgsNyBA
QCBjbGFzcyBUaHJlYWQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VyRGVi
dWdnZXJQcm94eTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwogY2xhc3MgV29ya2VyUnVuTG9v
cDsKIApAQCAtNDYsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3Jr
bGV0VGhyZWFkKCk7CiAKICAgICBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV90aHJlYWQuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgV29ya2VyRGVidWdnZXJQcm94eSYgd29y
a2VyRGVidWdnZXJQcm94eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKIAogICAgIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKiBnbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsU2NvcGUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRl
eCA0NzYyNTlhODZmODMxNTYwZDI1MDc4MGU5MmI3ZjJiNmUxZDVhZDEwLi4zOWY3ZGEzYzYzZTUy
ODRkYWY3ZTAzYmIzMTU4YzkzZDNkZTA2ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTUwLDE2ICs1MCwxNiBAQCBXb3JrZXJT
Y3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKSA9IGRlZmF1bHQ7CiBPcHRpb25hbDxF
eGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIEZl
dGNoT3B0aW9uczo6TW9kZSBtb2RlLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5LCBD
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudCwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBhdXRvJiB3b3JrZXJHbG9iYWxTY29wZSA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgYXV0byYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgbV91cmwg
PSB1cmw7CiAgICAgbV9kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNj
cmlwdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBib29sIGlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9i
YWxTY29wZSk7CisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGlzPFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOwogCiAgICAg
aWYgKGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzY3Jp
cHRSZXNvdXJjZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xv
YmFsU2NvcGUpLnNjcmlwdFJlc291cmNlKHVybCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNjcmlw
dFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3JpcHQpOwogICAgICAgICAgICAgbV9yZXNw
b25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVz
cG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKQEAgLTcyLDcgKzcyLDcg
QEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKIAogICAgIC8vIE9ubHkgdXNl
ZCBmb3IgaW1wb3J0U2NyaXB0cyB0aGF0IHByZXNjcmliZXMgTm9Db3JzIG1vZGUuCiAgICAgQVNT
RVJUKG1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpOwpAQCAtODcsMTAgKzg3LDEw
IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25v
dXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgb3B0aW9ucy5kZXN0aW5hdGlvbiA9IG1f
ZGVzdGluYXRpb247CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIG9wdGlvbnMuc2Vy
dmljZVdvcmtlcnNNb2RlID0gaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPyBTZXJ2aWNlV29y
a2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbDsKLSAgICBpZiAoYXV0byog
YWN0aXZlU2VydmljZVdvcmtlciA9IHdvcmtlckdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3Jr
ZXIoKSkKKyAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IHdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKICAgICAgICAgb3B0aW9ucy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJl
Z2lzdHJhdGlvbklkZW50aWZpZXIoKTsKICNlbmRpZgotICAgIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUo
KnJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CisgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgV1RG
TW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIAogICAgIC8vIElmIHRoZSBmZXRjaGlu
ZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBOZXR3b3JrRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9y
dCBhbGwgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGZhaWxlZCgpKQpAQCAtMTAxLDcgKzEwMSw3IEBA
IE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNs
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90
IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0
UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsg
c2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAg
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlw
ZSB9KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMzU5NWM1ZDg3ZmU0YWJhNmViYjkwZDYxMTAz
MjcwMGM5OTVhYzFlNi4uYmY1NDI4NTlkNzg0YzA4NDhmNGUxNmI1NTJiMTE2ZTgzODU3MzU5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWQoKTsKIAogICAgIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJv
eHk7IH0KLSAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29u
c3QgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CisgICAgV29ya2VyRGVidWdnZXJQ
cm94eSYgd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd29ya2Vy
RGVidWdnZXJQcm94eTsgfQogICAgIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRp
bmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyUmVwb3J0aW5nUHJveHk7IH0KIAogICAg
IC8vIE51bWJlciBvZiBhY3RpdmUgd29ya2VyIHRocmVhZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwZjQ3MTFjNGMyM2Y1MzI2YTVi
NDA1MDc3YWZiMTQ3Zjc4ZWYwNmZjLi5jMjkzOWU4OTRhMzgyYTJhNWY0ZDI2ODQ3NWZkMTZkOTc0
Y2ZhM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKQEAgLTEyMywzMiArMTIzLDEyIEBAIFVSTCBXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBs
ZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBGb3JjZVVURjgpIGNvbnN0CiAKIHZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyBkb2VzIG5vdCB3b3JrIGZvciBBdWRpb1dvcmtsZXRzLgogICAgIGlmICghbV9kb2N1
bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykpOwogfQogCi12b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKLXsKLSAgICBpZiAoIW1fZG9jdW1lbnQg
fHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQotICAgICAgICByZXR1cm47
Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNz
YWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKLX0KLQotdm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllcikKLXsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZv
cmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwotfQotCi12
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVy
LCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2RvY3Vt
ZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
ZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVS
TCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIG51bGxwdHIs
IHJlcXVlc3RJZGVudGlmaWVyKTsKLX0KLQogUmVmZXJyZXJQb2xpY3kgV29ya2xldEdsb2JhbFNj
b3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlZmVycmVyUG9saWN5
OjpOb1JlZmVycmVyOwpAQCAtMTkwLDggKzE3MCw5IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
Ojpwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKQogICAgIG1fc2NyaXB0TG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZmV0
Y2hPcHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3Jr
ZXJzTW9kZTo6QWxsLCAqdGhpcyk7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit2
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodGhpcywgaWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCkBAIC0yMDcs
NiArMTg4LDggQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKICAg
ICBVUkwgbW9kdWxlVVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fZXZhbHVhdGVkTW9kdWxlcy5hZGQobW9kdWxlVVJMKTsKICAgICBpZiAo
YWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzY3JpcHRJbXBvcnRlZCgqdGhpcywgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9z
Y3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKKwogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOwogICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29k
ZShtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlv
bik7CiAgICAgICAgIGlmIChleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDM1NGYwMzRkNjM5YzBhZWRkNWJhZGRkNjAxMDViMTI4
ZTEyYmU5YmEuLmY2NzJlYWUzZTkxZDllNDJmZGJkNDFlZTE4ZGIwMmMyNDAyOGEwZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC03Nyw4ICs3
Nyw2IEBAIHB1YmxpYzoKIAogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29u
c3QgZmluYWw7CiAKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKLQogICAgIFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQog
CiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyByZXR1cm4gbnVs
bHB0cjsgfQpAQCAtMTA5LDggKzEwNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1dvcmtsZXRH
bG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgbG9n
RXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJp
bmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5h
bDsKLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IGxvbmcpIGZpbmFsOwotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKIAogICAg
IC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCmluZGV4IGFh
YjhkZGJkOTY5Yjk3Zjc1MzMyNGRkNjg3NzQ3NDkzNzk1NDU5YzQuLmVjOTJiMDcyZmZjNjY4NzY5
OGNiOTYyM2M1ZDFkYzEwMDFkM2RlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFBhcmFtZXRlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3Qg
V29ya2xldFBhcmFtZXRlcnMgewogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdz
OwogICAgIGZsb2F0IHNhbXBsZVJhdGU7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CisgICAgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlz
b2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewpAQCAtNDIsNyArNDQsOCBAQCBzdHJ1Y3QgV29ya2xl
dFBhcmFtZXRlcnMgewogICAgICAgICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAogICAg
ICAgICAgICAganNSdW50aW1lRmxhZ3MsCiAgICAgICAgICAgICBzYW1wbGVSYXRlLAotICAgICAg
ICAgICAgaWRlbnRpZmllci5pc29sYXRlZENvcHkoKQorICAgICAgICAgICAgaWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSwKKyAgICAgICAgICAgIHN0YXJ0TW9kZQogICAgICAgICB9OwogICAgIH0K
IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412180</attachid>
            <date>2020-10-23 08:05:45 -0700</date>
            <delta_ts>2020-10-23 12:27:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201023080545.patch</filename>
            <type>text/plain</type>
            <size>43027</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI0NWU5MTljNDg0OWJi
ZjIzZWUxZDViM2I4OWMyMmMyNjMwMGNkMy4uM2M1YzkxNmI1MzUzM2U2YmRmYjg5ZjMwNzIwNmNh
MzE4N2E3ZWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTEwLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSG9vayBBdWRpb1dvcmtsZXRz
IHVwIHRvIFdlYkluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NzI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDQ4ODc2Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIEF1ZGlv
V29ya2xldHMgdXAgdG8gV2ViSW5zcGVjdG9yLCBzaW1pbGFybHkgdG8gV2ViIFdvcmtlcnMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
Ojp+QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlz
YWJsZWRCeVdlYkluc3BlY3Rvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6
d29ya2VyRGVidWdnZXJQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmts
ZXRUaHJlYWQ6OnNob3VsZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0dXAgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJu
YWwpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZhaWwpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVzdW1lV29ya2VySWZQYXVzZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RUb1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yUHJveHk6OmRp
c2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9h
ZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xl
dHMvV29ya2xldFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRQYXJhbWV0
ZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorCiAyMDIwLTEwLTIzICBNaWd1ZWwgR29tZXogIDxt
YWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBJbXBsZW1lbnQgYW50aWFs
aWFzZWQgcm91bmRlZCByZWN0YW5nbGUgY2xpcHBpbmcgaW4gVGV4dHVyZU1hcHBlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBiOTAyYTYzMjMxZjFmYzM0YjZkY2E5NDljODRmMTBm
YTQ5MzJiOTA0Li5kN2FlNTdjNzBkNGVmZWZiOWExMjcyM2NiMjA0MWI4ODU2MWI2NjEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcsMzcgKzM3LDQ0IEBACiAjaW5jbHVkZSAi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0
ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5l
cmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCwgV29ya2VySW5zcGVj
dG9yUHJveHkmIGluc3BlY3RvclByb3h5KQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gd29ya2xl
dC5kb2N1bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1lRmxhZ3MgPSBkb2N1bWVudC0+c2V0dGlu
Z3MoKS5qYXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
IHN0YXJ0TW9kZSA9IGluc3BlY3RvclByb3h5LndvcmtlclN0YXJ0TW9kZSgqd29ya2xldC5kb2N1
bWVudCgpKTsKIAogICAgIHJldHVybiB7CiAgICAgICAgIGRvY3VtZW50LT51cmwoKSwKICAgICAg
ICAganNSdW50aW1lRmxhZ3MsCiAgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3Jr
bGV0LmF1ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAotICAgICAgICB3b3JrbGV0
LmlkZW50aWZpZXIoKQorICAgICAgICB3b3JrbGV0LmlkZW50aWZpZXIoKSwKKyAgICAgICAgc3Rh
cnRNb2RlCiAgICAgfTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5KEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAgICA6IG1fd29ya2xl
dChtYWtlV2Vha1B0cih3b3JrbGV0KSkKICAgICAsIG1fZG9jdW1lbnQoKndvcmtsZXQuZG9jdW1l
bnQoKSkKLSAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0ZSgq
dGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0KSkpCisgICAgLCBtX2luc3Bl
Y3RvclByb3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtsZXQuaWRlbnRp
ZmllcigpKSkKKyAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0
ZSgqdGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0LCAqbV9pbnNwZWN0b3JQ
cm94eSkpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX3dvcmtsZXRU
aHJlYWQtPnN0YXJ0KCk7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyU3RhcnRlZCh3b3Jr
bGV0LmRvY3VtZW50KCksIG1fd29ya2xldFRocmVhZC5wdHIoKSwgeyB9LCAiQXVkaW9Xb3JrbGV0
Il9zKTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6On5BdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSgpCiB7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyVGVybWluYXRlZCgp
OwogICAgIG1fd29ya2xldFRocmVhZC0+c3RvcCgpOwogfQogCkBAIC0xMDEsNiArMTA4LDIyIEBA
IHZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9BdWRpb1dvcmtsZXQo
RnVuY3Rpb248dm9pZChBdWRpb1dvcmtsCiAgICAgfSk7CiB9CiAKK3ZvaWQgQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgICAgIG1faW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlRnJvbVdvcmtlclRvRnJvbnRlbmQo
bWVzc2FnZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCBkaXNhYmxlZCkK
K3sKKyAgICBwb3N0VGFza1RvTG9hZGVyKFtkaXNhYmxlZF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKQorICAg
ICAgICAgICAgcGFnZS0+c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihk
aXNhYmxlZCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggYTZiYzg1
ODkxN2E1ZDBlYjc1MDRlNjQ2OGQwOGFmNTRlMDI1OWI2Yi4uMTM3ZmE0MTRjZGI5YjgzNmQ5MWRh
Y2MxMThlNzgxMDU3ZDRjNzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaApAQCAtMjksNiAr
MjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUg
IldvcmtlckRlYnVnZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgog
I2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAKQEAgLTM3LDggKzM4LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9Xb3JrbGV0OwogY2xhc3MgQXVkaW9Xb3Jr
bGV0VGhyZWFkOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBXb3JrZXJJbnNwZWN0b3JQcm94eTsK
IAotY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBwdWJsaWMgV29ya2xldEdsb2Jh
bFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSB7CitjbGFzcyBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVibGlj
IFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eT4gY3JlYXRlKEF1ZGlv
V29ya2xldCYgd29ya2xldCkKICAgICB7CkBAIC02MiwxMCArNjQsMTUgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBm
aW5hbDsKICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZp
bmFsOwogCisgICAgLy8gV29ya2VyRGVidWdnZXJQcm94eS4KKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldFJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkgZmluYWw7CisKICAgICBib29sIGlzQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBXZWFrUHRyPEF1ZGlvV29ya2xldD4gbV93b3JrbGV0OwogICAgIFJlZjxEb2N1bWVudD4g
bV9kb2N1bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9yUHJveHk+IG1f
aW5zcGVjdG9yUHJveHk7CiAgICAgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gbV93b3JrbGV0VGhy
ZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IDAwNGI3MjNkNWZjOTQwMmQwNmE0ZDZkNzg2NmNi
MGNiOGMwMmM1MTEuLjI0ZTMyNzVjYzhhNzRmZmYwMjRhNTU2M2MxYjA4ZWE2NGIyY2M1ZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAKQEAgLTU2LDEwICs1Niw5IEBAIFdvcmtlckxvYWRlclByb3h5JiBBdWRpb1dv
cmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNzYWdpbmdQ
cm94eTsKIH0KIAotV29ya2VyRGVidWdnZXJQcm94eSogQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3Jr
ZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QKK1dvcmtlckRlYnVnZ2VyUHJveHkmIEF1ZGlvV29ya2xl
dFRocmVhZDo6d29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFk
ZCBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgQXVkaW9Xb3JrbGV0cy4KLSAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKIH0KIAogUmVmPFRocmVhZD4gQXVkaW9X
b3JrbGV0VGhyZWFkOjpjcmVhdGVUaHJlYWQoKQpAQCAtNzQsNiArNzMsMTEgQEAgQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUqIEF1ZGlvV29ya2xldFRocmVhZDo6Z2xvYmFsU2NvcGUoKSBjb25zdAog
ICAgIHJldHVybiBkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oV29ya2VyT3JXb3Jr
bGV0VGhyZWFkOjpnbG9iYWxTY29wZSgpKTsKIH0KIAorYm9vbCBBdWRpb1dvcmtsZXRUaHJlYWQ6
OnNob3VsZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0dXAoKSBjb25zdAoreworICAgIHJldHVy
biBtX3BhcmFtZXRlcnMuc3RhcnRNb2RlID09IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZv
ckluc3BlY3RvcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFRocmVhZC5oCmluZGV4IGMwNzJiNmZhNDU2MGVkYTY0ODE1NTEyN2U5OGNm
YWI2N2Y5MWVhYTUuLmVhOWEyNGMyYzY2NjI0MGRmN2ZiNTNhODNjZTYxZmVhYjQzNmQzMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRU
aHJlYWQuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXb3JrZXJPcldvcmts
ZXRUaHJlYWQuCiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmlu
YWw7Ci0gICAgV29ya2VyRGVidWdnZXJQcm94eSogd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0
IGZpbmFsOworICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBj
b25zdCBmaW5hbDsKIAogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQ
cm94eSgpIHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KIApAQCAtNTksNiArNTksNyBAQCBw
cml2YXRlOgogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBSZWY8V1RGOjpUaHJl
YWQ+IGNyZWF0ZVRocmVhZCgpIGZpbmFsOwogICAgIFJlZjxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4gY3JlYXRlR2xvYmFsU2NvcGUoKSBmaW5hbDsKKyAgICBib29sIHNob3VsZFdhaXRGb3JX
ZWJJbnNwZWN0b3JPblN0YXJ0dXAoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5JiBtX21lc3NhZ2luZ1Byb3h5OwogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIG1f
cGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJU
b1BhZ2VGcm9udGVuZENoYW5uZWwuaAppbmRleCAzMjcwMmJlZWE0ZDdmYTQ4ODFjYTAyNjVjN2Vk
YzkzMWJjNmZjMDExLi4zMjIzZTI0M2RjODQwMmE0MzViY2VmMThmYjMzYmViMTVjOTQzMWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbC5oCkBAIC00Niw4ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAgICAgewot
ICAgICAgICBpZiAoYXV0byogd29ya2VyRGVidWdnZXJQcm94eSA9IG1fZ2xvYmFsU2NvcGUud29y
a2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHkoKSkKLSAgICAgICAgICAg
IHdvcmtlckRlYnVnZ2VyUHJveHktPnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKKyAg
ICAgICAgbV9nbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdn
ZXJQcm94eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKICAgICB9CiAKICAgICBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgbV9nbG9iYWxTY29wZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDkwOGU4ODM3YWQxODZjMTczZTczZTFlMjhhODkyYzdjMjE4ZWM2MjIu
LmUzOWI5YzRlZTc4MGQwMzZlYzFjNTQ4ZWEwNzIwMWRiNzE3OTk4MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0
d29ya0FnZW50LmNwcApAQCAtNjEsOCArNjEsNyBAQCBWZWN0b3I8V2ViU29ja2V0Kj4gV29ya2Vy
TmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQogCiB2b2lk
IFdvcmtlck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRlcm5hbChi
b29sIGRpc2FibGVkKQogewotICAgIGlmIChhdXRvKiB3b3JrZXJEZWJ1Z2dlclByb3h5ID0gbV9n
bG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdnZXJQcm94eSgp
KQotICAgICAgICB3b3JrZXJEZWJ1Z2dlclByb3h5LT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZEJ5V2ViSW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICBtX2dsb2JhbFNjb3BlLndvcmtlck9yV29y
a2xldFRocmVhZCgpLT53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3VyY2VDYWNoaW5nRGlz
YWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIFdvcmtlck5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dChQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjcxN2M4NjFjNzRiMGYy
YWViY2RlNDA4NzAwZTJhOWEwMzczNzU5NS4uMThmZjNmOTRmMDQyZDFhMWZkMDNhNTFiYzExZDVi
ZDE0NmYzM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVM
b2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkoKSBjb25zdAogCiBSZWZQdHI8VGhyZWFkYWJsZUxv
YWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFN0cmluZyYm
IHJlZmVycmVyKQogewotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkgfHwg
KGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2xldEdsb2Jh
bFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkpCisgICAgaWYgKGlzPFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkpCiAgICAg
ICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmPihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVy
cmVyKSk7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwpAQCAtMTE4LDggKzEx
OCw4IEBAIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4CiB2b2lkIFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHJl
c291cmNlVVJMID0gcmVxdWVzdC51cmwoKTsKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKQotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgV1RGTW92
ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlPihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBl
bHNlCiAgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNs
aWVudCwgb3B0aW9ucyk7CiAgICAgY29udGV4dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHJlc291cmNlVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCBlMTEzOTZiZmQ4MzM2ZTNlODY3NGE0OWNiNWM4MTg0YmYxNTgw
YTdlLi5lZjQ5NDkyMjViMjhiNTBmMzg2NmMwZjdkMzY2ZTBiNzkyNjZjYTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMzcs
OCArMTM3LDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFp
blRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICAgICAgb3B0aW9uc0NvcHkt
Pm9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVTZXJ2
aWNlV29ya2VyLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7CiAjZW5kaWYKIAotICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Z2xvYmFsU2NvcGUpLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChnbG9iYWxTY29wZSwgbV93
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVuZWZp
dCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRs
eSBpdHMgaXNvbGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
W3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKQEAgLTIyNiw4ICsyMjUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nCiAgICAg
ICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29y
a2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOwogICAgICAg
ICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgcmVzcG9uc2UpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVz
b3VyY2VSZXNwb25zZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtl
clJlcXVlc3RJZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9u
c2UpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yMzgsOCArMjM2LDcgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1h
a2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0g
bV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNj
b3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZl
RGF0YShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNh
c3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRl
bnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfSwgbV90YXNrTW9k
ZSk7CiB9CiAKQEAgLTI0OSw4ICsyNDYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZAogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50
V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgbmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRD
b3B5KCksIGlkZW50aWZpZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKGRvd25j
YXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAK
QEAgLTI2MSw4ICsyNTcsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJybwogICAgICAgICBBU1NF
UlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9i
YWxTY29wZSgpKTsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJyb3IoY29udGV4dCwg
ZXJyb3IsIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmluaXRpYXRvcigpKTsKICAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbChlcnJvcik7Ci0gICAgICAg
IGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBl
cnJvcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDdiNDI5MzAwYWZmY2IwNTE4OWQ0ODE2
MDU5ZjQwNWQ2Njg2YzRmNTEuLjA5ZTIwNzZiZjdhYmEwMWE2NzliNThhMjhhODg4Zjk5NTA0ZTQ2
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNw
cApAQCAtNTMsMzcgKzUzLDI3IEBAIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdp
dGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsCiAKIHZvaWQgV29y
a2VyQ29uc29sZUNsaWVudDo6Y291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3Qg
U3RyaW5nJiBsYWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRH
bG9iYWxTY29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUp
KQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChtX2dsb2JhbFNjb3BlLCBleGVj
LCBsYWJlbCk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29uc29sZUNvdW50UmVzZXQoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1f
Z2xvYmFsU2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlQ291bnRSZXNldChtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZv
aWQgV29ya2VyQ29uc29sZUNsaWVudDo6dGltZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29y
a2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxT
Y29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGlt
aW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFi
ZWwpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKG1f
Z2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50
Ojp0aW1lTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWws
IFJlZjxTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bG9nQ29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29w
ZSksIGV4ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCwg
V1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1l
RW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0g
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKG1fZ2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsK
IH0KIAogLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTM0OTk+IFdlYiBJbnNwZWN0
b3I6IGNvbnNvbGUucHJvZmlsZSBzaG91bGQgdXNlIHRoZSBuZXcgU2FtcGxpbmcgUHJvZmlsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNTAy
ZWM3ZDc3NjM1NWY5NmUwZGU4ZGM4YzQzOTE1ODFmOTA2ZjYwNy4uY2YwNmRlODY4NGU4MTNhMTNh
OThhNTcxMDhiNDU5ODY5MTc0OGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMzMywzNiArMzMzLDYgQEAgdm9pZCBXb3JrZXJHbG9iYWxT
Y29wZTo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBj
b25zdAogICAgIHRocmVhZCgpLndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRv
V29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwpOwogfQogCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQotewot
ICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdl
LT5tZXNzYWdlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdl
KSk7Ci19Ci0KLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKLXsKLSAgICBhZGRNZXNzYWdlKHNv
dXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHsgfSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgcmVxdWVz
dElkZW50aWZpZXIpOwotfQotCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNr
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllcikKLXsKLSAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNr
KEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+IG1lc3NhZ2U7Ci0gICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdl
VHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgp
LCByZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKLX0KLQogI2lm
IEVOQUJMRShXRUJfQ1JZUFRPKQogCiBjbGFzcyBDcnlwdG9CdWZmZXJDb250YWluZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3J5cHRvQnVmZmVyQ29udGFpbmVyPiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZDkyMjFkYjlmNTg2N2Ey
YzBiMjg5YzMzOGQzZDQ0MjBmODM2NDZjMC4uZDU5MDk3YThiM2I5NjE3NWY1ZjM5OTYxMzk5OGRm
Zjk5YmVhYWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aApAQCAtMTAzLDggKzEwMyw2IEBAIHB1YmxpYzoKICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlv
bmFsTmF2aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KICAgICBX
b3JrZXJMb2NhdGlvbiogb3B0aW9uYWxMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRp
b24uZ2V0KCk7IH0KIAotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwotCiAgICAgU2VjdXJpdHlPcmln
aW4mIHRvcE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9
CiAKICAgICBDcnlwdG8mIGNyeXB0bygpOwpAQCAtMTMzLDExICsxMzEsNiBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmlu
YWw7CiAKLSAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgYW5kIGFkZENvbnNvbGVNZXNz
YWdlIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4KLSAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkg
dG8gY3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgotICAgIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmlu
YWw7Ci0KICAgICBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgRm9yY2VVVEY4
ID0gRm9yY2VVVEY4OjpObykgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDYzMmI4MmUyOGI3MmRhNjEzNzFjMjRl
YmZiYWYyZGQ1NTkxMGQwNzEuLmIxYmUzZTkyNGNlYTQ3YTM5NTIwMDEzYzc2N2RiNjBjNzg4Yjdm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHku
Y3BwCkBAIC0yOCw4ICsyOCw5IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdl
bnRCYXNlLmg+CkBAIC02Miw3ICs2Myw3IEBAIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBXb3JrZXJJ
bnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAg
cmV0dXJuIHBhdXNlT25TdGFydCA/IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3Bl
Y3RvciA6IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsOwogfQogCi12b2lkIFdvcmtlcklu
c3BlY3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3Rh
cnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQqIHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKICAgICBBU1NFUlQoIW1fd29ya2VyVGhyZWFkKTsKIApAQCAtOTMsNyArOTQsNyBA
QCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKCkKIHZvaWQgV29y
a2VySW5zcGVjdG9yUHJveHk6OnJlc3VtZVdvcmtlcklmUGF1c2VkKCkKIHsKICAgICBtX3dvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLnRocmVhZCgpLnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOworICAgICAgICBkb3du
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0
VGhyZWFkKCktPnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOwogICAgIH0pOwogfQogCkBAIC0x
MDYsNyArMTA3LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlQ2hhbm5lbCYgY2hhbm4KICAgICBtX3BhZ2VDaGFubmVs
ID0gJmNoYW5uZWw7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dl
clRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5j
b25uZWN0RnJvbnRlbmQoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsK
ICAgICB9KTsKIH0KIApAQCAtMTE5LDExICsxMjAsMTEgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQ
cm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBtX3Bh
Z2VDaGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0
cm95ZWQpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogCiAgICAgICAgIC8vIEluIGNhc2UgdGhlIHdv
cmtlciBpcyBwYXVzZWQgcnVubmluZyBkZWJ1Z2dlciB0YXNrcywgZW5zdXJlIHdlIGJyZWFrIG91
dCBvZgogICAgICAgICAvLyB0aGUgcGF1c2Ugc2luY2UgdGhpcyB3aWxsIGJlIHRoZSBsYXN0IGRl
YnVnZ2VyIHRhc2sgd2Ugc2VuZCB0byB0aGUgd29ya2VyLgotICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tz
KCk7CisgICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0
KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CiAg
ICAgfSk7CiB9CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5
OjpzZW5kTWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihjb25zdCBTdHJpbmcmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVn
Z2VyVGFzayhbbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250
ZW5kKG1lc3NhZ2UpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZChtZXNzYWdlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDVlOGExZGMwZWQwZDlhYTUzMmMzNjc0NjRjODY3
ZmI0ZjdmOWFhNWYuLmJlZmMwMWQ5NTcwYThjNGE4YjdkZGVlODVlYTEwNjE4YTc3YTQ0ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKQEAgLTM2
LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFdvcmtlclRocmVhZDsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVh
ZDsKIAogZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRTdGFydE1vZGU7CiAKQEAgLTYyLDcgKzYyLDcg
QEAgcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7IH0K
IAogICAgIFdvcmtlclRocmVhZFN0YXJ0TW9kZSB3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwotICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyVGhyZWFkKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAg
ICB2b2lkIHdvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck9yV29y
a2xldFRocmVhZCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCB3
b3JrZXJUZXJtaW5hdGVkKCk7CiAKICAgICB2b2lkIHJlc3VtZVdvcmtlcklmUGF1c2VkKCk7CkBA
IC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFJlZlB0cjxXb3Jr
ZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgVVJMIG1f
dXJsOwogICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDZhZDM0ZWM4ZmEyMWM1YzFh
NjdkYjdmMjI0YjFkNjQ3M2RlMGFlNDUuLmQ4YjI3N2FmYzJiMjg5ZDJkYjVlYjZmZjMzZjQ4ZmQx
MGQ0OTk0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMTQsNCArMTE0LDM0IEBAIHZvaWQgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU6OnBvc3RUYXNrKFRhc2smJiB0YXNrKQogICAgIHdvcmtlck9yV29y
a2xldFRocmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKK3Zv
aWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAgaWYg
KCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2Fn
ZVRhc2sobWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3Nh
Z2UoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKK30K
Kwordm9pZCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIGFkZE1lc3NhZ2Uo
c291cmNlLCBsZXZlbCwgbWVzc2FnZSwgeyB9LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCByZXF1
ZXN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4m
JiBjYWxsU3RhY2ssIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQoreworICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAg
ICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VU
ZXh0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKKyAgICBpZiAoY2FsbFN0YWNrKQorICAg
ICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVh
c2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIG1lc3Nh
Z2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZjBjOTBjMjIxOWJmZTQ5
MjZjODI4NzEzNjZjMzg5MDljNjFmNzQ4NS4uNmQ1ODlmNGMxNWI1ZDIzNTgxYTZjYjAzMmZhY2Iy
MjBmOWI3ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRM
b29wVGFza0dyb3VwJiBldmVudExvb3AoKSBmaW5hbDsKICAgICBib29sIGlzQ29udGV4dFRocmVh
ZCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbDsgLy8gRXhl
Y3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2
b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPiYmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKTsKIApAQCAtODYsNiArODcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgZGVyZWYoKTsgfQogCisgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGFuZCBhZGRD
b25zb2xlTWVzc2FnZSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuCisgICAgLy8gQ2FsbGVycyBz
aG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZlcy4KKyAgICB2
b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4m
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIp
IGZpbmFsOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpIGZpbmFsOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogbV90aHJl
YWQ7CiAgICAgUmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCBhMDk0M2Q4Mzhk
NTgxOTUxMjM0ZjcwZWEzN2Q0ZTAwNjM5OGY4NzkyLi44MTAwZmYxNTEzOWVmY2JhYTA2MWIwYmQ1
NDIyYTAzOGI1NDA0Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0VGhyZWFkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgV1RGOjpUaHJl
YWQqIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKLSAgICB2aXJ0
dWFsIFdvcmtlckRlYnVnZ2VyUHJveHkqIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclBy
b3h5KCkgPSAwOwogCiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxTY29wZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDQ3NjI1OWE4NmY4MzE1NjBk
MjUwNzgwZTkyYjdmMmI2ZTFkNWFkMTAuLjM5ZjdkYTNjNjNlNTI4NGRhZjdlMDNiYjMxNThjOTNk
M2RlMDZmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgpAQCAtNTAsMTYgKzUwLDE2IEBAIFdvcmtlclNjcmlwdExvYWRlcjo6fldvcmtl
clNjcmlwdExvYWRlcigpID0gZGVmYXVsdDsKIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1v
ZGUsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJp
bmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwotICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiB3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBtX3VybCA9IHVybDsKICAgICBtX2Rlc3Rp
bmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0OwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBp
czxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBib29s
IGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CiAKICAgICBpZiAoaXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVz
b3VyY2UodXJsKSkgeworICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5z
Y3JpcHRSZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0
UmVzb3VyY2UtPnNjcmlwdCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVz
b3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0gc2Ny
aXB0UmVzb3VyY2UtPm1pbWVUeXBlOwpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxFeGNlcHRp
b24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dAogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAgLy8gT25seSB1c2VkIGZvciBpbXBvcnRTY3JpcHRz
IHRoYXQgcHJlc2NyaWJlcyBOb0NvcnMgbW9kZS4KICAgICBBU1NFUlQobW9kZSA9PSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5vQ29ycyk7CkBAIC04NywxMCArODcsMTAgQEAgT3B0aW9uYWw8RXhjZXB0
aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gbV9kZXN0aW5hdGlvbjsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBp
c1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNl
cnZpY2VXb3JrZXJzTW9kZTo6QWxsOwotICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2Vy
ID0gd29ya2VyR2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQorICAgIGlmIChhdXRv
KiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuYWN0aXZl
U2VydmljZVdvcmtlcigpKQogICAgICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmll
cigpOwogI2VuZGlmCi0gICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBv
cHRpb25zKTsKKyAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRo
aXMsIG9wdGlvbnMpOwogCiAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0
aHJvdyBhIE5ldHdvcmtFcnJvciBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4K
ICAgICBpZiAoZmFpbGVkKCkpCkBAIC0xMDEsNyArMTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9u
PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNj
cmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25z
ZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNv
dXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3Jp
cHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRp
ZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCBlM2RmMDllNDgzMDE0NWJiYzc0YWQwMWJiZGE0ODYxMmIwOWMwNjE4Li5iZjU0
Mjg1OWQ3ODRjMDg0OGY0ZTE2YjU1MmIxMTZlODM4NTczNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldvcmtlclRocmVhZCgpOwogCiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclBy
b3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAgIFdvcmtlckRl
YnVnZ2VyUHJveHkqIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiAm
bV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CisgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2Vy
RGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94
eTsgfQogICAgIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIG1fd29ya2VyUmVwb3J0aW5nUHJveHk7IH0KIAogICAgIC8vIE51bWJlciBv
ZiBhY3RpdmUgd29ya2VyIHRocmVhZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwZjQ3MTFjNGMyM2Y1MzI2YTViNDA1MDc3YWZiMTQ3
Zjc4ZWYwNmZjLi5jMjkzOWU4OTRhMzgyYTJhNWY0ZDI2ODQ3NWZkMTZkOTc0Y2ZhM2Y3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEy
MywzMiArMTIzLDEyIEBAIFVSTCBXb3JrbGV0R2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYgdXJsLCBGb3JjZVVURjgpIGNvbnN0CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
Ojpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vz
IG5vdCB3b3JrIGZvciBBdWRpb1dvcmtsZXRzLgogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvY3VtZW50LT5s
b2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykpOwogfQogCi12b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+JiYgbWVzc2FnZSkKLXsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgp
LCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKLX0KLQotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKLXsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQot
ICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwotfQotCi12b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8U2Ny
aXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8IGlzSlNF
eGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFk
ZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIG51bGxwdHIsIHJlcXVlc3RJZGVu
dGlmaWVyKTsKLX0KLQogUmVmZXJyZXJQb2xpY3kgV29ya2xldEdsb2JhbFNjb3BlOjpyZWZlcnJl
clBvbGljeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVy
OwpAQCAtMTkwLDggKzE3MCw5IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcm9jZXNzTmV4
dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKQogICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNo
cm9ub3VzbHkoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZmV0Y2hPcHRpb25zKSwg
Y29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxs
LCAqdGhpcyk7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodGhpcywgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCkBAIC0yMDcsNiArMTg4LDggQEAg
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBVUkwgbW9kdWxl
VVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fZXZhbHVhdGVkTW9kdWxlcy5hZGQobW9kdWxlVVJMKTsKICAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBv
cnRlZCgqdGhpcywgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXIt
PnNjcmlwdCgpKTsKKwogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9u
OwogICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3NjcmlwdExv
YWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJMKSksIGV4Y2VwdGlvbik7CiAgICAgICAg
IGlmIChleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5oCmluZGV4IDM1NGYwMzRkNjM5YzBhZWRkNWJhZGRkNjAxMDViMTI4ZTEyYmU5YmEuLmY2
NzJlYWUzZTkxZDllNDJmZGJkNDFlZTE4ZGIwMmMyNDAyOGEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC03Nyw4ICs3Nyw2IEBAIHB1Ymxp
YzoKIAogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgZmluYWw7CiAK
LSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKLQogICAgIFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQogCiAgICAgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAt
MTA5LDggKzEwNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1dvcmtsZXRHbG9iYWxTY29wZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmLCBpbnQsIGlu
dCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKSBmaW5hbDsKLSAgICB2b2lk
IGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlw
dENhbGxTdGFjaz4mJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGxvbmcpIGZpbmFs
OwotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKIAogICAgIC8vIFdvcmtlclNj
cmlwdExvYWRlckNsaWVudC4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCmluZGV4IGFhYjhkZGJkOTY5Yjk3
Zjc1MzMyNGRkNjg3NzQ3NDkzNzk1NDU5YzQuLmVjOTJiMDcyZmZjNjY4NzY5OGNiOTYyM2M1ZDFk
YzEwMDFkM2RlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFBhcmFtZXRl
cnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgV29ya2xldFBhcmFt
ZXRlcnMgewogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGltZUZsYWdzOwogICAgIGZsb2F0
IHNhbXBsZVJhdGU7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CisgICAgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgp
IGNvbnN0CiAgICAgewpAQCAtNDIsNyArNDQsOCBAQCBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMg
ewogICAgICAgICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICAgICAganNS
dW50aW1lRmxhZ3MsCiAgICAgICAgICAgICBzYW1wbGVSYXRlLAotICAgICAgICAgICAgaWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKQorICAgICAgICAgICAgaWRlbnRpZmllci5pc29sYXRlZENvcHko
KSwKKyAgICAgICAgICAgIHN0YXJ0TW9kZQogICAgICAgICB9OwogICAgIH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412204</attachid>
            <date>2020-10-23 12:27:56 -0700</date>
            <delta_ts>2020-10-23 12:27:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217724-20201023122755.patch</filename>
            <type>text/plain</type>
            <size>42931</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM3NDg4ZjQ5ZjFkMzI4
NTJiOWNjNTNlN2ZlOTNiOTBiNjYyNzMzNS4uYzEwZjQxMjQ2YjNkODkzOWJhNzQyNzA3MGE4OGM3
MDI1YjAwNDQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTEwLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSG9vayBBdWRpb1dvcmtsZXRz
IHVwIHRvIFdlYkluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NzI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDQ4ODc2Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIEF1ZGlv
V29ya2xldHMgdXAgdG8gV2ViSW5zcGVjdG9yLCBzaW1pbGFybHkgdG8gV2ViIFdvcmtlcnMuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
Ojp+QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlz
YWJsZWRCeVdlYkluc3BlY3Rvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6
d29ya2VyRGVidWdnZXJQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmts
ZXRUaHJlYWQ6OnNob3VsZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0dXAgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICog
aW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJOZXR3b3JrQWdlbnQ6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJu
YWwpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZhaWwpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29uc29sZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnNvbGVDbGllbnQ6OnRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6dGltZUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6cmVzdW1lV29ya2VySWZQYXVzZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RUb1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yUHJveHk6OmRp
c2Nvbm5lY3RGcm9tV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9h
ZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aDoKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xl
dHMvV29ya2xldFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRQYXJhbWV0
ZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorCiAyMDIwLTEwLTIzICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXQub3JnL3N0YXR1cy8gaXMgbWlz
c2luZyBpbnB1dCB0eXBlPWRhdGUgKGFuZCByZWxhdGVkKSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5LmNwcAppbmRleCBiOTAyYTYzMjMxZjFmYzM0YjZkY2E5NDljODRmMTBmYTQ5MzJi
OTA0Li5kN2FlNTdjNzBkNGVmZWZiOWExMjcyM2NiMjA0MWI4ODU2MWI2NjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzcsMzcgKzM3LDQ0IEBACiAjaW5jbHVkZSAiQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
ICJXb3JrZXJJbnNwZWN0b3JQcm94eS5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiV29ya2xldFBlbmRpbmdUYXNrcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1
ZGlvV29ya2xldCYgd29ya2xldCkKK3N0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdv
cmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCwgV29ya2VySW5zcGVjdG9yUHJv
eHkmIGluc3BlY3RvclByb3h5KQogewogICAgIGF1dG8qIGRvY3VtZW50ID0gd29ya2xldC5kb2N1
bWVudCgpOwogICAgIGF1dG8ganNSdW50aW1lRmxhZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKS5q
YXZhU2NyaXB0UnVudGltZUZsYWdzKCk7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0
TW9kZSA9IGluc3BlY3RvclByb3h5LndvcmtlclN0YXJ0TW9kZSgqd29ya2xldC5kb2N1bWVudCgp
KTsKIAogICAgIHJldHVybiB7CiAgICAgICAgIGRvY3VtZW50LT51cmwoKSwKICAgICAgICAganNS
dW50aW1lRmxhZ3MsCiAgICAgICAgIHdvcmtsZXQuYXVkaW9Db250ZXh0KCkgPyB3b3JrbGV0LmF1
ZGlvQ29udGV4dCgpLT5zYW1wbGVSYXRlKCkgOiAwLjBmLAotICAgICAgICB3b3JrbGV0LmlkZW50
aWZpZXIoKQorICAgICAgICB3b3JrbGV0LmlkZW50aWZpZXIoKSwKKyAgICAgICAgc3RhcnRNb2Rl
CiAgICAgfTsKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1l
c3NhZ2luZ1Byb3h5KEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAgICA6IG1fd29ya2xldChtYWtl
V2Vha1B0cih3b3JrbGV0KSkKICAgICAsIG1fZG9jdW1lbnQoKndvcmtsZXQuZG9jdW1lbnQoKSkK
LSAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0ZSgqdGhpcywg
Z2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0KSkpCisgICAgLCBtX2luc3BlY3RvclBy
b3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtsZXQuaWRlbnRpZmllcigp
KSkKKyAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0ZSgqdGhp
cywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0LCAqbV9pbnNwZWN0b3JQcm94eSkp
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX3dvcmtsZXRUaHJlYWQt
PnN0YXJ0KCk7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyU3RhcnRlZCh3b3JrbGV0LmRv
Y3VtZW50KCksIG1fd29ya2xldFRocmVhZC5wdHIoKSwgeyB9LCAiQXVkaW9Xb3JrbGV0Il9zKTsK
IH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6On5BdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eSgpCiB7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyVGVybWluYXRlZCgpOwogICAg
IG1fd29ya2xldFRocmVhZC0+c3RvcCgpOwogfQogCkBAIC0xMDEsNiArMTA4LDIyIEBAIHZvaWQg
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9BdWRpb1dvcmtsZXQoRnVuY3Rp
b248dm9pZChBdWRpb1dvcmtsCiAgICAgfSk7CiB9CiAKK3ZvaWQgQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHk6OnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IG1faW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlRnJvbVdvcmtlclRvRnJvbnRlbmQobWVzc2Fn
ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnNldFJl
c291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCBkaXNhYmxlZCkKK3sKKyAg
ICBwb3N0VGFza1RvTG9hZGVyKFtkaXNhYmxlZF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKQorICAgICAgICAg
ICAgcGFnZS0+c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3RvcihkaXNhYmxl
ZCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggYTZiYzg1ODkxN2E1
ZDBlYjc1MDRlNjQ2OGQwOGFmNTRlMDI1OWI2Yi4uMTM3ZmE0MTRjZGI5YjgzNmQ5MWRhY2MxMThl
NzgxMDU3ZDRjNzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaApAQCAtMjksNiArMjksNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUgIldvcmtl
ckRlYnVnZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAKQEAgLTM3LDggKzM4LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9Xb3JrbGV0OwogY2xhc3MgQXVkaW9Xb3JrbGV0VGhy
ZWFkOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBXb3JrZXJJbnNwZWN0b3JQcm94eTsKIAotY2xh
c3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3Bl
UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSB7CitjbGFzcyBBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtl
ckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyRGVidWdnZXJQcm94eSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eT4gY3JlYXRlKEF1ZGlvV29ya2xl
dCYgd29ya2xldCkKICAgICB7CkBAIC02MiwxMCArNjQsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsK
ICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwog
CisgICAgLy8gV29ya2VyRGVidWdnZXJQcm94eS4KKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9EZWJ1
Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCkgZmluYWw7CisKICAgICBib29sIGlzQXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBX
ZWFrUHRyPEF1ZGlvV29ya2xldD4gbV93b3JrbGV0OwogICAgIFJlZjxEb2N1bWVudD4gbV9kb2N1
bWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9yUHJveHk+IG1faW5zcGVj
dG9yUHJveHk7CiAgICAgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gbV93b3JrbGV0VGhyZWFkOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRUaHJlYWQuY3BwCmluZGV4IDAwNGI3MjNkNWZjOTQwMmQwNmE0ZDZkNzg2NmNiMGNiOGMw
MmM1MTEuLjI0ZTMyNzVjYzhhNzRmZmYwMjRhNTU2M2MxYjA4ZWE2NGIyY2M1ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKQEAgLTU2LDEwICs1Niw5IEBAIFdvcmtlckxvYWRlclByb3h5JiBBdWRpb1dvcmtsZXRU
aHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKICAgICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsK
IH0KIAotV29ya2VyRGVidWdnZXJQcm94eSogQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJEZWJ1
Z2dlclByb3h5KCkgY29uc3QKK1dvcmtlckRlYnVnZ2VyUHJveHkmIEF1ZGlvV29ya2xldFRocmVh
ZDo6d29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBkZWJ1
Z2dpbmcgc3VwcG9ydCBmb3IgQXVkaW9Xb3JrbGV0cy4KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gbV9tZXNzYWdpbmdQcm94eTsKIH0KIAogUmVmPFRocmVhZD4gQXVkaW9Xb3JrbGV0
VGhyZWFkOjpjcmVhdGVUaHJlYWQoKQpAQCAtNzQsNiArNzMsMTEgQEAgQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcGUqIEF1ZGlvV29ya2xldFRocmVhZDo6Z2xvYmFsU2NvcGUoKSBjb25zdAogICAgIHJl
dHVybiBkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oV29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjpnbG9iYWxTY29wZSgpKTsKIH0KIAorYm9vbCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnNob3Vs
ZFdhaXRGb3JXZWJJbnNwZWN0b3JPblN0YXJ0dXAoKSBjb25zdAoreworICAgIHJldHVybiBtX3Bh
cmFtZXRlcnMuc3RhcnRNb2RlID09IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3Bl
Y3RvcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFRocmVhZC5oCmluZGV4IGMwNzJiNmZhNDU2MGVkYTY0ODE1NTEyN2U5OGNmYWI2N2Y5
MWVhYTUuLmVhOWEyNGMyYzY2NjI0MGRmN2ZiNTNhODNjZTYxZmVhYjQzNmQzMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQu
aApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJl
YWQuCiAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWw7Ci0g
ICAgV29ya2VyRGVidWdnZXJQcm94eSogd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFs
OworICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCBm
aW5hbDsKIAogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSgp
IHsgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KIApAQCAtNTksNiArNTksNyBAQCBwcml2YXRl
OgogICAgIC8vIFdvcmtlck9yV29ya2xldFRocmVhZC4KICAgICBSZWY8V1RGOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpIGZpbmFsOwogICAgIFJlZjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4g
Y3JlYXRlR2xvYmFsU2NvcGUoKSBmaW5hbDsKKyAgICBib29sIHNob3VsZFdhaXRGb3JXZWJJbnNw
ZWN0b3JPblN0YXJ0dXAoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5JiBtX21lc3NhZ2luZ1Byb3h5OwogICAgIFdvcmtsZXRQYXJhbWV0ZXJzIG1fcGFyYW1l
dGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VG
cm9udGVuZENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJUb1BhZ2VG
cm9udGVuZENoYW5uZWwuaAppbmRleCAzMjcwMmJlZWE0ZDdmYTQ4ODFjYTAyNjVjN2VkYzkzMWJj
NmZjMDExLi4zMjIzZTI0M2RjODQwMmE0MzViY2VmMThmYjMzYmViMTVjOTQzMWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclRvUGFnZUZyb250ZW5kQ2hh
bm5lbC5oCkBAIC00Niw4ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBpZiAoYXV0byogd29ya2VyRGVidWdnZXJQcm94eSA9IG1fZ2xvYmFsU2NvcGUud29ya2VyT3JX
b3JrbGV0VGhyZWFkKCktPndvcmtlckRlYnVnZ2VyUHJveHkoKSkKLSAgICAgICAgICAgIHdvcmtl
ckRlYnVnZ2VyUHJveHktPnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKKyAgICAgICAg
bV9nbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdnZXJQcm94
eSgpLnBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihtZXNzYWdlKTsKICAgICB9CiAKICAgICBXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgbV9nbG9iYWxTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQu
Y3BwCmluZGV4IDkwOGU4ODM3YWQxODZjMTczZTczZTFlMjhhODkyYzdjMjE4ZWM2MjIuLmUzOWI5
YzRlZTc4MGQwMzZlYzFjNTQ4ZWEwNzIwMWRiNzE3OTk4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0Fn
ZW50LmNwcApAQCAtNjEsOCArNjEsNyBAQCBWZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29y
a0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQogCiB2b2lkIFdvcmtl
ck5ldHdvcmtBZ2VudDo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRJbnRlcm5hbChib29sIGRp
c2FibGVkKQogewotICAgIGlmIChhdXRvKiB3b3JrZXJEZWJ1Z2dlclByb3h5ID0gbV9nbG9iYWxT
Y29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyRGVidWdnZXJQcm94eSgpKQotICAg
ICAgICB3b3JrZXJEZWJ1Z2dlclByb3h5LT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2Vi
SW5zcGVjdG9yKGRpc2FibGVkKTsKKyAgICBtX2dsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRo
cmVhZCgpLT53b3JrZXJEZWJ1Z2dlclByb3h5KCkuc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRC
eVdlYkluc3BlY3RvcihkaXNhYmxlZCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdv
cmtlck5ldHdvcmtBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmLCBjb25zdCBQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjcxN2M4NjFjNzRiMGYyYWViY2Rl
NDA4NzAwZTJhOWEwMzczNzU5NS4uMThmZjNmOTRmMDQyZDFhMWZkMDNhNTFiYzExZDViZDE0NmYz
M2I0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVMb2FkZXJP
cHRpb25zOjppc29sYXRlZENvcHkoKSBjb25zdAogCiBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4g
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVy
cmVyKQogewotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkgfHwgKGlzPFdv
cmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3Bl
Pihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkpCisgICAgaWYgKGlzPFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkpCiAgICAgICAgIHJl
dHVybiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmPihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7
CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwpAQCAtMTE4LDggKzExOCw4IEBA
IFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4CiB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIHJlc291cmNl
VVJMID0gcmVxdWVzdC51cmwoKTsKLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpKQotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgV1RGTW92ZShyZXF1
ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpKQorICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihj
b250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBlbHNlCiAg
ICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwg
b3B0aW9ucyk7CiAgICAgY29udGV4dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlc291
cmNlVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCBlMTEzOTZiZmQ4MzM2ZTNlODY3NGE0OWNiNWM4MTg0YmYxNTgwYTdlLi5l
ZjQ5NDkyMjViMjhiNTBmMzg2NmMwZjdkMzY2ZTBiNzkyNjZjYTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMzcsOCArMTM3
LDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVh
ZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICAgICAgb3B0aW9uc0NvcHktPm9wdGlv
bnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29y
a2VyLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7CiAjZW5kaWYKIAotICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpKQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxTZW5kUmVxdWVzdChkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFs
U2NvcGUpLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChnbG9iYWxTY29wZSwgbV93b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9t
IHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRseSBpdHMg
aXNvbGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMs
IHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRp
b25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1
cml0eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKQEAgLTIyNiw4ICsyMjUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nCiAgICAgICAgIEFT
U0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEds
b2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6
ZnJvbUNyb3NzVGhyZWFkRGF0YShXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOwogICAgICAgICBwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwg
cmVzcG9uc2UpOwotICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQot
ICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVl
c3RJZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2UpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yMzgsOCArMjM2LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBkYXRhLAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYo
Km1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkp
OwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmll
ciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9
CiAKQEAgLTI0OSw4ICsyNDYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZAogICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBl
ciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
bmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCks
IGlkZW50aWZpZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQu
aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7Ci0gICAgICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTI2
MSw4ICsyNTcsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJybwogICAgICAgICBBU1NFUlQoY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJyb3IoY29udGV4dCwgZXJyb3Is
IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmluaXRpYXRvcigpKTsKICAgICAgICAgcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbChlcnJvcik7Ci0gICAgICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihj
b250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7
CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDdiNDI5MzAwYWZmY2IwNTE4OWQ0ODE2MDU5ZjQw
NWQ2Njg2YzRmNTEuLjA5ZTIwNzZiZjdhYmEwMWE2NzliNThhMjhhODg4Zjk5NTA0ZTQ2NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAt
NTMsMzcgKzUzLDI3IEBAIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBl
QW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsCiAKIHZvaWQgV29ya2VyQ29u
c29sZUNsaWVudDo6Y291bnQoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFdvcmtsZXRHbG9iYWxT
Y29wZS4KLSAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFsU2NvcGUpKQotICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJl
bCk7CiB9CiAKIHZvaWQgV29ya2VyQ29uc29sZUNsaWVudDo6Y291bnRSZXNldChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4obV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29uc29sZUNvdW50UmVzZXQoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KG1fZ2xvYmFs
U2NvcGUpLCBleGVjLCBsYWJlbCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25z
b2xlQ291bnRSZXNldChtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCk7CiB9CiAKIHZvaWQgV29y
a2VyQ29uc29sZUNsaWVudDo6dGltZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBT
dHJpbmcmIGxhYmVsKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgV29ya2xldEds
b2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSkp
Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSwgZXhlYywgbGFiZWwpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKG1fZ2xvYmFs
U2NvcGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1l
TG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxT
Y3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgV29ya2xldEdsb2JhbFNjb3BlLgotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
bV9nbG9iYWxTY29wZSkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29u
c29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4obV9nbG9iYWxTY29wZSksIGV4
ZWMsIGxhYmVsLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bG9nQ29uc29sZVRpbWluZyhtX2dsb2JhbFNjb3BlLCBleGVjLCBsYWJlbCwgV1RGTW92
ZShhcmd1bWVudHMpKTsKIH0KIAogdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgaWYgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNjb3BlKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
bV9nbG9iYWxTY29wZSksIGV4ZWMsIGxhYmVsKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0b3BDb25zb2xlVGltaW5nKG1fZ2xvYmFsU2NvcGUsIGV4ZWMsIGxhYmVsKTsKIH0KIAog
Ly8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTM0OTk+IFdlYiBJbnNwZWN0b3I6IGNv
bnNvbGUucHJvZmlsZSBzaG91bGQgdXNlIHRoZSBuZXcgU2FtcGxpbmcgUHJvZmlsZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNTAyZWM3ZDc3
NjM1NWY5NmUwZGU4ZGM4YzQzOTE1ODFmOTA2ZjYwNy4uY2YwNmRlODY4NGU4MTNhMTNhOThhNTcx
MDhiNDU5ODY5MTc0OGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTMzMywzNiArMzMzLDYgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6
bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdAog
ICAgIHRocmVhZCgpLndvcmtlclJlcG9ydGluZ1Byb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwp
OwogfQogCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBtZXNzYWdlKQotewotICAgIGlm
ICghaXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrKG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNz
YWdlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7Ci19
Ci0KLXZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKLXsKLSAgICBhZGRNZXNzYWdlKHNvdXJjZSwg
bGV2ZWwsIG1lc3NhZ2UsIHsgfSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgcmVxdWVzdElkZW50
aWZpZXIpOwotfQotCi12b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRl
eHQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25l
ZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikK
LXsKLSAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENv
bnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlVGV4dCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+IG1lc3NhZ2U7Ci0gICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6
TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1
ZXN0SWRlbnRpZmllcik7Ci0gICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVs
LCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRl
LCByZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKLX0KLQogI2lmIEVOQUJM
RShXRUJfQ1JZUFRPKQogCiBjbGFzcyBDcnlwdG9CdWZmZXJDb250YWluZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q3J5cHRvQnVmZmVyQ29udGFpbmVyPiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZDkyMjFkYjlmNTg2N2EyYzBiMjg5
YzMzOGQzZDQ0MjBmODM2NDZjMC4uZDU5MDk3YThiM2I5NjE3NWY1ZjM5OTYxMzk5OGRmZjk5YmVh
YWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAt
MTAzLDggKzEwMyw2IEBAIHB1YmxpYzoKICAgICBXb3JrZXJOYXZpZ2F0b3IqIG9wdGlvbmFsTmF2
aWdhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0b3IuZ2V0KCk7IH0KICAgICBXb3JrZXJM
b2NhdGlvbiogb3B0aW9uYWxMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24uZ2V0
KCk7IH0KIAotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwotCiAgICAgU2VjdXJpdHlPcmlnaW4mIHRv
cE9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9CiAKICAg
ICBDcnlwdG8mIGNyeXB0bygpOwpAQCAtMTMzLDExICsxMzEsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmluYWw7CiAK
LSAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgYW5kIGFkZENvbnNvbGVNZXNzYWdlIGZ1
bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4KLSAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8gY3Jl
YXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgotICAgIHZvaWQgYWRkTWVzc2FnZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7Ci0K
ICAgICBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgRm9yY2VVVEY4ID0gRm9y
Y2VVVEY4OjpObykgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VySW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDYzMmI4MmUyOGI3MmRhNjEzNzFjMjRlYmZiYWYy
ZGQ1NTkxMGQwNzEuLmIxYmUzZTkyNGNlYTQ3YTM5NTIwMDEzYzc2N2RiNjBjNzg4YjdmMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCkBA
IC0yOCw4ICsyOCw5IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWdlbnRCYXNl
Lmg+CkBAIC02Miw3ICs2Myw3IEBAIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBXb3JrZXJJbnNwZWN0
b3JQcm94eTo6d29ya2VyU3RhcnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgcmV0dXJu
IHBhdXNlT25TdGFydCA/IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3BlY3RvciA6
IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsOwogfQogCi12b2lkIFdvcmtlckluc3BlY3Rv
clByb3h5Ojp3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lKQordm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRlZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXb3JrZXJPcldv
cmtsZXRUaHJlYWQqIHRocmVhZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBBU1NFUlQoIW1fd29ya2VyVGhyZWFkKTsKIApAQCAtOTMsNyArOTQsNyBAQCB2b2lk
IFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKCkKIHZvaWQgV29ya2VySW5z
cGVjdG9yUHJveHk6OnJlc3VtZVdvcmtlcklmUGF1c2VkKCkKIHsKICAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LnRocmVhZCgpLnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOworICAgICAgICBkb3duY2FzdDxX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFk
KCktPnN0b3BSdW5uaW5nRGVidWdnZXJUYXNrcygpOwogICAgIH0pOwogfQogCkBAIC0xMDYsNyAr
MTA3LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdFRvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlQ2hhbm5lbCYgY2hhbm4KICAgICBtX3BhZ2VDaGFubmVsID0gJmNo
YW5uZWw7CiAKICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2so
W10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0
RnJvbnRlbmQoKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+
KGNvbnRleHQpLmluc3BlY3RvckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQoKTsKICAgICB9
KTsKIH0KIApAQCAtMTE5LDExICsxMjAsMTEgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQcm94eTo6
ZGlzY29ubmVjdEZyb21Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBtX3BhZ2VDaGFu
bmVsID0gbnVsbHB0cjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVn
Z2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQp
OworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCku
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29u
OjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogCiAgICAgICAgIC8vIEluIGNhc2UgdGhlIHdvcmtlciBp
cyBwYXVzZWQgcnVubmluZyBkZWJ1Z2dlciB0YXNrcywgZW5zdXJlIHdlIGJyZWFrIG91dCBvZgog
ICAgICAgICAvLyB0aGUgcGF1c2Ugc2luY2UgdGhpcyB3aWxsIGJlIHRoZSBsYXN0IGRlYnVnZ2Vy
IHRhc2sgd2Ugc2VuZCB0byB0aGUgd29ya2VyLgotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuc3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7Cisg
ICAgICAgIGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKS0+c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CiAgICAgfSk7
CiB9CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5OjpzZW5k
TWVzc2FnZVRvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihjb25zdCBTdHJpbmcmCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFz
ayhbbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1l
c3NhZ2UpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oY29u
dGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCht
ZXNzYWdlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJ
bnNwZWN0b3JQcm94eS5oCmluZGV4IDVlOGExZGMwZWQwZDlhYTUzMmMzNjc0NjRjODY3ZmI0Zjdm
OWFhNWYuLmJlZmMwMWQ5NTcwYThjNGE4YjdkZGVlODVlYTEwNjE4YTc3YTQ0ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmgKQEAgLTM2LDcgKzM2
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKLWNsYXNzIFdvcmtlclRocmVhZDsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZDsKIAog
ZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRTdGFydE1vZGU7CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7IH0KIAogICAg
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSB3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOwotICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V29ya2VyVGhyZWFkKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lk
IHdvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlck9yV29ya2xldFRo
cmVhZCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCB3b3JrZXJU
ZXJtaW5hdGVkKCk7CiAKICAgICB2b2lkIHJlc3VtZVdvcmtlcklmUGF1c2VkKCk7CkBAIC03Myw3
ICs3Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFJlZlB0cjxXb3JrZXJUaHJl
YWQ+IG1fd29ya2VyVGhyZWFkOworICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+IG1f
d29ya2VyVGhyZWFkOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgVVJMIG1fdXJsOwog
ICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDZhZDM0ZWM4ZmEyMWM1YzFhNjdkYjdm
MjI0YjFkNjQ3M2RlMGFlNDUuLmQ4YjI3N2FmYzJiMjg5ZDJkYjVlYjZmZjMzZjQ4ZmQxMGQ0OTk0
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC0xMTQsNCArMTE0LDM0IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU6OnBvc3RUYXNrKFRhc2smJiB0YXNrKQogICAgIHdvcmtlck9yV29ya2xldFRo
cmVhZCgpLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFpc0Nv
bnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2so
bWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwordm9p
ZCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIGFkZE1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSwgeyB9LCAwLCAwLCBudWxscHRyLCBudWxscHRyLCByZXF1ZXN0SWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlVGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBjYWxs
U3RhY2ssIEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyKQoreworICAgIGlmICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgcG9z
dFRhc2soQWRkQ29uc29sZU1lc3NhZ2VUYXNrKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKKyAgICBpZiAoY2FsbFN0YWNrKQorICAgICAgICBt
ZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1l
c3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25O
dWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6
OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZjBjOTBjMjIxOWJmZTQ5MjZjODI4
NzEzNjZjMzg5MDljNjFmNzQ4NS4uNmQ1ODlmNGMxNWI1ZDIzNTgxYTZjYjAzMmZhY2IyMjBmOWI3
ZDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRMb29wVGFz
a0dyb3VwJiBldmVudExvb3AoKSBmaW5hbDsKICAgICBib29sIGlzQ29udGV4dFRocmVhZCgpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBmaW5hbDsgLy8gRXhlY3V0ZXMg
dGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KKyAgICB2b2lkIGFk
ZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PiYmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsK
IApAQCAtODYsNiArODcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVy
ZWYoKTsgfQogCisgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGFuZCBhZGRDb25zb2xl
TWVzc2FnZSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuCisgICAgLy8gQ2FsbGVycyBzaG91bGQg
dHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZlcy4KKyAgICB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25l
ZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlND
OjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpIGZpbmFs
OworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIp
IGZpbmFsOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXI+IG1fc2NyaXB0OwogICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CiAg
ICAgUmVmUHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCBhMDk0M2Q4MzhkNTgxOTUx
MjM0ZjcwZWEzN2Q0ZTAwNjM5OGY4NzkyLi44MTAwZmYxNTEzOWVmY2JhYTA2MWIwYmQ1NDIyYTAz
OGI1NDA0Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgV1RGOjpUaHJlYWQqIHRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIFdv
cmtlckRlYnVnZ2VyUHJveHkqIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkg
PSAwOwogCiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGdsb2JhbFNjb3BlKCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxTY29wZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDQ3NjI1OWE4NmY4MzE1NjBkMjUwNzgw
ZTkyYjdmMmI2ZTFkNWFkMTAuLjE3NDI1MjkwMDQ1MDNiYTk0NzE1YTQ5MGU0ODU1MTQ0ODc1OTFj
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQu
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgpAQCAtNTAsMTYgKzUwLDE2IEBAIFdvcmtlclNjcmlwdExvYWRlcjo6fldvcmtlclNjcmlw
dExvYWRlcigpID0gZGVmYXVsdDsKIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9h
ZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIEZl
dGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBjb25zdCBTdHJpbmcmIGlu
aXRpYXRvcklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwotICAgIGF1dG8mIHdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAKICAgICBtX3VybCA9IHVybDsKICAgICBtX2Rlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2NyaXB0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBib29sIGlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSk7CiAKICAg
ICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgaWYgKGF1dG8qIHNj
cmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJH
bG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJsKSkgeworICAgICAgICBpZiAoYXV0byogc2Ny
aXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNj
b3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
c2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2Ny
aXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBl
ID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxF
eGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dAogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckds
b2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCiAgICAgLy8gT25seSB1c2VkIGZvciBpbXBvcnRT
Y3JpcHRzIHRoYXQgcHJlc2NyaWJlcyBOb0NvcnMgbW9kZS4KICAgICBBU1NFUlQobW9kZSA9PSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycyk7CkBAIC04NywxMCArODcsMTAgQEAgT3B0aW9uYWw8
RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gbV9kZXN0aW5hdGlvbjsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01v
ZGUgPSBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9u
ZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsOwotICAgIGlmIChhdXRvKiBhY3RpdmVTZXJ2aWNl
V29ya2VyID0gd29ya2VyR2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigpKQorICAgIGlm
IChhdXRvKiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gZ2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdv
cmtlcigpKQogICAgICAgICBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpOwogI2Vu
ZGlmCi0gICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsK
KyAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGds
b2JhbFNjb3BlLCBXVEZNb3ZlKCpyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogCiAgICAgLy8g
SWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5ldHdvcmtFcnJvciBleGNl
cHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICBpZiAoZmFpbGVkKCkpCkBAIC0x
MDEsNyArMTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6Omxv
YWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVU
eXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1p
bWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAot
ICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNj
b3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBl
IH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNj
b3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBl
IH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBlM2RmMDllNDgzMDE0NWJiYzc0YWQwMWJiZGE0
ODYxMmIwOWMwNjE4Li5iZjU0Mjg1OWQ3ODRjMDg0OGY0ZTE2YjU1MmIxMTZlODM4NTczNTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCiAgICAgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94
eTsgfQotICAgIFdvcmtlckRlYnVnZ2VyUHJveHkqIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAmbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CisgICAgV29ya2VyRGVi
dWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
d29ya2VyRGVidWdnZXJQcm94eTsgfQogICAgIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJS
ZXBvcnRpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyUmVwb3J0aW5nUHJveHk7IH0K
IAogICAgIC8vIE51bWJlciBvZiBhY3RpdmUgd29ya2VyIHRocmVhZHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwZjQ3MTFjNGMyM2Y1
MzI2YTViNDA1MDc3YWZiMTQ3Zjc4ZWYwNmZjLi5jMjkzOWU4OTRhMzgyYTJhNWY0ZDI2ODQ3NWZk
MTZkOTc0Y2ZhM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKQEAgLTEyMywzMiArMTIzLDEyIEBAIFVSTCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBGb3JjZVVURjgpIGNvbnN0CiAKIHZvaWQg
V29ya2xldEdsb2JhbFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKIHsKKyAgICAv
LyBGSVhNRTogVGhpcyBkb2VzIG5vdCB3b3JrIGZvciBBdWRpb1dvcmtsZXRzLgogICAgIGlmICgh
bV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2RvY3VtZW50LT5sb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXJyb3JNZXNzYWdlLCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGTW92ZShzdGFjaykpOwogfQogCi12
b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgbWVzc2FnZSkKLXsKLSAgICBpZiAoIW1fZG9j
dW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgp
LCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKLX0KLQotdm9pZCBX
b3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllcikKLXsKLSAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwot
fQotCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VUZXh0LCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiYmIGNhbGxTdGFjaywgSlNDOjpKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFt
X2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fZG9jdW1lbnQtPmFkZE1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNv
dXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIG51
bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKTsKLX0KLQogUmVmZXJyZXJQb2xpY3kgV29ya2xldEds
b2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlZmVycmVy
UG9saWN5OjpOb1JlZmVycmVyOwpAQCAtMTkwLDggKzE3MCw5IEBAIHZvaWQgV29ya2xldEdsb2Jh
bFNjb3BlOjpwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKQogICAgIG1fc2NyaXB0
TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUoZmV0Y2hPcHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZp
Y2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcyk7CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3Bl
OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodGhpcywgaWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCkBA
IC0yMDcsNiArMTg4LDggQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVk
KCkKICAgICBVUkwgbW9kdWxlVVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fZXZhbHVhdGVkTW9kdWxlcy5hZGQobW9kdWxlVVJMKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqdGhpcywgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIo
KSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKKwogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBzY3JpcHQoKS0+ZXZhbHVhdGUoU2NyaXB0U291
cmNlQ29kZShtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIFdURk1vdmUobW9kdWxlVVJMKSksIGV4
Y2VwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDM1NGYwMzRkNjM5YzBhZWRkNWJhZGRkNjAx
MDViMTI4ZTEyYmU5YmEuLmY2NzJlYWUzZTkxZDllNDJmZGJkNDFlZTE4ZGIwMmMyNDAyOGEwZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC03
Nyw4ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5
KCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKLQogICAgIFNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQo
KTsgfQogCiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyByZXR1
cm4gbnVsbHB0cjsgfQpAQCAtMTA5LDggKzEwNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1dv
cmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZv
aWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25z
dCBTdHJpbmcmLCBpbnQsIGludCwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYm
KSBmaW5hbDsKLSAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsK
IAogICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC4KICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0UGFyYW1ldGVycy5oCmlu
ZGV4IGFhYjhkZGJkOTY5Yjk3Zjc1MzMyNGRkNjg3NzQ3NDkzNzk1NDU5YzQuLmVjOTJiMDcyZmZj
NjY4NzY5OGNiOTYyM2M1ZDFkYzEwMDFkM2RlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFBhcmFtZXRlcnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIApAQCAtMzUsNiArMzYsNyBAQCBz
dHJ1Y3QgV29ya2xldFBhcmFtZXRlcnMgewogICAgIEpTQzo6UnVudGltZUZsYWdzIGpzUnVudGlt
ZUZsYWdzOwogICAgIGZsb2F0IHNhbXBsZVJhdGU7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7Cisg
ICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZTsKIAogICAgIFdvcmtsZXRQYXJhbWV0
ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewpAQCAtNDIsNyArNDQsOCBAQCBzdHJ1Y3Qg
V29ya2xldFBhcmFtZXRlcnMgewogICAgICAgICAgICAgd2luZG93VVJMLmlzb2xhdGVkQ29weSgp
LAogICAgICAgICAgICAganNSdW50aW1lRmxhZ3MsCiAgICAgICAgICAgICBzYW1wbGVSYXRlLAot
ICAgICAgICAgICAgaWRlbnRpZmllci5pc29sYXRlZENvcHkoKQorICAgICAgICAgICAgaWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgICAgIHN0YXJ0TW9kZQogICAgICAgICB9Owog
ICAgIH0KIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>