<?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>231281</bug_id>
          
          <creation_ts>2021-10-05 23:00:42 -0700</creation_ts>
          <short_desc>[GPU Process] Unique RenderingResourceIdentifiers Part 1: Uniquify at entry points</short_desc>
          <delta_ts>2021-10-07 16:34:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800958</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 23:00:42 -0700</bug_when>
    <thetext>[GPU Process] Unique RenderingResourceIdentifiers Part 1: Uniquify at entry points</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800964</commentid>
    <comment_count>1</comment_count>
      <attachid>440334</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-05 23:15:38 -0700</bug_when>
    <thetext>Created attachment 440334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800968</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 23:39:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/83920780&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801129</commentid>
    <comment_count>3</comment_count>
      <attachid>440334</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-06 09:23:11 -0700</bug_when>
    <thetext>Comment on attachment 440334
Patch

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

&gt; Source/WebKit/ChangeLog:26
&gt; +        This patch is the first step: It introduces the QualifiedRenderingResourceIdentifier
&gt; +        type, which holds the tuple described above, and makes all the GPU process message
&gt; +        receivers immediately turn any RenderingResourceIdentifiers they received from the
&gt; +        web processes into QualifiedRenderingResourceIdentifiers. Not only do the identifiers
&gt; +        immediately get packed, but each message receiver now has an implementation function
&gt; +        which only accepts the QualifiedRenderingResourceIdentifier, so we can&apos;t make a
&gt; +        mistake and use the unpacked one accidentally.

Is this problem unique to RenderingResourceIdentifier or should we make a solution that can be used for other types of identifiers?

It&apos;s really a &quot;process coalition-wide identifier&quot; or something, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801172</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-06 10:38:46 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 440334 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440334&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:26
&gt; &gt; +        This patch is the first step: It introduces the QualifiedRenderingResourceIdentifier
&gt; &gt; +        type, which holds the tuple described above, and makes all the GPU process message
&gt; &gt; +        receivers immediately turn any RenderingResourceIdentifiers they received from the
&gt; &gt; +        web processes into QualifiedRenderingResourceIdentifiers. Not only do the identifiers
&gt; &gt; +        immediately get packed, but each message receiver now has an implementation function
&gt; &gt; +        which only accepts the QualifiedRenderingResourceIdentifier, so we can&apos;t make a
&gt; &gt; +        mistake and use the unpacked one accidentally.
&gt; 
&gt; Is this problem unique to RenderingResourceIdentifier or should we make a
&gt; solution that can be used for other types of identifiers?
&gt; 
&gt; It&apos;s really a &quot;process coalition-wide identifier&quot; or something, right?

Oh, I assumed it was just for RenderingResourceIdentifier because the radar rdar://71012915 specifically mentions that type.

Do you have any suggestions for how to make this more generic? Make the struct templated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801360</commentid>
    <comment_count>5</comment_count>
      <attachid>440334</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-06 14:50:56 -0700</bug_when>
    <thetext>Comment on attachment 440334
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/QualifiedRenderingResourceIdentifier.h:54
&gt; +    QualifiedRenderingResourceIdentifier(WTF::HashTableDeletedValueType hashTableDeletedValueType)
&gt; +        : renderingResourceIdentifier(hashTableDeletedValueType)

You could drop the argument name and use `HashTableDeletedValue` in the initializer.

Since we can use webProcessIdentifier uninitialized in operator== and operator&lt;&lt; (and maybe add?), we should initialize it with the deleted value type here too.

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:216
&gt; +void RemoteGraphicsContextGL::paintCompositedResultsToQualifiedCanvas(QualifiedRenderingResourceIdentifier imageBuffer, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

&quot;QualifiedCanvas&quot; sounds a bit weird. Do you plan to eventually remove the original messages and rename the &quot;Qualified&quot; ones to remove that word?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801367</commentid>
    <comment_count>6</comment_count>
      <attachid>440334</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-06 15:17:58 -0700</bug_when>
    <thetext>Comment on attachment 440334
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:216
&gt;&gt; +void RemoteGraphicsContextGL::paintCompositedResultsToQualifiedCanvas(QualifiedRenderingResourceIdentifier imageBuffer, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; 
&gt; &quot;QualifiedCanvas&quot; sounds a bit weird. Do you plan to eventually remove the original messages and rename the &quot;Qualified&quot; ones to remove that word?

I don&apos;t. The design that I think makes the most sense is that the web processes speak WebCoreRenderingResourceIdentifier, and so that&apos;s what they would send to the GPU process, but the GPU Process would augment those identifiers with a ProcessIdentifier upon receipt.

Maybe &quot;QualifiedCanvasIdentifier&quot; is better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801374</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-06 15:27:51 -0700</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #5)
&gt; You could drop the argument name and use `HashTableDeletedValue` in the
&gt; initializer.
&gt; 
&gt; Since we can use webProcessIdentifier uninitialized in operator== and
&gt; operator&lt;&lt; (and maybe add?), we should initialize it with the deleted value
&gt; type here too.

Not necessary, as Myles points out ObjectIdentifier has a default constructor that&apos;s fine here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801378</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-06 15:35:59 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; I don&apos;t. The design that I think makes the most sense is that the web
&gt; processes speak WebCoreRenderingResourceIdentifier, and so that&apos;s what they
&gt; would send to the GPU process, but the GPU Process would augment those
&gt; identifiers with a ProcessIdentifier upon receipt.
&gt; 
&gt; Maybe &quot;QualifiedCanvasIdentifier&quot; is better?

Yes, that reads better to me.  You suggested offline that the full name &quot;paintCompositedResultsWithQualifiedCanvasIdentifier&quot;, which seems fine.  Or &quot;paintCompositedResultsToCanvasWithQualifiedIdentifier&quot;.  If it&apos;s not getting too wordy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801410</commentid>
    <comment_count>9</comment_count>
      <attachid>440453</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-06 16:29:07 -0700</bug_when>
    <thetext>Created attachment 440453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801420</commentid>
    <comment_count>10</comment_count>
      <attachid>440453</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-06 16:48:41 -0700</bug_when>
    <thetext>Comment on attachment 440453
Patch

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

&gt; Source/WebKit/ChangeLog:48
&gt; +        (WebKit::RemoteGraphicsContextGL::paintRenderingResultsToQualifiedCanvas):

ChangeLog needs updating.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:82
&gt; +inline TextStream&amp; operator&lt;&lt;(TextStream&amp; ts, QualifiedResourceIdentifier&lt;T&gt; resourceIdentifier)

`const QualifiedResourceIdentifier&lt;T&gt;&amp;`? Now that the type is templated we don&apos;t know how big the concrete type is, so this should perhaps take a const reference. (And does that mean the constructor should take a `T&amp;&amp;`?)

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:102
&gt; +    static unsigned hash(WebKit::QualifiedResourceIdentifier&lt;T&gt; identifier)

Ditto.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:107
&gt; +    static bool equal(WebKit::QualifiedResourceIdentifier&lt;T&gt; a, WebKit::QualifiedResourceIdentifier&lt;T&gt; b)

Ditto.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:112
&gt; +    static const bool safeToCompareToEmptyOrDeleted = true;

Should this be defined to be equal to `DefaultHash&lt;T&gt;::safeToCompareToEmptyOrDeleted`?

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:115
&gt; +template&lt;typename T&gt; struct HashTraits&lt;WebKit::QualifiedResourceIdentifier&lt;T&gt;&gt; : SimpleClassHashTraits&lt;WebKit::QualifiedResourceIdentifier&lt;T&gt;&gt; {

And should `HashTraits&lt;QualifiedResourceIdentifier&lt;T&gt;&gt;::emptyValueIsZero` be `HashTraits&lt;T&gt;::emptyValueIsZero`?

These questions might not need to be addressed if we define the QualifiedResourceIdentifier::resourceIdentifier to be of type `ObjectIdentifier&lt;T&gt;` instead of T. Is that generic enough for your purposes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801506</commentid>
    <comment_count>11</comment_count>
      <attachid>440453</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-06 23:04:38 -0700</bug_when>
    <thetext>Comment on attachment 440453
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:115
&gt;&gt; +template&lt;typename T&gt; struct HashTraits&lt;WebKit::QualifiedResourceIdentifier&lt;T&gt;&gt; : SimpleClassHashTraits&lt;WebKit::QualifiedResourceIdentifier&lt;T&gt;&gt; {
&gt; 
&gt; And should `HashTraits&lt;QualifiedResourceIdentifier&lt;T&gt;&gt;::emptyValueIsZero` be `HashTraits&lt;T&gt;::emptyValueIsZero`?
&gt; 
&gt; These questions might not need to be addressed if we define the QualifiedResourceIdentifier::resourceIdentifier to be of type `ObjectIdentifier&lt;T&gt;` instead of T. Is that generic enough for your purposes?

It is, but I think there&apos;s real value in being able to say `QualifiedResourceIdentifier&lt;RenderingResourceIdentifier&gt;` instead of `QualifiedResourceIdentifier&lt;RenderingResourceIdentifierType&gt;` and just relying implicitly on the fact that RenderingResourceIdentifier is a ObjectIdentifier&lt;RenderingResourceIdentifierType&gt;. So I&apos;ll just change the signatures of these functions to use references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801509</commentid>
    <comment_count>12</comment_count>
      <attachid>440470</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-06 23:20:21 -0700</bug_when>
    <thetext>Created attachment 440470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801530</commentid>
    <comment_count>13</comment_count>
      <attachid>440470</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-07 00:21:27 -0700</bug_when>
    <thetext>Comment on attachment 440470
Patch

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

Non-reviewer r=me.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:161
&gt; +    void createQualifiedImageBuffer(const WebCore::FloatSize&amp; logicalSize, WebCore::RenderingMode, float resolutionScale, const WebCore::DestinationColorSpace&amp;, WebCore::PixelFormat, QualifiedRenderingResourceIdentifier);
&gt; +    void getDataURLForQualifiedImageBuffer(const String&amp; mimeType, std::optional&lt;double&gt; quality, WebCore::PreserveResolution, QualifiedRenderingResourceIdentifier, CompletionHandler&lt;void(String&amp;&amp;)&gt;&amp;&amp;);
&gt; +    void getDataForQualifiedImageBuffer(const String&amp; mimeType, std::optional&lt;double&gt; quality, QualifiedRenderingResourceIdentifier, CompletionHandler&lt;void(Vector&lt;uint8_t&gt;&amp;&amp;)&gt;&amp;&amp;);
&gt; +    void getShareableBitmapForQualifiedImageBuffer(QualifiedRenderingResourceIdentifier, WebCore::PreserveResolution, CompletionHandler&lt;void(ShareableBitmap::Handle&amp;&amp;)&gt;&amp;&amp;);
&gt; +    void cacheQualifiedNativeImage(const ShareableBitmap::Handle&amp;, QualifiedRenderingResourceIdentifier);
&gt; +    void didCreateQualifiedSharedDisplayListHandle(WebCore::DisplayList::ItemBufferIdentifier, const SharedMemory::IPCHandle&amp;, QualifiedRenderingResourceIdentifier destinationBufferIdentifier);
&gt; +    void releaseQualifiedRemoteResource(QualifiedRenderingResourceIdentifier, uint64_t useCount);
&gt; +    void cacheQualifiedFont(Ref&lt;WebCore::Font&gt;&amp;&amp;, QualifiedRenderingResourceIdentifier);

Can these all be renamed to fit the &quot;paintRenderingResultsWithQualifiedCanvasIdentifier&quot; naming scheme too? I guess I wasn&apos;t clear that it wasn&apos;t just that one method that might be better renamed. (They key thing being that &quot;qualified canvas identifier&quot; sounds like it&apos;s the identifier which is qualified, which is the case, but in the earlier name &quot;paintRenderingResultsToQualifiedCanvas&quot; it sounds like a &quot;qualified canvas&quot; is a thing, which it isn&apos;t.)

These are getting a bit wordy, though, so I&apos;ll leave it up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801594</commentid>
    <comment_count>14</comment_count>
      <attachid>440470</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-07 07:30:11 -0700</bug_when>
    <thetext>Comment on attachment 440470
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:40
&gt; +struct QualifiedResourceIdentifier {

I don&apos;t understand. It seems you worked hard to write a generic templated class but then:
1. You use &quot;ResourceIdentifier&quot; in the name
2. You put in the WebKit/GPUProcess folder
3. You include RenderingResourceIdentifier.h and add an alias for it.

I think this should either:
1. Be a class very specific to RenderingResourceIdentifier and then it can stay here (and we don&apos;t need templating).
or preferably
2. We make this class / header truly generic and reusable. Which would entail:
a. Move it to WebCore/platform, where ProcessIdentifier lives
b. Using a more generic name (e.g. QualifiedIdentifier or QualifiedObjectIdentifier if you choose to use an ObjectIdentifier&lt;T&gt; instead of a T).
c. Not include RenderingResourceIdentifier.h or have aliases for it in this header. This can be done elsewhere in the GPUProcess code.

&gt; Source/WebKit/GPUProcess/graphics/QualifiedResourceIdentifier.h:82
&gt; +inline TextStream&amp; operator&lt;&lt;(TextStream&amp; ts, const QualifiedResourceIdentifier&lt;T&gt;&amp; resourceIdentifier)

What is TextStream uses for? If it is for logging, do we really want 2 identifiers concatenated without any kind of separator?

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:507
&gt; +void RemoteRenderingBackend::cacheQualifiedNativeImage(const ShareableBitmap::Handle&amp; handle, QualifiedRenderingResourceIdentifier nativeImageResourceIdentifier)

Why do we need a separate function? It seems this is only called by cacheNativeImage() (which is a one-liner).

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:531
&gt; +void RemoteRenderingBackend::cacheQualifiedFont(Ref&lt;Font&gt;&amp;&amp; font, QualifiedRenderingResourceIdentifier fontResourceIdentifier)

Same comment as above.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:551
&gt; +void RemoteRenderingBackend::releaseQualifiedRemoteResource(QualifiedRenderingResourceIdentifier renderingResourceIdentifier, uint64_t useCount)

Same comment as above.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:576
&gt; +void RemoteRenderingBackend::didCreateQualifiedSharedDisplayListHandle(DisplayList::ItemBufferIdentifier itemBufferIdentifier, const SharedMemory::IPCHandle&amp; handle, QualifiedRenderingResourceIdentifier)

Same comment as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801785</commentid>
    <comment_count>15</comment_count>
      <attachid>440470</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 14:22:39 -0700</bug_when>
    <thetext>Comment on attachment 440470
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:507
&gt;&gt; +void RemoteRenderingBackend::cacheQualifiedNativeImage(const ShareableBitmap::Handle&amp; handle, QualifiedRenderingResourceIdentifier nativeImageResourceIdentifier)
&gt; 
&gt; Why do we need a separate function? It seems this is only called by cacheNativeImage() (which is a one-liner).

(Chris and I discussed this offline.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801787</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-07 14:23:30 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #15)
&gt; Comment on attachment 440470 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440470&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:507
&gt; &gt;&gt; +void RemoteRenderingBackend::cacheQualifiedNativeImage(const ShareableBitmap::Handle&amp; handle, QualifiedRenderingResourceIdentifier nativeImageResourceIdentifier)
&gt; &gt; 
&gt; &gt; Why do we need a separate function? It seems this is only called by cacheNativeImage() (which is a one-liner).
&gt; 
&gt; (Chris and I discussed this offline.)

Yep, my bad. I withdraw those comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801827</commentid>
    <comment_count>17</comment_count>
      <attachid>440547</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 15:25:49 -0700</bug_when>
    <thetext>Created attachment 440547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801831</commentid>
    <comment_count>18</comment_count>
      <attachid>440547</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-07 15:42:33 -0700</bug_when>
    <thetext>Comment on attachment 440547
Patch

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

r=me. It may have been nice to use ProcessQualifiedIdentifier and use an ObjectIdentifier&lt;T&gt;. I am not sure how useful this could be for other types.

&gt; Source/WebCore/platform/ProcessQualified.h:107
&gt; +}

Would be nice to add this here as we usually do.
 // namespace WebCore

&gt; Source/WebCore/platform/ProcessQualified.h:130
&gt; +}

Would be nice to add this here as we usually do.
 // namespace WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801836</commentid>
    <comment_count>19</comment_count>
      <attachid>440547</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 15:51:13 -0700</bug_when>
    <thetext>Comment on attachment 440547
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h:105
&gt; +    void paintRenderingResultsToCanvasWithQualifiedIdentifier(QualifiedRenderingResourceIdentifier, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; +    void paintCompositedResultsToCanvasWithQualifiedIdentifier(QualifiedRenderingResourceIdentifier, CompletionHandler&lt;void()&gt;&amp;&amp;);

These should be private.

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h:111
&gt; +    void paintPixelBufferToImageBuffer(std::optional&lt;WebCore::PixelBuffer&gt;&amp;&amp;, QualifiedRenderingResourceIdentifier, CompletionHandler&lt;void()&gt;&amp;&amp;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801857</commentid>
    <comment_count>20</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 16:34:11 -0700</bug_when>
    <thetext>Committed r283755 (242676@main): &lt;https://commits.webkit.org/242676@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440334</attachid>
            <date>2021-10-05 23:15:38 -0700</date>
            <delta_ts>2021-10-06 16:29:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231281-20211005231537.patch</filename>
            <type>text/plain</type>
            <size>32013</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5OTVlY2VlNWM2YjJhZjUw
NmFiZTlhZTcyMjY4ZDVjZmQzNWJkM2QuLjA0YjM5MzA2ODA5YzVkY2E5YWUyYmUxMDFhM2ZkNWUw
ZTgzOTBhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMjEtMTAtMDUgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgMTogVW5pcXVpZnkgYXQg
ZW50cnkgcG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzEyODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFYWNoIHdlYiBwcm9jZXNzIGNyZWF0ZXMgaXRzIG93biBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzLiBCZWNhdXNlIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBjYW4gc2VydmljZSBt
dWx0aXBsZSB3ZWIgcHJvY2Vzc2VzLCB0aGVzZSBpZGVudGlmaWVycyBjYW4gY29sbGlkZSBpbiB0
aGUgR1BVIHByb2Nlc3MuCisgICAgICAgIFRoaXMgaXMgc29tZXdoYXQgZXJyb3IgcHJvbmUsIGFu
ZCBtaWdodCBjYXVzZSB1cyB0byBtYWtlIGEgbWlzdGFrZSBpbiB0aGUgZnV0dXJlIGFuZAorICAg
ICAgICBpbnRyb2R1Y2UgYSBidWcgd2hpY2ggbGV0cyBvbmUgd2ViIHByb2Nlc3Mgc2VlIGFub3Ro
ZXIgd2ViIHByb2Nlc3MncyByZXNvdXJjZXMgKHdoaWNoCisgICAgICAgIHdvdWxkIGJlIG1lZ2Eg
YmFkKS4KKworICAgICAgICBUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gdHJlYXQgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAgICAgYXMg
YSB0dXBsZSBvZiAodGhlIGlkZW50aWZlciB3ZSBnb3QgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIHRo
ZSBwcm9jZXNzIGlkZW50aWZpZXIgb2YKKyAgICAgICAgdGhlIHdlYiBwcm9jZXNzKS4gVGhpcyB3
YXksIHRoZSB0dXBsZXMgdW5pcXVlbHkgaWRlbnRpZnkgYSByZXNvdXJjZSBhY3Jvc3MgdGhlIGVu
dGlyZQorICAgICAgICBHUFUgcHJvY2Vzcy4gRG9pbmcgaXQgdGhpcyB3YXkgbWFrZXMgaXQgbGVz
cyBsaWtlbHkgdGhhdCB3ZSdsbCBtYWtlIGEgbWVnYSBiYWQgbWlzdGFrZQorICAgICAgICBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHN0ZXA6IEl0IGlu
dHJvZHVjZXMgdGhlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgICAg
ICB0eXBlLCB3aGljaCBob2xkcyB0aGUgdHVwbGUgZGVzY3JpYmVkIGFib3ZlLCBhbmQgbWFrZXMg
YWxsIHRoZSBHUFUgcHJvY2VzcyBtZXNzYWdlCisgICAgICAgIHJlY2VpdmVycyBpbW1lZGlhdGVs
eSB0dXJuIGFueSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIHRoZXkgcmVjZWl2ZWQgZnJv
bSB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3NlcyBpbnRvIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcnMuIE5vdCBvbmx5IGRvIHRoZSBpZGVudGlmaWVycworICAgICAgICBpbW1l
ZGlhdGVseSBnZXQgcGFja2VkLCBidXQgZWFjaCBtZXNzYWdlIHJlY2VpdmVyIG5vdyBoYXMgYW4g
aW1wbGVtZW50YXRpb24gZnVuY3Rpb24KKyAgICAgICAgd2hpY2ggb25seSBhY2NlcHRzIHRoZSBR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHNvIHdlIGNhbid0IG1ha2UgYQor
ICAgICAgICBtaXN0YWtlIGFuZCB1c2UgdGhlIHVucGFja2VkIG9uZSBhY2NpZGVudGFsbHkuCisK
KyAgICAgICAgQmVjYXVzZSB0aGlzIHBhdGNoIGlzIGp1c3QgdGhlIGZpcnN0IHN0ZXAsIHRoZSBR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzCisgICAgICAgIGdldCB1bnBhY2tl
ZCBlYWdlcmx5LCBhbmQgdGhlIGlubmVyIGxvZ2ljIG9mIHRoZSBHUFUgcHJvY2VzcyBpcyB1bmFm
ZmVjdGVkLiBUaGUKKyAgICAgICAgc3Vic2VxdWVudCB0d28gcGF0Y2hlcyB3aWxsIHB1c2ggdGhl
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMgZGVlcGVyCisgICAgICAgIGlu
dG8gdGhlIGd1dHMgb2YgdGhlIEdQVSBwcm9jZXNzLCBldmVudHVhbGx5IHRvIHRoZSBwb2ludCB3
aGVyZQorICAgICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIGFyZSBuZXZlciB1c2Vk
IHRoZXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OlF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6Om9wZXJhdG9yPT0g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKFdlYktpdDo6YWRkKToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0
OjpRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+OjpoYXNoKToKKyAgICAgICAg
KFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+OjplcXVhbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1F1YWxpZmllZENhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvUXVhbGlmaWVk
Q2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50
UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVRdWFsaWZpZWRJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxG
b3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZv
ckltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0U2hhcmVhYmxlQml0bWFwRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVRdWFsaWZpZWROYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlUXVhbGlmaWVk
Rm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VRdWFsaWZpZWRSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlUXVhbGlmaWVk
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDIxLTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQXV0aG9yaXphdGlvbiBoZWFkZXIgbG9zdCBvbiAzMHggcmVkaXJlY3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjYzMmEzNjkyNjY2ZDMxZTgzN2Y2ZGY0ZGQyMDgwNDIwYzdjMWY0ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOwordXNpbmcgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI7CisKK3N0cnVjdCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgeworICAgIC8vIEVhY2ggd2ViIHByb2Nlc3Mg
Y3JlYXRlcyBpdHMgb3duIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMuCisgICAgLy8gVGhl
IEdQVSBwcm9jZXNzIGNhbiBzZXJ2aWNlIG11bHRpcGxlIHdlYiBwcm9jZXNzZXMsIHNvIHRoZXNl
IGlkZW50aWZpZXJzIGNhbiBjb2xsaWRlIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAvLyBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgam9pbnMgYSBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgd2l0aCB0aGUgUHJvY2Vzc0lkZW50aWZpZXIgb2YKKyAgICAvLyB0aGUgd2Vi
IHByb2Nlc3MgdGhhdCBjcmVhdGVkIGl0LiBUaGVyZWZvcmUsIHRoaXMgb2JqZWN0IGlzIHVuaXF1
ZSBhY3Jvc3MgdGhlIHdob2xlIEdQVSBwcm9jZXNzLgorCisgICAgUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCkgPSBkZWZhdWx0OworICAgIAorICAgIFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllcikKKyAgICAgICAgOiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQorICAgICAgICAsIHdlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlByb2Nl
c3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgCisgICAgUXVhbGlmaWVkUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSBoYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cihoYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciA9PSBvdGhlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAg
ICAgICYmIHdlYlByb2Nlc3NJZGVudGlmaWVyID09IG90aGVyLndlYlByb2Nlc3NJZGVudGlmaWVy
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7CisgICAgfQorCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNz
SWRlbnRpZmllcjsKK307CisKK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIHRzIDw8IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgdHMgPDwgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLndlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIHJldHVybiB0czsKK30KKwor
aW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGFkZChoYXNo
ZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIGFkZChoYXNoZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci53ZWJQcm9j
ZXNzSWRlbnRpZmllcik7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYktpdDo6UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiB7CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goV2ViS2l0OjpRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChp
ZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChXZWJLaXQ6OlF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBhLCBXZWJLaXQ6OlF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsK
KyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA6IFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxXZWJLaXQ6OlF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4geworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGYyYTVlMDJkM2M3
NzAwYjc5Y2Y3ZDMxZTAzNjliZWEzMzM1NjdiM2QuLjMzMWM2ZTk5NTUyYWNjZWMwN2ExOWQwZmU0
YzQxZThhMTI2NDljMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCkBAIC02OCw2
ICs2OSw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAgICAgLCBtX3JlbmRl
cmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdChTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmFjcXVpcmUoKSkK
KyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53
ZWJQcm9jZXNzSWRlbnRpZmllcigpKQogewogICAgIGFzc2VydElzTWFpblJ1bkxvb3AoKTsKIH0K
QEAgLTE5NiwxOCArMTk4LDI4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om5vdGlm
eU1hcmtDb250ZXh0Q2hhbmdlZCgpCiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUXVhbGlmaWVkQ2Fu
dmFzKHsgaW1hZ2VCdWZmZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb1F1YWxpZmllZENhbnZhcyhRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OwogICAgIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKG1fY29udGV4dC0+cmVhZFJlbmRl
cmluZ1Jlc3VsdHNGb3JQYWludGluZygpLCBpbWFnZUJ1ZmZlciwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvUXVhbGlmaWVkQ2FudmFzKHsgaW1h
Z2VCdWZmZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9RdWFsaWZpZWRDYW52YXMoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlQnVmZmVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICBw
YWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2NvbnRleHQtPnJlYWRDb21wb3NpdGVkUmVz
dWx0c0ZvclBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJU
b0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxC
dWZmZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0YXJnZXQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQp
OwogICAgIC8vIEZJWE1FOiBXZSBkbyBub3QgaGF2ZSBmdW5jdGlvbmluZyByZWFkL3dyaXRlIGZl
bmNlcyBpbiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBUaHVzIHRoaXMgaXMgc3luY2hyb25vdXMs
CkBAIC0yMTYsNyArMjI4LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQ
aXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3IKICAgICBDb25kaXRp
b24gY29uZGl0aW9uVmFyaWFibGU7CiAgICAgYm9vbCBpc0ZpbmlzaGVkID0gZmFsc2U7CiAgICAg
bV9yZW5kZXJpbmdCYWNrZW5kLT5kaXNwYXRjaChbJiwgY29udGV4dEF0dHJpYnV0ZXMgPSBtX2Nv
bnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gbV9yZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVSZXNvdXJjZUNhY2hlKCku
Y2FjaGVkSW1hZ2VCdWZmZXIodGFyZ2V0KSkgeworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZl
ciA9IG1fcmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlUmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdl
QnVmZmVyKHRhcmdldC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgICAg
ICAvLyBIZXJlIHdlIGRvIG5vdCB0cnkgdG8gcGxheSBiYWNrIHBlbmRpbmcgY29tbWFuZHMgZm9y
IGltYWdlQnVmZmVyLiBDdXJyZW50bHkgdGhpcyBjYWxsIGlzIG9ubHkgbWFkZSBmb3IgZW1wdHkK
ICAgICAgICAgICAgIC8vIGltYWdlIGJ1ZmZlcnMgYW5kIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8g
YWRkIGRpc3BsYXkgbGlzdHMuCiAgICAgICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDEzZTQ3ZmJiOWM4OTcwZjVkMzA0NWE2ZmY3ZTBjODdjZjIzNzUw
ZDEuLjVlNWQwZDQ5N2E0NGFlODIzZGU2MGFlZGZjM2IwODkzOThjNjYzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCkBAIC01NSw2ICs1NSw4IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOworCiAvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVj
ZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKIC8vIGFuZCBpc3N1
ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVz
c2FnZXMuCiAvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVu
bmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCkBAIC0xMDAsMTIgKzEwMiwx
NCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJv
cik7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9RdWFsaWZpZWRDYW52YXMoUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvUXVhbGlmaWVkQ2FudmFzKFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRp
ZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1
aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OlNpbXVsYXRlZEV2ZW50Rm9yVGVzdGluZyk7CiAKICNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAot
ICAgIHZvaWQgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQaXhlbEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcGFpbnRQaXhlbEJ1ZmZl
clRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiwgUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVmUHRyPElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3RyZWFtQ29ubmVjdGlvbjsKQEAgLTEx
NCw2ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
IG1fcmVuZGVyaW5nQmFja2VuZDsKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNT
IFRocmVhZEFzc2VydGlvbiBtX3N0cmVhbVRocmVhZDsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOwogfTsKIAogSVBDOjpTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGFhOTQ1NjQxNDlkMDhlNDg5NjM0N2Q5NGYwMzk0
NjE1NDcyOWJmNzMuLjliZGJmNjM0YjdkOWU1OTYzZTFlNmMyYjRlOTI0ZDYxOTQzZDFjM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNTMsNiAr
MTU0LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpCiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlclJlc291cmNlSWRl
bnRpZmllcikKK3sKKyAgICBjcmVhdGVRdWFsaWZpZWRJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwg
cmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
eyBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZVF1YWxpZmllZEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VC
dWZmZXJSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKQEAg
LTE2MCw3ICsxNjYsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbgogICAgIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAKICAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCkgewotICAgICAgICBpZiAoYXV0byBhY2NlbGVyYXRlZEltYWdl
QnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcywgaW1hZ2VC
dWZmZXJSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChhdXRvIGFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzLCBp
bWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
KSB7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJUF9JREVOVElUWSkKICAgICAgICAg
ICAgIC8vIE1hcmsgdGhlIElPU3VyZmFjZSBhcyBiZWluZyBvd25lZCBieSB0aGUgV2ViUHJvY2Vz
cyBldmVuIHRob3VnaCBpdCB3YXMgY29uc3RydWN0ZWQgYnkgdGhlIEdQVVByb2Nlc3Mgc28gdGhh
dCBKZXRzYW0ga25vd3Mgd2hpY2ggcHJvY2VzcyB0byBraWxsLgogICAgICAgICAgICAgYWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlci0+c2V0UHJvY2Vzc093bmVyc2hpcChtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGl0eVRva2VuKCkpOwpAQCAtMTcwLDcgKzE3Niw3IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgfQogCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
LSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgKnRoaXMsIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2VC
dWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMsIGltYWdl
QnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAK
ICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTgwLDcgKzE4Niw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyKTsKICAgICB1cGRhdGVS
ZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIAotICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZv
ICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaW1hZ2VCdWZmZXJS
ZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVu
ZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaW1hZ2VCdWZmZXJSZXNvdXJjZUlk
ZW50aWZpZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgd2FrZVVwQW5k
QXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6
bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKQEAgLTQzMywzMiArNDM5LDQ3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cG9wdWxhdGVHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeShz
dGQ6Om9wdGlvbmFsPFdlCiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0
YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBnZXREYXRhVVJMRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIo
bWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgeyByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvclF1YWxpZmllZEltYWdlQnVmZmVyKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VC
dWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAg
dXJsU3RyaW5nID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTChtaW1lVHlwZSwgcXVhbGl0eSwgcHJl
c2VydmVSZXNvbHV0aW9uKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybFN0cmlu
ZykpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1
ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZ2V0RGF0YUZvclF1YWxpZmllZEltYWdlQnVmZmVy
KG1pbWVUeXBlLCBxdWFsaXR5LCB7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXREYXRhRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VC
dWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAg
ZGF0YSA9IGltYWdlQnVmZmVyLT50b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0YSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRp
b24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGdldFNoYXJlYWJs
ZUJpdG1hcEZvclF1YWxpZmllZEltYWdlQnVmZmVyKHsgaWRlbnRpZmllciwgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIHByZXNlcnZlUmVzb2x1
dGlvbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvclF1YWxpZmllZEltYWdlQnVmZmVyKFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOwogICAgIFsmXSgpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKKyAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcihpZGVudGlmaWVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIGlm
ICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gaW1hZ2Ug
PSBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHk6
OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTQ3OSw2ICs1MDAsMTEgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpSZW5kZXJpbmcKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2
ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBj
YWNoZVF1YWxpZmllZE5hdGl2ZUltYWdlKGhhbmRsZSwgeyBuYXRpdmVJbWFnZVJlc291cmNlSWRl
bnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmll
cigpIH0pOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlUXVhbGlmaWVk
TmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlm
aWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC00ODYsMjMgKzUx
MiwyOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbgogICAgIGlmICghYml0bWFwKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAt
PmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZv
cm1JbWFnZSgpLCBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRpZmllci5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKCppbWFnZSk7CiAKLSAgICBpZiAo
bV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3Jt
V2FrZXVwKG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAobV9wZW5kaW5n
V2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKG5h
dGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikp
CiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRp
bmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYgZm9udCkK
K3sKKyAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IGZvbnQtPnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIGNhY2hlUXVhbGlmaWVkRm9udChXVEZNb3ZlKGZv
bnQpLCB7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOworfQorCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNhY2hlUXVhbGlmaWVkRm9udChSZWY8Rm9udD4mJiBmb250LCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udFJlc291cmNlSWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gZm9udFJlc291cmNl
SWRlbnRpZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7Ci0gICAgaWYgKG1f
cGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdh
a2V1cChmb250UmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5m
byAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKGZvbnRSZXNvdXJj
ZUlkZW50aWZpZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgd2FrZVVw
QW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0
ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKQEAgLTUxMyw5ICs1NDQsMTQgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cygpCiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50
KQoreworICAgIHJlbGVhc2VRdWFsaWZpZWRSZW1vdGVSZXNvdXJjZSh7IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRl
bnRpZmllcigpIH0sIHVzZUNvdW50KTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpyZWxlYXNlUXVhbGlmaWVkUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291
bnQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBzdWNjZXNz
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNvdW50KTsKKyAgICBhdXRvIHN1Y2Nlc3MgPSBtX3JlbW90
ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNvdW50KTsKICAgICBNRVNT
QUdFX0NIRUNLKHN1Y2Nlc3MsICJSZXNvdXJjZSBpcyBiZWluZyByZWxlYXNlZCBiZWZvcmUgYmVp
bmcgY2FjaGVkLiIpOwogICAgIHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwogfQpA
QCAtNTMzLDYgKzU2OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmFsaXpl
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpdGVtQnVmZmVySWRlbnRpZmllciwgY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBkaWRDcmVhdGVRdWFs
aWZpZWRTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpdGVtQnVmZmVySWRlbnRpZmllciwgaGFuZGxl
LCB7IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpZENyZWF0ZVF1YWxpZmllZFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIE1F
U1NBR0VfQ0hFQ0soIW1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmNvbnRhaW5zKGl0ZW1CdWZm
ZXJJZGVudGlmaWVyKSwgIkR1cGxpY2F0ZSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggN2Q4MGI3MjU4NjM5NGU1NWVjY2NjOWJmNzNmOTVlZmIw
Y2M5NDA1MC4uNjhlNTI4ZjJiZWQyYzczNmU0MzUxNmNmZTI4NWE1M2M2YzU4ZmYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCkBAIC02Myw2ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CitzdHJ1Y3QgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogc3Ry
dWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQKQEAgLTE0OSw2ICsxNTAsMTYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEKTsKICAgICB2b2lk
IGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlm
aWVyKTsKIAorICAgIC8vIFJlY2VpdmVkIG1lc3NhZ2VzIHRyYW5zbGF0ZWQgdG8gdXNlIFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4KKyAgICB2b2lkIGNyZWF0ZVF1YWxpZmll
ZEltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBnZXREYXRhVVJMRm9yUXVhbGlm
aWVkSW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4m
Jik7CisgICAgdm9pZCBnZXREYXRhRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWlu
dDhfdD4mJik+JiYpOworICAgIHZvaWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9yUXVhbGlmaWVkSW1h
Z2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmJik+JiYpOworICAgIHZvaWQgY2FjaGVRdWFsaWZpZWROYXRpdmVJbWFnZShjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CisgICAgdm9pZCBkaWRDcmVhdGVRdWFsaWZpZWRTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUXVhbGlm
aWVkUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1
aW50NjRfdCB1c2VDb3VudCk7CisgICAgdm9pZCBjYWNoZVF1YWxpZmllZEZvbnQoUmVmPFdlYkNv
cmU6OkZvbnQ+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKICAg
ICBjbGFzcyBSZXBsYXllckRlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXllcjo6RGVsZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVwbGF5ZXJEZWxlZ2F0
ZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhMjM3
OWVjNGUwOTdhMjM2NGFmZGE0ZmIyNzM0ZjZmZDE3ZDFmOGQuLjY5MWJkMjJkZWIyYjI3YmQwNDJi
NjRkZjJhZWRhM2ZmYTNjNGRkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzA4Nyw2ICszMDg3LDcgQEAKIAkJMUM4RTJBMzExMjc3
ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzhFMkEz
MjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvclVJTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViSW5zcGVjdG9yVUlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOTNE
MUJFMjcwRDAwMzUwMEFBRDdDMCAvKiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOUVCQTVCMjA4N0U3NEUwMDA1NDQy
OSAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbTsgcGF0aCA9IGlvcy9OYXRp
dmVXZWJNb3VzZUV2ZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4
QjkzNTEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlQcm94eU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJUHJveHlNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTkwODgsNiArOTA4OSw3IEBACiAJCQkJRjQwOTRDQkMyNTUzMDRBRjAwM0Q3M0UzIC8qIERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCAqLywKIAkJCQlGNDA5NENCQjI1NTMwNEFGMDAzRDcz
RTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCAqLywKIAkJCQk1NUFEMDk0MzI0MDhBMEU2
MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovLAorCQkJCTFDOTNEMUJF
MjcwRDAwMzUwMEFBRDdDMCAvKiBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aCAqLywKIAkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwICovLAogCQkJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oICovLAogCQkJCTdCOTA0MTY4MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440453</attachid>
            <date>2021-10-06 16:29:07 -0700</date>
            <delta_ts>2021-10-06 23:20:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231281-20211006162906.patch</filename>
            <type>text/plain</type>
            <size>31678</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdiNWE4ZGNjOTRmYmY0ZjBi
NDcyMjQ4MDBiZTNmYTFhNjMzMTc3NGQuLjNjOWRlODk4MTc0ZWUwMGM4ZDUwMzRmMzk1ODEwMzNj
MjA1NzE4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMjEtMTAtMDYgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgMTogVW5pcXVpZnkgYXQg
ZW50cnkgcG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzEyODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFYWNoIHdlYiBwcm9jZXNzIGNyZWF0ZXMgaXRzIG93biBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzLiBCZWNhdXNlIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBjYW4gc2VydmljZSBt
dWx0aXBsZSB3ZWIgcHJvY2Vzc2VzLCB0aGVzZSBpZGVudGlmaWVycyBjYW4gY29sbGlkZSBpbiB0
aGUgR1BVIHByb2Nlc3MuCisgICAgICAgIFRoaXMgaXMgc29tZXdoYXQgZXJyb3IgcHJvbmUsIGFu
ZCBtaWdodCBjYXVzZSB1cyB0byBtYWtlIGEgbWlzdGFrZSBpbiB0aGUgZnV0dXJlIGFuZAorICAg
ICAgICBpbnRyb2R1Y2UgYSBidWcgd2hpY2ggbGV0cyBvbmUgd2ViIHByb2Nlc3Mgc2VlIGFub3Ro
ZXIgd2ViIHByb2Nlc3MncyByZXNvdXJjZXMgKHdoaWNoCisgICAgICAgIHdvdWxkIGJlIG1lZ2Eg
YmFkKS4KKworICAgICAgICBUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gdHJlYXQgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBpbiB0aGUgR1BVIHByb2Nlc3MKKyAgICAgICAgYXMg
YSB0dXBsZSBvZiAodGhlIGlkZW50aWZlciB3ZSBnb3QgZnJvbSB0aGUgd2ViIHByb2Nlc3MsIHRo
ZSBwcm9jZXNzIGlkZW50aWZpZXIgb2YKKyAgICAgICAgdGhlIHdlYiBwcm9jZXNzKS4gVGhpcyB3
YXksIHRoZSB0dXBsZXMgdW5pcXVlbHkgaWRlbnRpZnkgYSByZXNvdXJjZSBhY3Jvc3MgdGhlIGVu
dGlyZQorICAgICAgICBHUFUgcHJvY2Vzcy4gRG9pbmcgaXQgdGhpcyB3YXkgbWFrZXMgaXQgbGVz
cyBsaWtlbHkgdGhhdCB3ZSdsbCBtYWtlIGEgbWVnYSBiYWQgbWlzdGFrZQorICAgICAgICBpbiB0
aGUgZnV0dXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHN0ZXA6IEl0IGlu
dHJvZHVjZXMgdGhlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgICAg
ICB0eXBlLCB3aGljaCBob2xkcyB0aGUgdHVwbGUgZGVzY3JpYmVkIGFib3ZlLCBhbmQgbWFrZXMg
YWxsIHRoZSBHUFUgcHJvY2VzcyBtZXNzYWdlCisgICAgICAgIHJlY2VpdmVycyBpbW1lZGlhdGVs
eSB0dXJuIGFueSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIHRoZXkgcmVjZWl2ZWQgZnJv
bSB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3NlcyBpbnRvIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcnMuIE5vdCBvbmx5IGRvIHRoZSBpZGVudGlmaWVycworICAgICAgICBpbW1l
ZGlhdGVseSBnZXQgcGFja2VkLCBidXQgZWFjaCBtZXNzYWdlIHJlY2VpdmVyIG5vdyBoYXMgYW4g
aW1wbGVtZW50YXRpb24gZnVuY3Rpb24KKyAgICAgICAgd2hpY2ggb25seSBhY2NlcHRzIHRoZSBR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHNvIHdlIGNhbid0IG1ha2UgYQor
ICAgICAgICBtaXN0YWtlIGFuZCB1c2UgdGhlIHVucGFja2VkIG9uZSBhY2NpZGVudGFsbHkuCisK
KyAgICAgICAgQmVjYXVzZSB0aGlzIHBhdGNoIGlzIGp1c3QgdGhlIGZpcnN0IHN0ZXAsIHRoZSBR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzCisgICAgICAgIGdldCB1bnBhY2tl
ZCBlYWdlcmx5LCBhbmQgdGhlIGlubmVyIGxvZ2ljIG9mIHRoZSBHUFUgcHJvY2VzcyBpcyB1bmFm
ZmVjdGVkLiBUaGUKKyAgICAgICAgc3Vic2VxdWVudCB0d28gcGF0Y2hlcyB3aWxsIHB1c2ggdGhl
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMgZGVlcGVyCisgICAgICAgIGlu
dG8gdGhlIGd1dHMgb2YgdGhlIEdQVSBwcm9jZXNzLCBldmVudHVhbGx5IHRvIHRoZSBwb2ludCB3
aGVyZQorICAgICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIGFyZSBuZXZlciB1c2Vk
IHRoZXJlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVz
b3VyY2VJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNv
dXJjZUlkZW50aWZpZXI6OlF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUlk
ZW50aWZpZXI6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRS
ZXNvdXJjZUlkZW50aWZpZXI6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViS2l0Ojpv
cGVyYXRvcjw8KToKKyAgICAgICAgKFdlYktpdDo6YWRkKToKKyAgICAgICAgKFdURjo6RGVmYXVs
dEhhc2g8V2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXI+OjpoYXNoKToKKyAgICAg
ICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXI+
OjplcXVhbCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1F1YWxp
ZmllZENhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvUXVhbGlmaWVkQ2FudmFz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxC
dWZmZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjcmVhdGVRdWFsaWZpZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JRdWFs
aWZpZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmdldERhdGFGb3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hh
cmVhYmxlQml0bWFwRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVRdWFsaWZpZWROYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlUXVhbGlmaWVkRm9udCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVh
c2VRdWFsaWZpZWRSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlUXVhbGlmaWVkU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIxLTEwLTA2ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggd2F0Y2hPUywgdHZPUywgYW5kIG1hY0NhdGFseXN0IGJ1aWxkcyBh
ZnRlciByMjgzNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYz
M2IyNjRmYzM1MWJlNGNkYTA5MTg1MTFlMjk4ZDIyMjllZDA1OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUlkZW50
aWZpZXIuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KwordXNpbmcgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwordXNpbmcgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IFF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllciB7CisgICAgLy8gRWFjaCB3ZWIgcHJvY2VzcyBj
cmVhdGVzIGl0cyBvd24gUmVzb3VyY2VJZGVudGlmaWVycy4KKyAgICAvLyBUaGUgR1BVIHByb2Nl
c3MgY2FuIHNlcnZpY2UgbXVsdGlwbGUgd2ViIHByb2Nlc3Nlcywgc28gdGhlc2UgaWRlbnRpZmll
cnMgY2FuIGNvbGxpZGUgaW4gdGhlIEdQVSBwcm9jZXNzLgorICAgIC8vIFF1YWxpZmllZFJlc291
cmNlSWRlbnRpZmllciBqb2lucyBhIFJlc291cmNlSWRlbnRpZmllciB3aXRoIHRoZSBQcm9jZXNz
SWRlbnRpZmllciBvZgorICAgIC8vIHRoZSB3ZWIgcHJvY2VzcyB0aGF0IGNyZWF0ZWQgaXQuIFRo
ZXJlZm9yZSwgdGhpcyBvYmplY3QgaXMgdW5pcXVlIGFjcm9zcyB0aGUgd2hvbGUgR1BVIHByb2Nl
c3MuCisKKyAgICBRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXIoKSA9IGRlZmF1bHQ7CisgICAg
CisgICAgUXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyKFQgcmVzb3VyY2VJZGVudGlmaWVyLCBQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiByZXNvdXJj
ZUlkZW50aWZpZXIocmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAsIHdlYlByb2Nlc3NJZGVu
dGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgCisgICAgUXVh
bGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkK
KyAgICAgICAgOiByZXNvdXJjZUlkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
CisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllci5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShRdWFsaWZpZWRSZXNv
dXJjZUlkZW50aWZpZXIgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcmVzb3Vy
Y2VJZGVudGlmaWVyID09IG90aGVyLnJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAgJiYg
d2ViUHJvY2Vzc0lkZW50aWZpZXIgPT0gb3RoZXIud2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAg
fQorCisgICAgYm9vbCBvcGVyYXRvciE9KFF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllciBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9
CisKKyAgICBUIHJlc291cmNlSWRlbnRpZmllcjsKKyAgICBQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllcjsKK307CisKK3VzaW5nIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciA9IFF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXI8
VD4gcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHRzIDw8IHJlc291cmNlSWRlbnRpZmllci5y
ZXNvdXJjZUlkZW50aWZpZXI7CisgICAgdHMgPDwgcmVzb3VyY2VJZGVudGlmaWVyLndlYlByb2Nl
c3NJZGVudGlmaWVyOworICAgIHJldHVybiB0czsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIFF1YWxpZmllZFJlc291cmNlSWRlbnRp
ZmllcjxUPiByZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYWRkKGhhc2hlciwgcmVzb3VyY2VJ
ZGVudGlmaWVyLnJlc291cmNlSWRlbnRpZmllcik7CisgICAgYWRkKGhhc2hlciwgcmVzb3VyY2VJ
ZGVudGlmaWVyLndlYlByb2Nlc3NJZGVudGlmaWVyKTsKK30KKworfQorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VJ
ZGVudGlmaWVyPFQ+PiB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goV2ViS2l0OjpRdWFsaWZp
ZWRSZXNvdXJjZUlkZW50aWZpZXI8VD4gaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVy
biBjb21wdXRlSGFzaChpZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVh
bChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjxUPiBhLCBXZWJLaXQ6OlF1YWxp
ZmllZFJlc291cmNlSWRlbnRpZmllcjxUPiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0g
YjsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjxUPj4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8V2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXI8VD4+IHsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBmMmE1ZTAyZDNj
NzcwMGI3OWNmN2QzMWUwMzY5YmVhMzMzNTY3YjNkLi41YzVlNDI0MDU0NmM1YzBlYWY4MzgyNDBm
MGNiZjdlOTcxODcwNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZXNv
dXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgpAQCAtNjgsNiArNjksNyBA
QCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1QwogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNr
ZW5kKHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Qo
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjphY3F1aXJlKCkpCisgICAgLCBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSkKIHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CiB9CkBAIC0xOTYs
MTggKzE5OCwyOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpub3RpZnlNYXJrQ29u
dGV4dENoYW5nZWQoKQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VCdWZmZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBwYWludFJlbmRlcmluZ1Jlc3VsdHNXaXRoUXVhbGlmaWVkQ2FudmFzSWRl
bnRpZmllcih7IGltYWdlQnVmZmVyLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzV2l0aFF1YWxpZmllZENhbnZhc0lkZW50aWZpZXIoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50
KG1fc3RyZWFtVGhyZWFkKTsKICAgICBwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihtX2Nv
bnRleHQtPnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKSwgaW1hZ2VCdWZmZXIsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNXaXRoUXVh
bGlmaWVkQ2FudmFzSWRlbnRpZmllcih7IGltYWdlQnVmZmVyLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1dpdGhRdWFsaWZpZWRDYW52YXNJ
ZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgcGFpbnRQaXhlbEJ1ZmZlclRv
SW1hZ2VCdWZmZXIobV9jb250ZXh0LT5yZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygp
LCBpbWFnZUJ1ZmZlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpw
YWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVs
QnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3RyZWFtVGhyZWFkKTsKICAgICAvLyBGSVhNRTog
V2UgZG8gbm90IGhhdmUgZnVuY3Rpb25pbmcgcmVhZC93cml0ZSBmZW5jZXMgaW4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC4gVGh1cyB0aGlzIGlzIHN5bmNocm9ub3VzLApAQCAtMjE2LDcgKzIyOCw3
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdl
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yCiAgICAgQ29uZGl0aW9uIGNvbmRpdGlvblZhcmlh
YmxlOwogICAgIGJvb2wgaXNGaW5pc2hlZCA9IGZhbHNlOwogICAgIG1fcmVuZGVyaW5nQmFja2Vu
ZC0+ZGlzcGF0Y2goWyYsIGNvbnRleHRBdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0
cmlidXRlcygpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlUmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdlQnVmZmVy
KHRhcmdldCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbmRlcmluZ0Jh
Y2tlbmQtPnJlbW90ZVJlc291cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1ZmZlcih0YXJnZXQucmVz
b3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICAgICAgLy8gSGVyZSB3ZSBkbyBub3QgdHJ5IHRv
IHBsYXkgYmFjayBwZW5kaW5nIGNvbW1hbmRzIGZvciBpbWFnZUJ1ZmZlci4gQ3VycmVudGx5IHRo
aXMgY2FsbCBpcyBvbmx5IG1hZGUgZm9yIGVtcHR5CiAgICAgICAgICAgICAvLyBpbWFnZSBidWZm
ZXJzIGFuZCB0aGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGFkZCBkaXNwbGF5IGxpc3RzLgogICAgICAg
ICAgICAgaWYgKHBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAxM2U0N2Zi
YjljODk3MGY1ZDMwNDVhNmZmN2UwYzg3Y2YyMzc1MGQxLi4xMmQ1NGFlMDkzMzY4OGJmOWU1Nzc2
NTc1NjNjN2Y3YzgzNjdhOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIgogI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdC5oIgogI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKQEAgLTEw
MCwxMiArMTAxLDE0IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKHVp
bnQzMl90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNXaXRoUXVhbGlmaWVkQ2FudmFzSWRl
bnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzV2l0aFF1
YWxpZmllZENhbnZhc0lkZW50aWZpZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY29weVRleHR1cmVG
cm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJl
LCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBz
aW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6U2ltdWxh
dGVkRXZlbnRGb3JUZXN0aW5nKTsKIAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCi0gICAgdm9pZCBwYWludFBpeGVsQnVm
ZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBXZWFrUHRy
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsK
ICAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9uOwpAQCAtMTE0LDYgKzExNyw3IEBAIHByb3RlY3Rl
ZDoKICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOwog
ICAgIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdCBtX3JlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3Q7CiAgICAgTk9fVU5JUVVFX0FERFJFU1MgVGhyZWFkQXNzZXJ0aW9uIG1fc3Ry
ZWFtVGhyZWFkOworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXI7CiB9OwogCiBJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
aW5kZXggYWE5NDU2NDE0OWQwOGU0ODk2MzQ3ZDk0ZjAzOTQ2MTU0NzI5YmY3My4uNjk2MDJlOThh
YTU0MDVlNjgzNjY5ZDcxNzMzNjNiNzhmN2U3ZjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1
ZmZlci5oIgorI2luY2x1ZGUgIlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMuaCIKQEAgLTE1Myw2ICsxNTQsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaWRGbHVzaChEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRp
ZmkKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGNyZWF0ZVF1YWxpZmll
ZEltYWdlQnVmZmVyKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCB7IGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVy
LCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7
Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlUXVhbGlmaWVkSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9
PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpOwpAQCAtMTYwLDcgKzE2Niw3IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgUmVuCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIAogICAgIGlm
IChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKSB7Ci0gICAgICAg
IGlmIChhdXRvIGFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdl
QnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsICp0aGlzLCBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcikpIHsKKyAg
ICAgICAgaWYgKGF1dG8gYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMsIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyLnJl
c291cmNlSWRlbnRpZmllcikpIHsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lE
RU5USVRZKQogICAgICAgICAgICAgLy8gTWFyayB0aGUgSU9TdXJmYWNlIGFzIGJlaW5nIG93bmVk
IGJ5IHRoZSBXZWJQcm9jZXNzIGV2ZW4gdGhvdWdoIGl0IHdhcyBjb25zdHJ1Y3RlZCBieSB0aGUg
R1BVUHJvY2VzcyBzbyB0aGF0IEpldHNhbSBrbm93cyB3aGljaCBwcm9jZXNzIHRvIGtpbGwuCiAg
ICAgICAgICAgICBhY2NlbGVyYXRlZEltYWdlQnVmZmVyLT5zZXRQcm9jZXNzT3duZXJzaGlwKG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aXR5VG9rZW4oKSk7CkBA
IC0xNzAsNyArMTc2LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAgICB9CiAKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCAqdGhpcywgaW1hZ2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCAqdGhpcywgaW1hZ2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIucmVzb3VyY2VJZGVudGlm
aWVyKTsKIAogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xODAsNyArMTg2LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAgICBt
X3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwogICAg
IHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwogCi0gICAgaWYgKG1fcGVuZGluZ1dh
a2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChpbWFn
ZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8g
JiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChpbWFnZUJ1ZmZlclJl
c291cmNlSWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICB3YWtlVXBBbmRB
cHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpu
dWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIApAQCAtNDMzLDMyICs0MzksNDcgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpwb3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KHN0
ZDo6b3B0aW9uYWw8V2UKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRh
VVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGdldERhdGFVUkxGb3JRdWFsaWZpZWRJbWFnZUJ1ZmZlciht
aW1lVHlwZSwgcXVhbGl0eSwgcHJlc2VydmVSZXNvbHV0aW9uLCB7IHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6
OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICB1cmxTdHJpbmcg
PSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKG1pbWVUeXBlLCBxdWFsaXR5LCBwcmVzZXJ2ZVJlc29s
dXRpb24pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUodXJsU3RyaW5nKSk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBnZXREYXRhRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIobWltZVR5cGUs
IHF1YWxpdHksIHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JR
dWFsaWZpZWRJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICBkYXRhID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YShtaW1lVHlwZSwgcXVhbGl0eSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShkYXRhKSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxl
Qml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZ2V0U2hhcmVhYmxlQml0bWFwRm9yUXVhbGlmaWVk
SW1hZ2VCdWZmZXIoeyBpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgcHJlc2VydmVSZXNvbHV0aW9uLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hh
cmVhYmxlQml0bWFwRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAg
WyZdKCkgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlZEltYWdlQnVmZmVyKGlkZW50aWZpZXIpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVy
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGlkZW50aWZpZXIucmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgYXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1h
Z2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6RG9udENvcHlCYWNraW5nU3RvcmUpOwpAQCAt
NDc5LDYgKzUwMCwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJs
ZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG5hdGl2ZUltYWdl
UmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGNhY2hlUXVhbGlmaWVkTmF0aXZlSW1hZ2UoaGFu
ZGxlLCB7IG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y2FjaGVRdWFsaWZpZWROYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTQ4NiwyMyArNTEyLDI4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
aGFuCiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpLCBuYXRp
dmVJbWFnZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdl
OjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCksIG5hdGl2ZUltYWdlUmVzb3Vy
Y2VJZGVudGlmaWVyLnJlc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2Uo
KmltYWdlKTsKIAotICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1
cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAobmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIp
KQorICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNo
b3VsZFBlcmZvcm1XYWtldXAobmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIucmVzb3VyY2VJ
ZGVudGlmaWVyKSkKICAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hh
bmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAK
LXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9u
dD4mJiBmb250KQoreworICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gZm9u
dC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgY2FjaGVRdWFsaWZpZWRGb250
KFdURk1vdmUoZm9udCksIHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7Cit9CisKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVRdWFsaWZpZWRGb250KFJlZjxGb250PiYmIGZv
bnQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250UmVzb3VyY2VJZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBm
b250UmVzb3VyY2VJZGVudGlmaWVyID0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCk7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKTsK
LSAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91
bGRQZXJmb3JtV2FrZXVwKGZvbnRSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChtX3BlbmRp
bmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAo
Zm9udFJlc291cmNlSWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICB3YWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywg
c3RkOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIApAQCAtNTEzLDkgKzU0NCwxNCBAQCB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFsbEZvbnRzKCkKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291
bnQpCit7CisgICAgcmVsZWFzZVF1YWxpZmllZFJlbW90ZVJlc291cmNlKHsgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkgfSwgdXNlQ291bnQpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VRdWFsaWZpZWRSZW1vdGVSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VD
b3VudCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIHN1Y2Nl
c3MgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgdXNlQ291bnQpOworICAgIGF1dG8gc3VjY2VzcyA9IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLnJlc291cmNlSWRlbnRpZmllciwgdXNlQ291bnQpOwogICAgIE1FU1NBR0VfQ0hF
Q0soc3VjY2VzcywgIlJlc291cmNlIGlzIGJlaW5nIHJlbGVhc2VkIGJlZm9yZSBiZWluZyBjYWNo
ZWQuIik7CiAgICAgdXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CkBAIC01MzMs
NiArNTY5LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZmluYWxpemVSZW5kZXJp
bmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlSUQgcmVuZGVyaW5nCiB9CiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQoreworICAgIGRpZENyZWF0ZVF1YWxpZmllZFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlKGl0ZW1CdWZmZXJJZGVudGlmaWVyLCBoYW5kbGUsIHsgZGVz
dGluYXRpb25CdWZmZXJJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGlkQ3JlYXRlUXVhbGlmaWVkU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYgaGFuZGxlLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTUVTU0FHRV9D
SEVDSyghbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuY29udGFpbnMoaXRlbUJ1ZmZlcklkZW50
aWZpZXIpLCAiRHVwbGljYXRlIHNoYXJlZCBkaXNwbGF5IGxpc3QgaGFuZGxlIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAppbmRleCA3ZDgwYjcyNTg2Mzk0ZTU1ZWNjY2M5YmY3M2Y5NWVmYjBjYzk0MDUw
Li5mYjVkMWI3ZTc1OWQ1MmE2OTkxN2Q5NmY1OTVmMmQ0NWI4YmVlYTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
U2VuZGVyLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVz
b3VyY2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCkBA
IC0xNDksNiArMTUwLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCk7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAKKyAgICAvLyBSZWNlaXZl
ZCBtZXNzYWdlcyB0cmFuc2xhdGVkIHRvIHVzZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuCisgICAgdm9pZCBjcmVhdGVRdWFsaWZpZWRJbWFnZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgZ2V0RGF0YVVSTEZvclF1YWxpZmllZEltYWdlQnVmZmVyKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQ
cmVzZXJ2ZVJlc29sdXRpb24sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgZ2V0RGF0YUZv
clF1YWxpZmllZEltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKKyAgICB2b2lk
IGdldFNoYXJlYWJsZUJpdG1hcEZvclF1YWxpZmllZEltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmKTsKKyAgICB2
b2lkIGNhY2hlUXVhbGlmaWVkTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlk
Q3JlYXRlUXVhbGlmaWVkU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYs
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVF1YWxpZmllZFJlbW90ZVJlc291cmNlKFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpOworICAg
IHZvaWQgY2FjaGVRdWFsaWZpZWRGb250KFJlZjxXZWJDb3JlOjpGb250PiYmLCBRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworCiAgICAgY2xhc3MgUmVwbGF5ZXJEZWxlZ2F0
ZSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFJlcGxheWVyRGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MTQyZDA5MmJlODRjNTA1MTdkZmRkZjIzOTcw
MjYwMGYxYzVkOWQzLi42MzZkYTM1MjIyMmRjNGIwNWI2NzhmZjQ0NDRhNjNjNjgwZTI2ZDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMwODgsNiArMzA4OCw3IEBACiAJCTFDOEUyQTMxMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Ykluc3BlY3Rvck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklu
c3BlY3Rvck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JVSU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzkzRDFCRTI3MEQwMDM1MDBBQUQ3QzAgLyog
UXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZFJl
c291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzlFQkE1
QjIwODdFNzRFMDAwNTQ0MjkgLyogTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW07
IHBhdGggPSBpb3MvTmF0aXZlV2ViTW91c2VFdmVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJUHJv
eHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNw
ZWN0b3JVSVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0E4Qjk0
MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC05MDkwLDYgKzkwOTEsNyBAQAogCQkJCUY0MDk0Q0JDMjU1MzA0
QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRD
QkIyNTUzMDRBRjAwM0Q3M0UzIC8qIERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJ
NTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAq
LywKKwkJCQkxQzkzRDFCRTI3MEQwMDM1MDBBQUQ3QzAgLyogUXVhbGlmaWVkUmVzb3VyY2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcCAqLywKIAkJCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLywKIAkJCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440470</attachid>
            <date>2021-10-06 23:20:21 -0700</date>
            <delta_ts>2021-10-07 15:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231281-20211006232020.patch</filename>
            <type>text/plain</type>
            <size>31907</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlZTk1MjZmZjdmY2Q1ODQx
ZjJlZWMyMzczYjA5YjExYzNhYjdhMmYuLjBkN2M1YTg5ZDE2OGUyZWE5M2E1Y2NhNGRkMzAwMTBk
ODIxN2VmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjEtMTAtMDYgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgMTogVW5pcXVpZnkgYXQg
ZW50cnkgcG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzEyODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzOTIwNzgwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVhY2ggd2ViIHByb2Nlc3Mg
Y3JlYXRlcyBpdHMgb3duIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMuIEJlY2F1c2UgdGhl
IEdQVSBwcm9jZXNzCisgICAgICAgIGNhbiBzZXJ2aWNlIG11bHRpcGxlIHdlYiBwcm9jZXNzZXMs
IHRoZXNlIGlkZW50aWZpZXJzIGNhbiBjb2xsaWRlIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAg
ICAgVGhpcyBpcyBzb21ld2hhdCBlcnJvciBwcm9uZSwgYW5kIG1pZ2h0IGNhdXNlIHVzIHRvIG1h
a2UgYSBtaXN0YWtlIGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIGludHJvZHVjZSBhIGJ1ZyB3
aGljaCBsZXRzIG9uZSB3ZWIgcHJvY2VzcyBzZWUgYW5vdGhlciB3ZWIgcHJvY2VzcydzIHJlc291
cmNlcyAod2hpY2gKKyAgICAgICAgd291bGQgYmUgbWVnYSBiYWQpLgorCisgICAgICAgIFRoZSBn
b2FsIG9mIHRoaXMgcHJvamVjdCBpcyB0byB0cmVhdCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXJzIGluIHRoZSBHUFUgcHJvY2VzcworICAgICAgICBhcyBhIHR1cGxlIG9mICh0aGUgaWRlbnRp
ZmVyIHdlIGdvdCBmcm9tIHRoZSB3ZWIgcHJvY2VzcywgdGhlIHByb2Nlc3MgaWRlbnRpZmllciBv
ZgorICAgICAgICB0aGUgd2ViIHByb2Nlc3MpLiBUaGlzIHdheSwgdGhlIHR1cGxlcyB1bmlxdWVs
eSBpZGVudGlmeSBhIHJlc291cmNlIGFjcm9zcyB0aGUgZW50aXJlCisgICAgICAgIEdQVSBwcm9j
ZXNzLiBEb2luZyBpdCB0aGlzIHdheSBtYWtlcyBpdCBsZXNzIGxpa2VseSB0aGF0IHdlJ2xsIG1h
a2UgYSBtZWdhIGJhZCBtaXN0YWtlCisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpcyB0aGUgZmlyc3Qgc3RlcDogSXQgaW50cm9kdWNlcyB0aGUgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIHR5cGUsIHdoaWNoIGhvbGRzIHRo
ZSB0dXBsZSBkZXNjcmliZWQgYWJvdmUsIGFuZCBtYWtlcyBhbGwgdGhlIEdQVSBwcm9jZXNzIG1l
c3NhZ2UKKyAgICAgICAgcmVjZWl2ZXJzIGltbWVkaWF0ZWx5IHR1cm4gYW55IFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcnMgdGhleSByZWNlaXZlZCBmcm9tIHRoZQorICAgICAgICB3ZWIgcHJv
Y2Vzc2VzIGludG8gUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycy4gTm90IG9u
bHkgZG8gdGhlIGlkZW50aWZpZXJzCisgICAgICAgIGltbWVkaWF0ZWx5IGdldCBwYWNrZWQsIGJ1
dCBlYWNoIG1lc3NhZ2UgcmVjZWl2ZXIgbm93IGhhcyBhbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
bgorICAgICAgICB3aGljaCBvbmx5IGFjY2VwdHMgdGhlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgc28gd2UgY2FuJ3QgbWFrZSBhCisgICAgICAgIG1pc3Rha2UgYW5kIHVz
ZSB0aGUgdW5wYWNrZWQgb25lIGFjY2lkZW50YWxseS4KKworICAgICAgICBCZWNhdXNlIHRoaXMg
cGF0Y2ggaXMganVzdCB0aGUgZmlyc3Qgc3RlcCwgdGhlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcnMKKyAgICAgICAgZ2V0IHVucGFja2VkIGVhZ2VybHksIGFuZCB0aGUgaW5u
ZXIgbG9naWMgb2YgdGhlIEdQVSBwcm9jZXNzIGlzIHVuYWZmZWN0ZWQuIFRoZQorICAgICAgICBz
dWJzZXF1ZW50IHR3byBwYXRjaGVzIHdpbGwgcHVzaCB0aGUgUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVycyBkZWVwZXIKKyAgICAgICAgaW50byB0aGUgZ3V0cyBvZiB0aGUgR1BV
IHByb2Nlc3MsIGV2ZW50dWFsbHkgdG8gdGhlIHBvaW50IHdoZXJlCisgICAgICAgIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcnMgYXJlIG5ldmVyIHVzZWQgdGhlcmUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjo6UXVhbGlm
aWVkUmVzb3VyY2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UXVhbGlmaWVkUmVzb3Vy
Y2VJZGVudGlmaWVyOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViS2l0Ojph
ZGQpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNl
SWRlbnRpZmllcjxUPj46Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJLaXQ6
OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjxUPj46OmVxdWFsKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1dpdGhRdWFsaWZpZWRDYW52YXNJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzV2l0aFF1YWxpZmllZENhbnZhc0lkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1
ZmZlclRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNyZWF0ZVF1YWxpZmllZEltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvclF1YWxp
ZmllZEltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0RGF0YUZvclF1YWxpZmllZEltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFy
ZWFibGVCaXRtYXBGb3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZVF1YWxpZmllZE5hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVRdWFsaWZpZWRGb250KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFz
ZVF1YWxpZmllZFJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVRdWFsaWZpZWRTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMjEtMTAtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsZXRlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRJbmxpbmVGaWxs
R3JhZGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9R
dWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGY2NmFi
MDJhYTQ2NmYzZjc5ZWUxYmEwNzVlZWM3YTE0MTRkNmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Cit1c2luZyBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUXVh
bGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyIHsKKyAgICAvLyBFYWNoIHdlYiBwcm9jZXNzIGNyZWF0
ZXMgaXRzIG93biBSZXNvdXJjZUlkZW50aWZpZXJzLgorICAgIC8vIFRoZSBHUFUgcHJvY2VzcyBj
YW4gc2VydmljZSBtdWx0aXBsZSB3ZWIgcHJvY2Vzc2VzLCBzbyB0aGVzZSBpZGVudGlmaWVycyBj
YW4gY29sbGlkZSBpbiB0aGUgR1BVIHByb2Nlc3MuCisgICAgLy8gUXVhbGlmaWVkUmVzb3VyY2VJ
ZGVudGlmaWVyIGpvaW5zIGEgUmVzb3VyY2VJZGVudGlmaWVyIHdpdGggdGhlIFByb2Nlc3NJZGVu
dGlmaWVyIG9mCisgICAgLy8gdGhlIHdlYiBwcm9jZXNzIHRoYXQgY3JlYXRlZCBpdC4gVGhlcmVm
b3JlLCB0aGlzIG9iamVjdCBpcyB1bmlxdWUgYWNyb3NzIHRoZSB3aG9sZSBHUFUgcHJvY2Vzcy4K
KworICAgIFF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcigpID0gZGVmYXVsdDsKKyAgICAKKyAg
ICBRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgVCYgcmVzb3VyY2VJZGVudGlmaWVy
LCBQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgOiByZXNv
dXJjZUlkZW50aWZpZXIocmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAsIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
UXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKKyAgICAgICAgOiByZXNvdXJjZUlkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllci5pc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWFs
aWZpZWRSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJlc291cmNlSWRlbnRpZmllciA9PSBvdGhlci5yZXNvdXJjZUlkZW50aWZpZXIKKyAgICAg
ICAgICAgICYmIHdlYlByb2Nlc3NJZGVudGlmaWVyID09IG90aGVyLndlYlByb2Nlc3NJZGVudGlm
aWVyOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRdWFsaWZpZWRSZXNvdXJj
ZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOworICAgIH0KKworICAgIFQgcmVzb3VyY2VJZGVudGlmaWVyOworICAgIFByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyOworfTsKKwordXNpbmcgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVy
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
aW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFF1YWxp
ZmllZFJlc291cmNlSWRlbnRpZmllcjxUPiYgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHRz
IDw8IHJlc291cmNlSWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXI7CisgICAgdHMgPDwgcmVz
b3VyY2VJZGVudGlmaWVyLndlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIHJldHVybiB0czsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIs
IGNvbnN0IFF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjxUPiYgcmVzb3VyY2VJZGVudGlmaWVy
KQoreworICAgIGFkZChoYXNoZXIsIHJlc291cmNlSWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIGFkZChoYXNoZXIsIHJlc291cmNlSWRlbnRpZmllci53ZWJQcm9jZXNzSWRlbnRp
Zmllcik7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJLaXQ6OlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllcjxUPj4geworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6UXVhbGlmaWVkUmVzb3VyY2VJZGVudGlmaWVy
PFQ+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoKGlkZW50
aWZpZXIpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdDo6UXVh
bGlmaWVkUmVzb3VyY2VJZGVudGlmaWVyPFQ+JiBhLCBjb25zdCBXZWJLaXQ6OlF1YWxpZmllZFJl
c291cmNlSWRlbnRpZmllcjxUPiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7Cisg
ICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBEZWZhdWx0SGFzaDxUPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6OlF1YWxpZmll
ZFJlc291cmNlSWRlbnRpZmllcjxUPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViS2l0OjpR
dWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXI8VD4+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhhc2hUcmFpdHM8VD46OmVtcHR5VmFsdWVJc1plcm87Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZjJhNWUwMmQz
Yzc3MDBiNzljZjdkMzFlMDM2OWJlYTMzMzU2N2IzZC4uNWM1ZTQyNDA1NDZjNWMwZWFmODM4MjQw
ZjBjYmY3ZTk3MTg3MDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkUmVz
b3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKQEAgLTY4LDYgKzY5LDcg
QEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUMKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICAgICAsIG1fcmVuZGVyaW5nQmFj
a2VuZChyZW5kZXJpbmdCYWNrZW5kKQogICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
KFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6YWNxdWlyZSgpKQorICAgICwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllcihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLndlYlByb2Nl
c3NJZGVudGlmaWVyKCkpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVuTG9vcCgpOwogfQpAQCAtMTk2
LDE4ICsxOTgsMjggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzV2l0aFF1YWxpZmllZENhbnZhc0lk
ZW50aWZpZXIoeyBpbWFnZUJ1ZmZlciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1dpdGhRdWFsaWZpZWRDYW52YXNJZGVudGlmaWVyKFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVu
dChtX3N0cmVhbVRocmVhZCk7CiAgICAgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIobV9j
b250ZXh0LT5yZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCksIGltYWdlQnVmZmVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBwYWludENvbXBvc2l0ZWRSZXN1bHRzV2l0aFF1
YWxpZmllZENhbnZhc0lkZW50aWZpZXIoeyBpbWFnZUJ1ZmZlciwgbV93ZWJQcm9jZXNzSWRlbnRp
ZmllciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNXaXRoUXVhbGlmaWVkQ2FudmFz
SWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZm
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIHBhaW50UGl4ZWxCdWZmZXJU
b0ltYWdlQnVmZmVyKG1fY29udGV4dC0+cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmco
KSwgaW1hZ2VCdWZmZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhl
bEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVhZCk7CiAgICAgLy8gRklYTUU6
IFdlIGRvIG5vdCBoYXZlIGZ1bmN0aW9uaW5nIHJlYWQvd3JpdGUgZmVuY2VzIGluIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuIFRodXMgdGhpcyBpcyBzeW5jaHJvbm91cywKQEAgLTIxNiw3ICsyMjgs
NyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFn
ZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcgogICAgIENvbmRpdGlvbiBjb25kaXRpb25WYXJp
YWJsZTsKICAgICBib29sIGlzRmluaXNoZWQgPSBmYWxzZTsKICAgICBtX3JlbmRlcmluZ0JhY2tl
bmQtPmRpc3BhdGNoKFsmLCBjb250ZXh0QXR0cmlidXRlcyA9IG1fY29udGV4dC0+Y29udGV4dEF0
dHJpYnV0ZXMoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZVJlc291cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1ZmZl
cih0YXJnZXQpKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW5kZXJpbmdC
YWNrZW5kLT5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIodGFyZ2V0LnJl
c291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgICAgIC8vIEhlcmUgd2UgZG8gbm90IHRyeSB0
byBwbGF5IGJhY2sgcGVuZGluZyBjb21tYW5kcyBmb3IgaW1hZ2VCdWZmZXIuIEN1cnJlbnRseSB0
aGlzIGNhbGwgaXMgb25seSBtYWRlIGZvciBlbXB0eQogICAgICAgICAgICAgLy8gaW1hZ2UgYnVm
ZmVycyBhbmQgdGhlcmUncyBubyBnb29kIHdheSB0byBhZGQgZGlzcGxheSBsaXN0cy4KICAgICAg
ICAgICAgIGlmIChwaXhlbEJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMTNlNDdm
YmI5Yzg5NzBmNWQzMDQ1YTZmZjdlMGM4N2NmMjM3NTBkMS4uMTJkNTRhZTA5MzM2ODhiZjllNTc3
NjU3NTYzYzdmN2M4MzY3YTk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaCIKICNpbmNsdWRlICJTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuaCIKICNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCkBAIC0x
MDAsMTIgKzEwMSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1
aW50MzJfdCBlcnJvcik7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzV2l0aFF1YWxpZmllZENhbnZhc0lk
ZW50aWZpZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1dpdGhR
dWFsaWZpZWRDYW52YXNJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNvcHlUZXh0dXJl
RnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVy
ZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1h
dCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
c2ltdWxhdGVFdmVudEZvclRlc3RpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlNpbXVs
YXRlZEV2ZW50Rm9yVGVzdGluZyk7CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAotICAgIHZvaWQgcGFpbnRQaXhlbEJ1
ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgV2Vha1B0
cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CiAgICAgUmVmUHRyPElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTD4+IG1fc3RyZWFtQ29ubmVjdGlvbjsKQEAgLTExNCw2ICsxMTcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2VuZDsK
ICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QgbV9yZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNTIFRocmVhZEFzc2VydGlvbiBtX3N0
cmVhbVRocmVhZDsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyOwogfTsKIAogSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CmluZGV4IGU1ZjVmNzBlOGU4NGU2MzMzOGZmOGQ3NjM4ZDdhMmNmNjNkYzRiMGEuLmJlYzZjMGQ4
MGY5MjU0ZTdmMDA1MDJhNTIyMWZhZjNkNDBjMDAxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VC
dWZmZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCkBAIC0xNTMsNiArMTU0LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGlkRmx1c2goR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpCiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBjcmVhdGVRdWFsaWZp
ZWRJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgeyBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmll
ciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0p
OworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZVF1YWxpZmllZEltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUg
PT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKQEAgLTE2MCw3ICsxNjYsNyBAQCB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIFJlbgogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAKICAgICBp
ZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkgewotICAgICAg
ICBpZiAoYXV0byBhY2NlbGVyYXRlZEltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCAqdGhpcywgaW1hZ2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90
ZUltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzLCBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllci5y
ZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJUF9J
REVOVElUWSkKICAgICAgICAgICAgIC8vIE1hcmsgdGhlIElPU3VyZmFjZSBhcyBiZWluZyBvd25l
ZCBieSB0aGUgV2ViUHJvY2VzcyBldmVuIHRob3VnaCBpdCB3YXMgY29uc3RydWN0ZWQgYnkgdGhl
IEdQVVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0ga25vd3Mgd2hpY2ggcHJvY2VzcyB0byBraWxsLgog
ICAgICAgICAgICAgYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlci0+c2V0UHJvY2Vzc093bmVyc2hpcCht
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGl0eVRva2VuKCkpOwpA
QCAtMTcwLDcgKzE3Niw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgfQogCiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMsIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6
OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCwgKnRoaXMsIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyLnJlc291cmNlSWRlbnRp
Zmllcik7CiAKICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTgwLDcgKzE4Niw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyKTsKICAg
ICB1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIAotICAgIGlmIChtX3BlbmRpbmdX
YWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaW1h
Z2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZv
ICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaW1hZ2VCdWZmZXJS
ZXNvdXJjZUlkZW50aWZpZXIucmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgd2FrZVVwQW5k
QXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6
bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKQEAgLTQzMywzMiArNDM5LDQ3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cG9wdWxhdGVHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeShz
dGQ6Om9wdGlvbmFsPFdlCiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0
YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNv
bHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBnZXREYXRhVVJMRm9yUXVhbGlmaWVkSW1hZ2VCdWZmZXIo
bWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgeyByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvclF1YWxpZmllZEltYWdlQnVmZmVyKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VC
dWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIucmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgdXJsU3RyaW5n
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTChtaW1lVHlwZSwgcXVhbGl0eSwgcHJlc2VydmVSZXNv
bHV0aW9uKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybFN0cmluZykpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgZ2V0RGF0YUZvclF1YWxpZmllZEltYWdlQnVmZmVyKG1pbWVUeXBl
LCBxdWFsaXR5LCB7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9y
UXVhbGlmaWVkSW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHF1YWxpdHksIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIucmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgZGF0YSA9IGltYWdlQnVmZmVy
LT50b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZGF0YSkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJs
ZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGdldFNoYXJlYWJsZUJpdG1hcEZvclF1YWxpZmll
ZEltYWdlQnVmZmVyKHsgaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53
ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIHByZXNlcnZlUmVzb2x1dGlvbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNo
YXJlYWJsZUJpdG1hcEZvclF1YWxpZmllZEltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24g
cHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAg
IFsmXSgpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZS5jYWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyLnJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUlt
YWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHk6OkRvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAg
LTQ3OSw2ICs1MDAsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFi
bGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmcKIH0KIAogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBuYXRpdmVJbWFn
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBjYWNoZVF1YWxpZmllZE5hdGl2ZUltYWdlKGhh
bmRsZSwgeyBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOworfQorCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNhY2hlUXVhbGlmaWVkTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGhhbmRsZSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCkBAIC00ODYsMjMgKzUxMiwyOCBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGhhbgogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAtPmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSwgbmF0
aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpLCBuYXRpdmVJbWFnZVJlc291
cmNlSWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdl
KCppbWFnZSk7CiAKLSAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtl
dXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVy
KSkKKyAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5z
aG91bGRQZXJmb3JtV2FrZXVwKG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyLnJlc291cmNl
SWRlbnRpZmllcikpCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNo
YW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250
KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZv
bnQ+JiYgZm9udCkKK3sKKyAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IGZv
bnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIGNhY2hlUXVhbGlmaWVkRm9u
dChXVEZNb3ZlKGZvbnQpLCB7IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOworfQorCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlUXVhbGlmaWVkRm9udChSZWY8Rm9udD4mJiBm
b250LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udFJlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8g
Zm9udFJlc291cmNlSWRlbnRpZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpOwogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7
Ci0gICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hv
dWxkUGVyZm9ybVdha2V1cChmb250UmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICBpZiAobV9wZW5k
aW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVw
KGZvbnRSZXNvdXJjZUlkZW50aWZpZXIucmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgd2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8s
IHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKQEAgLTUxMyw5ICs1NDQsMTQgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cygpCiB9CiAKIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNv
dW50KQoreworICAgIHJlbGVhc2VRdWFsaWZpZWRSZW1vdGVSZXNvdXJjZSh7IHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNz
SWRlbnRpZmllcigpIH0sIHVzZUNvdW50KTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpyZWxlYXNlUXVhbGlmaWVkUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNl
Q291bnQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBzdWNj
ZXNzID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNvdW50KTsKKyAgICBhdXRvIHN1Y2Nlc3MgPSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5yZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNvdW50KTsKICAgICBNRVNTQUdFX0NI
RUNLKHN1Y2Nlc3MsICJSZXNvdXJjZSBpcyBiZWluZyByZWxlYXNlZCBiZWZvcmUgYmVpbmcgY2Fj
aGVkLiIpOwogICAgIHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwogfQpAQCAtNTMz
LDYgKzU2OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmFsaXplUmVuZGVy
aW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBkaWRDcmVhdGVRdWFsaWZpZWRT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZShpdGVtQnVmZmVySWRlbnRpZmllciwgaGFuZGxlLCB7IGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53
ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmRpZENyZWF0ZVF1YWxpZmllZFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBpdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soIW1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmNvbnRhaW5zKGl0ZW1CdWZmZXJJZGVu
dGlmaWVyKSwgIkR1cGxpY2F0ZSBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKaW5kZXggNDNiNWViNTk1Y2UyYWJiMWE4ODk1ZmFlZDI2ZmEzMmY1OTQxYzUy
NS4uMWMxMzQ2ZjJiYTllNTcyOWRkNmNmYTViZWI5MWE3NmMxNDUzYjBmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgorI2luY2x1ZGUgIlF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbW90ZVJl
c291cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgpA
QCAtMTQ5LDYgKzE1MCwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemVSZW5kZXJpbmdV
cGRhdGUoUmVuZGVyaW5nVXBkYXRlSUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCisgICAgLy8gUmVjZWl2
ZWQgbWVzc2FnZXMgdHJhbnNsYXRlZCB0byB1c2UgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLgorICAgIHZvaWQgY3JlYXRlUXVhbGlmaWVkSW1hZ2VCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGdldERhdGFVUkxGb3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6
UHJlc2VydmVSZXNvbHV0aW9uLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGdldERhdGFG
b3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJik7CisgICAgdm9p
ZCBnZXRTaGFyZWFibGVCaXRtYXBGb3JRdWFsaWZpZWRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKT4mJik7CisgICAg
dm9pZCBjYWNoZVF1YWxpZmllZE5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRp
ZENyZWF0ZVF1YWxpZmllZFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VRdWFsaWZpZWRSZW1vdGVSZXNvdXJjZShRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KTsKKyAg
ICB2b2lkIGNhY2hlUXVhbGlmaWVkRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJiwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIGNsYXNzIFJlcGxheWVyRGVsZWdh
dGUgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CiAg
ICAgcHVibGljOgogICAgICAgICBSZXBsYXllckRlbGVnYXRlKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjE0MmQwOTJiZTg0YzUwNTE3ZGZkZGYyMzk3
MDI2MDBmMWM1ZDlkMy4uNjM2ZGEzNTIyMjJkYzRiMDViNjc4ZmY0NDQ0YTYzYzY4MGUyNmQ2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zMDg4LDYgKzMwODgsNyBAQAogCQkxQzhFMkEzMTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQkxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yVUlNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5M0QxQkUyNzBEMDAzNTAwQUFEN0MwIC8q
IFF1YWxpZmllZFJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRS
ZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5RUJB
NUIyMDg3RTc0RTAwMDU0NDI5IC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOYXRpdmVXZWJNb3VzZUV2ZW50SU9TLm1t
OyBwYXRoID0gaW9zL05hdGl2ZVdlYk1vdXNlRXZlbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDQThCOTM1MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVBy
b3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUlQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBOEI5
NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
Ykluc3BlY3RvclVJUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtOTA5MCw2ICs5MDkxLDcgQEAKIAkJCQlGNDA5NENCQzI1NTMw
NEFGMDAzRDczRTMgLyogRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwICovLAogCQkJCUY0MDk0
Q0JCMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oICovLAogCQkJ
CTU1QUQwOTQzMjQwOEEwRTYwMERFNEQyRiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgg
Ki8sCisJCQkJMUM5M0QxQkUyNzBEMDAzNTAwQUFEN0MwIC8qIFF1YWxpZmllZFJlc291cmNlSWRl
bnRpZmllci5oICovLAogCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHAgKi8sCiAJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8sCiAJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440547</attachid>
            <date>2021-10-07 15:25:49 -0700</date>
            <delta_ts>2021-10-07 15:42:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231281-20211007152548.patch</filename>
            <type>text/plain</type>
            <size>40183</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JiMjc4MWVkYTI3OTY3
NWQwMGIwMWU5NjYxMGYzN2U1ZTg3OGU5NS4uNDYzYWJhMTk5Mjg2OWUyNTVlOTg1YzRiMDU0ODJk
MjE3NzAxODdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEwLTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDE6IFVuaXF1aWZ5
IGF0IGVudHJ5IHBvaW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMxMjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzkyMDc4MD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm9jZXNzUXVhbGlm
aWVkIGlzIHRoZSBnZW5lcmljIGZvcm0gb2YgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLiBJdCdzCisgICAgICAgIHRlbXBsYXRlZCwgc28gaXQgY2FuIGhvbGQgdGhpbmdzIG90
aGVyIHRoYW4gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UHJvY2Vzc1F1YWxpZmllZDo6UHJvY2Vzc1F1YWxpZmllZCk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzUXVhbGlmaWVkOjpvYmplY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvY2Vzc1F1YWxpZmllZDo6cHJvY2Vzc0lkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvY2Vzc1F1YWxpZmllZDo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1F1YWxpZmllZDo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzUXVhbGlmaWVkOjpvcGVyYXRvciE9IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6YWRk
KToKKyAgICAgICAgKFdURjo6RGVmYXVsdEhhc2g8V2ViQ29yZTo6UHJvY2Vzc1F1YWxpZmllZDxU
Pj46Omhhc2gpOgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpQcm9jZXNzUXVh
bGlmaWVkPFQ+Pjo6ZXF1YWwpOgorCiAyMDIxLTEwLTA3ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIE1pc2MgY29tcGlsZXIgd2FybmluZyBmaXhl
cywgT2N0b2JlciAyMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiOWJmZDdhNTY2ZWU5NWVhYWM5NjIwNDc3YWFk
NWVlZWM3MThlZDguLmMzMWQ3NDRmNGY0ODdhOTUxNDFlM2UxODZhOTI4MzQ4MGZhNDM5N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjEtMTAtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIFBhcnQgMTogVW5pcXVpZnkgYXQgZW50cnkgcG9pbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEyODEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzOTIwNzgwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVhY2ggd2ViIHByb2Nlc3MgY3JlYXRlcyBpdHMg
b3duIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMuIEJlY2F1c2UgdGhlIEdQVSBwcm9jZXNz
CisgICAgICAgIGNhbiBzZXJ2aWNlIG11bHRpcGxlIHdlYiBwcm9jZXNzZXMsIHRoZXNlIGlkZW50
aWZpZXJzIGNhbiBjb2xsaWRlIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBpcyBz
b21ld2hhdCBlcnJvciBwcm9uZSwgYW5kIG1pZ2h0IGNhdXNlIHVzIHRvIG1ha2UgYSBtaXN0YWtl
IGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIGludHJvZHVjZSBhIGJ1ZyB3aGljaCBsZXRzIG9u
ZSB3ZWIgcHJvY2VzcyBzZWUgYW5vdGhlciB3ZWIgcHJvY2VzcydzIHJlc291cmNlcyAod2hpY2gK
KyAgICAgICAgd291bGQgYmUgbWVnYSBiYWQpLgorCisgICAgICAgIFRoZSBnb2FsIG9mIHRoaXMg
cHJvamVjdCBpcyB0byB0cmVhdCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJzIGluIHRoZSBH
UFUgcHJvY2VzcworICAgICAgICBhcyBhIHR1cGxlIG9mICh0aGUgaWRlbnRpZmVyIHdlIGdvdCBm
cm9tIHRoZSB3ZWIgcHJvY2VzcywgdGhlIHByb2Nlc3MgaWRlbnRpZmllciBvZgorICAgICAgICB0
aGUgd2ViIHByb2Nlc3MpLiBUaGlzIHdheSwgdGhlIHR1cGxlcyB1bmlxdWVseSBpZGVudGlmeSBh
IHJlc291cmNlIGFjcm9zcyB0aGUgZW50aXJlCisgICAgICAgIEdQVSBwcm9jZXNzLiBEb2luZyBp
dCB0aGlzIHdheSBtYWtlcyBpdCBsZXNzIGxpa2VseSB0aGF0IHdlJ2xsIG1ha2UgYSBtZWdhIGJh
ZCBtaXN0YWtlCisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
cyB0aGUgZmlyc3Qgc3RlcDogSXQgaW50cm9kdWNlcyB0aGUgUXVhbGlmaWVkUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyCisgICAgICAgIHR5cGUsIHdoaWNoIGhvbGRzIHRoZSB0dXBsZSBkZXNj
cmliZWQgYWJvdmUsIGFuZCBtYWtlcyBhbGwgdGhlIEdQVSBwcm9jZXNzIG1lc3NhZ2UKKyAgICAg
ICAgcmVjZWl2ZXJzIGltbWVkaWF0ZWx5IHR1cm4gYW55IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcnMgdGhleSByZWNlaXZlZCBmcm9tIHRoZQorICAgICAgICB3ZWIgcHJvY2Vzc2VzIGludG8g
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycy4gTm90IG9ubHkgZG8gdGhlIGlk
ZW50aWZpZXJzCisgICAgICAgIGltbWVkaWF0ZWx5IGdldCBwYWNrZWQsIGJ1dCBlYWNoIG1lc3Nh
Z2UgcmVjZWl2ZXIgbm93IGhhcyBhbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbgorICAgICAgICB3
aGljaCBvbmx5IGFjY2VwdHMgdGhlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgc28gd2UgY2FuJ3QgbWFrZSBhCisgICAgICAgIG1pc3Rha2UgYW5kIHVzZSB0aGUgdW5wYWNr
ZWQgb25lIGFjY2lkZW50YWxseS4KKworICAgICAgICBCZWNhdXNlIHRoaXMgcGF0Y2ggaXMganVz
dCB0aGUgZmlyc3Qgc3RlcCwgdGhlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cnMKKyAgICAgICAgZ2V0IHVucGFja2VkIGVhZ2VybHksIGFuZCB0aGUgaW5uZXIgbG9naWMgb2Yg
dGhlIEdQVSBwcm9jZXNzIGlzIHVuYWZmZWN0ZWQuIFRoZQorICAgICAgICBzdWJzZXF1ZW50IHR3
byBwYXRjaGVzIHdpbGwgcHVzaCB0aGUgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVycyBkZWVwZXIKKyAgICAgICAgaW50byB0aGUgZ3V0cyBvZiB0aGUgR1BVIHByb2Nlc3MsIGV2
ZW50dWFsbHkgdG8gdGhlIHBvaW50IHdoZXJlCisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcnMgYXJlIG5ldmVyIHVzZWQgdGhlcmUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1F1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmll
ZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhc1dpdGhRdWFs
aWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcldpdGhRdWFsaWZp
ZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9y
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXREYXRhRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0U2hh
cmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdl
V2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjYWNoZUZvbnRXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0xMC0wNyAgQXJjYWR5IEdvbGRtaW50cy1Pcmxv
diAgPGFnb2xkbWludHNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIERpc2FibGUg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgd2hlbiBjcmVhdGluZyB0aGUgbmV0d29yayBwcm9jZXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQppbmRleCA3MDk5NDQyNjMyZTg3MzUzNTc5MDI1NmZhOWRiYjJmNWU2
YmExZTdlLi5hOTc2NTZiOWY0OGMyMThiMTczNGRmMDQ2MmJlYTA0Njc5MzZiOTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKQEAgLTExMzUsNiArMTEzNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9Qb3B1cE1lbnVDbGllbnQuaAogICAgIHBsYXRm
b3JtL1BvcHVwTWVudVN0eWxlLmgKICAgICBwbGF0Zm9ybS9Qcm9jZXNzSWRlbnRpZmllci5oCisg
ICAgcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5oCiAgICAgcGxhdGZvcm0vUHJvbWlzZWRBdHRh
Y2htZW50SW5mby5oCiAgICAgcGxhdGZvcm0vUHVibGljU3VmZml4LmgKICAgICBwbGF0Zm9ybS9S
ZWN0RWRnZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGZmMjlhMTZmM2Q3MGYyNGQxN2ZjOGE5MmY2NGQ3ZTE5ZTk2MDhkNjMu
LjJmNzM4MGE0YWUzZWFlYTgzYmI4ZDE3ZDI4YmE0ZWNjMjI5NmVhMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1MCw2ICs2
NTAsNyBAQAogCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0Yw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLzsgfTsKIAkJMUNBRjM0ODMw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2
RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjU2REIyNTMwMUFDODAwMTdCNDcyIC8qIERyYXdH
bHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDQzU0QUZF
MjcwRjk2QUUwMDVCRjhCRSAvKiBQcm9jZXNzUXVhbGlmaWVkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0M1NEFGQjI3MEY5MkRBMDA1QkY4QkUgLyog
UHJvY2Vzc1F1YWxpZmllZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFDQ0Q4MTUwMjIzMUY4M0UwMDY1RkMyQiAvKiBXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTUyNTUxNDE2RkQyMzRGMDAzRDdBREIgLyogV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tICovOyB9OwogCQkxQ0NE
RjVCRTE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDREY1QkMxOTkwMzMyNDAw
QkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLzsgfTsKIAkJMUNFODg2NDEyNjEw
NUJGMjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJ
bk1lbW9yeURpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTcwNDcsNiArNzA0OCw3IEBACiAJCTFDQUY1NkRFMjUzMDI0NUEwMDE3
QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDQjZCNEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVz
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0I2QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVy
bGluZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VW5kZXJsaW5lT2Zmc2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQzU0QUZCMjcwRjkyREEwMDVCRjhCRSAvKiBQcm9j
ZXNzUXVhbGlmaWVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NRdWFsaWZpZWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1Rv
T1RGRm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
ODI0Myw2ICsyODI0NSw3IEBACiAJCQkJQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovLAogCQkJCTUxRjY0NUQyMUZFQ0RCQzgwMEI1NERFRCAv
KiBQcm9jZXNzSWRlbnRpZmllci5jcHAgKi8sCiAJCQkJNTFGNjQ1RDMxRkVDREJDODAwQjU0REVE
IC8qIFByb2Nlc3NJZGVudGlmaWVyLmggKi8sCisJCQkJMUNDNTRBRkIyNzBGOTJEQTAwNUJGOEJF
IC8qIFByb2Nlc3NRdWFsaWZpZWQuaCAqLywKIAkJCQlGNDdBNjMzQzFGRjZGRDUwMDA4MUIzQ0Mg
LyogUHJvbWlzZWRBdHRhY2htZW50SW5mby5oICovLAogCQkJCTAwODFGRUZEMTZCMEEyNDQwMDhB
QUE3QSAvKiBQdWJsaWNTdWZmaXguaCAqLywKIAkJCQk1Qzk3QTMzNjFGNUY3QTY1MDAxMDUyMDcg
LyogUmVjdEVkZ2VzLmggKi8sCkBAIC0zNDY5Nyw2ICszNDcwMCw3IEBACiAJCQkJNkIwQTA3RjIy
MUZBNEI1QzAwRDU3MzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY2NDVENTFGRUNEQkNFMDBCNTRERUQgLyogUHJvY2Vzc0lkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4RUE3RUJDMEExOTQ1RDAwMEE4RUY1RiAvKiBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTFDQzU0QUZFMjcwRjk2QUUwMDVCRjhC
RSAvKiBQcm9jZXNzUXVhbGlmaWVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDIwNTAxNzIxNDE5
MDFCMDA2NkVGM0IgLyogUHJvY2Vzc1dhcm1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYx
M0VDMENENjgxQjUwMEZBREE3NSAvKiBQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NR
dWFsaWZpZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NjU3N2RiZmE2YjFmNmM2MDhlZWVhM2U5ODczZmVlZTE0NjkxZGRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
CkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJQcm9jZXNzSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBQcm9jZXNzUXVhbGlmaWVkIHsKK3B1YmxpYzoKKyAgICAv
LyBUaGlzIGNsYXNzIGlzIHVzZWQgd2hlbiBhIHNpbmdsZSBwcm9jZXNzIHJldGFpbnMgb2JqZWN0
cyByZXByZXNlbnRpbmcgdGhpbmdzIGluIG11bHRpcGxlIG90aGVyIHByb2Nlc3Nlcy4KKyAgICAv
LyAoRS5nLiByZXNvdXJjZXMgaW4gdGhlIEdQVSBwcm9jZXNzLikKKyAgICAvLyBHZW5lcmFsbHks
IG9iamVjdHMgYXJlIGlkZW50aWZpZWQgdW5pcXVlbHkgcGVyIHByb2Nlc3MsIGJ1dCBpZiBtdWx0
aXBsZSBwcm9jZXNzZXMgc2hhcmUgdGhlbSB0byBhIHNpbmdsZQorICAgIC8vIHByb2Nlc3MsIHRo
ZSBzaW5nbGUgcHJvY2VzcyBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtIGJ5IGF1Z21l
bnRpbmcgdGhlIG9iamVjdHMgd2l0aCB0aGUKKyAgICAvLyBQcm9jZXNzSWRlbnRpZmllciBvZiB0
aGUgcHJvY2VzcyB3aGljaCBjcmVhdGVkIHRoZW0uCisKKyAgICBQcm9jZXNzUXVhbGlmaWVkKCkg
PSBkZWZhdWx0OworICAgIAorICAgIFByb2Nlc3NRdWFsaWZpZWQoVCYmIG9iamVjdCwgUHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92
ZShvYmplY3QpKQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZp
ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBQcm9jZXNzUXVhbGlmaWVkKGNvbnN0IFQmIG9i
amVjdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIDogbV9v
YmplY3Qob2JqZWN0KQorICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZpZXIocHJvY2Vzc0lkZW50
aWZpZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBQcm9jZXNzUXVhbGlmaWVkKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3Byb2Nlc3NJZGVudGlmaWVyKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBUJiBv
YmplY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KKwor
ICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyOworICAgIH0KKworICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJv
Y2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9vYmplY3QgPT0gb3RoZXIubV9vYmplY3QKKyAgICAgICAgICAg
ICYmIG1fcHJvY2Vzc0lkZW50aWZpZXIgPT0gb3RoZXIubV9wcm9jZXNzSWRlbnRpZmllcjsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQor
Citwcml2YXRlOgorICAgIFQgbV9vYmplY3Q7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9j
ZXNzSWRlbnRpZmllcjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQ8
VD4mIHByb2Nlc3NRdWFsaWZpZWQpCit7CisgICAgdHMgPDwgIlByb2Nlc3NRdWFsaWZpZWQoIiA8
PCBwcm9jZXNzUXVhbGlmaWVkLm9iamVjdCgpIDw8ICIsICIgPDwgcHJvY2Vzc1F1YWxpZmllZC5w
cm9jZXNzSWRlbnRpZmllcigpIDw8ICcpJzsKKyAgICByZXR1cm4gdHM7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBQcm9j
ZXNzUXVhbGlmaWVkPFQ+JiBwcm9jZXNzUXVhbGlmaWVkKQoreworICAgIGFkZChoYXNoZXIsIHBy
b2Nlc3NRdWFsaWZpZWQub2JqZWN0KCkpOworICAgIGFkZChoYXNoZXIsIHByb2Nlc3NRdWFsaWZp
ZWQucHJvY2Vzc0lkZW50aWZpZXIoKSk7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpQcm9jZXNzUXVhbGlmaWVkPFQ+PiB7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6UHJvY2Vzc1F1YWxpZmllZDxU
PiYgcHJvY2Vzc1F1YWxpZmllZCkKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlSGFzaChw
cm9jZXNzUXVhbGlmaWVkKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBX
ZWJDb3JlOjpQcm9jZXNzUXVhbGlmaWVkPFQ+JiBhLCBjb25zdCBXZWJDb3JlOjpQcm9jZXNzUXVh
bGlmaWVkPFQ+JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1
bHRIYXNoPFQ+OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZDsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlByb2Nlc3NRdWFsaWZpZWQ8
VD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6OlByb2Nlc3NRdWFsaWZpZWQ8VD4+
IHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IEhhc2hUcmFp
dHM8VD46OmVtcHR5VmFsdWVJc1plcm87Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU2N2MyNjdhY2E0MTVhMjliOTJk
NjRkZTg4Yzg3MzlhZjRhYjExZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NRdWFsaWZpZWQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
ID0gV2ViQ29yZTo6UHJvY2Vzc1F1YWxpZmllZDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXgg
MTdkOGQzYTk1YjUzN2FmOTkxNmY2YzM2ZDdhMTFlNTQ2MjQ2ZDQwMy4uZDZiMTc3ZTFkOGM1MWE1
MmU0NmYxM2E3MGY2ZTZjNDI3NDk4ODliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aCIKQEAgLTY4LDYgKzY5LDcgQEAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUMKICAgICAsIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICAg
ICAsIG1fcmVuZGVyaW5nQmFja2VuZChyZW5kZXJpbmdCYWNrZW5kKQogICAgICwgbV9yZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0KFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6
YWNxdWlyZSgpKQorICAgICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcihncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpCiB7CiAgICAgYXNzZXJ0SXNNYWluUnVu
TG9vcCgpOwogfQpAQCAtMTk2LDE4ICsxOTgsMjggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcih7IGltYWdlQnVmZmVyLCBtX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXNXaXRoUXVh
bGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VCdWZmZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhc3NlcnRJc0N1cnJlbnQobV9zdHJlYW1UaHJlYWQpOwogICAgIHBhaW50UGl4ZWxC
dWZmZXJUb0ltYWdlQnVmZmVyKG1fY29udGV4dC0+cmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWlu
dGluZygpLCBpbWFnZUJ1ZmZlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgcGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoeyBpbWFnZUJ1
ZmZlciwgbV93ZWJQcm9jZXNzSWRlbnRpZmllciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb0NhbnZhc1dpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGFzc2VydElzQ3VycmVudChtX3N0cmVhbVRocmVh
ZCk7CiAgICAgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIobV9jb250ZXh0LT5yZWFkQ29t
cG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpLCBpbWFnZUJ1ZmZlciwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBp
eGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVy
PiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGFy
Z2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXNzZXJ0SXNDdXJyZW50KG1fc3Ry
ZWFtVGhyZWFkKTsKICAgICAvLyBGSVhNRTogV2UgZG8gbm90IGhhdmUgZnVuY3Rpb25pbmcgcmVh
ZC93cml0ZSBmZW5jZXMgaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZC4gVGh1cyB0aGlzIGlzIHN5
bmNocm9ub3VzLApAQCAtMjE2LDcgKzIyOCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yCiAg
ICAgQ29uZGl0aW9uIGNvbmRpdGlvblZhcmlhYmxlOwogICAgIGJvb2wgaXNGaW5pc2hlZCA9IGZh
bHNlOwogICAgIG1fcmVuZGVyaW5nQmFja2VuZC0+ZGlzcGF0Y2goWyYsIGNvbnRleHRBdHRyaWJ1
dGVzID0gbV9jb250ZXh0LT5jb250ZXh0QXR0cmlidXRlcygpXSgpIG11dGFibGUgewotICAgICAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpLmNhY2hlZEltYWdlQnVmZmVyKHRhcmdldCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZVJlc291cmNlQ2FjaGUoKS5j
YWNoZWRJbWFnZUJ1ZmZlcih0YXJnZXQub2JqZWN0KCkpKSB7CiAgICAgICAgICAgICAvLyBIZXJl
IHdlIGRvIG5vdCB0cnkgdG8gcGxheSBiYWNrIHBlbmRpbmcgY29tbWFuZHMgZm9yIGltYWdlQnVm
ZmVyLiBDdXJyZW50bHkgdGhpcyBjYWxsIGlzIG9ubHkgbWFkZSBmb3IgZW1wdHkKICAgICAgICAg
ICAgIC8vIGltYWdlIGJ1ZmZlcnMgYW5kIHRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gYWRkIGRpc3Bs
YXkgbGlzdHMuCiAgICAgICAgICAgICBpZiAocGl4ZWxCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGY4ZWVhMWI0YjMwZmRlZjU4NmY4YWE2MDBiZGMwYTRiYTFkOWM3MTguLjY2ODIw
MDlkZWUzY2I0MGI2ZTkxZjQyNTgyN2NkNmY0NjEzNWMzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCiAjaW5jbHVkZSAi
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmgiCkBAIC0xMDAsMTIgKzEwMSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcik7CiAgICAgdm9pZCBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpTaW11bGF0ZWRFdmVudEZvclRlc3RpbmcpOwogCiAjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9M
SU5UCiAKLSAgICB2b2lkIHBhaW50UGl4ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+JiYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHBhaW50UGl4
ZWxCdWZmZXJUb0ltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+
JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlZlB0cjxJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKQEAgLTExNCw2ICsxMTcsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVuZGVyaW5nQmFja2Vu
ZDsKICAgICBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QgbV9yZW5kZXJpbmdS
ZXNvdXJjZXNSZXF1ZXN0OwogICAgIE5PX1VOSVFVRV9BRERSRVNTIFRocmVhZEFzc2VydGlvbiBt
X3N0cmVhbVRocmVhZDsKKyAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nl
c3NJZGVudGlmaWVyOwogfTsKIAogSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiByZW1v
dGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCmluZGV4IGU1ZjVmNzBlOGU4NGU2MzMzOGZmOGQ3NjM4ZDdhMmNmNjNkYzRiMGEuLjQwMmM0
ODE5NjI0MDE4NTRlMWRmOWMwNmRiMTNiNjc1OWQ0ZWFiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC0xNTMsNiArMTU0LDExIEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlm
aWVyIGZsdXNoSWRlbnRpCiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBj
cmVhdGVJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGxvZ2ljYWxTaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCB7IGlt
YWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCk7CkBAIC0xNjAsNyArMTY2LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAgICBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCiAgICAgaWYgKHJlbmRlcmluZ01vZGUg
PT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gYWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShs
b2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRo
aXMsIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoYXV0byBh
Y2NlbGVyYXRlZEltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCAqdGhpcywgaW1hZ2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKSB7CiAjaWYg
SEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJUF9JREVOVElUWSkKICAgICAgICAgICAgIC8vIE1h
cmsgdGhlIElPU3VyZmFjZSBhcyBiZWluZyBvd25lZCBieSB0aGUgV2ViUHJvY2VzcyBldmVuIHRo
b3VnaCBpdCB3YXMgY29uc3RydWN0ZWQgYnkgdGhlIEdQVVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0g
a25vd3Mgd2hpY2ggcHJvY2VzcyB0byBraWxsLgogICAgICAgICAgICAgYWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlci0+c2V0UHJvY2Vzc093bmVyc2hpcChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PndlYlByb2Nlc3NJZGVudGl0eVRva2VuKCkpOwpAQCAtMTcwLDcgKzE3Niw3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgUmVuCiAgICAgfQogCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAg
aW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dp
Y2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMs
IGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgKnRoaXMsIGltYWdlQnVmZmVyUmVz
b3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKIAogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xODAsNyArMTg2LDcgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBSZW4KICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZl
cigqaW1hZ2VCdWZmZXIpOwogICAgIHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwog
Ci0gICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hv
dWxkUGVyZm9ybVdha2V1cChpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYg
KG1fcGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9y
bVdha2V1cChpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCiAgICAgICAg
IHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJ
bmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCkBAIC00MzMsMzIgKzQzOSw0NyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnBvcHVsYXRlR2V0UGl4ZWxCdWZmZXJTaGFy
ZWRNZW1vcnkoc3RkOjpvcHRpb25hbDxXZQogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHBy
ZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZ2V0RGF0YVVSTEZvckltYWdlQnVmZmVy
V2l0aFF1YWxpZmllZElkZW50aWZpZXIobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1
dGlvbiwgeyByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvcklt
YWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZl
ciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSkpCiAgICAgICAgIHVybFN0cmluZyA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwobWlt
ZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZSh1cmxTdHJpbmcpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPHVpbnQ4X3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGdldERhdGFGb3JJ
bWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKG1pbWVUeXBlLCBxdWFsaXR5LCB7IHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53
ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhRm9ySW1hZ2VCdWZmZXJXaXRo
UXVhbGlmaWVkSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
dWludDhfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSkpCiAgICAgICAgIGRhdGEgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhKG1p
bWVUeXBlLCBxdWFsaXR5KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRhdGEpKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRTaGFyZWFibGVCaXRtYXBGb3JJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBnZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFs
aWZpZWRJZGVudGlmaWVyKHsgaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIHByZXNlcnZlUmVzb2x1dGlvbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Omdl
dFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBoYW5kbGU7CiAgICAgWyZdKCkgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGlkZW50aWZpZXIpOworICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVm
ZmVyKGlkZW50aWZpZXIub2JqZWN0KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlO
YXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpEb250Q29weUJhY2tpbmdTdG9y
ZSk7CkBAIC00NzksNiArNTAwLDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0
U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nCiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmF0
aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgY2FjaGVOYXRpdmVJbWFnZVdpdGhR
dWFsaWZpZWRJZGVudGlmaWVyKGhhbmRsZSwgeyBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRpZmll
ciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0p
OworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2VXaXRo
UXVhbGlmaWVkSWRlbnRpZmllcihjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxl
LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbmF0aXZlSW1hZ2VSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTQ4
NiwyMyArNTEyLDI4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJ
bWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuCiAgICAgaWYgKCFiaXRtYXAp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRl
KGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpLCBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVh
dGVQbGF0Zm9ybUltYWdlKCksIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgp
KTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZSgqaW1hZ2UpOwogCi0gICAgaWYgKG1fcGVuZGluZ1dh
a2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChuYXRp
dmVJbWFnZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8g
JiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChuYXRpdmVJbWFnZVJl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5h
cmd1bWVudHMpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChS
ZWY8Rm9udD4mJiBmb250KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQo
UmVmPFdlYkNvcmU6OkZvbnQ+JiYgZm9udCkKK3sKKyAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIGNh
Y2hlRm9udFdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFdURk1vdmUoZm9udCksIHsgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nl
c3NJZGVudGlmaWVyKCkgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2Fj
aGVGb250V2l0aFF1YWxpZmllZElkZW50aWZpZXIoUmVmPEZvbnQ+JiYgZm9udCwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGZvbnRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKICAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdURk1vdmUoZm9udCkpOwotICAgIGlmIChtX3Bl
bmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtl
dXAoZm9udFJlc291cmNlSWRlbnRpZmllcikpCisgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8g
JiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChmb250UmVzb3VyY2VJ
ZGVudGlmaWVyLm9iamVjdCgpKSkKICAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChz
dGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50
cyk7CiB9CiAKQEAgLTUxMyw5ICs1NDQsMTQgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWxldGVBbGxGb250cygpCiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVs
ZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KQoreworICAgIHJlbGVhc2VSZW1v
dGVSZXNvdXJjZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSwgdXNlQ291bnQpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90
IHVzZUNvdW50KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8g
c3VjY2VzcyA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCk7CisgICAgYXV0byBzdWNjZXNzID0g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCksIHVzZUNvdW50KTsKICAgICBNRVNTQUdFX0NIRUNLKHN1
Y2Nlc3MsICJSZXNvdXJjZSBpcyBiZWluZyByZWxlYXNlZCBiZWZvcmUgYmVpbmcgY2FjaGVkLiIp
OwogICAgIHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwogfQpAQCAtNTMzLDYgKzU2
OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciBpdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICBkaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGl0ZW1CdWZmZXJJZGVudGlmaWVyLCBoYW5k
bGUsIHsgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGVXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcihEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaXRlbUJ1ZmZlcklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBNRVNTQUdFX0NIRUNLKCFtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5j
b250YWlucyhpdGVtQnVmZmVySWRlbnRpZmllciksICJEdXBsaWNhdGUgc2hhcmVkIGRpc3BsYXkg
bGlzdCBoYW5kbGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDQzYjVlYjU5NWNlMmFiYjFh
ODg5NWZhZWQyNmZhMzJmNTk0MWM1MjUuLmNhMDgxMTYwYjY1NDRiNGJhMzUxM2FlZWIwNGMwYjQ1
YmUzZDEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kU3RhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKQEAgLTE0OSw2ICsxNTAsMTYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEKTsK
ICAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZm
ZXJJZGVudGlmaWVyKTsKIAorICAgIC8vIFJlY2VpdmVkIG1lc3NhZ2VzIHRyYW5zbGF0ZWQgdG8g
dXNlIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4KKyAgICB2b2lkIGNyZWF0
ZUltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2
b2lkIGdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOworICAgIHZvaWQgZ2V0RGF0
YUZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4m
Jik+JiYpOworICAgIHZvaWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVh
bGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYmKT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlV2l0aFF1
YWxpZmllZElkZW50aWZpZXIoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVhbGlmaWVk
SWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90
IHVzZUNvdW50KTsKKyAgICB2b2lkIGNhY2hlRm9udFdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFJl
ZjxXZWJDb3JlOjpGb250PiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OworCiAgICAgY2xhc3MgUmVwbGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcGxheWVy
RGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkM2NjNzExYzc0NzQ0NTA0NDdlNzlhMGI3MWIxNmM2YjJiNDE4Y2EzLi5lZDIwNDFmYTUyZGYz
NmE5MTY2ZmM3MjgyZTE5YjY0YjkxZDQ5YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwOTUsNiArMzA5NSw3IEBACiAJCTFDQThC
OTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2Vz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJUHJveHlNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQ0JCRTQ5RTE5
QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxQ0M1NEFGRDI3MEY5NjU0MDA1
QkY4QkUgLyogUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQ0YxOEYzRTI2QkI1RDkwMDA0QjE3MjIgLyogTG9nSW5pdGlh
bGl6YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9nSW5pdGlhbGl6YXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDA1MzBDOTI1OEVBQjQ0MDBFNDM2RjcgLyog
Y29tYmluZS1mZWF0dXJlLWZsYWdzLXBsaXN0LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImNvbWJp
bmUtZmVhdHVyZS1mbGFncy1wbGlzdC5weSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFEMDUzMEQxMjU5MTYyQzgwMEU0MzZGNyAvKiBXZWJLaXQtaW9zLnBsaXN0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBh
dGggPSAiV2ViS2l0LWlvcy5wbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
MDkyLDYgKzkwOTMsNyBAQAogCQkJCUY0MDk0Q0JDMjU1MzA0QUYwMDNENzNFMyAvKiBEaXNwbGF5
TGlzdFJlYWRlckhhbmRsZS5jcHAgKi8sCiAJCQkJRjQwOTRDQkIyNTUzMDRBRjAwM0Q3M0UzIC8q
IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0
RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQkxQ0M1NEFGRDI3MEY5
NjU0MDA1QkY4QkUgLyogUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8s
CiAJCQkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcCAqLywKIAkJCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaCAqLywKIAkJCQk3QjkwNDE2ODI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gKi8sCkBAIC0xMjQ4NSw3ICsxMjQ4Nyw3IEBACiAJ
CQkJNUMyOThEQTAxQzNERjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkJEMzZGMjFFNTQ2RjgwMDVE
QkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFNURFRkE2ODI2RjhGNDI2MDBBQjY4REIgLyogUGhvdG9zVUlTUEkuaCBp
biBIZWFkZXJzICovLAorCQkJCUU1REVGQTY4MjZGOEY0MjYwMEFCNjhEQiAvKiBQaG90b3NVSVNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNFODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdM
b2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVFMjAwNDE4RTc3MDUxMDAzRUMzRTUgLyogUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBMDQ5QjQxODBD
Q0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="464524"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>