<?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>221802</bug_id>
          
          <creation_ts>2021-02-11 20:18:45 -0800</creation_ts>
          <short_desc>Change App Highlights API to operate in terms of a single serialized highlight at a time</short_desc>
          <delta_ts>2021-02-17 09:22:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1728432</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-11 20:18:45 -0800</bug_when>
    <thetext>Update data path for App Highlights</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728913</commentid>
    <comment_count>1</comment_count>
      <attachid>420215</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-12 23:22:39 -0800</bug_when>
    <thetext>Created attachment 420215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729185</commentid>
    <comment_count>2</comment_count>
      <attachid>420322</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 09:21:03 -0800</bug_when>
    <thetext>Created attachment 420322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729228</commentid>
    <comment_count>3</comment_count>
      <attachid>420331</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 10:34:55 -0800</bug_when>
    <thetext>Created attachment 420331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729272</commentid>
    <comment_count>4</comment_count>
      <attachid>420331</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-15 11:38:18 -0800</bug_when>
    <thetext>Comment on attachment 420331
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:42
&gt; +#if ENABLE(APP_HIGHLIGHTS)

This has an oddly tight scope, I&apos;d expect it to be after AppHighlightRangeData.h.

&gt; Source/WebCore/Modules/highlight/CreateNewGroupForHighlight.h:2
&gt; + * Copyright (C) 2020 Apple Inc. All rights reserved.

It&apos;s 2021!

&gt; Source/WebCore/Modules/highlight/CreateNewGroupForHighlight.h:30
&gt; +enum class CreateNewGroupForHighlight : bool { No, Yes };

Any reason not to put this in AppHighlightInformation.h? Seems wildly overkill in this case. Though it&apos;s also fine.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1434
&gt; -        [delegate _webView:self updateAppHighlightsStorage:data];
&gt; +        [delegate _webView:self updateAppHighlightsStorage:highlightInformation.highlight-&gt;createNSData().get()];

This will change (to have more parameters and a better name), but in a subsequent version of the patch?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2042
&gt; +    Vector&lt;Ref&lt;WebCore::SharedBuffer&gt;&gt; buffers;

You can go straight to SharedMemory here and skip a step later.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:371
&gt; -- (void)_restoreAppHighlights:(NSData *)data WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +- (void)_restoreAppHighlights:(NSArray&lt;NSData *&gt; *)data WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Better make sure there are no clients of the old version.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9846
&gt; +    // MESSAGE_CHECK(m_process, info);

Don&apos;t check this in. Maybe you mean to check the buffer inside the info?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729275</commentid>
    <comment_count>5</comment_count>
      <attachid>420331</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-15 11:39:17 -0800</bug_when>
    <thetext>Comment on attachment 420331
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Update data path for App Highlights

The title could use some help. Maybe &quot;Change App Highlights API to operate in terms of a single serialized highlight at a time&quot; or something</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729340</commentid>
    <comment_count>6</comment_count>
      <attachid>420331</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-15 13:32:51 -0800</bug_when>
    <thetext>Comment on attachment 420331
Patch

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

&gt; Source/WebCore/Headers.cmake:55
&gt; +

Nit extra space.

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:44
&gt; +

Nit extra space

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:81
&gt; +    Optional&lt;String&gt; text;

I think you&apos;re encoding an extra bool here.  The Optional encoder already does this for you.
You can just encode text always, and then decode it like this:
Optional&lt;Optional&lt;String&gt;&gt; text;
decoder &gt;&gt; text;
if (!text)
return WTF::nullopt;

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:49
&gt; +    auto decoder = buffer.decoder();
&gt; +    Optional&lt;AppHighlightRangeData&gt; data;
&gt; +    decoder &gt;&gt; data;
&gt; +    return data;

This is a little strange.  It seems like it does double decoding and encoding.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7277
&gt; +        document-&gt;appHighlightStorage().restoreAppHighlight(SharedBuffer::create(static_cast&lt;const char *&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()));

Nit: extra space before *</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729404</commentid>
    <comment_count>7</comment_count>
      <attachid>420381</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 14:58:18 -0800</bug_when>
    <thetext>Created attachment 420381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729442</commentid>
    <comment_count>8</comment_count>
      <attachid>420381</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-15 16:15:07 -0800</bug_when>
    <thetext>Comment on attachment 420381
Patch

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

Please fix the title, still.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1434
&gt; -        [delegate _webView:self updateAppHighlightsStorage:data];
&gt; +        [delegate _webView:self updateAppHighlightsStorage:highlightInformation.highlight-&gt;createNSData().get()];

This should become &quot;_webView:didCreateAppHighlight:&quot; eventually.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2044
&gt; +    for (NSData * highlight in highlights) {

Star is floating

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2046
&gt; +        if (sharedMemory) {

Wonder if &quot;just move on and ignore it&quot; is the right thing here, or if we should bail entirely, or what?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:33
&gt; +

Don&apos;t think this newline belongs here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729445</commentid>
    <comment_count>9</comment_count>
      <attachid>420331</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 16:21:29 -0800</bug_when>
    <thetext>Comment on attachment 420331
Patch

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

&gt;&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:81
&gt;&gt; +    Optional&lt;String&gt; text;
&gt; 
&gt; I think you&apos;re encoding an extra bool here.  The Optional encoder already does this for you.
&gt; You can just encode text always, and then decode it like this:
&gt; Optional&lt;Optional&lt;String&gt;&gt; text;
&gt; decoder &gt;&gt; text;
&gt; if (!text)
&gt; return WTF::nullopt;

Oh, I definitely saw other places encoding optionals like this, so I don&apos;t know if this changed, or if other also didn&apos;t know this was doable.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1434
&gt;&gt; +        [delegate _webView:self updateAppHighlightsStorage:highlightInformation.highlight-&gt;createNSData().get()];
&gt; 
&gt; This will change (to have more parameters and a better name), but in a subsequent version of the patch?

Yes, this patch doesn&apos;t address the delegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729448</commentid>
    <comment_count>10</comment_count>
      <attachid>420381</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 16:28:10 -0800</bug_when>
    <thetext>Comment on attachment 420381
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1434
&gt;&gt; +        [delegate _webView:self updateAppHighlightsStorage:highlightInformation.highlight-&gt;createNSData().get()];
&gt; 
&gt; This should become &quot;_webView:didCreateAppHighlight:&quot; eventually.

Yes, this will be the next patch.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2046
&gt;&gt; +        if (sharedMemory) {
&gt; 
&gt; Wonder if &quot;just move on and ignore it&quot; is the right thing here, or if we should bail entirely, or what?

We can smooth out failure cases in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729450</commentid>
    <comment_count>11</comment_count>
      <attachid>420391</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 16:29:37 -0800</bug_when>
    <thetext>Created attachment 420391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729460</commentid>
    <comment_count>12</comment_count>
      <attachid>420391</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 16:42:57 -0800</bug_when>
    <thetext>Comment on attachment 420391
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:55
&gt; +    if (text)

I believe you want to drop this null check now that you&apos;re using the approach Alex suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729462</commentid>
    <comment_count>13</comment_count>
      <attachid>420391</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 16:43:47 -0800</bug_when>
    <thetext>Comment on attachment 420391
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:90
&gt; +    return {{ SharedBuffer::create(WTFMove(highlight)), WTFMove(text), isNewGroup }};

and I think this should be: WTFMove(*text)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729466</commentid>
    <comment_count>14</comment_count>
      <attachid>420391</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 17:00:50 -0800</bug_when>
    <thetext>Comment on attachment 420391
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:2
&gt; + * Copyright (C) 2014 Apple Inc. All rights reserved.

Why 2014?

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:2
&gt; + * Copyright (C) 2020 Apple Inc. All rights reserved.

If completely new: 2021, if modified: 2020-2021

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:64
&gt; +    encoder &lt;&lt; static_cast&lt;uint64_t&gt;(pathIndex);

I seem to remember it is completely fine to encode an unsigned type nowadays. I think used we do force uint64_t because we could have a 32bit vs 64bit mismatch between the WebProcess and the UIProcess.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:96
&gt; +    encoder &lt;&lt; static_cast&lt;uint64_t&gt;(m_startOffset);

ditto.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:98
&gt; +    encoder &lt;&lt; static_cast&lt;uint64_t&gt;(m_endOffset);

ditto.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.h:2
&gt; + * Copyright (C) 2020 Apple Inc. All rights reserved.

same comment about date.

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.cpp:44
&gt; +#define TEXT_PREVIEW_LENGTH 100

I believe we prefer to use static constexpr nowadays instead of #define.

&gt; Source/WebCore/Modules/highlight/CreateNewGroupForHighlight.h:2
&gt; + * Copyright (C) 2020 Apple Inc. All rights reserved.

Same comment about date.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:545
&gt; +void WebPageProxy::restoreAppHighlights(Vector&lt;Ref&lt;SharedMemory&gt;&gt;&amp; highlights)

can the parameter be const? I would either use `const Vector&lt;Ref&lt;SharedMemory&gt;&gt;&amp;` or `Vector&lt;Ref&lt;SharedMemory&gt;&gt;&amp;&amp;`.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:554
&gt; +        highlight-&gt;createHandle(handle, SharedMemory::Protection::ReadWrite);

I don&apos;t think the WebContent process really need Write access. Can probably be ReadOnly.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7271
&gt; +void WebPage::restoreAppHighlights(const Vector&lt;SharedMemory::IPCHandle&gt; memoryHandles)

Vector&lt;SharedMemory::IPCHandle&gt;&amp;&amp;

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7276
&gt; +        auto sharedMemory = SharedMemory::map(ipcHandle.handle, SharedMemory::Protection::ReadOnly);

Seems risky to not deal with sharedMemory being null.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1400
&gt; +    void restoreAppHighlights(const Vector&lt;SharedMemory::IPCHandle&gt;);

Vector&lt;SharedMemory::IPCHandle&gt;&amp;&amp; since coming from IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729470</commentid>
    <comment_count>15</comment_count>
      <attachid>420398</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 17:11:07 -0800</bug_when>
    <thetext>Created attachment 420398
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729481</commentid>
    <comment_count>16</comment_count>
      <attachid>420398</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 17:27:55 -0800</bug_when>
    <thetext>Comment on attachment 420398
Patch for landing

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

Please see review comments.

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:55
&gt; +    if (text)

This is still wrong.

&gt; Source/WebCore/Modules/highlight/AppHighlightInformation.h:90
&gt; +    return {{ SharedBuffer::create(WTFMove(highlight)), WTFMove(text), isNewGroup }};

Here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729505</commentid>
    <comment_count>17</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 18:30:48 -0800</bug_when>
    <thetext>Sorry Chris, I didn&apos;t see your comments before! Should be addressed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729516</commentid>
    <comment_count>18</comment_count>
      <attachid>420415</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 19:04:11 -0800</bug_when>
    <thetext>Created attachment 420415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729548</commentid>
    <comment_count>19</comment_count>
      <attachid>420415</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 20:37:24 -0800</bug_when>
    <thetext>Comment on attachment 420415
Patch

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

I only commented on one decoder but please double check the other ones.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:84
&gt; +    Optional&lt;uint64_t&gt; pathIndex;

Watch out, the types need to match in the encoders and the decoders. You encoded an unsigned and decoding a uint64 here. This should use unsigned here to match.

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:89
&gt; +    return {{ WTFMove(*identifier), WTFMove(*nodeName), WTFMove(*textData), static_cast&lt;unsigned&gt;(*pathIndex) }};

Then the cast here would no longer be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729553</commentid>
    <comment_count>20</comment_count>
      <attachid>420424</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-15 22:54:59 -0800</bug_when>
    <thetext>Created attachment 420424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729680</commentid>
    <comment_count>21</comment_count>
      <attachid>420424</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 08:34:06 -0800</bug_when>
    <thetext>Comment on attachment 420424
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:89
&gt; +    return {{ WTFMove(*identifier), WTFMove(*nodeName), WTFMove(*textData), (*pathIndex) }};

nit: (*pathIndex) -&gt; *pathIndex

&gt; Source/WebCore/Modules/highlight/AppHighlightRangeData.cpp:129
&gt; +    return {{ WTFMove(*text), WTFMove(*startContainer), (*startOffset), WTFMove(*endContainer), (*endOffset) }};

ditto for startOffset, endOffset

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.cpp:45
&gt; +

nit: unnecessary blank line.

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.cpp:234
&gt; +    auto strongDocument = m_document.get();

What does strongDocument mean here? strongDocument is of type Document*. I would expect something called strongDocument to have a type such as RefPtr&lt;Document&gt; (where it actually ref&apos;s the type). Here, nothing keeps the document alive. Maybe you meant:
auto strongDocument = makeRefPtr(m_document.get());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729730</commentid>
    <comment_count>22</comment_count>
      <attachid>420479</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-16 09:43:15 -0800</bug_when>
    <thetext>Created attachment 420479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729845</commentid>
    <comment_count>23</comment_count>
      <attachid>420479</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-16 11:53:00 -0800</bug_when>
    <thetext>Comment on attachment 420479
Patch

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

&gt; Source/WebCore/Headers.cmake:50
&gt; +    Modules/highlight/AppHighlightInformation.h

You could totally drop the &quot;Information&quot; without losing any &quot;information&quot; 🤷‍♂️

&gt; Source/WebCore/page/ChromeClient.h:25
&gt; +#include &quot;AppHighlightInformation.h&quot;

Please forward declare, this header is included eeeeeverywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729871</commentid>
    <comment_count>24</comment_count>
      <attachid>420522</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-16 12:30:48 -0800</bug_when>
    <thetext>Created attachment 420522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729873</commentid>
    <comment_count>25</comment_count>
      <attachid>420524</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-16 12:36:23 -0800</bug_when>
    <thetext>Created attachment 420524
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729914</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-16 13:44:36 -0800</bug_when>
    <thetext>Committed r272925: &lt;https://commits.webkit.org/r272925&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420524.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729916</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-16 13:45:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/74405038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730312</commentid>
    <comment_count>28</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-17 09:22:23 -0800</bug_when>
    <thetext>unreviewed build fix r272978: &lt;https://commits.webkit.org/r272978&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420215</attachid>
            <date>2021-02-12 23:22:39 -0800</date>
            <delta_ts>2021-02-15 09:21:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210212232238.patch</filename>
            <type>text/plain</type>
            <size>66015</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uNTY4N2Y5ZjQ3YzkwMmJmYmIxNTViMzNmNDFkYzcw
OTk3Y2FmOTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGRh
dGEgcGF0aCBmb3IgQXBwIEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFsIGRhdGEgbmVlZGVkIGZv
ciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGluZm9ybWF0aW9uIHRvIGJl
IGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0TGlzdERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaC4KKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGln
aHRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxp
Z2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAyMS0wMi0x
MSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV0dXJuaW5nIHNS
R0IgZnJvbSBDRyBjb2xvciBzcGFjZSBmdW5jdGlvbnMgb24gZmFpbHVyZSBpcyB0b28gZXJyb3Ig
cHJvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzRjYTkwOWM3YjNhNjE1YjhiNTQ1NTNiNzI2ZDlkNmJjMDE4OGQx
NS4uODBkYjJhM2Y1ZWQ4Nzk5YzkzOTM1ZWFjOTI4OWRjMzQzZDgzOWYzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAyMS0wMi0xMiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBkYXRhIHBhdGggZm9yIEFwcCBIaWdobGlnaHRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQaXBlIHRo
cm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxheSwgYW5kIHVwZGF0ZSB0byBh
bGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBtb3JlIGVhc2lseS4KKworICAg
ICAgICAqIFNoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVIaWdobGln
aHRJbkN1cnJlbnRHcm91cFdpdGhSYW5nZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
cmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY09TXSBFbmFibGUgQXVkaW8gQ2FwdHVyZSBpbiBHUFVQcm9j
ZXNzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhN2UyNjE1NTdl
ODA3MzVhNzMzNTQ0OTJmN2Q4NGU3NWUwNjgwNDA1Li4wY2MyZTM2MmZjZTJhNjUxNTFhYTQ0OWE4
MDBiZWExNzI5OGY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgZGF0YSBwYXRoIGZvciBBcHAgSGlnaGxpZ2h0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0
YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NGQ1OWJiMzVkZGExNGM2Y2Zk
ZDhiN2ZkZTQ0ODYwNWY0MGI5NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
TGlzdERhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcHBIaWdobGlnaHRMaXN0RGF0YS5oIgot
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJOb2RlLmgiCi0j
aW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgotI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCi0jaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIK
LSNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVycy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBFTkFCTEUoQVBQ
X0hJR0hMSUdIVFMpCi0KLUFwcEhpZ2hsaWdodExpc3REYXRhIEFwcEhpZ2hsaWdodExpc3REYXRh
OjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgYXV0byBkZWNvZGVy
ID0gYnVmZmVyLmRlY29kZXIoKTsKLSAgICBPcHRpb25hbDxBcHBIaWdobGlnaHRMaXN0RGF0YT4g
ZGF0YTsKLSAgICBkZWNvZGVyID4+IGRhdGE7Ci0gICAgcmV0dXJuIGRhdGEgPyAqZGF0YSA6IEFw
cEhpZ2hsaWdodExpc3REYXRhIHt7IH19OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdo
bGlnaHRMaXN0RGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25zdAotewotICAgIFdURjo6UGVyc2lz
dGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKLSAgICBlbmNvZGVyIDw8ICp0aGlzOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNp
emUoKSk7Ci19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzYjIxNGRiOTc4OTIwOTQ0Y2RkYjFm
YjBlYTE2NWQ3ZGE2Y2UxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0
RGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlv
blNldC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0KLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLQotY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQgewotICAgICAgICBT
dHJpbmcgaWRlbnRpZmllcjsKLSAgICAgICAgU3RyaW5nIG5vZGVOYW1lOwotICAgICAgICBTdHJp
bmcgdGV4dERhdGE7Ci0gICAgICAgIHVuc2lnbmVkIHBhdGhJbmRleCB7IDAgfTsKLQotICAgICAg
ICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcmJiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYg
bmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCi0gICAgICAgICAgICA6IGlkZW50
aWZpZXIoV1RGTW92ZShlbGVtZW50SWRlbnRpZmllcikpCi0gICAgICAgICAgICAsIG5vZGVOYW1l
KFdURk1vdmUobmFtZSkpCi0gICAgICAgICAgICAsIHRleHREYXRhKFdURk1vdmUoZGF0YSkpCi0g
ICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgTm9kZVBhdGhDb21wb25lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQot
ICAgICAgICAgICAgOiBpZGVudGlmaWVyKGVsZW1lbnRJZGVudGlmaWVyKQotICAgICAgICAgICAg
LCBub2RlTmFtZShuYW1lKQotICAgICAgICAgICAgLCB0ZXh0RGF0YShkYXRhKQotICAgICAgICAg
ICAgLCBwYXRoSW5kZXgoaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBOb2RlUGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyID09IG90aGVyLmlkZW50aWZpZXIg
JiYgbm9kZU5hbWUgPT0gb3RoZXIubm9kZU5hbWUgJiYgdGV4dERhdGEgPT0gb3RoZXIudGV4dERh
dGEgJiYgcGF0aEluZGV4ID09IG90aGVyLnBhdGhJbmRleDsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2RlUGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PE5vZGVQYXRoQ29tcG9uZW50PiBkZWNvZGUoRGVjb2RlciYpOwotICAgIH07Ci0KLSAgICB1c2lu
ZyBOb2RlUGF0aCA9IFZlY3RvcjxOb2RlUGF0aENvbXBvbmVudD47Ci0KLSAgICBBcHBIaWdobGln
aHRSYW5nZURhdGEoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJikgPSBkZWZhdWx0OwotICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRSYW5n
ZURhdGEoU3RyaW5nJiYgdGV4dCwgTm9kZVBhdGgmJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIE5vZGVQYXRoJiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogbV90ZXh0KFdURk1vdmUodGV4dCkpCi0gICAgICAgICwgbV9zdGFydENvbnRh
aW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkKLSAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0
YXJ0T2Zmc2V0KQotICAgICAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1vdmUoZW5kQ29udGFpbmVy
KSkKLSAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCi0gICAgewotICAgIH0KLQotICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRo
JiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBl
bmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQodGV4dCkK
LSAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKHN0YXJ0Q29udGFpbmVyKQotICAgICAgICAsIG1f
c3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29u
dGFpbmVyKQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9Ci0gICAg
Y29uc3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENv
bnRhaW5lcjsgfQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydE9mZnNldDsgfQotICAgIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25zdCB7
IHJldHVybiBtX2VuZENvbnRhaW5lcjsgfQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
LQotcHJpdmF0ZToKLSAgICBTdHJpbmcgbV90ZXh0OwotICAgIE5vZGVQYXRoIG1fc3RhcnRDb250
YWluZXI7Ci0gICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKLSAgICBOb2RlUGF0aCBt
X2VuZENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKLX07Ci0KLWNs
YXNzIEFwcEhpZ2hsaWdodExpc3REYXRhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXBwSGlnaGxpZ2h0TGlzdERhdGEg
Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotCi0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEo
Y29uc3QgQXBwSGlnaGxpZ2h0TGlzdERhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0
TGlzdERhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEoVmVjdG9yPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4mJiBhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICA6IG1fYW5u
b3RhdGlvblJhbmdlcyhXVEZNb3ZlKGFubm90YXRpb25SYW5nZXMpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBjb25zdCBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYgcmFuZ2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9hbm5vdGF0aW9uUmFuZ2VzOyB9Ci0gICAgdm9pZCBzZXRSYW5nZXMoVmVjdG9y
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4mJiByYW5nZXMpIHsgbV9hbm5vdGF0aW9uUmFuZ2VzID0g
V1RGTW92ZShyYW5nZXMpOyB9Ci0gICAgdm9pZCBhZGRSYW5nZXMoVmVjdG9yPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4mJiByYW5nZXMpIHsgbV9hbm5vdGF0aW9uUmFuZ2VzLmFwcGVuZFZlY3RvcihX
VEZNb3ZlKHJhbmdlcykpOyB9Ci0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZl
cigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRp
b25SYW5nZXMuc2l6ZSgpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9h
bm5vdGF0aW9uUmFuZ2VzLmlzRW1wdHkoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRMaXN0RGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKLQotcHJpdmF0ZToKLQotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IG1fYW5u
b3RhdGlvblJhbmdlczsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwg
bm9kZU5hbWU7Ci0gICAgZW5jb2RlciA8PCB0ZXh0RGF0YTsKLSAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihwYXRoSW5kZXgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBI
aWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKLXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+
PiBpZGVudGlmaWVyOwotICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7Ci0gICAgZGVjb2RlciA+
PiBub2RlTmFtZTsKLSAgICBpZiAoIW5vZGVOYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKLSAgICBkZWNvZGVyID4+IHRl
eHREYXRhOwotICAgIGlmICghdGV4dERhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGF0aEluZGV4OwotICAgIGRlY29kZXIgPj4gcGF0
aEluZGV4OwotICAgIGlmICghcGF0aEluZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2RlTmFt
ZSksIFdURk1vdmUoKnRleHREYXRhKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpwYXRoSW5kZXgp
IH19OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBt
X3RleHQ7Ci0gICAgZW5jb2RlciA8PCBtX3N0YXJ0Q29udGFpbmVyOwotICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fc3RhcnRPZmZzZXQpOwotICAgIGVuY29kZXIgPDwgbV9l
bmRDb250YWluZXI7Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9lbmRP
ZmZzZXQpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCi17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwotICAgIGRlY29kZXIgPj4gdGV4dDsK
LSAgICBpZiAoIXRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRp
b25hbDxOb2RlUGF0aD4gc3RhcnRDb250YWluZXI7Ci0gICAgZGVjb2RlciA+PiBzdGFydENvbnRh
aW5lcjsKLSAgICBpZiAoIXN0YXJ0Q29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHN0YXJ0T2Zmc2V0OwotICAgIGRlY29kZXIg
Pj4gc3RhcnRPZmZzZXQ7Ci0gICAgaWYgKCFzdGFydE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7Ci0gICAg
ZGVjb2RlciA+PiBlbmRDb250YWluZXI7Ci0gICAgaWYgKCFlbmRDb250YWluZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZW5kT2Zmc2V0
OwotICAgIGRlY29kZXIgPj4gZW5kT2Zmc2V0OwotICAgIGlmICghZW5kT2Zmc2V0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0KLSAgICByZXR1cm4ge3sKLSAgICAgICAgV1RGTW92
ZSgqdGV4dCksCi0gICAgICAgIFdURk1vdmUoKnN0YXJ0Q29udGFpbmVyKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KCpzdGFydE9mZnNldCksCi0gICAgICAgIFdURk1vdmUoKmVuZENv
bnRhaW5lciksCi0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqZW5kT2Zmc2V0KSwKLSAg
ICB9fTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRMaXN0
RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBt
X2Fubm90YXRpb25SYW5nZXM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFs
PEFwcEhpZ2hsaWdodExpc3REYXRhPiBBcHBIaWdobGlnaHRMaXN0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8VmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4+IGFubm90YXRpb25SYW5nZXM7Ci0gICAgZGVjb2RlciA+PiBhbm5vdGF0aW9uUmFuZ2VzOwot
ICAgIGlmICghYW5ub3RhdGlvblJhbmdlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHJldHVybiB7eyBXVEZNb3ZlKCphbm5vdGF0aW9uUmFuZ2VzKSB9fTsKLX0KLQotI2Vu
ZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTE0Y2RjYTc0MTQ1ZDViMjdmNTEzZDczNTE5MzVhMjkyYTI0N2ZiMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorCitjbGFzcyBT
aGFyZWRCdWZmZXI7CisKK2NsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7CitXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKKyAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7
CisgICAgICAgIFN0cmluZyBub2RlTmFtZTsKKyAgICAgICAgU3RyaW5nIHRleHREYXRhOworICAg
ICAgICB1bnNpZ25lZCBwYXRoSW5kZXggeyAwIH07CisKKyAgICAgICAgTm9kZVBhdGhDb21wb25l
bnQoU3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGRh
dGEsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICAgICAgOiBpZGVudGlmaWVyKFdURk1vdmUoZWxl
bWVudElkZW50aWZpZXIpKQorICAgICAgICAgICAgLCBub2RlTmFtZShXVEZNb3ZlKG5hbWUpKQor
ICAgICAgICAgICAgLCB0ZXh0RGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICAgICAgICAgLCBwYXRo
SW5kZXgoaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIE5vZGVQYXRoQ29t
cG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogaWRl
bnRpZmllcihlbGVtZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgICwgbm9kZU5hbWUobmFtZSkK
KyAgICAgICAgICAgICwgdGV4dERhdGEoZGF0YSkKKyAgICAgICAgICAgICwgcGF0aEluZGV4KGlu
ZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gaWRlbnRpZmllciA9PSBvdGhlci5pZGVudGlmaWVyICYmIG5vZGVOYW1lID09IG90
aGVyLm5vZGVOYW1lICYmIHRleHREYXRhID09IG90aGVyLnRleHREYXRhICYmIHBhdGhJbmRleCA9
PSBvdGhlci5wYXRoSW5kZXg7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb2RlUGF0aENvbXBvbmVu
dD4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgdXNpbmcgTm9kZVBhdGggPSBWZWN0
b3I8Tm9kZVBhdGhDb21wb25lbnQ+OworCisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYpID0gZGVmYXVsdDsKKyAgICBBcHBIaWdobGlnaHRSYW5n
ZURhdGEoKSA9IGRlZmF1bHQ7CisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmluZyYmIHRl
eHQsIE5vZGVQYXRoJiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBOb2Rl
UGF0aCYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1fdGV4
dChXVEZNb3ZlKHRleHQpKQorICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoV1RGTW92ZShzdGFy
dENvbnRhaW5lcikpCisgICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAg
ICAgLCBtX2VuZENvbnRhaW5lcihXVEZNb3ZlKGVuZENvbnRhaW5lcikpCisgICAgICAgICwgbV9l
bmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAgICBBcHBIaWdobGlnaHRSYW5n
ZURhdGEoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1bnNp
Z25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogbV90ZXh0KHRleHQpCisgICAgICAgICwgbV9zdGFy
dENvbnRhaW5lcihzdGFydENvbnRhaW5lcikKKyAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0
T2Zmc2V0KQorICAgICAgICAsIG1fZW5kQ29udGFpbmVyKGVuZENvbnRhaW5lcikKKyAgICAgICAg
LCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQorICAgIGNvbnN0IE5vZGVQYXRoJiBz
dGFydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWluZXI7IH0KKyAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KKyAg
ICBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb250
YWluZXI7IH0KKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9m
ZnNldDsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBSZWY8U2hhcmVk
QnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmluZyBt
X3RleHQ7CisgICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX3N0
YXJ0T2Zmc2V0IHsgMCB9OworICAgIE5vZGVQYXRoIG1fZW5kQ29udGFpbmVyOworICAgIHVuc2ln
bmVkIG1fZW5kT2Zmc2V0IHsgMCB9OworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggYzNiOGJiNzdjMGM0ZjRlNWM5OTg3MTc5MjM5MmUz
ZGRkOGQxOTE4Ni4uYWMzMGYxYTIxNGNhM2JhZjllYThmZWIwZDQxZTM5ZGJhNzI5N2JiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKQEAgLTI3LDggKzI3LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIgogCi0jaW5jbHVkZSAiQXBwSGlnaGxpZ2h0
TGlzdERhdGEuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIgorI2luY2x1
ZGUgIkFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1
ZGUgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1MQm9k
eUVsZW1lbnQuaCIKQEAgLTQwLDYgKzQyLDggQEAKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogCisjZGVmaW5lIFRFWFRfUFJFVklFV19MRU5HVEgg
MTAwCisKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xOTYsOCArMjAwLDEwIEBAIHN0YXRp
YyBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoIG1ha2VOb2RlUGF0aChSZWZQdHI8Tm9k
ZT4mJiBub2RlKQogCiBzdGF0aWMgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIGNyZWF0ZUFwcEhpZ2hs
aWdodFJhbmdlRGF0YShjb25zdCBTdGF0aWNSYW5nZSYgcmFuZ2UpCiB7CisgICAgYXV0byB0ZXh0
ID0gcGxhaW5UZXh0KHJhbmdlKTsKKyAgICB0ZXh0LnRydW5jYXRlKFRFWFRfUFJFVklFV19MRU5H
VEgpOwogICAgIHJldHVybiB7Ci0gICAgICAgIHBsYWluVGV4dChyYW5nZSksCisgICAgICAgIHRl
eHQsCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAgICAg
ICAgIHJhbmdlLnN0YXJ0T2Zmc2V0KCksCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2UuZW5k
Q29udGFpbmVyKCkpLApAQCAtMjEwLDQ4ICsyMTYsMzUgQEAgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6
QXBwSGlnaGxpZ2h0U3RvcmFnZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgQXBw
SGlnaGxpZ2h0U3RvcmFnZTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKQordm9pZCBBcHBI
aWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgcmFuZ2UsIENy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXApCiB7Ci0gICAgVmVjdG9yPEFwcEhp
Z2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVBcHBIaWdobGln
aHRSYW5nZURhdGEocmFuZ2UpOworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKIAotICAgIGlm
ICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghZGF0YS50ZXh0KCkuaXNF
bXB0eSgpKQorICAgICAgICB0ZXh0ID0gZGF0YS50ZXh0KCk7CiAKLSAgICBpZiAoIW1fZG9jdW1l
bnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9u
IGluZm8gPSB7ZGF0YS50b1NoYXJlZEJ1ZmZlcigpLCB0ZXh0LCBpc05ld0dyb3VwfTsKIAotICAg
IGlmIChhdXRvIGFwcEhpZ2hsaWdodFJlZ2lzdGVyID0gbV9kb2N1bWVudC0+YXBwSGlnaGxpZ2h0
UmVnaXN0ZXJJZkV4aXN0cygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogYXBw
SGlnaGxpZ2h0UmVnaXN0ZXItPm1hcCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJhbmdl
RGF0YSA6IGhpZ2hsaWdodC52YWx1ZS0+cmFuZ2VzRGF0YSgpKQotICAgICAgICAgICAgICAgIGRh
dGEuYXBwZW5kKGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShyYW5nZURhdGEtPnJhbmdlKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEgbGlzdERhdGEgeyBX
VEZNb3ZlKGRhdGEpIH07Ci0KLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnVwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGxpc3REYXRhLnRvU2hhcmVkQnVmZmVyKCkpOworICAgIG1f
ZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiB9CiAK
LXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBI
aWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXV0byBhcHBIaWdo
bGlnaHRMaXN0RGF0YSA9IEFwcEhpZ2hsaWdodExpc3REYXRhOjpjcmVhdGUoYnVmZmVyKTsKLSAg
ICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiB1bnJlc3RvcmVkUmFuZ2VzOwotICAgIFZl
Y3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlc3RvcmVkUmFuZ2VzOworICAgIGF1dG8gc3Ry
b25nRG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ryb25n
RG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAoIWFw
cEhpZ2hsaWdodFJhbmdlRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChh
dXRvJiBhcHBIaWdobGlnaHRMaXN0RGF0YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdlcygp
KSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERhdGEs
ICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAgIHVu
cmVzdG9yZWRSYW5nZXMuYXBwZW5kKGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9CisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLCAqc3Ryb25nRG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVkUmFu
Z2VzLmFwcGVuZChhcHBIaWdobGlnaHRMaXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3VtZW50
LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3Jl
YXRlKCpyYW5nZSkpOwotICAgIH0KKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVn
aXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKKwor
ICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVhZDY0
MDI0MjljZWRjNGJlOTI2ZjZjZGEwOWU0NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1OWYz
OTA5ODU2MTY2YTc3NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBBcHBI
aWdobGlnaHRMaXN0RGF0YTsKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVtIGNs
YXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGlnaGxp
Z2h0U3RvcmFnZSA6IFJlZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9j
dW1lbnQmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0
b3JhZ2UoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdo
bGlnaHQoU3RhdGljUmFuZ2UmICwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91
cCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTaGFy
ZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGln
aHRSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGln
aHRSZWdpc3Rlci5jcHAKaW5kZXggNjhlZDI3ZmRiM2Y3NGUwYjFhOTM5ZjU4MWZlNzIzODYzNzBm
ZmNkOS4uMTRkMDMyYzk3ZTVhNjE1ZTZmYzljNTZlNzQ5NmZkNzNjMDVlN2RkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVy
LmNwcApAQCAtNjUsNSArNjUsNiBAQCB2b2lkIEhpZ2hsaWdodFJlZ2lzdGVyOjphZGRBcHBIaWdo
bGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHZhbHVlKQogICAgIGVsc2UKICAgICAgICAgc2V0RnJv
bU1hcExpa2UoYXBwSGlnaGxpZ2h0S2V5KCksIEhpZ2hsaWdodDo6Y3JlYXRlKFdURk1vdmUodmFs
dWUpKSk7CiB9CisKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4YzAzYjkzMjY0OTg1ZjBi
YjFlZTlmNmQyMDIzZTM0ODMwOTJmNDYyLi4wNWJiNWU4N2E0MzJkZThjNTRiYmE2YmY2NTAxYzBj
NjJkOTYzNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNjQsNyArNjQsNyBAQCBNb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uLmNwcAogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29vcmRpbmF0ZXMu
Y3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAotTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwCitNb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmNwcAogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3BwCiBNb2R1
bGVzL2hpZ2hsaWdodC9IaWdobGlnaHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmUzYmEyZDhiYmFhMTc2MjQ0ZGE2MjNj
NjkyOTZlNWZlYmYwNzMwYi4uMzg4MWI2YTcwMzlkYTRhMjdmOTg2NTY4YjA3YTNmMWFlNTczMTQ5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTIyMyw2ICsxMjIzLDcgQEAKIAkJNDQyNTA3MDkyNTgyOUEyNzAwQzA5MzY4IC8q
IEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0MjUwNzA3MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9y
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDQzMEQwMEIyNTc1QTgzRTAwNDZENDAxIC8qIEhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFODhFNTEyMzZBNUM4RDAwOUI0ODQ3IC8q
IEhpZ2hsaWdodC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ0MzBEMDBEMjU3NUE4QTUwMDQ2RDQwMSAvKiBIaWdobGlnaHRSZWdpc3Rlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFODhFNTAyMzZB
NTZBQzAwOUI0ODQ3IC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDQ1MjEwREYyNUQ2MUYwMDAwM0EyRUQ4IC8q
IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NDU3NzVFNTIwNDcyRjczMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBw
ZWFyYW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDYz
Q0Y2ODIyMTJGQTY4MDAxQTg1NzcgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUyMUM1NkMy
OTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovOyB9OwogCQk0NDY1
RDdCRDI1MzZEMDVFMDAxNjY2NkQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1
OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMzEsMTIgKzEyMzIsMTMgQEAKIAkJNDQ3OTU4MDQxNjQz
QjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDc5NTgwMzE2NDNCNDdCMDAxRTBBN0YgLyogUGFy
c2VkQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NDhBMjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
OEEyOUJEMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0OEIxQjdBMEYz
QTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEIxQjc4MEYzQTJGOUIwMDQ3QTlFMiAvKiBU
ZXh0U2l6ZUFkanVzdG1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0NDkzMTY5MTI1RDdBMUY2MDBBQTY2REUgLyogQ3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0OTMxNjkwMjVEN0ExRUYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0
OTZFMzlFMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDk2RTM5QzEzOTgx
MzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oICovOyB9OwogCQk0NDk2
RTNBMDEzOTgxM0E1MDAzRUUzMkEgLyogSlNTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlGMTM5ODEzQTUwMDNFRTMy
QSAvKiBKU1NWR01QYXRoRWxlbWVudC5oICovOyB9OwogCQk0NEEyMERCOTBGODQxNjZDMDBCM0Ux
RkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVS
TFJlc3BvbnNlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFB
QjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJNDRB
MjhBQUYxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCAqLzsgfTsKLQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhp
Z2hsaWdodExpc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEu
aCAqLzsgfTsKKwkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRB
RTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovOyB9Owog
CQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBF
MDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9
OwogCQk0NEUzNDlGOTI0NkY0RTE5MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMzQ5RjcyNDZG
NERDNzAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODExNyw2ICs4MTE5LDcgQEAKIAkJNDQz
N0M0QTkyNEUyQUU1RjAwMDk1MTI4IC8qIExhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMYXp5TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NDNGMDQyNjBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90
aWZpZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3
b3JrU3RhdGVOb3RpZmllcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ0
RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZUlPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ1MjEwREQyNUQ2MUVGRjAwM0EyRUQ4
IC8qIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0NTc3NUU0MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1Nzc1RTkyMDQ3MzAzQjAwOERDRTVEIC8q
IExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDZEQzY0NjI0QTI5RDlCMDA2MUYzOTAgLyogUGxheWJh
Y2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MTI5LDYgKzgxMzIsNyBAQAogCQk0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyog
SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0U2l6ZUFkanVzdG1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5MDk4QjEwRjhGODI1MjAwNzZBMzI3
IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NDkzMTY5MDI1RDdBMUVGMDBBQTY2REUgLyogQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5NkUzOUIxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0OTZFMzlDMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5NkUzOUYxMzk4MTNB
NTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU1ZHTVBhdGhFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04MTM2LDggKzgxNDAsOCBAQAogCQk0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEEy
OEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1h
dGhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTE5hbWVz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTE5hbWVzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAv
KiBBcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBcHBIaWdobGlnaHRMaXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRMaXN0RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUg
LyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QjM4QkY0MjUzNjkwMUEwMEE0
NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VsZWN0aW9uUmFuZ2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ0QjM4QkY5MjUzNjlBODgwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCRDJCMzYyNTI3Nzk3ODAwNTVEOTVBIC8q
IEdsb2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiR2xvYmFsRXZlbnRIYW5k
bGVycytTZWxlY3Rpb24uaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5ODM2
LDEwICsxOTg0MCwxMiBAQAogCQk0NEU4OEU0NzIzNjhERjBGMDA5QjQ4NDcgLyogaGlnaGxpZ2h0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0NEFFMDQ1
ODI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwICovLAotCQkJCTQ0
QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oICovLAorCQkJ
CTQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICov
LAorCQkJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwICovLAorCQkJCTQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5n
ZURhdGEuaCAqLywKIAkJCQk0NDI1MDcwNjI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0
U3RvcmFnZS5jcHAgKi8sCiAJCQkJNDQyNTA3MDcyNTgyOUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hs
aWdodFN0b3JhZ2UuaCAqLywKKwkJCQk0NDkzMTY5MDI1RDdBMUVGMDBBQTY2REUgLyogQ3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQuaCAqLywKIAkJCQk0NEU4OEU1NDIzNkE2NkExMDA5QjQ4NDcg
LyogSGlnaGxpZ2h0LmNwcCAqLywKIAkJCQk0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyogSGln
aGxpZ2h0LmggKi8sCiAJCQkJNDRFODhFNEQyMzY5MTI4QjAwOUI0ODQ3IC8qIEhpZ2hsaWdodC5p
ZGwgKi8sCkBAIC0zMTE1OCw3ICszMTE2NCw4IEBACiAJCQkJNTcxNTJCNUEyMUNCM0U4ODAwMEMz
N0NBIC8qIEFwZHVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzE1MkI1QzIxQ0MxOTAy
MDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURENzA5
OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDQ1MjEwREYyNUQ2MUYwMDAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodElu
Zm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUg
LyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDI1MDcwOTI1
ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTExM0UwMkUyMzMxQTEzNDAwOUMzM0EwIC8qIEFwcGxlUGF5Q2FuY2VsRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExREY1QTk0MUY3RUM0MzIwMDU4QTQ3NyAvKiBBcHBsZVBheUNvbnRh
Y3RGaWVsZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTYyMSw2ICszMTYyOCw3IEBACiAJCQkJOTM5
MkYxNEMwQUQxODYxQjAwNjkxQkQ0IC8qIENvdW50ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NkM2OTZDQjFFNzIwNUY3MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDBCMDU1NjgwOUM2NzAwMTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NDkzMTY5MTI1RDdBMUY2MDBBQTY2REUgLyogQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjZFMENFOTIzQTEwMDdF
RjNDRCAvKiBDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzkyOTE3QTE5ODVFRjM5
MDBGNEI2NjEgLyogQ3JlZGVudGlhbEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTI5MTdF
MTk4NzY3OEYwMEY0QjY2MSAvKiBDcmVkZW50aWFsQ29jb2EuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwNGJmOGE1MjMxZDdkNzY4NTYw
MjJjNGI3ODk0Y2FiYWU2ZDRlZmI4Li5mYzhhOTRhMzM3MjA2NWVmMDYwNzc5NWIxN2NiMTY4ZTc1
MTY0OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgog
CisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKQEAgLTUwMiw3ICs1MDMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRp
bWVDaG9vc2VyKERhdGVUaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12
b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdAogewog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYTc4OGI0NWFh
ZDE1ZjM0MGYyZWQwOTlkZDRiY2NmNWE1ZWM5M2MzZS4uMTRjNGE5Mjc3NTFiMDZiNjg0ODk0NWQw
NmNhMjMyODAyMTM1YjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAt
MTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNs
aWVudCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBydW5PcGVuUGFu
ZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4
IGQzMDY5Y2VlMTM3OGVmMGQyNjUwMDRjMjc4MDVjZjdmMWM1YmUzODMuLmE1OWFhNDE2Mzg3Mjhj
ZGMzNGU2NTMxZTIyZTMxNGU1NTNlOWIwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKIAor
I2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8uaCIKICNpbmNsdWRlICJDb250YWN0c1JlcXVl
c3REYXRhLmgiCkBAIC01MTIsOSArNTEzLDkgQEAgdm9pZCBDaHJvbWU6OmRpc3BhdGNoVmlld3Bv
cnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWUKIH0K
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgQ2hyb21lOjp1cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGNvbnN0Cit2
b2lkIENocm9tZTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24mIGluZm8pIGNvbnN0CiB7Ci0gICAgbV9jbGllbnQudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UoV1RGTW92ZShkYXRhKSk7CisgICAgbV9jbGllbnQuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZjgxNjc4NjIyNDlhZmVhNWQxZGFj
ZTg1ZDlkMWY3OTAyMGE4MWM5Ny4uZmI2ZjFjNzk3MGU2MGZmZmEyMzg2ZDVlMGM1YTViMjVkMDEz
MGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFBvcHVwTWVu
dUNsaWVudDsKIGNsYXNzIFBvcHVwT3BlbmluZ09ic2VydmVyOwogY2xhc3MgU2VhcmNoUG9wdXBN
ZW51OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgQ29udGFjdElu
Zm87CiBzdHJ1Y3QgQ29udGFjdHNSZXF1ZXN0RGF0YTsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzOwpAQCAtMTY1LDcgKzE2Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3Q7CisgICAgdm9pZCBzdG9yZUFwcEhp
Z2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0OwogI2VuZGlmCiAK
ICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCBjZjJiM2YwZDlhYmFkMmU3MmVjYWRjN2UxNTNhOWIxNTE2
MzMxYzRkLi41MWIwOTdiNjk4MzQyZmVhNzk2ZTU0YmM5MjllOWQzZDdjM2FlZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTIyLDYgKzIyLDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9y
bWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJ
bmZvLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCkBAIC0zMDQsNyArMzA1LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCA9IDA7CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWRiNGI2OGM0NWQ4YmYwZTY5MDIzODNlMGY4YWEy
NzgzNzY4YTYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
IDogYm9vbCB7IE5vLCBZZXMgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjNTViZGI1NDlh
N2Y3YzU0N2VlMDYxM2JhMDdjMDk1OTI3MjU3ZGVhLi4yMjlmZDVjNzZkMTE0OTYyNzEyMzlhZmRi
NzJlZjNhZDJkYzUxNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTExOSw2ICsxMTksNyBAQAogI2ltcG9ydCAiX1dLVGV4dE1hbmlw
dWxhdGlvblRva2VuLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3Jl
L0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRT
dHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db2xvclNlcmlhbGl6YXRpb24uaD4KQEAgLTE0MjMsMTQgKzE0MjQsMTQgQEAgLSAodm9pZClf
c2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6KGlkIDxfV0tBcHBIaWdobGlnaHREZWxlZ2F0ZT4pZGVs
ZWdhdGUKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLS0gKHZvaWQpX3VwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlOihOU0RhdGEgKilkYXRhCistICh2b2lkKV9zdG9yZUFwcEhpZ2hs
aWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKWhpZ2hsaWdodElu
Zm9ybWF0aW9uCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IHNlbGYuX2FwcEhpZ2hsaWdodERlbGVn
YXRlOwogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp1cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZTopXSkKLSAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgdXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2U6ZGF0YV07CisgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOmhpZ2hsaWdodEluZm9ybWF0aW9uLmhpZ2hs
aWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKQEAgLTIwMzUsMTIgKzIw
MzYsMTggQEAgLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjawogICAgIFtzZWxmIHJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2s6bmlsXTsKIH0KIAotLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdo
dHM6KE5TRGF0YSAqKWRhdGEKKy0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5
PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMKIHsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0g
ICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEpKTsKKyAgICBWZWN0b3I8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGJ1ZmZl
cnM7CisKKyAgICBmb3IgKE5TRGF0YSAqIGhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKSB7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoaGlnaGxpZ2h0
KTsKKyAgICAgICAgYnVmZmVycy5hcHBlbmQoYnVmZmVyKTsKKyAgICB9CisgICAgX3BhZ2UtPnJl
c3RvcmVBcHBIaWdobGlnaHRzKGJ1ZmZlcnMpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7CisgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodHMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgK
aW5kZXggNDA5ZDhhZWQzMzMwMmVkZjlkMWUzZDhlMzk0MjIzYWEzZWRiOWQ3NC4uNjg3N2M2MWE3
N2M2ZjgxNzExMDQzZjY2NTM1NGU3M2NkYjQ4NmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTY3LDYgKzY3
LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0
IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBlbnVt
IGNsYXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlIDogdWludDhfdDsKIH0KQEAgLTI2NSw3ICsy
NjYsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKLS0gKHZvaWQpX3VwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOihO
U0RhdGEgKilkYXRhOworLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6
OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJilpbmZvOwogI2VuZGlmCiAKIC0gKHZvaWQpX2ludGVy
bmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJs
b2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJPT0wpd2l0aG91dFdhaXRpbmdGb3JQYWlu
dGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOihCT09MKXdpdGhvdXRXYWl0aW5n
Rm9yQW5pbWF0ZWRSZXNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5MjYyMzhhZWEwYTE0NzYxMThlNWE2OTA4
NTQ3YWQ3OWMzZjQ1NGQxLi5lNDVjYjFiYmJiZWJhMGIxYTc5NTU2YjhkNDMxMGM3NzgyNTU1YmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEhhc0JsYW5rT3ZlcmxheTopIEJPT0wgX2hhc0Js
YW5rT3ZlcmxheSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBcHBIaWdo
bGlnaHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGlnaHREZWxlZ2F0ZT4gX2FwcEhpZ2hsaWdo
dERlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNEYXRhICopZGF0YSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopZGF0YSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAvKiEgQGFi
c3RyYWN0IFRoZSB0aGVtZSBjb2xvciBvZiB0aGUgYWN0aXZlIHBhZ2UuCiAgQGRpc2N1c3Npb24g
VGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBvciBtb2RpZmll
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudElt
cGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oCmluZGV4IGUzNmU4Y2M0ZTVmNzA3OGEyNDQxMzVjZTJlNmZiN2RhOTBjZGUyMTcuLjM5
ODgwNGE3NmNjMjM1NjY3MTU5NzRkMmY4ZWU0ZmIzZWRmMWIzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYg
KzM4LDggQEAgY2xhc3MgQXR0YWNobWVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzQsNyArNzYsNyBAQCBwdWJsaWM6
CiAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhX
ZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChj
b25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGZpbmFsOwogI2VuZGlmCiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLm1tCmluZGV4IDMzYmJlOTI4NWE4OGY1MmU5MmE0NmQzZDAzODAyYjBl
ZjY5Zjk1NTguLjM1MzI2NjdkZDIwY2IzMzE3YzIyYzhlOTVlNmM4OTI1MDc1ZjAzYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5tbQpAQCAtMTIwLDEwICsxMjAsOSBAQCBOU1NldCAqUGFnZUNsaWVudEltcGxDb2NvYTo6c2Vy
aWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBh
Z2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uICZhcHBIaWdobGlnaHRJbmZvcm1hdGlvbikKIHsKLSAgICBhdXRv
IG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgIFttX3dlYlZpZXcgX3VwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlOm5zRGF0YS5nZXQoKV07CisgICAgW21fd2ViVmlldyBfc3RvcmVB
cHBIaWdobGlnaHQ6YXBwSGlnaGxpZ2h0SW5mb3JtYXRpb25dOwogfQogI2VuZGlmIC8vIEVOQUJM
RShBUFBfSElHSExJR0hUUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBlMTVmMTBjYTIwMTU5MjBhMTQyZTZkZWFjZDYy
MjVkNDY5ZWM4NTA4Li45ZDA4NDRjOGZjOTE0ZDIyYjFjOTM3ZWM5Zjg3M2FkYjdiNWIzZjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRBY3Rpdml0eVN0
YXRlVXBkYXRlQ29tcGxldGlvbkhhbmRsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiB9CiAKICNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5l
d0dyb3VwKQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0
MiwxNCArNTQyLDIzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoY3JlYXRlTmV3R3Jv
dXApKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxp
Z2h0cyhWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiBidWZmZXJzKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CisgICAgVmVjdG9yPFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzOwogCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoZGF0YVJlZmVyZW5jZSkpOworICAgIGZvciAo
YXV0byBidWZmZXIgOiBidWZmZXJzKSB7CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlcik7CisgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKHNoYXJlZE1lbW9yeSkKKyAgICAgICAgICAgIHNoYXJl
ZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkV3JpdGUpOworCisgICAgICAgIG1lbW9yeUhhbmRsZXMuYXBwZW5kKFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXItPnNpemUoKSB9KTsKKyAgICB9CisK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhXVEZNb3Zl
KG1lbW9yeUhhbmRsZXMpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDk4OGI5ZmE4ZTA0NGRlZGMwZTRmMGYwOTYyOWJlYzY4MWQwMDQ0ODQuLjU5
YjIyY2EzYWZmZTY5NjhhY2Q5MDY2ZjlhNWI4NWJhZDIxZDY2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRp
Y2F0b3JXaW5kb3dMaWZldGltZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JX
aW5kb3dEaXNtaXNzYWxBbmltYXRpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9u
Owogc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7
CiBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwpAQCAtMTUxLDYgKzE1Miw3IEBAIGNsYXNzIFdl
YlByb2Nlc3NQcm94eTsKIAogZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sIHsg
Tm8sIFllcyB9OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgRm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwpAQCAtNTc1LDcgKzU3Nyw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
Y2QzYmFjYzIzMDY1OWRjOTdhMTVjM2M1NjFjNDgzNTViZWE5N2Q3MC4uNmFiNjNjOTEzNTEwZDA0
MjZkZmM4NDA3ZTc1NmZmYTJiZjI3NTc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0xNDMsOCArMTQzLDEwIEBACiAjaW5jbHVkZSAiV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcEhp
Z2hsaWdodEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9z
c1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01QYXN0
ZUFjY2Vzcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC02Njg1LDExICs2Njg3LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIH0KICNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9OZXdHcm91cCkgewotICAgICAgICBjcmVhdGVBcHBI
aWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7
CisgICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb0N1
cnJlbnRHcm91cCkgewotICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2Uo
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgY3JlYXRlQXBwSGlnaGxp
Z2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpO
byk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTk4MzksMTEgKzk4NDEsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBPcHRpb25hbDwKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdI
TElHSFRTKQotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9y
ZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYgaW5m
bykKIHsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZGF0YS5idWZmZXIoKSk7CisgICAg
Ly8gTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGluZm8pOworCisgICAgcGFnZUNsaWVudCgpLnN0
b3JlQXBwSGlnaGxpZ2h0KGluZm8pOwogCi0gICAgcGFnZUNsaWVudCgpLnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4YjhlMmM4MWVjOTkw
NmVlNDQ4YjE3MTcuLjhiYWRkNWRkZjA1M2M0ZTVjZDUyMzZjNGIzZjNiMWE5NDdiNmY0MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCi0jaW5j
bHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcgQEAgY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNz
IFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7
CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xh
c3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwogZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0
IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBAQCBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJv
b2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb247CiBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdDsKIHN0cnVjdCBBdHRyaWJ1
dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CkBAIC0zNzQsNyAr
Mzc1LDYgQEAgc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFVzZXJNZXNzYWdlOwogCi1lbnVtIGNsYXNzIENyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2Fj
eVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBi
b29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKQEAgLTE4MjYsOSArMTgyNiw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN5bmNJZk1vY2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIAog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7Ci0gICAgdm9pZCB1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKLSAg
ICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHJl
c3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIGRh
dGEpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ5MTliYzk4OGU5
YzVmY2E3MmZmYzhjMjFhM2ZjMTQzMGIyOGMwNWEuLjY0N2JhYzAzOWI4ODgwMDY1M2VkOThlMjRi
NTY0ZWNiYjA0OGMyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTUzNSw3ICs1MzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgVXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpCisgICAgU3Rv
cmVBcHBIaWdobGlnaHQoc3RydWN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uIGlu
Zm8pCiAjZW5kaWYKIAogICAgIFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIFN0cmluZyBjaGFsbGVuZ2VTdHJpbmcsIFVSTCB1cmwpIC0+IChT
dHJpbmcgcmVzdWx0KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggY2VjODdjNThmMDEx
Y2E3ZGE0OTkzY2YxNTNjMWQ2ZmU3MjQ1YTRiOC4uZWM4ZjBjMGQwZjBmODQzMjA2N2JjZDUzZTAw
NjkyODYyZDc4YTJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBv
cnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
LmgiCi0jaW1wb3J0ICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgorCiAjaW1wb3J0ICJE
b2N1bWVudEVkaXRpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZlcnJl
ci5oIgogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKQEAgLTk3LDYgKzk3LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxp
emF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRRdWFkLmg+CkBAIC04OTc1LDEyICs4OTc2LDEyIEBAIC0g
KHZvaWQpc2V0VXBBcHBIaWdobGlnaHRNZW51cwogCiAtICh2b2lkKWNyZWF0ZUhpZ2hsaWdodElu
Q3VycmVudEdyb3VwV2l0aFJhbmdlOihpZClzZW5kZXIKIHsKLSAgICBfcGFnZS0+Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQ6Ok5vKTsKKyAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdl
YkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyk7CiB9CiAKIC0gKHZvaWQpY3Jl
YXRlSGlnaGxpZ2h0SW5OZXdHcm91cFdpdGhSYW5nZTooaWQpc2VuZGVyCiB7Ci0gICAgX3BhZ2Ut
PmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJLaXQ6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0OjpZZXMpOworICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMWU2ZWIwOGE5Y2RiM2QwMDAwNjAxM2RiNTg2NTI5MmFlY2U1MjZjYS4uMGIzZTQ4
NzQ5Y2U5N2FkMDUxYTlhYzc3YmNiNjU4OWY1YWUyNzMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkyMCwxMiArMTE5MjAsNiBA
QAogCQkJCUNEQUMyMEI0MjNGQjU4RjIwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREFDMjBDQTIzRkMyRjc1MDAyMURFRTMgLyogUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREFDMjBDOTIzRkMyRjc1
MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMUQ0NzY1QTEyNUNGNTc0MDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTlDMjVDRTc0QUQwMDdBRjMx
MiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAotCQkJCTFENDc2NTlEMjVDRTc0QUQwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU4NjI1Q0NB
NDE2MDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaCBpbiBIZWFkZXJzICov
LAotCQkJCTFENDc2NTkzMjVDQ0NFOTMwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5NDI1Q0NDRTkzMDA3QUYz
MTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBjMDlhMjdiN2U3ZjUzZmI0NDI0
NDQ3MWE2ZDZiNzRmY2UwNWQ0M2EwLi40NDk4NzRhM2MwY2NlZjczZjcxMWQxNzQzNDFiYTg5MmIy
YzFiYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTI0NCwxMCArMTI0NCw5IEBAIGJv
b2wgV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB3cmFwcGVkS2V5LCBWZWN0b3I8CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGNvbnN0Cit2b2lkIFdlYkNocm9tZUNsaWVu
dDo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24mIGluZm8pIGNvbnN0CiB7Ci0gICAgYXV0byBidWZmZXIgPSBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoZGF0YSk7Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoYnVmZmVyKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RvcmVBcHBIaWdobGlnaHQoaW5mbykpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAppbmRleCAwMTRiZGNmMzkzNjVmYmI3YWQ3MDkzZWNjODRjMDlkYzI3MGQw
YjRmLi44OWRkZWNmZWYzMTIwYTRlMjIxMDI2ZGQ0Y2U1NWNmNWY5MDJmYmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUF1
dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1
dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQot
ICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBX
ZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNzYzYmNhYjg2OTYyYzc5YjY3MmZjMzMzMTIzYzcxNGVjMmNl
MTM2Ni4uMDQ4ZmQxZTczOGJhZDQyYmY5MzhmZWIyYTc2MjRlZTdiYzUzNGY4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcyNTAsNyArNzI1
MCw3IEBAIHZvaWQgV2ViUGFnZTo6cmV2b2tlU2FuZGJveEV4dGVuc2lvbnMoVmVjdG9yPFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPj4mIHNhbmRib3hFCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi1ib29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKK2Jvb2wgV2ViUGFnZTo6
Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtl
UmVmUHRyKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9j
dW1lbnQoKSk7CiAKQEAgLTcyNjMsMTYgKzcyNjMsMTkgQEAgYm9vbCBXZWJQYWdlOjpjcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3Jl
YXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJl
Z2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoc2VsZWN0aW9uUmFu
Z2UudmFsdWUoKSkpOwotICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkudXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKTsKKyAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoc2VsZWN0aW9uUmFuZ2Uu
dmFsdWUoKSksIGNyZWF0ZU5ld0dyb3VwKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSkKK3ZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzKQogewogICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCkuZG9jdW1lbnQoKSk7CiAKLSAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgp
LnJlc3RvcmVBcHBIaWdobGlnaHRzKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkpOworICAgIGZvciAoY29uc3QgYXV0byYgaXBjSGFuZGxlIDogbWVtb3J5SGFu
ZGxlcykgeworICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlw
Y0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAg
ICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBcHBIaWdobGlnaHQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihzaGFyZWRNZW1v
cnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSk7CisgICAgfQogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlYjUyNDg5
MDI4MTUwMjZhNDdiYTlkOGM1MGM3YzhmY2I0NWUxOWUwLi5lNGZjOWNjYzA2MTA2YzRlMGY2ZjQz
Nzc1OTA4ODZkNDZhZTg5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hp
bGRGcmFtZXMuaCIKLSNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFJbmZvLmgiCkBAIC0yMDQsNiArMjAzLDcgQEAgY2xhc3MgVGV4dENoZWNr
aW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlj
a1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDog
Ym9vbDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIERyYWdBcHBsaWNhdGlvbkZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0hh
bmRsaW5nTWV0aG9kIDogdWludDhfdDsKQEAgLTEzOTYsOCArMTM5Niw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIGJvb2wgY3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKLSAgICB2
b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAg
IGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0KTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0
IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4pOwogI2VuZGlmCiAKICAgICB2b2lkIGRp
c3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOGNmY2M0OWNmNmYz
ODA3NmFmOWMzMjMxOTNhZDM3NTM0OGE0NDhmMC4uODI3MzExNmU4MzMxNzgyNzIwYWJkMWVkNjU3
YWFmMjIzMmU3YmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02MjQsOCArNjI0LDggQEAgR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUKICAgICBTZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZSkK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBDcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
Y3JlYXRlTmV3R3JvdXApCi0gICAgUmVzdG9yZUFwcEhpZ2hsaWdodHMoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJh
bmdlKGVudW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVO
ZXdHcm91cCkKKyAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhWZWN0b3I8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKICNlbmRpZgogCiAgICAgRGlzcGF0Y2hX
aGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+
IChib29sIGhhbmRsZWQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDFhNjZjZTlkZmY4MWFi
OTJlMmU3YThlYmY1YWM4MDlhOWJkOWQyZDIuLjdjZmYxZGQyNTNlMmJkOGFmOGY5OGZlZGNkMGRk
NzIzMmQzYTIxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDg2YWZhMGU5ZDM3YWNmZTNlZDM0Y2Mw
NGMyZjAwNGYxZTVkZWNlZDUuLjcyNWNiNTBmMDkwODJkZjYyOWNlOWM1N2QzN2U3ZDEyMDczOGRh
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTc0NSw3ICs3NDUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RGF0ZVRpbWVDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGVUaW1lQ2hvb3Nl
cihEYXRlVGltZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdl
YkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgY29uc3QKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hs
aWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9
CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420322</attachid>
            <date>2021-02-15 09:21:03 -0800</date>
            <delta_ts>2021-02-15 10:34:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210215092102.patch</filename>
            <type>text/plain</type>
            <size>76250</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uNTY4N2Y5ZjQ3YzkwMmJmYmIxNTViMzNmNDFkYzcw
OTk3Y2FmOTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGRh
dGEgcGF0aCBmb3IgQXBwIEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFsIGRhdGEgbmVlZGVkIGZv
ciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGluZm9ybWF0aW9uIHRvIGJl
IGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0TGlzdERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaC4KKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGln
aHRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxp
Z2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAyMS0wMi0x
MSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV0dXJuaW5nIHNS
R0IgZnJvbSBDRyBjb2xvciBzcGFjZSBmdW5jdGlvbnMgb24gZmFpbHVyZSBpcyB0b28gZXJyb3Ig
cHJvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzRjYTkwOWM3YjNhNjE1YjhiNTQ1NTNiNzI2ZDlkNmJjMDE4OGQx
NS4uODBkYjJhM2Y1ZWQ4Nzk5YzkzOTM1ZWFjOTI4OWRjMzQzZDgzOWYzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAyMS0wMi0xMiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBkYXRhIHBhdGggZm9yIEFwcCBIaWdobGlnaHRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQaXBlIHRo
cm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxheSwgYW5kIHVwZGF0ZSB0byBh
bGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBtb3JlIGVhc2lseS4KKworICAg
ICAgICAqIFNoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVIaWdobGln
aHRJbkN1cnJlbnRHcm91cFdpdGhSYW5nZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
cmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY09TXSBFbmFibGUgQXVkaW8gQ2FwdHVyZSBpbiBHUFVQcm9j
ZXNzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhN2UyNjE1NTdl
ODA3MzVhNzMzNTQ0OTJmN2Q4NGU3NWUwNjgwNDA1Li4wY2MyZTM2MmZjZTJhNjUxNTFhYTQ0OWE4
MDBiZWExNzI5OGY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgZGF0YSBwYXRoIGZvciBBcHAgSGlnaGxpZ2h0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNjAwNTZkMTFhODc4ZWY1MWMzYmZiOWE3N2EyMWEzZWFk
MzdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpbmNsdWRlICJD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uIHsKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBo
aWdobGlnaHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uPiBkZWNvZGUoRGVjb2RlciYp
OworCit9OworCisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFwcEhpZ2hsaWdodElu
Zm9ybWF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkpOworICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhp
Z2hsaWdodC0+ZGF0YUFzVUludDhQdHIoKSksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKworICAg
IGVuY29kZXIgPDwgISF0ZXh0OworICAgIGlmICh0ZXh0KQorICAgICAgICBlbmNvZGVyIDw8IHRl
eHQ7CisKKyAgICBlbmNvZGVyIDw8IGlzTmV3R3JvdXA7CisKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uPiBBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisKKyAgICBPcHRpb25hbDxz
aXplX3Q+IGxlbmd0aDsKKyAgICBkZWNvZGVyID4+IGxlbmd0aDsKKyAgICBpZiAoIWxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci50ZW1wbGF0
ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGxlbmd0aC52YWx1ZSgpKSkg
eworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGhpZ2hsaWdodDsKKyAgICBoaWdo
bGlnaHQuZ3JvdygqbGVuZ3RoKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKGhpZ2hsaWdodC5kYXRhKCksIGhpZ2hsaWdodC5zaXplKCksIDEpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIGJvb2wg
aGFzT2JqZWN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoaGFzT2JqZWN0KSB7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodGV4dCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIH0KKworICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpc05ld0dyb3VwKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGhpZ2hs
aWdodCkpLCBXVEZNb3ZlKHRleHQpLCBpc05ld0dyb3VwIH19OworfQorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI1NGQ1OWJiMzVkZGExNGM2Y2ZkZDhiN2ZkZTQ0ODYwNWY0MGI5NGIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBcHBIaWdobGlnaHRMaXN0RGF0YS5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQu
aCIKLSNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJIVE1M
Qm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUmVuZGVyZWREb2N1
bWVudE1hcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlNpbXBs
ZVJhbmdlLmgiCi0jaW5jbHVkZSAiU3RhdGljUmFuZ2UuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKLSNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0KLUFwcEhp
Z2hsaWdodExpc3REYXRhIEFwcEhpZ2hsaWdodExpc3REYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCi17Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
LSAgICBPcHRpb25hbDxBcHBIaWdobGlnaHRMaXN0RGF0YT4gZGF0YTsKLSAgICBkZWNvZGVyID4+
IGRhdGE7Ci0gICAgcmV0dXJuIGRhdGEgPyAqZGF0YSA6IEFwcEhpZ2hsaWdodExpc3REYXRhIHt7
IH19OwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRMaXN0RGF0YTo6dG9TaGFy
ZWRCdWZmZXIoKSBjb25zdAotewotICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2Rl
cjsKLSAgICBlbmNvZGVyIDw8ICp0aGlzOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7Ci19Ci0KLSNlbmRpZgot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTEzYjIxNGRiOTc4OTIwOTQ0Y2RkYjFmYjBlYTE2NWQ3ZGE2Y2UxYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0KLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLQotY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKLXB1YmxpYzoKLSAgICBz
dHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQgewotICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKLSAg
ICAgICAgU3RyaW5nIG5vZGVOYW1lOwotICAgICAgICBTdHJpbmcgdGV4dERhdGE7Ci0gICAgICAg
IHVuc2lnbmVkIHBhdGhJbmRleCB7IDAgfTsKLQotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChT
dHJpbmcmJiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwg
dW5zaWduZWQgaW5kZXgpCi0gICAgICAgICAgICA6IGlkZW50aWZpZXIoV1RGTW92ZShlbGVtZW50
SWRlbnRpZmllcikpCi0gICAgICAgICAgICAsIG5vZGVOYW1lKFdURk1vdmUobmFtZSkpCi0gICAg
ICAgICAgICAsIHRleHREYXRhKFdURk1vdmUoZGF0YSkpCi0gICAgICAgICAgICAsIHBhdGhJbmRl
eChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgTm9kZVBhdGhDb21wb25l
bnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQotICAgICAgICAgICAgOiBpZGVudGlm
aWVyKGVsZW1lbnRJZGVudGlmaWVyKQotICAgICAgICAgICAgLCBub2RlTmFtZShuYW1lKQotICAg
ICAgICAgICAgLCB0ZXh0RGF0YShkYXRhKQotICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBO
b2RlUGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBpZGVudGlmaWVyID09IG90aGVyLmlkZW50aWZpZXIgJiYgbm9kZU5hbWUgPT0gb3RoZXIu
bm9kZU5hbWUgJiYgdGV4dERhdGEgPT0gb3RoZXIudGV4dERhdGEgJiYgcGF0aEluZGV4ID09IG90
aGVyLnBhdGhJbmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBOb2RlUGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE5vZGVQYXRoQ29tcG9uZW50PiBk
ZWNvZGUoRGVjb2RlciYpOwotICAgIH07Ci0KLSAgICB1c2luZyBOb2RlUGF0aCA9IFZlY3RvcjxO
b2RlUGF0aENvbXBvbmVudD47Ci0KLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhJikgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoU3RyaW5nJiYgdGV4dCwg
Tm9kZVBhdGgmJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE5vZGVQYXRo
JiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogbV90ZXh0KFdU
Rk1vdmUodGV4dCkpCi0gICAgICAgICwgbV9zdGFydENvbnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29u
dGFpbmVyKSkKLSAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAs
IG1fZW5kQ29udGFpbmVyKFdURk1vdmUoZW5kQ29udGFpbmVyKSkKLSAgICAgICAgLCBtX2VuZE9m
ZnNldChlbmRPZmZzZXQpCi0gICAgewotICAgIH0KLQotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQodGV4dCkKLSAgICAgICAgLCBtX3N0YXJ0Q29u
dGFpbmVyKHN0YXJ0Q29udGFpbmVyKQotICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZz
ZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29udGFpbmVyKQotICAgICAgICAsIG1f
ZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiB0
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIHN0YXJ0
Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbnRhaW5lcjsgfQotICAgIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQotICAgIGNv
bnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2VuZENvbnRhaW5l
cjsgfQotICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0
OyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcEhp
Z2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKLQotcHJpdmF0ZToKLSAgICBTdHJp
bmcgbV90ZXh0OwotICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7Ci0gICAgdW5zaWduZWQg
bV9zdGFydE9mZnNldCB7IDAgfTsKLSAgICBOb2RlUGF0aCBtX2VuZENvbnRhaW5lcjsKLSAgICB1
bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKLX07Ci0KLWNsYXNzIEFwcEhpZ2hsaWdodExpc3RE
YXRhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgQXBwSGlnaGxpZ2h0TGlzdERhdGEgY3JlYXRlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotCi0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEoY29uc3QgQXBwSGlnaGxpZ2h0TGlz
dERhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEoKSA9IGRlZmF1bHQ7
Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEoVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4m
JiBhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICA6IG1fYW5ub3RhdGlvblJhbmdlcyhXVEZNb3Zl
KGFubm90YXRpb25SYW5nZXMpKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBWZWN0b3I8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiYgcmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hbm5vdGF0aW9u
UmFuZ2VzOyB9Ci0gICAgdm9pZCBzZXRSYW5nZXMoVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4mJiByYW5nZXMpIHsgbV9hbm5vdGF0aW9uUmFuZ2VzID0gV1RGTW92ZShyYW5nZXMpOyB9Ci0g
ICAgdm9pZCBhZGRSYW5nZXMoVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4mJiByYW5nZXMp
IHsgbV9hbm5vdGF0aW9uUmFuZ2VzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKHJhbmdlcykpOyB9Ci0K
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXMuc2l6ZSgpOyB9Ci0g
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9hbm5vdGF0aW9uUmFuZ2VzLmlzRW1w
dHkoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxB
cHBIaWdobGlnaHRMaXN0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKLQotcHJpdmF0ZToKLQotICAg
IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IG1fYW5ub3RhdGlvblJhbmdlczsKLX07Ci0K
LXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2Rl
UGF0aENvbXBvbmVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwgbm9kZU5hbWU7Ci0gICAgZW5jb2Rl
ciA8PCB0ZXh0RGF0YTsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYXRo
SW5kZXgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5v
ZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25h
bDxTdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwotICAgIGlm
ICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlv
bmFsPFN0cmluZz4gbm9kZU5hbWU7Ci0gICAgZGVjb2RlciA+PiBub2RlTmFtZTsKLSAgICBpZiAo
IW5vZGVOYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
U3RyaW5nPiB0ZXh0RGF0YTsKLSAgICBkZWNvZGVyID4+IHRleHREYXRhOwotICAgIGlmICghdGV4
dERhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gcGF0aEluZGV4OwotICAgIGRlY29kZXIgPj4gcGF0aEluZGV4OwotICAgIGlmICghcGF0
aEluZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2RlTmFtZSksIFdURk1vdmUoKnRleHREYXRh
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpwYXRoSW5kZXgpIH19OwotfQotCi10ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX3RleHQ7Ci0gICAgZW5jb2RlciA8
PCBtX3N0YXJ0Q29udGFpbmVyOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG1fc3RhcnRPZmZzZXQpOwotICAgIGVuY29kZXIgPDwgbV9lbmRDb250YWluZXI7Ci0gICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9lbmRPZmZzZXQpOwotfQotCi10ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwotICAgIGRlY29kZXIgPj4gdGV4dDsKLSAgICBpZiAoIXRleHQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxOb2RlUGF0aD4gc3RhcnRD
b250YWluZXI7Ci0gICAgZGVjb2RlciA+PiBzdGFydENvbnRhaW5lcjsKLSAgICBpZiAoIXN0YXJ0
Q29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHN0YXJ0T2Zmc2V0OwotICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7Ci0gICAg
aWYgKCFzdGFydE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7Ci0gICAgZGVjb2RlciA+PiBlbmRDb250YWlu
ZXI7Ci0gICAgaWYgKCFlbmRDb250YWluZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZW5kT2Zmc2V0OwotICAgIGRlY29kZXIgPj4gZW5k
T2Zmc2V0OwotICAgIGlmICghZW5kT2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0KLSAgICByZXR1cm4ge3sKLSAgICAgICAgV1RGTW92ZSgqdGV4dCksCi0gICAgICAgIFdU
Rk1vdmUoKnN0YXJ0Q29udGFpbmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpz
dGFydE9mZnNldCksCi0gICAgICAgIFdURk1vdmUoKmVuZENvbnRhaW5lciksCi0gICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigqZW5kT2Zmc2V0KSwKLSAgICB9fTsKLX0KLQotdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRMaXN0RGF0YTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2Fubm90YXRpb25SYW5nZXM7Ci19
Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRh
PiBBcHBIaWdobGlnaHRMaXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
T3B0aW9uYWw8VmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4+IGFubm90YXRpb25SYW5nZXM7
Ci0gICAgZGVjb2RlciA+PiBhbm5vdGF0aW9uUmFuZ2VzOwotICAgIGlmICghYW5ub3RhdGlvblJh
bmdlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyBXVEZN
b3ZlKCphbm5vdGF0aW9uUmFuZ2VzKSB9fTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyOGI5MTQyMTFhNDg0ZTY0
NjY2ZDliZDdlMmQxZjY0MTdkZDM4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC0wLDAgKzEs
MTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCisjaW5j
bHVkZSAiU3RhdGljUmFuZ2UuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKK09wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit7CisgICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAg
ICBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CisgICAgZGVjb2RlciA+PiBk
YXRhOworICAgIHJldHVybiBkYXRhOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK3sKKyAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCAqdGhpczsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXpl
KCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8IG5vZGVOYW1lOwor
ICAgIGVuY29kZXIgPDwgdGV4dERhdGE7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocGF0aEluZGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudD4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cjsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxTdHJpbmc+IG5vZGVOYW1lOworICAgIGRlY29kZXIgPj4gbm9kZU5hbWU7
CisgICAgaWYgKCFub2RlTmFtZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPFN0cmluZz4gdGV4dERhdGE7CisgICAgZGVjb2RlciA+PiB0ZXh0RGF0YTsKKyAg
ICBpZiAoIXRleHREYXRhKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhdGhJbmRleDsKKyAgICBkZWNvZGVyID4+IHBhdGhJbmRleDsKKyAg
ICBpZiAoIXBhdGhJbmRleCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqbm9kZU5hbWUpLCBXVEZNb3Zl
KCp0ZXh0RGF0YSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqcGF0aEluZGV4KSB9fTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV90ZXh0OworICAg
IGVuY29kZXIgPDwgbV9zdGFydENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX3N0YXJ0T2Zmc2V0KTsKKyAgICBlbmNvZGVyIDw8IG1fZW5kQ29udGFpbmVy
OworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fZW5kT2Zmc2V0KTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBkZWNvZGVyID4+IHRleHQ7CisgICAgaWYgKCF0
ZXh0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Tm9kZVBh
dGg+IHN0YXJ0Q29udGFpbmVyOworICAgIGRlY29kZXIgPj4gc3RhcnRDb250YWluZXI7CisgICAg
aWYgKCFzdGFydENvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydE9mZnNldDsKKyAgICBkZWNvZGVyID4+IHN0YXJ0T2Zm
c2V0OworICAgIGlmICghc3RhcnRPZmZzZXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBPcHRpb25hbDxOb2RlUGF0aD4gZW5kQ29udGFpbmVyOworICAgIGRlY29kZXIgPj4g
ZW5kQ29udGFpbmVyOworICAgIGlmICghZW5kQ29udGFpbmVyKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+IGVuZE9mZnNldDsKKyAgICBkZWNv
ZGVyID4+IGVuZE9mZnNldDsKKyAgICBpZiAoIWVuZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworCisgICAgcmV0dXJuIHt7CisgICAgICAgIFdURk1vdmUoKnRleHQpLAor
ICAgICAgICBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksCisgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPigqc3RhcnRPZmZzZXQpLAorICAgICAgICBXVEZNb3ZlKCplbmRDb250YWluZXIpLAor
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKmVuZE9mZnNldCksCisgICAgfX07Cit9CisK
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjExNGNkY2E3NDE0NWQ1YjI3ZjUxM2Q3MzUxOTM1YTI5MmEyNDdmYjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKworY2xh
c3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEgeworV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CisgICAgICAgIFN0cmluZyBpZGVudGlm
aWVyOworICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CisgICAgICAgIFN0cmluZyB0ZXh0RGF0YTsK
KyAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OworCisgICAgICAgIE5vZGVQYXRoQ29t
cG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcm
JiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogaWRlbnRpZmllcihXVEZNb3Zl
KGVsZW1lbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICwgbm9kZU5hbWUoV1RGTW92ZShuYW1l
KSkKKyAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAgICAgICAgICwg
cGF0aEluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBOb2RlUGF0
aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCisgICAgICAgICAgICA6
IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCisgICAgICAgICAgICAsIG5vZGVOYW1lKG5h
bWUpCisgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCisgICAgICAgICAgICAsIHBhdGhJbmRl
eChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllciAmJiBub2RlTmFtZSA9
PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0RGF0YSAmJiBwYXRoSW5k
ZXggPT0gb3RoZXIucGF0aEluZGV4OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAgICB9CisKKyAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm9kZVBhdGhDb21w
b25lbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHVzaW5nIE5vZGVQYXRoID0g
VmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKKworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShj
b25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7CisgICAgQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcm
JiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
Tm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBt
X3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKFdURk1vdmUo
c3RhcnRDb250YWluZXIpKQorICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisg
ICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQorICAgICAgICAs
IG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7CisgICAgfQorCisgICAgQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFp
bmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lciwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1fdGV4dCh0ZXh0KQorICAgICAgICAsIG1f
c3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCisgICAgICAgICwgbV9zdGFydE9mZnNldChz
dGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRDb250YWluZXIpCisgICAg
ICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBT
dHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBjb25zdCBOb2RlUGF0
aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29udGFpbmVyOyB9Cisg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9
CisgICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fZW5k
Q29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9l
bmRPZmZzZXQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCisgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTdHJp
bmcgbV90ZXh0OworICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7CisgICAgdW5zaWduZWQg
bV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICBOb2RlUGF0aCBtX2VuZENvbnRhaW5lcjsKKyAgICB1
bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKK307CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGMzYjhiYjc3YzBjNGY0ZTVjOTk4NzE3OTIz
OTJlM2RkZDhkMTkxODYuLmFjMzBmMWEyMTRjYTNiYWY5ZWE4ZmViMGQ0MWUzOWRiYTcyOTdiYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKIAotI2luY2x1ZGUgIkFwcEhpZ2hs
aWdodExpc3REYXRhLmgiCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKKyNp
bmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNp
bmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRN
TEJvZHlFbGVtZW50LmgiCkBAIC00MCw2ICs0Miw4IEBACiAjaW5jbHVkZSAiU3RhdGljUmFuZ2Uu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKIAorI2RlZmluZSBURVhUX1BSRVZJRVdfTEVO
R1RIIDEwMAorCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTk2LDggKzIwMCwxMCBAQCBz
dGF0aWMgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aCBtYWtlTm9kZVBhdGgoUmVmUHRy
PE5vZGU+JiYgbm9kZSkKIAogc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSBjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RhdGljUmFuZ2UmIHJhbmdlKQogeworICAgIGF1dG8g
dGV4dCA9IHBsYWluVGV4dChyYW5nZSk7CisgICAgdGV4dC50cnVuY2F0ZShURVhUX1BSRVZJRVdf
TEVOR1RIKTsKICAgICByZXR1cm4gewotICAgICAgICBwbGFpblRleHQocmFuZ2UpLAorICAgICAg
ICB0ZXh0LAogICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpLAog
ICAgICAgICByYW5nZS5zdGFydE9mZnNldCgpLAogICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdl
LmVuZENvbnRhaW5lcigpKSwKQEAgLTIxMCw0OCArMjE2LDM1IEBAIEFwcEhpZ2hsaWdodFN0b3Jh
Z2U6OkFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCi12b2lk
IEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCkKK3ZvaWQg
QXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2UmIHJhbmdl
LCBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwKQogewotICAgIFZlY3RvcjxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CisgICAgYXV0byBkYXRhID0gY3JlYXRlQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhKHJhbmdlKTsKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAKLSAg
ICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRhdGEudGV4dCgp
LmlzRW1wdHkoKSkKKyAgICAgICAgdGV4dCA9IGRhdGEudGV4dCgpOwogCi0gICAgaWYgKCFtX2Rv
Y3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBcHBIaWdobGlnaHRJbmZvcm1h
dGlvbiBpbmZvID0ge2RhdGEudG9TaGFyZWRCdWZmZXIoKSwgdGV4dCwgaXNOZXdHcm91cH07CiAK
LSAgICBpZiAoYXV0byBhcHBIaWdobGlnaHRSZWdpc3RlciA9IG1fZG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFJlZ2lzdGVySWZFeGlzdHMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6
IGFwcEhpZ2hsaWdodFJlZ2lzdGVyLT5tYXAoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBy
YW5nZURhdGEgOiBoaWdobGlnaHQudmFsdWUtPnJhbmdlc0RhdGEoKSkKLSAgICAgICAgICAgICAg
ICBkYXRhLmFwcGVuZChjcmVhdGVBcHBIaWdobGlnaHRSYW5nZURhdGEocmFuZ2VEYXRhLT5yYW5n
ZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIEFwcEhpZ2hsaWdodExpc3REYXRhIGxpc3REYXRh
IHsgV1RGTW92ZShkYXRhKSB9OwotCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS51
cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShsaXN0RGF0YS50b1NoYXJlZEJ1ZmZlcigpKTsKKyAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KGluZm8pOwog
fQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorYm9vbCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3Jl
QXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGF1dG8gYXBw
SGlnaGxpZ2h0TGlzdERhdGEgPSBBcHBIaWdobGlnaHRMaXN0RGF0YTo6Y3JlYXRlKGJ1ZmZlcik7
Ci0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gdW5yZXN0b3JlZFJhbmdlczsKLSAg
ICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiByZXN0b3JlZFJhbmdlczsKKyAgICBhdXRv
IHN0cm9uZ0RvY3VtZW50ID0gbV9kb2N1bWVudC5nZXQoKTsKIAogICAgIGlmICghbV9kb2N1bWVu
dCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0
cm9uZ0RvY3VtZW50ID0gbV9kb2N1bWVudC5nZXQoKTsKKyAgICBhdXRvIGFwcEhpZ2hsaWdodFJh
bmdlRGF0YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CisgICAgaWYg
KCFhcHBIaWdobGlnaHRSYW5nZURhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZv
ciAoYXV0byYgYXBwSGlnaGxpZ2h0TGlzdERhdGEgOiBhcHBIaWdobGlnaHRMaXN0RGF0YS5yYW5n
ZXMoKSkgewotICAgICAgICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKGFwcEhpZ2hsaWdodExpc3RE
YXRhLCAqc3Ryb25nRG9jdW1lbnQpOwotICAgICAgICBpZiAoIXJhbmdlKSB7Ci0gICAgICAgICAg
ICB1bnJlc3RvcmVkUmFuZ2VzLmFwcGVuZChhcHBIaWdobGlnaHRMaXN0RGF0YSk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoKmFw
cEhpZ2hsaWdodFJhbmdlRGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKIAotICAgICAgICByZXN0b3Jl
ZFJhbmdlcy5hcHBlbmQoYXBwSGlnaGxpZ2h0TGlzdERhdGEpOwotICAgICAgICBzdHJvbmdEb2N1
bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6
OmNyZWF0ZSgqcmFuZ2UpKTsKLSAgICB9CisgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdo
dFJlZ2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggOGI2MDc1
YWQ2NDAyNDI5Y2VkYzRiZTkyNmY2Y2RhMDllNDQzYmM5OS4uOGNhMDI1NDZiMzJiZTAwYjQ2YTY2
NTlmMzkwOTg1NjE2NmE3NzQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzYsMTggKzM2LDIwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotY2xhc3Mg
QXBwSGlnaGxpZ2h0TGlzdERhdGE7CiBjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGE7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEhpZ2hsaWdodDsKKworZW51
bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2w7CiAKIGNsYXNzIEFwcEhp
Z2hsaWdodFN0b3JhZ2UgOiBSZWZDb3VudGVkPEFwcEhpZ2hsaWdodFN0b3JhZ2U+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcHBIaWdobGlnaHRTdG9yYWdl
KERvY3VtZW50Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdo
dHNTdG9yYWdlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0
cyhSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3JlQXBw
SGlnaGxpZ2h0KFN0YXRpY1JhbmdlJiAsIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3
R3JvdXApOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkxOWMyYzdmNjcy
YmUxZmE2N2Q1ZTk2YTQwYzM0ZmU5YjIxNDlmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsg
Tm8sIFllcyB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcAppbmRleCA2OGVk
MjdmZGIzZjc0ZTBiMWE5MzlmNTgxZmU3MjM4NjM3MGZmY2Q5Li4xNGQwMzJjOTdlNWE2MTVlNmZj
OWM1NmU3NDk2ZmQ3M2MwNWU3ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3BwCkBAIC02NSw1ICs2NSw2IEBAIHZv
aWQgSGlnaGxpZ2h0UmVnaXN0ZXI6OmFkZEFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYg
dmFsdWUpCiAgICAgZWxzZQogICAgICAgICBzZXRGcm9tTWFwTGlrZShhcHBIaWdobGlnaHRLZXko
KSwgSGlnaGxpZ2h0OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpKTsKIH0KKwogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4MzA5MmY0NjIu
LjA1YmI1ZTg3YTQzMmRlOGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC02NCw3ICs2NCw3IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCiBN
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24v
TmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRM
aXN0RGF0YS5jcHAKK01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAK
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyZTNiYTJkOGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBiLi4zODgxYjZh
NzAzOWRhNGEyN2Y5ODY1NjhiMDdhM2YxYWU1NzMxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYgKzEyMjMsNyBA
QAogCQk0NDI1MDcwOTI1ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyNTA3MDcyNTgy
OUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNFMDA0NkQ0MDEg
LyogSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQyNTc1QThBNTAw
NDZENDAxIC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyogSGlnaGxpZ2h0
UmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTIxMERE
MjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NTc3NUU1MjA0NzJGNzMw
MDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDU3NzVFNDIwNDcyRjczMDA4RENFNUQg
LyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NjNDRjY4MjIxMkZBNjgwMDFBODU3NyAvKiBE
YXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2NjY2RCAvKiBT
ZWxlY3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIz
MSwxMiArMTIzMiwxMyBAQAogCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29u
dGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0OEEyOUJGMEE0NkQ5
Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8q
IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXpl
QWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ0OTMxNjkxMjVE
N0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5MzE2OTAyNUQ3QTFFRjAwQUE2
NkRFIC8qIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ5NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8q
IEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlDMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmggKi87IH07CiAJCTQ0OTZFM0EwMTM5ODEzQTUwMDNFRTMyQSAvKiBK
U1NWR01QYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDQ5NkUzOUYxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50Lmgg
Ki87IH07CiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTIw
REI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFD
MDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwotCQk0
NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVBMjU3OUNGRkIw
MEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oICovOyB9OworCQk0NEFFMDQ1QzI1NzlD
RkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyog
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUwMDU4NjY3
MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1l
SU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxOUQwRjNE
MjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2RjRFMTkwMDY4
NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyogTGliV2ViUlRD
RW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC04MTE3LDYgKzgxMTksNyBAQAogCQk0NDM3QzRBOTI0RTJBRTVGMDAwOTUxMjggLyog
TGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlMb2FkRnJh
bWVPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0M0YwNDI2MEU3
NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyog
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1Nzc1RTQyMDQ3MkY3MzAw
OERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFy
YW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAvKiBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMjksNiArODEzMiw3IEBA
CiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhCMUI3ODBGM0Ey
RjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRTaXplQWRqdXN0bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0OTMxNjkwMjVEN0ExRUYwMEFBNjZE
RSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVhdGVO
ZXdHcm91cEZvckhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDk2
RTM5QjEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5NkUzOUMxMzk4MTM2QzAw
M0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDk2RTM5RjEzOTgxM0E1MDAzRUUzMkEgLyogSlNTVkdNUGF0aEVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdNUGF0aEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzYsOCArODE0MCw4IEBACiAJ
CTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBN
YXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBN
YXRoTUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRo
TUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKLQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3RE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRBRTA0NUEyNTc5Q0ZGQjAw
QzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0NUEyNTc5Q0ZG
QjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjkyNTM2OUE4ODAwQTQ0NThE
IC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFsRXZlbnRIYW5kbGVycytTZWxl
Y3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MzYsMTAgKzE5ODQwLDEyIEBACiAJCTQ0RTg4
RTQ3MjM2OERGMEYwMDlCNDg0NyAvKiBoaWdobGlnaHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBI
aWdobGlnaHRMaXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8sCisJCQkJNDQ1MjEwREQyNUQ2MUVGRjAwM0EyRUQ4
IC8qIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8sCisJCQkJNDRBRTA0NTgyNTc5Q0ZGQjAw
QzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8sCisJCQkJNDRBRTA0NUEyNTc5
Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovLAogCQkJCTQ0MjUwNzA2
MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmNwcCAqLywKIAkJCQk0NDI1
MDcwNzI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oICovLAorCQkJCTQ0
OTMxNjkwMjVEN0ExRUYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oICov
LAogCQkJCTQ0RTg4RTU0MjM2QTY2QTEwMDlCNDg0NyAvKiBIaWdobGlnaHQuY3BwICovLAogCQkJ
CTQ0RTg4RTUxMjM2QTVDOEQwMDlCNDg0NyAvKiBIaWdobGlnaHQuaCAqLywKIAkJCQk0NEU4OEU0
RDIzNjkxMjhCMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmlkbCAqLywKQEAgLTMxMTU4LDcgKzMxMTY0
LDggQEAKIAkJCQk1NzE1MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmRO
b2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1
IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NDUyMTBERjI1
RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MjUwNzA5MjU4MjlBMjcwMEMwOTM2OCAvKiBBcHBIaWdo
bGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTEzRTAyRTIzMzFBMTM0MDA5QzMz
QTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBOTQx
RjdFQzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxNjIxLDYgKzMxNjI4LDcgQEAKIAkJCQk5MzkyRjE0QzBBRDE4NjFCMDA2OTFCRDQgLyog
Q291bnRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5Nzkz
NyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAz
MDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0OTMxNjkx
MjVEN0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3OTI5MTdBMTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRl
bnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCmluZGV4IDA0YmY4YTUyMzFkN2Q3Njg1NjAyMmM0Yjc4OTRjYWJhZTZkNGVmYjguLmZj
OGE5NGEzMzcyMDY1ZWYwNjA3Nzk1YjE3Y2IxNjhlNzUxNjQ5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRW1wdHlDbGllbnRzLmgiCiAKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oIgpAQCAtNTAyLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+
IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVEYXRlVGltZUNob29zZXIoRGF0ZVRpCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNv
bnN0Cit2b2lkIEVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAppbmRleCBhNzg4YjQ1YWFkMTVmMzQwZjJlZDA5OWRkNGJjY2Y1YTVl
YzkzYzNlLi4xNGM0YTkyNzc1MWIwNmI2ODQ4OTQ1ZDA2Y2EyMzI4MDIxMzViNWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgRW1w
dHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9y
ZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggZDMwNjljZWUxMzc4ZWYwZDI2NTAwNGMy
NzgwNWNmN2YxYzViZTM4My4uYTU5YWE0MTYzODcyOGNkYzM0ZTY1MzFlMjJlMzE0ZTU1M2U5YjA0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb250YWN0
SW5mby5oIgogI2luY2x1ZGUgIkNvbnRhY3RzUmVxdWVzdERhdGEuaCIKQEAgLTUxMiw5ICs1MTMs
OSBAQCB2b2lkIENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29u
c3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQotdm9pZCBDaHJvbWU6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3ZvaWQgQ2hyb21lOjpzdG9yZUFwcEhpZ2hs
aWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29uc3QKIHsKLSAgICBt
X2NsaWVudC51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBt
X2NsaWVudC5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAppbmRleCBmODE2Nzg2MjI0OWFmZWE1ZDFkYWNlODVkOWQxZjc5MDIwYTgxYzk3Li5mYjZm
MWM3OTcwZTYwZmZmYTIzODZkNWUwYzVhNWIyNWQwMTMwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
QEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUG9wdXBPcGVu
aW5nT2JzZXJ2ZXI7CiBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKK3N0cnVjdCBBcHBIaWdobGln
aHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBDb250YWN0SW5mbzsKIHN0cnVjdCBDb250YWN0c1JlcXVl
c3REYXRhOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7CkBAIC0xNjUsNyArMTY2
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAg
dm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSBjb25zdDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFwcEhpZ2hsaWdo
dEluZm9ybWF0aW9uJikgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgcnVuT3BlblBhbmVsKEZy
YW1lJiwgRmlsZUNob29zZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGNm
MmIzZjBkOWFiYWQyZTcyZWNhZGM3ZTE1M2E5YjE1MTYzMzFjNGQuLjUxYjA5N2I2OTgzNDJmZWE3
OTZlNTRiYzkyOWU5ZDNkN2MzYWVkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApA
QCAtMjIsNiArMjIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJBdXRv
cGxheUV2ZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8uaCIKICNpbmNsdWRlICJDdXJzb3Iu
aCIKQEAgLTMwNCw3ICszMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBf
SElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlv
biYpIGNvbnN0ID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChG
cmFtZSYsIEZpbGVDaG9vc2VyJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE5ZGI0YjY4YzQ1ZDhiZjBlNjkwMjM4M2UwZjhhYTI3ODM3NjhhNjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0g
Y2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM1NWJkYjU0OWE3ZjdjNTQ3ZWUwNjEzYmEwN2MwOTU5Mjcy
NTdkZWEuLjIyOWZkNWM3NmQxMTQ5NjI3MTIzOWFmZGI3MmVmM2FkMmRjNTE1ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTE5LDYg
KzExOSw3IEBACiAjaW1wb3J0ICJfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCIKICNpbXBvcnQg
Il9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGlj
aWVzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXphdGlvbi5oPgpA
QCAtMTQyMywxNCArMTQyNCwxNCBAQCAtICh2b2lkKV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZToo
aWQgPF9XS0FwcEhpZ2hsaWdodERlbGVnYXRlPilkZWxlZ2F0ZQogfQogCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotLSAodm9pZClfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0
YSAqKWRhdGEKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbiYpaGlnaGxpZ2h0SW5mb3JtYXRpb24KIHsKICAgICBhdXRvIGRl
bGVnYXRlID0gc2VsZi5fYXBwSGlnaGxpZ2h0RGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOildKQotICAgICAg
ICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpkYXRh
XTsKKyAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0
b3JhZ2U6aGlnaGxpZ2h0SW5mb3JtYXRpb24uaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV07CiB9CiAjZW5kaWYKIApAQCAtMjAzNSwxMiArMjAzNiwxOCBAQCAtICh2b2lkKV9yZXN1bWVB
bGxNZWRpYVBsYXliYWNrCiAgICAgW3NlbGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwog
fQogCi0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNEYXRhICopZGF0YQorLSAodm9p
ZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwog
ewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hs
aWdodHMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAgIFZlY3RvcjxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gYnVmZmVyczsKKworICAgIGZvciAoTlNEYXRhICog
aGlnaGxpZ2h0IGluIGhpZ2hsaWdodHMpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShoaWdobGlnaHQpOworICAgICAgICBidWZmZXJzLmFwcGVu
ZChidWZmZXIpOworICAgIH0KKyAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoYnVmZmVy
cyk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oaGln
aGxpZ2h0cyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCA0MDlkOGFlZDMzMzAyZWRmOWQx
ZTNkOGUzOTQyMjNhYTNlZGI5ZDc0Li42ODc3YzYxYTc3YzZmODE3MTEwNDNmNjY1MzU0ZTczY2Ri
NDg2ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBBdHRhY2htZW50Owog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247
CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIGVudW0gY2xhc3MgV2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGUgOiB1aW50OF90OwogfQpAQCAtMjY1LDcgKzI2Niw3IEBAIGNsYXNzIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9p
ZClfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0YSAqKWRhdGE7CistICh2b2lkKV9z
dG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24m
KWluZm87CiAjZW5kaWYKIAogLSAodm9pZClfaW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlv
blVwZGF0ZToodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sgd2l0aG91dFdhaXRpbmdGb3JQYWlu
dGluZzooQk9PTCl3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nIHdpdGhvdXRXYWl0aW5nRm9yQW5p
bWF0ZWRSZXNpemU6KEJPT0wpd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IDkyNjIzOGFlYTBhMTQ3NjExOGU1YTY5MDg1NDdhZDc5YzNmNDU0ZDEuLmU0NWNiMWJi
YmJlYmEwYjFhNzk1NTZiOGQ0MzEwYzc3ODI1NTViZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzY4LDcgKzM2
OCw3IEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0SGFzQmxhbmtPdmVybGF5OikgQk9PTCBfaGFzQmxhbmtPdmVybGF5IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOikgaWQgPF9XS0Fw
cEhpZ2hsaWdodERlbGVnYXRlPiBfYXBwSGlnaGxpZ2h0RGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3Jlc3RvcmVB
cHBIaWdobGlnaHRzOihOU0RhdGEgKilkYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czoo
TlNBcnJheTxOU0RhdGEgKj4gKilkYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8qISBAYWJzdHJhY3QgVGhlIHRoZW1lIGNvbG9yIG9m
IHRoZSBhY3RpdmUgcGFnZS4KICBAZGlzY3Vzc2lvbiBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUg
bW9zdCByZWNlbnRseSBjcmVhdGVkIG9yIG1vZGlmaWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggZTM2ZThjYzRlNWY3
MDc4YTI0NDEzNWNlMmU2ZmI3ZGE5MGNkZTIxNy4uMzk4ODA0YTc2Y2MyMzU2NjcxNTk3NGQyZjhl
ZTRmYjNlZGYxYjM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EuaApAQCAtMzgsNiArMzgsOCBAQCBjbGFzcyBBdHRhY2htZW50
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI7CisKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC03NCw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBOU1RleHRBbHRlcm5hdGl2ZXMg
KnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQp
IGZpbmFsOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBw
SGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dEluZm9ybWF0aW9uJikgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXgg
MzNiYmU5Mjg1YTg4ZjUyZTkyYTQ2ZDNkMDM4MDJiMGVmNjlmOTU1OC4uMzUzMjY2N2RkMjBjYjMz
MTdjMjJjOGU5NWU2Yzg5MjUwNzVmMDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBAIC0xMjAsMTAgKzEyMCw5IEBA
IE5TU2V0ICpQYWdlQ2xpZW50SW1wbENvY29hOjpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNz
ZXMoKSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFBh
Z2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6c3RvcmVB
cHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24gJmFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uKQogewotICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNE
YXRhKCk7Ci0gICAgW21fd2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6bnNEYXRh
LmdldCgpXTsKKyAgICBbbV93ZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDphcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbl07CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmlu
ZGV4IGUxNWYxMGNhMjAxNTkyMGExNDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLjlkMDg0NGM4ZmM5
MTRkMjJiMWM5MzdlYzlmODczYWRiN2I1YjNmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC01MzQsNyArNTM0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFkZEFjdGl2aXR5U3RhdGVVcGRhdGVDb21wbGV0aW9uSGFuZGxl
cihDb21wbGV0aW9uSGFuZGxlcjx2b2kKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
LXZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCit2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQyLDE0ICs1NDIsMjMgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hs
aWdodEluU2VsZWN0ZWRSYW5nZShjcmVhdGVOZXdHcm91cCkpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4mIGJ1ZmZlcnMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZSB7IGRhdGEgfTsKKyAgICBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9y
eUhhbmRsZXM7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxp
Z2h0cyhkYXRhUmVmZXJlbmNlKSk7CisgICAgZm9yIChhdXRvIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsK
KyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVm
ZmVyKTsKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAo
c2hhcmVkTWVtb3J5KQorICAgICAgICAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisKKyAgICAgICAgbWVt
b3J5SGFuZGxlcy5hcHBlbmQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRs
ZSksIGJ1ZmZlci0+c2l6ZSgpIH0pOworICAgIH0KKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzKFdURk1vdmUobWVtb3J5SGFuZGxlcykpKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOTg4YjlmYThlMDQ0
ZGVkYzBlNGYwZjA5NjI5YmVjNjgxZDAwNDQ4NC4uNTliMjJjYTNhZmZlNjk2OGFjZDkwNjZmOWE1
Yjg1YmFkMjFkNjZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTA4
LDYgKzEwOCw3IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lIDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbiA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90Owog
CitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVw
SW5mbzsKIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0
ZXM7CkBAIC0xNTEsNiArMTUyLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBlbnVtIGNs
YXNzIENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2wgeyBObywgWWVzIH07CiAKK3N0cnVjdCBBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uOwog
c3RydWN0IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb247CkBAIC01NzUsNyArNTc3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1h
dGlvbiYpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZDNiYWNjMjMwNjU5ZGM5N2ExNWMzYzU2
MWM0ODM1NWJlYTk3ZDcwLi42YWI2M2M5MTM1MTBkMDQyNmRmYzg0MDdlNzU2ZmZhMmJmMjc1NzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE0Myw4ICsx
NDMsMTAgQEAKICNpbmNsdWRlICJXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3Np
dGlvbkhpZ2hsaWdodC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KQEAgLTY2ODUsMTEgKzY2ODcsMTEgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgfQogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
ICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRU
b05ld0dyb3VwKSB7Ci0gICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKKyAgICAgICAgY3JlYXRlQXBwSGlnaGxp
Z2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZ
ZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENv
bnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvQ3VycmVudEdyb3VwKSB7Ci0gICAgICAgIGNy
ZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dDo6Tm8pOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICNlbmRpZgpAQCAtOTgzOSwxMSArOTg0MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFs
PAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiBpbmZvKQogewotICAgIE1FU1NBR0VfQ0hFQ0so
bV9wcm9jZXNzLCBkYXRhLmJ1ZmZlcigpKTsKKyAgICAvLyBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgaW5mbyk7CisKKyAgICBwYWdlQ2xpZW50KCkuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiAK
LSAgICBwYWdlQ2xpZW50KCkudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKmRhdGEuYnVmZmVy
KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggZjRjMzllYjhlNTQzODZlNDhiOGUyYzgxZWM5OTA2ZWU0NDhiMTcxNy4uOGJhZGQ1ZGRmMDUz
YzRlNWNkNTIzNmM0YjNmM2IxYTk0N2I2ZjQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1ZGUg
IkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKLSNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9h
ZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKQEAgLTIzNSw2ICsyMzQs
NyBAQCBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKIAogZW51
bSBjbGFzcyBBdXRvcGxheUV2ZW50IDogdWludDhfdDsKK2VudW0gY2xhc3MgQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSA6IGJvb2w7
CiBlbnVtIGNsYXNzIExvY2tCYWNrRm9yd2FyZExpc3QgOiBib29sOwpAQCAtMjQ3LDYgKzI0Nyw3
IEBAIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgV3JpdGluZ0RpcmVjdGlvbiA6
IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBBcHBs
aWNhdGlvbk1hbmlmZXN0Owogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CiBzdHJ1Y3QgQmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcjsKQEAgLTM3NCw3ICszNzUsNiBAQCBzdHJ1Y3QgV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U7CiBzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CiBzdHJ1Y3Qg
VXNlck1lc3NhZ2U7CiAKLWVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBi
b29sOwogZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKIGVudW0gY2xhc3Mg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVuZG9PclJl
ZG8gOiBib29sOwpAQCAtMTgyNiw5ICsxODI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3luY0lm
TW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRT
KQotICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0KTsKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwotICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdo
dHMoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIGNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCk7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHRJbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9y
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgZGF0YSk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggNDkxOWJjOTg4ZTljNWZjYTcyZmZjOGMyMWEzZmMxNDMwYjI4
YzA1YS4uNjQ3YmFjMDM5Yjg4ODAwNjUzZWQ5OGUyNGI1NjRlY2JiMDQ4YzJkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTM1
LDcgKzUzNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLSAgICBVcGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkKKyAgICBTdG9yZUFwcEhpZ2hsaWdodChzdHJ1Y3QgV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24gaW5mbykKICNlbmRpZgogCiAgICAgU2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgU3RyaW5n
IGNoYWxsZW5nZVN0cmluZywgVVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpIFN5bmNocm9ub3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVh
NGI4Li5lYzhmMGMwZDBmMGY4NDMyMDY3YmNkNTNlMDA2OTI4NjJkNzhhMmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTMwLDcgKzMwLDcgQEAKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBv
cnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKLSNpbXBvcnQgIkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0LmgiCisKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIK
ICNpbXBvcnQgIklucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgiCiAjaW1wb3J0ICJJbnNlcnRUZXh0
T3B0aW9ucy5oIgpAQCAtOTcsNiArOTcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvcklPUy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvclNlcmlhbGl6YXRpb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFF1
YWQuaD4KQEAgLTg5NzUsMTIgKzg5NzYsMTIgQEAgLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1l
bnVzCiAKIC0gKHZvaWQpY3JlYXRlSGlnaGxpZ2h0SW5DdXJyZW50R3JvdXBXaXRoUmFuZ2U6KGlk
KXNlbmRlcgogewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2Uo
V2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOworICAgIF9wYWdlLT5jcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQ6Ok5vKTsKIH0KIAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0
aFJhbmdlOihpZClzZW5kZXIKIHsKLSAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxl
Y3RlZFJhbmdlKFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CisgICAg
X3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVO
ZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZTZlYjA4YTljZGIzZDAw
MDA2MDEzZGI1ODY1MjkyYWVjZTUyNmNhLi4wYjNlNDg3NDljZTk3YWQwNTFhOWFjNzdiY2I2NTg5
ZjVhZTI3MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTExOTIwLDEyICsxMTkyMCw2IEBACiAJCQkJQ0RBQzIwQjQyM0ZCNThGMjAw
MjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
QUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjVBMTI1Q0Y1
NzQwMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMUQ0NzY1OUMyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUQyNUNFNzRBRDAw
N0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBp
biBIZWFkZXJzICovLAotCQkJCTFENDc2NTg2MjVDQ0E0MTYwMDdBRjMxMiAvKiBSZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTMyNUNDQ0U5MzAw
N0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTFENDc2NTk0MjVDQ0NFOTMwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEw
NzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVD
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2NEIzQTg4MDAyOTBENjIg
LyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCmluZGV4IGMwOWEyN2I3ZTdmNTNmYjQ0MjQ0NDcxYTZkNmI3NGZjZTA1ZDQzYTAuLjQ0
OTg3NGEzYzBjY2VmNzNmNzExZDE3NDM0MWJhODkyYjJjMWJjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCkBAIC0xMjQ0LDEwICsxMjQ0LDkgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3Jh
cENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkgY29uc3QKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25z
dCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29uc3QKIHsKLSAgICBh
dXRvIGJ1ZmZlciA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKTsKLSAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShidWZm
ZXIpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9yZUFwcEhp
Z2hsaWdodChpbmZvKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDAxNGJk
Y2YzOTM2NWZiYjdhZDcwOTNlY2M4NGMwOWRjMjcwZDBiNGYuLjg5ZGRlY2ZlZjMxMjBhNGUyMjEw
MjZkZDRjZTU1Y2Y1ZjkwMmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM0Nyw3ICszNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRv
cGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7
CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGln
aHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9y
bWF0aW9uJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3NjNi
Y2FiODY5NjJjNzliNjcyZmMzMzMxMjNjNzE0ZWMyY2UxMzY2Li4wNDhmZDFlNzM4YmFkNDJiZjkz
OGZlYjJhNzYyNGVlN2JjNTM0ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNzI1MCw3ICs3MjUwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXZv
a2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgc2Fu
ZGJveEUKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLWJvb2wgV2ViUGFnZTo6Y3Jl
YXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
IGNyZWF0ZU5ld0dyb3VwKQorYm9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3Jv
dXApCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIApAQCAtNzI2MywxNiAr
NzI2MywxOSBAQCBib29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5n
ZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQo
U3RhdGljUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSk7Ci0gICAgZG9jdW1l
bnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSgpOwor
ICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkuc3RvcmVBcHBIaWdobGlnaHQoU3Rh
dGljUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSwgY3JlYXRlTmV3R3JvdXAp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjpyZXN0
b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1l
bW9yeUhhbmRsZXMpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIAotICAg
IGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFwcEhpZ2hsaWdodHMoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBpcGNIYW5kbGUgOiBtZW1vcnlIYW5kbGVzKSB7CisgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGln
aHRTdG9yYWdlKCkucmVzdG9yZUFwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyICo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5
LT5zaXplKCkpKTsKKyAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGViNTI0ODkwMjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZj
YjQ1ZTE5ZTAuLmU0ZmM5Y2NjMDYxMDZjNGUwZjZmNDM3NzU5MDg4NmQ0NmFlODljZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM0LDcgKzM0LDYg
QEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgotI2luY2x1ZGUgIkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKQEAg
LTIwNCw2ICsyMDMsNyBAQCBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJs
ZVBvc2l0aW9uOwogCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKK2VudW0gY2xh
c3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0
ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgOiB1aW50OF90OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90OwpA
QCAtMTM5Niw4ICsxMzk2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCi0gICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOwotICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJ
blNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAg
IHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlPik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNj
cm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA4Y2ZjYzQ5Y2Y2ZjM4MDc2YWY5YzMyMzE5M2FkMzc1MzQ4YTQ0
OGYwLi44MjczMTE2ZTgzMzE3ODI3MjBhYmQxZWQ2NTdhYWYyMjMyZTdiZjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTYyNCw4ICs2MjQsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldENhblVz
ZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNlKQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQotICAgIENyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2Vi
S2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKLSAgICBSZXN0
b3JlQXBwSGlnaGxpZ2h0cyhJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKKyAg
ICBDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYkNvcmU6OkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQorICAgIFJlc3RvcmVBcHBI
aWdobGlnaHRzKFZlY3RvcjxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlI
YW5kbGVzKQogI2VuZGlmCiAKICAgICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5n
KFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggMWE2NmNlOWRmZjgxYWI5MmUyZTdhOGViZjVhYzgwOWE5YmQ5ZDJk
Mi4uN2NmZjFkZDI1M2UyYmQ4YWY4Zjk4ZmVkY2QwZGQ3MjMyZDNhMjEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBw
SGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3Qg
ZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KaW5kZXggODZhZmEwZTlkMzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uNzI1Y2I1
MGYwOTA4MmRmNjI5Y2U5YzU3ZDM3ZTdkMTIwNzM4ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpA
QCAtNzQ1LDcgKzc0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVUaW1lCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBI
aWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QKIHsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420331</attachid>
            <date>2021-02-15 10:34:55 -0800</date>
            <delta_ts>2021-02-15 14:58:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210215103454.patch</filename>
            <type>text/plain</type>
            <size>76972</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uNTY4N2Y5ZjQ3YzkwMmJmYmIxNTViMzNmNDFkYzcw
OTk3Y2FmOTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGRh
dGEgcGF0aCBmb3IgQXBwIEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFsIGRhdGEgbmVlZGVkIGZv
ciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGluZm9ybWF0aW9uIHRvIGJl
IGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0TGlzdERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaC4KKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGln
aHRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxp
Z2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAyMS0wMi0x
MSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV0dXJuaW5nIHNS
R0IgZnJvbSBDRyBjb2xvciBzcGFjZSBmdW5jdGlvbnMgb24gZmFpbHVyZSBpcyB0b28gZXJyb3Ig
cHJvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzRjYTkwOWM3YjNhNjE1YjhiNTQ1NTNiNzI2ZDlkNmJjMDE4OGQx
NS4uODBkYjJhM2Y1ZWQ4Nzk5YzkzOTM1ZWFjOTI4OWRjMzQzZDgzOWYzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAyMS0wMi0xMiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBkYXRhIHBhdGggZm9yIEFwcCBIaWdobGlnaHRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQaXBlIHRo
cm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxheSwgYW5kIHVwZGF0ZSB0byBh
bGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBtb3JlIGVhc2lseS4KKworICAg
ICAgICAqIFNoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVIaWdobGln
aHRJbkN1cnJlbnRHcm91cFdpdGhSYW5nZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
cmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY09TXSBFbmFibGUgQXVkaW8gQ2FwdHVyZSBpbiBHUFVQcm9j
ZXNzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhN2UyNjE1NTdl
ODA3MzVhNzMzNTQ0OTJmN2Q4NGU3NWUwNjgwNDA1Li4wY2MyZTM2MmZjZTJhNjUxNTFhYTQ0OWE4
MDBiZWExNzI5OGY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgZGF0YSBwYXRoIGZvciBBcHAgSGlnaGxpZ2h0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li45Mjlh
MDM4NmU3Y2ZlNWVmYzQwY2NlYTk1MTlmZTU4NTg4MTc1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTQ3LDkgKzQ3LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCiAgICAgTW9k
dWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbk9wdGlvbnMuaAogCisgICAgTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaAorICAgIE1vZHVsZXMvaGlnaGxpZ2h0L0NyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKICAgICBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHQu
aAogICAgIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmgKIAorCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg2ZDA2MDA1NmQxMWE4NzhlZjUxYzNiZmI5YTc3YTIxYTNlYWQzN2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1h
dGlvbi5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkNyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24geworICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBPcHRp
b25hbDxTdHJpbmc+IHRleHQ7CisgICAgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdH
cm91cDsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0SW5mb3JtYXRpb24+IGRlY29kZShEZWNvZGVyJik7CisKK307CisKKwordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb246OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihoaWdobGlnaHQtPnNpemUoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5kYXRhQXNVSW50
OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworCisgICAgZW5jb2RlciA8PCAhIXRleHQ7
CisgICAgaWYgKHRleHQpCisgICAgICAgIGVuY29kZXIgPDwgdGV4dDsKKworICAgIGVuY29kZXIg
PDwgaXNOZXdHcm91cDsKKworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8
QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24+IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKworICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAg
IGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIu
bWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gaGlnaGxpZ2h0OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgp
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEo
KSwgaGlnaGxpZ2h0LnNpemUoKSwgMSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAgYm9vbCBoYXNPYmplY3Q7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmIChoYXNPYmplY3QpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0
KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgQ3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlzTmV3R3JvdXApKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHt7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaGlnaGxpZ2h0KSksIFdURk1vdmUodGV4
dCksIGlzTmV3R3JvdXAgfX07Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodExpc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodExpc3REYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0
ZDU5YmIzNWRkYTE0YzZjZmRkOGI3ZmRlNDQ4NjA1ZjQwYjk0Yi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFwcEhpZ2hs
aWdodExpc3REYXRhLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKLSNpbmNsdWRl
ICJTdGF0aWNSYW5nZS5oIgotI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLQotQXBwSGlnaGxpZ2h0TGlzdERhdGEgQXBw
SGlnaGxpZ2h0TGlzdERhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsK
LSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhp
Z2hsaWdodExpc3REYXRhPiBkYXRhOwotICAgIGRlY29kZXIgPj4gZGF0YTsKLSAgICByZXR1cm4g
ZGF0YSA/ICpkYXRhIDogQXBwSGlnaGxpZ2h0TGlzdERhdGEge3sgfX07Ci19Ci0KLVJlZjxTaGFy
ZWRCdWZmZXI+IEFwcEhpZ2hsaWdodExpc3REYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17
Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwg
KnRoaXM7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodExpc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRMaXN0RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTNiMjE0
ZGI5Nzg5MjA5NDRjZGRiMWZiMGVhMTY1ZDdkYTZjZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodExpc3REYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBB
cHBIaWdobGlnaHRSYW5nZURhdGEgewotcHVibGljOgotICAgIHN0cnVjdCBOb2RlUGF0aENvbXBv
bmVudCB7Ci0gICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbm9kZU5h
bWU7Ci0gICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4
IHsgMCB9OwotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVu
dGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAg
ICAgICAgICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKLSAgICAg
ICAgICAgICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgdGV4dERhdGEo
V1RGTW92ZShkYXRhKSkKLSAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwg
dW5zaWduZWQgaW5kZXgpCi0gICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZp
ZXIpCi0gICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHRleHREYXRh
KGRhdGEpCi0gICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBv
dGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0g
b3RoZXIuaWRlbnRpZmllciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0
YSA9PSBvdGhlci50ZXh0RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OwotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50
JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7Ci0g
ICAgfTsKLQotICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsK
LQotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEm
KSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29u
dGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKLSAgICAg
ICAgLCBtX3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICAgICAs
IG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoV1RG
TW92ZShlbmRDb250YWluZXIpKQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
Y29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IG1fdGV4dCh0ZXh0KQotICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWlu
ZXIpCi0gICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2Vu
ZENvbnRhaW5lcihlbmRDb250YWluZXIpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0
KQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVy
biBtX3RleHQ7IH0KLSAgICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0Q29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIGVuZENv
bnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQg
ZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLQotICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOwotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgTm9k
ZVBhdGggbV9zdGFydENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9
OwotICAgIE5vZGVQYXRoIG1fZW5kQ29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0
IHsgMCB9OwotfTsKLQotY2xhc3MgQXBwSGlnaGxpZ2h0TGlzdERhdGEgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBcHBI
aWdobGlnaHRMaXN0RGF0YSBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0KLSAgICBBcHBI
aWdobGlnaHRMaXN0RGF0YShjb25zdCBBcHBIaWdobGlnaHRMaXN0RGF0YSYpID0gZGVmYXVsdDsK
LSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRM
aXN0RGF0YShWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIGFubm90YXRpb25SYW5nZXMp
Ci0gICAgICAgIDogbV9hbm5vdGF0aW9uUmFuZ2VzKFdURk1vdmUoYW5ub3RhdGlvblJhbmdlcykp
Ci0gICAgewotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+
JiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXM7IH0KLSAgICB2b2lk
IHNldFJhbmdlcyhWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fu
bm90YXRpb25SYW5nZXMgPSBXVEZNb3ZlKHJhbmdlcyk7IH0KLSAgICB2b2lkIGFkZFJhbmdlcyhW
ZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5n
ZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUocmFuZ2VzKSk7IH0KLQotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5ub3RhdGlvblJhbmdlcy5zaXplKCk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXMuaXNFbXB0eSgpOyB9Ci0KLSAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRh
PiBkZWNvZGUoRGVjb2RlciYpOwotCi1wcml2YXRlOgotCi0gICAgVmVjdG9yPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gbV9hbm5vdGF0aW9uUmFuZ2VzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7
Ci0gICAgZW5jb2RlciA8PCBub2RlTmFtZTsKLSAgICBlbmNvZGVyIDw8IHRleHREYXRhOwotICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Ci19Ci0KLXRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBh
dGhDb21wb25lbnQ+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmll
cjsKLSAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFt
ZTsKLSAgICBkZWNvZGVyID4+IG5vZGVOYW1lOwotICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwot
ICAgIGRlY29kZXIgPj4gdGV4dERhdGE7Ci0gICAgaWYgKCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Ci0g
ICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7Ci0gICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciks
IFdURk1vdmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKnBhdGhJbmRleCkgfX07Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IG1fdGV4dDsKLSAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7
Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Ci0g
ICAgZW5jb2RlciA8PCBtX2VuZENvbnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX2VuZE9mZnNldCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7Ci0gICAg
ZGVjb2RlciA+PiB0ZXh0OwotICAgIGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKLSAgICBkZWNv
ZGVyID4+IHN0YXJ0Q29udGFpbmVyOwotICAgIGlmICghc3RhcnRDb250YWluZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZz
ZXQ7Ci0gICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKLSAgICBpZiAoIXN0YXJ0T2Zmc2V0KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVu
ZENvbnRhaW5lcjsKLSAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKLSAgICBpZiAoIWVuZENv
bnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBlbmRPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7Ci0gICAgaWYgKCFl
bmRPZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLQotICAgIHJldHVybiB7
ewotICAgICAgICBXVEZNb3ZlKCp0ZXh0KSwKLSAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWlu
ZXIpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKLSAgICAg
ICAgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KCplbmRPZmZzZXQpLAotICAgIH19OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IEFwcEhpZ2hsaWdodExpc3REYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IG1fYW5ub3RhdGlvblJhbmdlczsKLX0KLQotdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlzdERhdGE+IEFwcEhpZ2hsaWdodExpc3RE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPj4gYW5ub3RhdGlvblJhbmdlczsKLSAgICBkZWNvZGVyID4+IGFu
bm90YXRpb25SYW5nZXM7Ci0gICAgaWYgKCFhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmFubm90YXRpb25SYW5n
ZXMpIH19OwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4YjkxNDIxMWE0ODRlNjQ2NjZkOWJkN2UyZDFmNjQxN2Rk
MzhiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgi
CisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIK
KyNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCisjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKKyNpbmNsdWRlICJTdGF0aWNSYW5nZS5o
IgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50Q29kZXJzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKKworT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdo
bGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAg
ICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOworICAgIE9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gZGF0YTsKKyAgICBkZWNvZGVyID4+IGRhdGE7CisgICAgcmV0dXJuIGRh
dGE7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFy
ZWRCdWZmZXIoKSBjb25zdAoreworICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2Rl
cjsKKyAgICBlbmNvZGVyIDw8ICp0aGlzOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBv
bmVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyOworICAgIGVuY29kZXIgPDwgbm9kZU5hbWU7CisgICAgZW5jb2RlciA8PCB0ZXh0
RGF0YTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihwYXRoSW5kZXgpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29t
cG9uZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+
IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOworICAgIGlmICghaWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbm9kZU5hbWU7CisgICAgZGVjb2RlciA+PiBub2RlTmFtZTsKKyAgICBpZiAoIW5vZGVOYW1l
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiB0
ZXh0RGF0YTsKKyAgICBkZWNvZGVyID4+IHRleHREYXRhOworICAgIGlmICghdGV4dERhdGEpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gcGF0
aEluZGV4OworICAgIGRlY29kZXIgPj4gcGF0aEluZGV4OworICAgIGlmICghcGF0aEluZGV4KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlk
ZW50aWZpZXIpLCBXVEZNb3ZlKCpub2RlTmFtZSksIFdURk1vdmUoKnRleHREYXRhKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KCpwYXRoSW5kZXgpIH19OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3RleHQ7CisgICAgZW5jb2RlciA8PCBtX3N0YXJ0
Q29udGFpbmVyOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fc3RhcnRP
ZmZzZXQpOworICAgIGVuY29kZXIgPDwgbV9lbmRDb250YWluZXI7CisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obV9lbmRPZmZzZXQpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8U3RyaW5nPiB0
ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRleHQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxOb2RlUGF0aD4gc3RhcnRDb250YWluZXI7
CisgICAgZGVjb2RlciA+PiBzdGFydENvbnRhaW5lcjsKKyAgICBpZiAoIXN0YXJ0Q29udGFpbmVy
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dWludDY0X3Q+
IHN0YXJ0T2Zmc2V0OworICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CisgICAgaWYgKCFzdGFy
dE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE5v
ZGVQYXRoPiBlbmRDb250YWluZXI7CisgICAgZGVjb2RlciA+PiBlbmRDb250YWluZXI7CisgICAg
aWYgKCFlbmRDb250YWluZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDx1aW50NjRfdD4gZW5kT2Zmc2V0OworICAgIGRlY29kZXIgPj4gZW5kT2Zmc2V0Owor
ICAgIGlmICghZW5kT2Zmc2V0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisKKyAg
ICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqdGV4dCksCisgICAgICAgIFdURk1vdmUoKnN0
YXJ0Q29udGFpbmVyKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpzdGFydE9mZnNl
dCksCisgICAgICAgIFdURk1vdmUoKmVuZENvbnRhaW5lciksCisgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigqZW5kT2Zmc2V0KSwKKyAgICB9fTsKK30KKworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE0Y2RjYTc0MTQ1ZDVi
MjdmNTEzZDczNTE5MzVhMjkyYTI0N2ZiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0wLDAgKzEs
MTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorCitjbGFzcyBTaGFyZWRCdWZmZXI7CisK
K2NsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7CitXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RydWN0IE5vZGVQ
YXRoQ29tcG9uZW50IHsKKyAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CisgICAgICAgIFN0cmlu
ZyBub2RlTmFtZTsKKyAgICAgICAgU3RyaW5nIHRleHREYXRhOworICAgICAgICB1bnNpZ25lZCBw
YXRoSW5kZXggeyAwIH07CisKKyAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxl
bWVudElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVuc2lnbmVkIGlu
ZGV4KQorICAgICAgICAgICAgOiBpZGVudGlmaWVyKFdURk1vdmUoZWxlbWVudElkZW50aWZpZXIp
KQorICAgICAgICAgICAgLCBub2RlTmFtZShXVEZNb3ZlKG5hbWUpKQorICAgICAgICAgICAgLCB0
ZXh0RGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgZWxlbWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50
SWRlbnRpZmllcikKKyAgICAgICAgICAgICwgbm9kZU5hbWUobmFtZSkKKyAgICAgICAgICAgICwg
dGV4dERhdGEoZGF0YSkKKyAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZVBhdGhDb21w
b25lbnQmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRp
ZmllciA9PSBvdGhlci5pZGVudGlmaWVyICYmIG5vZGVOYW1lID09IG90aGVyLm5vZGVOYW1lICYm
IHRleHREYXRhID09IG90aGVyLnRleHREYXRhICYmIHBhdGhJbmRleCA9PSBvdGhlci5wYXRoSW5k
ZXg7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZVBhdGhD
b21wb25lbnQmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb2RlUGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICB9OworCisgICAgdXNpbmcgTm9kZVBhdGggPSBWZWN0b3I8Tm9kZVBhdGhDb21w
b25lbnQ+OworCisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YSYpID0gZGVmYXVsdDsKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoKSA9IGRlZmF1
bHQ7CisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmluZyYmIHRleHQsIE5vZGVQYXRoJiYg
c3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBOb2RlUGF0aCYmIGVuZENvbnRh
aW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1fdGV4dChXVEZNb3ZlKHRleHQp
KQorICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoV1RGTW92ZShzdGFydENvbnRhaW5lcikpCisg
ICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRh
aW5lcihXVEZNb3ZlKGVuZENvbnRhaW5lcikpCisgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zm
c2V0KQorICAgIHsKKyAgICB9CisKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQp
CisgICAgICAgIDogbV90ZXh0KHRleHQpCisgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihzdGFy
dENvbnRhaW5lcikKKyAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQorICAgICAg
ICAsIG1fZW5kQ29udGFpbmVyKGVuZENvbnRhaW5lcikKKyAgICAgICAgLCBtX2VuZE9mZnNldChl
bmRPZmZzZXQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dDsgfQorICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWluZXI7IH0KKyAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KKyAgICBjb25zdCBOb2RlUGF0
aCYgZW5kQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb250YWluZXI7IH0KKyAgICB1
bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQorCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmluZyBtX3RleHQ7CisgICAgTm9k
ZVBhdGggbV9zdGFydENvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9
OworICAgIE5vZGVQYXRoIG1fZW5kQ29udGFpbmVyOworICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0
IHsgMCB9OworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAKaW5kZXggYzNiOGJiNzdjMGM0ZjRlNWM5OTg3MTc5MjM5MmUzZGRkOGQxOTE4Ni4uYWMz
MGYxYTIxNGNhM2JhZjllYThmZWIwZDQxZTM5ZGJhNzI5N2JiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAK
QEAgLTI3LDggKzI3LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXBwSGln
aGxpZ2h0U3RvcmFnZS5oIgogCi0jaW5jbHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKKyNp
bmNsdWRlICJBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIgorI2luY2x1ZGUgIkFwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKQEAg
LTQwLDYgKzQyLDggQEAKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogCisjZGVmaW5lIFRFWFRfUFJFVklFV19MRU5HVEggMTAwCisKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0xOTYsOCArMjAwLDEwIEBAIHN0YXRpYyBBcHBIaWdobGlnaHRS
YW5nZURhdGE6Ok5vZGVQYXRoIG1ha2VOb2RlUGF0aChSZWZQdHI8Tm9kZT4mJiBub2RlKQogCiBz
dGF0aWMgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShj
b25zdCBTdGF0aWNSYW5nZSYgcmFuZ2UpCiB7CisgICAgYXV0byB0ZXh0ID0gcGxhaW5UZXh0KHJh
bmdlKTsKKyAgICB0ZXh0LnRydW5jYXRlKFRFWFRfUFJFVklFV19MRU5HVEgpOwogICAgIHJldHVy
biB7Ci0gICAgICAgIHBsYWluVGV4dChyYW5nZSksCisgICAgICAgIHRleHQsCiAgICAgICAgIG1h
a2VOb2RlUGF0aCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAgICAgICAgIHJhbmdlLnN0YXJ0
T2Zmc2V0KCksCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2UuZW5kQ29udGFpbmVyKCkpLApA
QCAtMjEwLDQ4ICsyMTYsMzUgQEAgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdl
OjpzdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgcmFuZ2UsIENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IGlzTmV3R3JvdXApCiB7Ci0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gZGF0YTsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVBcHBIaWdobGlnaHRSYW5nZURhdGEocmFu
Z2UpOworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKIAotICAgIGlmICghbV9kb2N1bWVudCkK
LSAgICAgICAgcmV0dXJuOworICAgIGlmICghZGF0YS50ZXh0KCkuaXNFbXB0eSgpKQorICAgICAg
ICB0ZXh0ID0gZGF0YS50ZXh0KCk7CiAKLSAgICBpZiAoIW1fZG9jdW1lbnQtPnBhZ2UoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uIGluZm8gPSB7ZGF0YS50
b1NoYXJlZEJ1ZmZlcigpLCB0ZXh0LCBpc05ld0dyb3VwfTsKIAotICAgIGlmIChhdXRvIGFwcEhp
Z2hsaWdodFJlZ2lzdGVyID0gbV9kb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXJJZkV4aXN0
cygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogYXBwSGlnaGxpZ2h0UmVnaXN0
ZXItPm1hcCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJhbmdlRGF0YSA6IGhpZ2hsaWdo
dC52YWx1ZS0+cmFuZ2VzRGF0YSgpKQotICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNyZWF0
ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShyYW5nZURhdGEtPnJhbmdlKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEgbGlzdERhdGEgeyBXVEZNb3ZlKGRhdGEpIH07
Ci0KLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNT
dG9yYWdlKGxpc3REYXRhLnRvU2hhcmVkQnVmZmVyKCkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiB9CiAKLXZvaWQgQXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXV0byBhcHBIaWdobGlnaHRMaXN0RGF0YSA9
IEFwcEhpZ2hsaWdodExpc3REYXRhOjpjcmVhdGUoYnVmZmVyKTsKLSAgICBWZWN0b3I8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiB1bnJlc3RvcmVkUmFuZ2VzOwotICAgIFZlY3RvcjxBcHBIaWdobGln
aHRSYW5nZURhdGE+IHJlc3RvcmVkUmFuZ2VzOworICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBt
X2RvY3VtZW50LmdldCgpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtX2Rv
Y3VtZW50LmdldCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdl
RGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvJiBhcHBIaWdobGln
aHRMaXN0RGF0YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdlcygpKSB7Ci0gICAgICAgIGF1
dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERhdGEsICpzdHJvbmdEb2N1bWVu
dCk7Ci0gICAgICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAgIHVucmVzdG9yZWRSYW5nZXMu
YXBwZW5kKGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9CisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LCAqc3Ryb25nRG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVkUmFuZ2VzLmFwcGVuZChhcHBI
aWdobGlnaHRMaXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRS
ZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOwot
ICAgIH0KKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBI
aWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKKworICAgIHJldHVybiB0cnVl
OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVhZDY0MDI0MjljZWRjNGJlOTI2
ZjZjZGEwOWU0NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1OWYzOTA5ODU2MTY2YTc3NDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRMaXN0RGF0
YTsKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVtIGNsYXNzIENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0U3RvcmFnZSA6IFJl
ZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFu
Z2UmICwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYpOwog
CiBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9DcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQ3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTE5YzJjN2Y2NzJiZTFmYTY3ZDVlOTZhNDBjMzRm
ZTliMjE0OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaApAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFz
cyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3BwCmluZGV4IDY4ZWQyN2ZkYjNmNzRlMGIxYTkzOWY1
ODFmZTcyMzg2MzcwZmZjZDkuLjE0ZDAzMmM5N2U1YTYxNWU2ZmM5YzU2ZTc0OTZmZDczYzA1ZTdk
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdo
dFJlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdo
bGlnaHRSZWdpc3Rlci5jcHAKQEAgLTY1LDUgKzY1LDYgQEAgdm9pZCBIaWdobGlnaHRSZWdpc3Rl
cjo6YWRkQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiB2YWx1ZSkKICAgICBlbHNlCiAg
ICAgICAgIHNldEZyb21NYXBMaWtlKGFwcEhpZ2hsaWdodEtleSgpLCBIaWdobGlnaHQ6OmNyZWF0
ZShXVEZNb3ZlKHZhbHVlKSkpOwogfQorCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOGMw
M2I5MzI2NDk4NWYwYmIxZWU5ZjZkMjAyM2UzNDgzMDkyZjQ2Mi4uMDViYjVlODdhNDMyZGU4YzU0
YmJhNmJmNjUwMWMwYzYyZDk2MzU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTY0LDcgKzY0LDcgQEAg
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNvb3JkaW5hdGVzLmNwcAogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlv
bi5jcHAKLU1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNwcAorTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAogTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lz
dGVyLmNwcAogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJlM2JhMmQ4YmJh
YTE3NjI0NGRhNjIzYzY5Mjk2ZTVmZWJmMDczMGIuLjM4ODFiNmE3MDM5ZGE0YTI3Zjk4NjU2OGIw
N2EzZjFhZTU3MzE0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjMsNiArMTIyMyw3IEBACiAJCTQ0MjUwNzA5MjU4MjlB
MjcwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDI1MDcwNzI1ODI5QTE0MDBDMDkzNjggLyogQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ0MzBEMDBCMjU3NUE4M0UwMDQ2RDQwMSAvKiBIaWdobGlnaHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTg4RTUxMjM2QTVD
OEQwMDlCNDg0NyAvKiBIaWdobGlnaHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwRDI1NzVBOEE1MDA0NkQ0MDEgLyogSGlnaGxpZ2h0
UmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0RTg4RTUwMjM2QTU2QUMwMDlCNDg0NyAvKiBIaWdobGlnaHRSZWdpc3Rlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ0NTIxMERGMjVENjFG
MDAwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1MjEwREQyNUQ2MUVGRjAwM0EyRUQ4IC8q
IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ1Nzc1RTUyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0NTc3NUU0MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDQ2M0NGNjgyMjEyRkE2ODAwMUE4NTc3IC8qIERhdGFEZXRlY3RvcnNDb3JlU29m
dExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAq
LzsgfTsKIAkJNDQ2NUQ3QkQyNTM2RDA1RTAwMTY2NjZEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRCMzhCRjQy
NTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjMxLDEyICsxMjMyLDEzIEBACiAJ
CTQ0Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ3OTU4MDMxNjQzQjQ3QjAw
MUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ4QTI5QkYwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NDhBMjlCRDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NDhCMUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhCMUI3ODBGM0EyRjlC
MDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDQ5MzE2OTEyNUQ3QTFGNjAwQUE2NkRFIC8qIENy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDkzMTY5MDI1RDdBMUVGMDBBQTY2REUgLyogQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NDk2RTM5RTEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ5NkUzOUMxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCAq
LzsgfTsKIAkJNDQ5NkUzQTAxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDk2RTM5RjEz
OTgxM0E1MDAzRUUzMkEgLyogSlNTVkdNUGF0aEVsZW1lbnQuaCAqLzsgfTsKIAkJNDRBMjBEQjkw
Rjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZF
IC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxF
bGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmgg
Ki87IH07CiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07Ci0JCTQ0QUUwNDVDMjU3OUNGRkIwMEM0
MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hs
aWdodExpc3REYXRhLmggKi87IH07CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBI
aWdobGlnaHRSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURh
dGEuaCAqLzsgfTsKIAkJNDRDOTkxODYwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1l
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5
OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRD
OTkxOUYwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhl
bWVJT1MuaCAqLzsgfTsKIAkJNDRFMzQ5RjkyNDZGNEUxOTAwNjg0NzlDIC8qIExpYldlYlJUQ0Vu
dW1UcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0RTM0OUY3MjQ2RjREQzcwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxMTcsNiArODEx
OSw3IEBACiAJCTQ0MzdDNEE5MjRFMkFFNUYwMDA5NTEyOCAvKiBMYXp5TG9hZEZyYW1lT2JzZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ0NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlVVJM
UmVzcG9uc2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0NTIxMEREMjVE
NjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyogTG9jYWxEZWZh
dWx0U3lzdGVtQXBwZWFyYW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbERlZmF1bHRTeXN0ZW1B
cHBlYXJhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTc3NUU5MjA0NzMw
M0IwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ2REM2NDYyNEEyOUQ5QjAwNjFG
MzkwIC8qIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODEyOSw2ICs4MTMyLDcgQEAKIAkJNDQ4QTI5QkUwQTQ2RDlD
QjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OEIxQjc4MEYzQTJGOUIwMDQ3QTlFMiAvKiBUZXh0
U2l6ZUFkanVzdG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFNp
emVBZGp1c3RtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OTA5OEIxMEY4
RjgyNTIwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDQ5MzE2OTAyNUQ3QTFFRjAwQUE2NkRFIC8qIENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OTZFMzlCMTM5ODEzNkMwMDNFRTMy
QSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDk2RTM5QzEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
OTZFMzlGMTM5ODEzQTUwMDNFRTMyQSAvKiBKU1NWR01QYXRoRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR01QYXRoRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODEzNiw4ICs4MTQwLDggQEAKIAkJNDRBMjBEQjgwRjg0MTY2QzAw
QjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ0QTI4QUFFMTJERkI4QkYw
MEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBNYXRoTUxOYW1lcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxOYW1l
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0NEFFMDQ1ODI1NzlD
RkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxp
Z2h0TGlzdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxp
Z2h0TGlzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0NTgyNTc5
Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIzOEJG
NDI1MzY5MDFBMDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdGlvblJhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEIzOEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdGlvblJh
bmdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QkQyQjM2MjUyNzc5
NzgwMDU1RDk1QSAvKiBHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkds
b2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xOTgzNiwxMCArMTk4NDAsMTIgQEAKIAkJNDRFODhFNDcyMzY4REYwRjAwOUI0ODQ3
IC8qIGhpZ2hsaWdodCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmNw
cCAqLywKLQkJCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERh
dGEuaCAqLywKKwkJCQk0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCAqLywKKwkJCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcCAqLywKKwkJCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi8sCiAJCQkJNDQyNTA3MDYyNTgyOUExNDAwQzA5MzY4IC8q
IEFwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwICovLAogCQkJCTQ0MjUwNzA3MjU4MjlBMTQwMEMwOTM2
OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmggKi8sCisJCQkJNDQ5MzE2OTAyNUQ3QTFFRjAwQUE2
NkRFIC8qIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggKi8sCiAJCQkJNDRFODhFNTQyMzZB
NjZBMTAwOUI0ODQ3IC8qIEhpZ2hsaWdodC5jcHAgKi8sCiAJCQkJNDRFODhFNTEyMzZBNUM4RDAw
OUI0ODQ3IC8qIEhpZ2hsaWdodC5oICovLAogCQkJCTQ0RTg4RTREMjM2OTEyOEIwMDlCNDg0NyAv
KiBIaWdobGlnaHQuaWRsICovLApAQCAtMzExNTgsNyArMzExNjQsOCBAQAogCQkJCTU3MTUyQjVB
MjFDQjNFODgwMDBDMzdDQSAvKiBBcGR1Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcx
NTJCNUMyMUNDMTkwMjAwMEMzN0NBIC8qIEFwZHVSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlERDcwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlz
dERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0NTIxMERGMjVENjFGMDAwMDNBMkVEOCAvKiBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDRBRTA0NUMyNTc5
Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDQyNTA3MDkyNTgyOUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNl
bEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VDNDMyMDA1OEE0NzcgLyog
QXBwbGVQYXlDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2MjEsNiArMzE2Mjgs
NyBAQAogCQkJCTkzOTJGMTRDMEFEMTg2MUIwMDY5MUJENCAvKiBDb3VudGVyTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUQwQjA1NTY4MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5r
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ5MzE2OTEyNUQ3QTFGNjAwQUE2NkRFIC8q
IENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY2
RTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5
MjkxN0ExOTg1RUYzOTAwRjRCNjYxIC8qIENyZWRlbnRpYWxCYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzkyOTE3RTE5ODc2NzhGMDBGNEI2NjEgLyogQ3JlZGVudGlhbENvY29hLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMDRiZjhh
NTIzMWQ3ZDc2ODU2MDIyYzRiNzg5NGNhYmFlNmQ0ZWZiOC4uZmM4YTk0YTMzNzIwNjVlZjA2MDc3
OTViMTdjYjE2OGU3NTE2NDk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFbXB0
eUNsaWVudHMuaCIKIAorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmgiCiAjaW5j
bHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENs
aWVudC5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC01MDIsNyArNTAz
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERhdGVUaW1lQ2hvb3Nlcj4gRW1wdHlDaHJvbWVDbGllbnQ6
OmNyZWF0ZURhdGVUaW1lQ2hvb3NlcihEYXRlVGkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQotdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0
b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QKK3ZvaWQgRW1wdHlDaHJv
bWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9u
JikgY29uc3QKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmlu
ZGV4IGE3ODhiNDVhYWQxNWYzNDBmMmVkMDk5ZGQ0YmNjZjVhNWVjOTNjM2UuLjE0YzRhOTI3NzUx
YjA2YjY4NDg5NDVkMDZjYTIzMjgwMjEzNWI1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1
YmxpYyBDaHJvbWVDbGllbnQgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
Ci0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0
IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogICAgIHZv
aWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAppbmRleCBkMzA2OWNlZTEzNzhlZjBkMjY1MDA0YzI3ODA1Y2Y3ZjFjNWJlMzgzLi5h
NTlhYTQxNjM4NzI4Y2RjMzRlNjUzMWUyMmUzMTRlNTUzZTliMDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIgogI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJbmZvLmgiCiAjaW5jbHVkZSAi
Q29udGFjdHNSZXF1ZXN0RGF0YS5oIgpAQCAtNTEyLDkgKzUxMyw5IEBAIHZvaWQgQ2hyb21lOjpk
aXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50
cyYgYXJndW1lCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIENocm9tZTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKSBjb25zdAordm9pZCBDaHJvbWU6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFwcEhpZ2hs
aWdodEluZm9ybWF0aW9uJiBpbmZvKSBjb25zdAogewotICAgIG1fY2xpZW50LnVwZGF0ZUFwcEhp
Z2hsaWdodHNTdG9yYWdlKFdURk1vdmUoZGF0YSkpOworICAgIG1fY2xpZW50LnN0b3JlQXBwSGln
aGxpZ2h0KGluZm8pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IGY4MTY3ODYy
MjQ5YWZlYTVkMWRhY2U4NWQ5ZDFmNzkwMjBhODFjOTcuLmZiNmYxYzc5NzBlNjBmZmZhMjM4NmQ1
ZTBjNWE1YjI1ZDAxMzBlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtNTcsNiArNTcsNyBAQCBj
bGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlcjsKIGNsYXNz
IFNlYXJjaFBvcHVwTWVudTsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3Ry
dWN0IENvbnRhY3RJbmZvOwogc3RydWN0IENvbnRhY3RzUmVxdWVzdERhdGE7CiBzdHJ1Y3QgRGF0
ZVRpbWVDaG9vc2VyUGFyYW1ldGVyczsKQEAgLTE2NSw3ICsxNjYsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0OworICAgIHZv
aWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25z
dDsKICNlbmRpZgogCiAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggY2YyYjNmMGQ5YWJhZDJlNzJlY2Fk
YzdlMTUzYTliMTUxNjMzMWM0ZC4uNTFiMDk3YjY5ODM0MmZlYTc5NmU1NGJjOTI5ZTlkM2Q3YzNh
ZWQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yMiw2ICsyMiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIkF1dG9wbGF5RXZlbnQuaCIKICNpbmNs
dWRlICJDb250YWN0SW5mby5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgpAQCAtMzA0LDcgKzMwNSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0
KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgPSAwOwogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXIm
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlkYjRiNjhjNDVkOGJmMGU2
OTAyMzgzZTBmOGFhMjc4Mzc2OGE2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggYzU1YmRiNTQ5YTdmN2M1NDdlZTA2MTNiYTA3YzA5NTkyNzI1N2RlYS4uMjI5ZmQ1Yzc2ZDEx
NDk2MjcxMjM5YWZkYjcyZWYzYWQyZGM1MTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTksNiArMTE5LDcgQEAKICNpbXBvcnQg
Il9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9y
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgorI2lt
cG9ydCA8V2ViQ29yZS9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CkBAIC0xNDIzLDE0ICsxNDI0LDE0
IEBAIC0gKHZvaWQpX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOihpZCA8X1dLQXBwSGlnaGxpZ2h0
RGVsZWdhdGU+KWRlbGVnYXRlCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2
b2lkKV91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTooTlNEYXRhICopZGF0YQorLSAodm9pZClf
c3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9u
JiloaWdobGlnaHRJbmZvcm1hdGlvbgogewogICAgIGF1dG8gZGVsZWdhdGUgPSBzZWxmLl9hcHBI
aWdobGlnaHREZWxlZ2F0ZTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KV0pCi0gICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmll
dzpzZWxmIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOmRhdGFdOworICAgICAgICBbZGVsZWdh
dGUgX3dlYlZpZXc6c2VsZiB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpoaWdobGlnaHRJbmZv
cm1hdGlvbi5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCkBA
IC0yMDM1LDEyICsyMDM2LDE4IEBAIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKICAg
ICBbc2VsZiByZXN1bWVBbGxNZWRpYVBsYXliYWNrOm5pbF07CiB9CiAKLS0gKHZvaWQpX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOihOU0RhdGEgKilkYXRhCistICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxp
Z2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiB7CiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQotICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CisgICAgVmVjdG9yPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiBidWZmZXJzOworCisgICAgZm9yIChOU0RhdGEgKiBoaWdobGlnaHQgaW4gaGlnaGxp
Z2h0cykgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGhpZ2hsaWdodCk7CisgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKGJ1ZmZlcik7CisgICAgfQor
ICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhidWZmZXJzKTsKICNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHRzKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdJbnRlcm5hbC5oCmluZGV4IDQwOWQ4YWVkMzMzMDJlZGY5ZDFlM2Q4ZTM5NDIyM2FhM2VkYjlk
NzQuLjY4NzdjNjFhNzdjNmY4MTcxMTA0M2Y2NjUzNTRlNzNjZGI0ODZkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBFeGNlcHRpb25E
ZXRhaWxzOwogZW51bSBjbGFzcyBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA6IHVpbnQ4X3Q7CiB9
CkBAIC0yNjUsNyArMjY2LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2b2lkKV91cGRhdGVBcHBIaWdobGln
aHRzU3RvcmFnZTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihj
b25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpaW5mbzsKICNlbmRpZgogCiAt
ICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOihCT09MKXdpdGhvdXRX
YWl0aW5nRm9yUGFpbnRpbmcgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTooQk9PTCl3
aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTI2MjM4YWVhMGEx
NDc2MTE4ZTVhNjkwODU0N2FkNzljM2Y0NTRkMS4uZTQ1Y2IxYmJiYmViYTBiMWE3OTU1NmI4ZDQz
MTBjNzc4MjU1NWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNjgsNyArMzY4LDcgQEAgZm9yIHRoaXMgcHJv
cGVydHkuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRIYXNCbGFua092ZXJsYXk6
KSBCT09MIF9oYXNCbGFua092ZXJsYXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRl
cj1fc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6KSBpZCA8X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+
IF9hcHBIaWdobGlnaHREZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TRGF0
YSAqKWRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAq
KWRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAogLyohIEBhYnN0cmFjdCBUaGUgdGhlbWUgY29sb3Igb2YgdGhlIGFjdGl2ZSBwYWdlLgog
IEBkaXNjdXNzaW9uIFRoaXMgaXMgdGhlIHZhbHVlIG9mIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0
ZWQgb3IgbW9kaWZpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBlMzZlOGNjNGU1ZjcwNzhhMjQ0MTM1Y2UyZTZmYjdk
YTkwY2RlMjE3Li4zOTg4MDRhNzZjYzIzNTY2NzE1OTc0ZDJmOGVlNGZiM2VkZjFiMzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCkBAIC0zOCw2ICszOCw4IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKworc3RydWN0IEFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDcgKzc2
LDcgQEAgcHVibGljOgogICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25B
bHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgZmluYWw7CiAKICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGZpbmFsOworICAgIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBmaW5h
bDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCAzM2JiZTkyODVhODhmNTJlOTJh
NDZkM2QwMzgwMmIwZWY2OWY5NTU4Li4zNTMyNjY3ZGQyMGNiMzMxN2MyMmM4ZTk1ZTZjODkyNTA3
NWYwM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EubW0KQEAgLTEyMCwxMCArMTIwLDkgQEAgTlNTZXQgKlBhZ2VDbGllbnRJ
bXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBX
ZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiAmYXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24p
CiB7Ci0gICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKLSAgICBbbV93ZWJW
aWV3IF91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpuc0RhdGEuZ2V0KCldOworICAgIFttX3dl
YlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0OmFwcEhpZ2hsaWdodEluZm9ybWF0aW9uXTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZTE1ZjEwY2EyMDE1OTIw
YTE0MmU2ZGVhY2Q2MjI1ZDQ2OWVjODUwOC4uOWQwODQ0YzhmYzkxNGQyMmIxYzkzN2VjOWY4NzNh
ZGI3YjViM2YxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YWRkQWN0aXZpdHlTdGF0ZVVwZGF0ZUNvbXBsZXRpb25IYW5kbGVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJQYWdlUHJveHk6
OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCBjcmVhdGVOZXdHcm91cCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGln
aHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3Jl
YXRlTmV3R3JvdXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CkBAIC01NDIsMTQgKzU0MiwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KGNyZWF0ZU5ld0dyb3VwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGln
aGxpZ2h0cyhSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
dG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYgYnVmZmVycykKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OworICAg
IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlczsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzKGRhdGFSZWZlcmVuY2Up
KTsKKyAgICBmb3IgKGF1dG8gYnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBhdXRvIHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihidWZmZXIpOworICAgICAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGlmIChzaGFyZWRNZW1vcnkpCisgICAg
ICAgICAgICBzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKworICAgICAgICBtZW1vcnlIYW5kbGVzLmFwcGVuZChT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLT5zaXplKCkg
fSk7CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hs
aWdodHMoV1RGTW92ZShtZW1vcnlIYW5kbGVzKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA5ODhiOWZhOGUwNDRkZWRjMGU0ZjBmMDk2MjliZWM2
ODFkMDA0NDg0Li41OWIyMmNhM2FmZmU2OTY4YWNkOTA2NmY5YTViODViYWQyMWQ2NmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgZW51bSBj
bGFzcyBUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgOiB1aW50OF90OwogZW51bSBjbGFzcyBU
ZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdDsKIGVudW0gY2xh
c3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGln
aHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IFRleHRJ
bmRpY2F0b3JEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKQEAgLTE1MSw2ICsxNTIs
NyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVM
b2FkIDogYm9vbCB7IE5vLCBZZXMgfTsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9u
Owogc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb247CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0
YTsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKQEAgLTU3NSw3ICs1
NzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlQXBwSGlnaGxp
Z2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgPSAwOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYxYzQ4MzU1YmVhOTdkNzAuLjZh
YjYzYzkxMzUxMGQwNDI2ZGZjODQwN2U3NTZmZmEyYmYyNzU3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTQzLDggKzE0MywxMCBAQAogI2luY2x1ZGUg
IldlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYldoZWVsRXZl
bnRDb2FsZXNjZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0
bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5ncy5oPgpAQCAtNjY4NSwxMSArNjY4NywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKICAgICB9CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIGlmIChpdGVtLmFjdGlv
bigpID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3R3JvdXApIHsKLSAgICAg
ICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0OjpZZXMpOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2Uo
V2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQWRk
SGlnaGxpZ2h0VG9DdXJyZW50R3JvdXApIHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGNy
ZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodDo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC05ODM5
LDExICs5ODQxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBcHBIaWdobGln
aHRzU3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24mIGluZm8pCiB7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGRhdGEuYnVm
ZmVyKCkpOworICAgIC8vIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBpbmZvKTsKKworICAgIHBh
Z2VDbGllbnQoKS5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsKIAotICAgIHBhZ2VDbGllbnQoKS51
cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSgqZGF0YS5idWZmZXIoKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmNGMzOWViOGU1NDM4NmU0
OGI4ZTJjODFlYzk5MDZlZTQ0OGIxNzE3Li44YmFkZDVkZGYwNTNjNGU1Y2Q1MjM2YzRiM2YzYjFh
OTQ3YjZmNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250ZW50QXNT
dHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5oIgotI2luY2x1ZGUgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJE
cmFnQ29udHJvbGxlckFjdGlvbi5oIgpAQCAtMjM1LDYgKzIzNCw3IEBAIGNsYXNzIFRleHRJbmRp
Y2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwogCiBlbnVtIGNsYXNzIEF1dG9wbGF5RXZl
bnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJv
b2w7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogZW51bSBj
bGFzcyBFdmVudE1ha2VzR2FtZXBhZHNWaXNpYmxlIDogYm9vbDsKIGVudW0gY2xhc3MgTG9ja0Jh
Y2tGb3J3YXJkTGlzdCA6IGJvb2w7CkBAIC0yNDcsNiArMjQ3LDcgQEAgZW51bSBjbGFzcyBTaG91
bGRTYW1wbGUgOiBib29sOwogZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
OiBib29sOwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWludDhfdDsKIAorc3RydWN0
IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CiBz
dHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
OwpAQCAtMzc0LDcgKzM3NSw2IEBAIHN0cnVjdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTsKIHN0
cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsKIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAotZW51
bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2w7CiBlbnVtIGNsYXNzIE5l
Z290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50IDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CkBAIC0xODI2
LDkgKzE4MjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jSWZNb2NrRGV2aWNlc0VuYWJsZWRD
aGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCBjcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOwot
ICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5Jik7Ci0gICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3Rl
ZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKKyAgICB2b2lkIHN0
b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJik7
CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhWZWN0b3I8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA0OTE5YmM5ODhlOWM1ZmNhNzJmZmM4YzIxYTNmYzE0MzBiMjhjMDVhLi42NDdiYWMwMzliODg4
MDA2NTNlZDk4ZTI0YjU2NGVjYmIwNDhjMmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzUsNyArNTM1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRT
KQotICAgIFVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKElQQzo6U2hhcmVkQnVmZmVyQ29weSBk
YXRhKQorICAgIFN0b3JlQXBwSGlnaGxpZ2h0KHN0cnVjdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbiBpbmZvKQogI2VuZGlmCiAKICAgICBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBTdHJpbmcgY2hhbGxlbmdlU3RyaW5nLCBV
UkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGNlYzg3YzU4ZjAxMWNhN2RhNDk5M2NmMTUzYzFkNmZlNzI0NWE0YjguLmVjOGYwYzBkMGYwZjg0
MzIwNjdiY2Q1M2UwMDY5Mjg2MmQ3OGEyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzAsNyArMzAs
NyBAQAogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlci5oIgotI2ltcG9ydCAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIK
KwogI2ltcG9ydCAiRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaCIKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCkBAIC05Nyw2
ICs5Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9ySU9TLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbG9yU2VyaWFsaXphdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hs
aWdodC5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRh
RGV0ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgpAQCAtODk3NSwxMiAr
ODk3NiwxMiBAQCAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXMKIAogLSAodm9pZCljcmVh
dGVIaWdobGlnaHRJbkN1cnJlbnRHcm91cFdpdGhSYW5nZTooaWQpc2VuZGVyCiB7Ci0gICAgX3Bh
Z2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJLaXQ6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpObyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2Vs
ZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOwogfQog
CiAtICh2b2lkKWNyZWF0ZUhpZ2hsaWdodEluTmV3R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgog
ewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKKyAgICBfcGFnZS0+Y3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
OjpZZXMpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDFlNmViMDhhOWNkYjNkMDAwMDYwMTNkYjU4NjUyOTJhZWNl
NTI2Y2EuLjBiM2U0ODc0OWNlOTdhZDA1MWE5YWM3N2JjYjY1ODlmNWFlMjczMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MjAs
MTIgKzExOTIwLDYgQEAKIAkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFE
RUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RB
QzIwQzkyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NUExMjVDRjU3NDAwMDdBRjMxMiAvKiBSZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5QzI1
Q0U3NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5RDI1Q0U3NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MUQ0NzY1ODYyNUNDQTQxNjAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5MzI1Q0NDRTkzMDA3QUYzMTIgLyogUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTQy
NUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXNSZXBs
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUw
NjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYzA5YTI3
YjdlN2Y1M2ZiNDQyNDQ0NzFhNmQ2Yjc0ZmNlMDVkNDNhMC4uNDQ5ODc0YTNjMGNjZWY3M2Y3MTFk
MTc0MzQxYmE4OTJiMmMxYmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEyNDQsMTAg
KzEyNDQsOSBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBjb25zdAordm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hs
aWdodEluZm9ybWF0aW9uJiBpbmZvKSBjb25zdAogewotICAgIGF1dG8gYnVmZmVyID0gSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KGRhdGEpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGJ1ZmZlcikpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3JlQXBwSGlnaGxpZ2h0KGluZm8pKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDE0YmRjZjM5MzY1ZmJiN2FkNzA5M2Vj
Yzg0YzA5ZGMyNzBkMGI0Zi4uODlkZGVjZmVmMzEyMGE0ZTIyMTAyNmRkNGNlNTVjZjVmOTAyZmJk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNl
dDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKIAogI2lmIEVOQUJMRShBUFBf
SElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdo
bGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc2M2JjYWI4Njk2MmM3OWI2NzJmYzMz
MzEyM2M3MTRlYzJjZTEzNjYuLjA0OGZkMWU3MzhiYWQ0MmJmOTM4ZmViMmE3NjI0ZWU3YmM1MzRm
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC03MjUwLDcgKzcyNTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJldm9rZVNhbmRib3hFeHRlbnNpb25z
KFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+JiBzYW5kYm94RQogfQogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQotYm9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCiti
b29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKIHsKICAgICBhdXRvIGRv
Y3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCkBAIC03MjYzLDE2ICs3MjYzLDE5IEBAIGJvb2wgV2Vi
UGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IGNyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvY3VtZW50LT5h
cHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRl
KHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpKTsKLSAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3Rv
cmFnZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCk7CisgICAgZG9jdW1lbnQtPmFwcEhp
Z2hsaWdodFN0b3JhZ2UoKS5zdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNl
bGVjdGlvblJhbmdlLnZhbHVlKCkpLCBjcmVhdGVOZXdHcm91cCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNv
bnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKIHsKICAg
ICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCi0gICAgZG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hhbmRs
ZSA6IG1lbW9yeUhhbmRsZXMpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3Jl
QXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIg
Kj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSkpOworICAgIH0K
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggZWI1MjQ4OTAyODE1MDI2YTQ3YmE5ZDhjNTBjN2M4ZmNiNDVlMTllMC4uZTRmYzljY2Mw
NjEwNmM0ZTBmNmY0Mzc3NTkwODg2ZDQ2YWU4OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCi0jaW5jbHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJ
RC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgpAQCAtMjA0LDYgKzIwMyw3IEBAIGNs
YXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKIGVudW0g
U3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCA6IGJvb2w7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1
aW50OF90OwogZW51bSBjbGFzcyBEcmFnQXBwbGljYXRpb25GbGFncyA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3Q7CkBAIC0xMzk2LDggKzEzOTYsOCBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBib29s
IGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCk7Ci0gICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKKyAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJD
b3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7CisgICAgdm9pZCByZXN0b3JlQXBwSGln
aGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+KTsKICNlbmRpZgog
CiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldo
ZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IDhjZmNjNDljZjZmMzgwNzZhZjljMzIzMTkzYWQzNzUzNDhhNDQ4ZjAuLjgyNzMxMTZlODMzMTc4
MjcyMGFiZDFlZDY1N2FhZjIyMzJlN2JmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjI0LDggKzYyNCw4IEBA
IEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
Ym9vbCBjYW5Vc2UpCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgQ3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQotICAgIFJlc3RvcmVBcHBIaWdobGlnaHRzKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIENyZWF0ZUFwcEhpZ2hsaWdo
dEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQgY3JlYXRlTmV3R3JvdXApCisgICAgUmVzdG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKIAog
ICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2
ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAx
YTY2Y2U5ZGZmODFhYjkyZTJlN2E4ZWJmNWFjODA5YTliZDlkMmQyLi43Y2ZmMWRkMjUzZTJiZDhh
ZjhmOThmZWRjZDBkZDcyMzJkM2EyMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTUyLDcgKzE1
Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAg
ICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA4NmFmYTBlOWQz
N2FjZmUzZWQzNGNjMDRjMmYwMDRmMWU1ZGVjZWQ1Li43MjVjYjUwZjA5MDgyZGY2MjljZTljNTdk
MzdlN2QxMjA3MzhkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC03NDUsNyArNzQ1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERhdGVUaW1lQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVE
YXRlVGltZUNob29zZXIoRGF0ZVRpbWUKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0Cit2b2lkIFdlYkNocm9tZUNsaWVudDo6
c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24m
KSBjb25zdAogewogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420381</attachid>
            <date>2021-02-15 14:58:18 -0800</date>
            <delta_ts>2021-02-15 17:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210215145817.patch</filename>
            <type>text/plain</type>
            <size>76570</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uNTY4N2Y5ZjQ3YzkwMmJmYmIxNTViMzNmNDFkYzcw
OTk3Y2FmOTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGRh
dGEgcGF0aCBmb3IgQXBwIEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFsIGRhdGEgbmVlZGVkIGZv
ciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGluZm9ybWF0aW9uIHRvIGJl
IGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0TGlzdERhdGEuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaC4KKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGln
aHRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxp
Z2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWU6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAyMS0wMi0x
MSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV0dXJuaW5nIHNS
R0IgZnJvbSBDRyBjb2xvciBzcGFjZSBmdW5jdGlvbnMgb24gZmFpbHVyZSBpcyB0b28gZXJyb3Ig
cHJvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzRjYTkwOWM3YjNhNjE1YjhiNTQ1NTNiNzI2ZDlkNmJjMDE4OGQx
NS4uODBkYjJhM2Y1ZWQ4Nzk5YzkzOTM1ZWFjOTI4OWRjMzQzZDgzOWYzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NyBAQAorMjAyMS0wMi0xMiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBkYXRhIHBhdGggZm9yIEFwcCBIaWdobGlnaHRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQaXBlIHRo
cm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxheSwgYW5kIHVwZGF0ZSB0byBh
bGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBtb3JlIGVhc2lseS4KKworICAg
ICAgICAqIFNoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVIaWdobGln
aHRJbkN1cnJlbnRHcm91cFdpdGhSYW5nZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
cmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzdG9yZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY09TXSBFbmFibGUgQXVkaW8gQ2FwdHVyZSBpbiBHUFVQcm9j
ZXNzIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhN2UyNjE1NTdl
ODA3MzVhNzMzNTQ0OTJmN2Q4NGU3NWUwNjgwNDA1Li4wY2MyZTM2MmZjZTJhNjUxNTFhYTQ0OWE4
MDBiZWExNzI5OGY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgZGF0YSBwYXRoIGZvciBBcHAgSGlnaGxpZ2h0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li45Mjlh
MDM4NmU3Y2ZlNWVmYzQwY2NlYTk1MTlmZTU4NTg4MTc1MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTQ3LDkgKzQ3LDEyIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCiAgICAgTW9k
dWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbk9wdGlvbnMuaAogCisgICAgTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaAorICAgIE1vZHVsZXMvaGlnaGxpZ2h0L0NyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKICAgICBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHQu
aAogICAgIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmgKIAorCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlTmFtZUFuZFZlcnNpb25SZXF1ZXN0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkM2Q0NWNiM2NhMmRiNmRiY2M1YTlmYzJiZGVmNmQzY2Y4OTBlY2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1h
dGlvbi5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbiB7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OworICAg
IE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBp
c05ld0dyb3VwOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxBcHBIaWdobGlnaHRJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsKKworfTsKKworCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihoaWdobGlnaHQtPmRhdGFB
c1VJbnQ4UHRyKCkpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisKKyAgICBlbmNvZGVyIDw8ICEh
dGV4dDsKKyAgICBpZiAodGV4dCkKKyAgICAgICAgZW5jb2RlciA8PCB0ZXh0OworCisgICAgZW5j
b2RlciA8PCBpc05ld0dyb3VwOworCit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRp
b25hbDxBcHBIaWdobGlnaHRJbmZvcm1hdGlvbj4gQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb246OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworCisgICAgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGg7
CisgICAgZGVjb2RlciA+PiBsZW5ndGg7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihsZW5ndGgudmFsdWUoKSkpIHsKKyAgICAgICAgZGVj
b2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0K
KworICAgIFZlY3Rvcjx1aW50OF90PiBoaWdobGlnaHQ7CisgICAgaGlnaGxpZ2h0Lmdyb3coKmxl
bmd0aCk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQu
ZGF0YSgpLCBoaWdobGlnaHQuc2l6ZSgpLCAxKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBib29sIGhhc09iamVjdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKGhhc09iamVjdCkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHRleHQpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNOZXdHcm91cCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92
ZSh0ZXh0KSwgaXNOZXdHcm91cCB9fTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUF9I
SUdITElHSFRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiNTRkNTliYjM1ZGRhMTRjNmNmZGQ4YjdmZGU0NDg2MDVmNDBiOTRiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0TGlzdERhdGEuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAi
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIK
LSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgotI2lu
Y2x1ZGUgIlN0YXRpY1JhbmdlLmgiCi0jaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVk
ZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0jaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotCi1BcHBIaWdobGlnaHRMaXN0RGF0
YSBBcHBIaWdobGlnaHRMaXN0RGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQotewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7Ci0gICAgT3B0aW9uYWw8
QXBwSGlnaGxpZ2h0TGlzdERhdGE+IGRhdGE7Ci0gICAgZGVjb2RlciA+PiBkYXRhOwotICAgIHJl
dHVybiBkYXRhID8gKmRhdGEgOiBBcHBIaWdobGlnaHRMaXN0RGF0YSB7eyB9fTsKLX0KLQotUmVm
PFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0TGlzdERhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29u
c3QKLXsKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7Ci0gICAgZW5jb2Rl
ciA8PCAqdGhpczsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZm
ZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodExpc3REYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUx
M2IyMTRkYjk3ODkyMDk0NGNkZGIxZmIwZWExNjVkN2RhNmNlMWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0jaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotCi1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0KLWNs
YXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IE5vZGVQYXRo
Q29tcG9uZW50IHsKLSAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBu
b2RlTmFtZTsKLSAgICAgICAgU3RyaW5nIHRleHREYXRhOwotICAgICAgICB1bnNpZ25lZCBwYXRo
SW5kZXggeyAwIH07Ci0KLSAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxlbWVu
dElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVuc2lnbmVkIGluZGV4
KQotICAgICAgICAgICAgOiBpZGVudGlmaWVyKFdURk1vdmUoZWxlbWVudElkZW50aWZpZXIpKQot
ICAgICAgICAgICAgLCBub2RlTmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAgICAgLCB0ZXh0
RGF0YShXVEZNb3ZlKGRhdGEpKQotICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgZWxlbWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
YXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRl
bnRpZmllcikKLSAgICAgICAgICAgICwgbm9kZU5hbWUobmFtZSkKLSAgICAgICAgICAgICwgdGV4
dERhdGEoZGF0YSkKLSAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZVBhdGhDb21wb25l
bnQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaWRlbnRpZmll
ciA9PSBvdGhlci5pZGVudGlmaWVyICYmIG5vZGVOYW1lID09IG90aGVyLm5vZGVOYW1lICYmIHRl
eHREYXRhID09IG90aGVyLnRleHREYXRhICYmIHBhdGhJbmRleCA9PSBvdGhlci5wYXRoSW5kZXg7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZVBhdGhDb21w
b25lbnQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb2RlUGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29kZXIm
KTsKLSAgICB9OwotCi0gICAgdXNpbmcgTm9kZVBhdGggPSBWZWN0b3I8Tm9kZVBhdGhDb21wb25l
bnQ+OwotCi0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YSYpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoKSA9IGRlZmF1bHQ7
Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKFN0cmluZyYmIHRleHQsIE5vZGVQYXRoJiYgc3Rh
cnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBOb2RlUGF0aCYmIGVuZENvbnRhaW5l
ciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1fdGV4dChXVEZNb3ZlKHRleHQpKQot
ICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoV1RGTW92ZShzdGFydENvbnRhaW5lcikpCi0gICAg
ICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRhaW5l
cihXVEZNb3ZlKGVuZENvbnRhaW5lcikpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0
KQotICAgIHsKLSAgICB9Ci0KLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0g
ICAgICAgIDogbV90ZXh0KHRleHQpCi0gICAgICAgICwgbV9zdGFydENvbnRhaW5lcihzdGFydENv
bnRhaW5lcikKLSAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAs
IG1fZW5kQ29udGFpbmVyKGVuZENvbnRhaW5lcikKLSAgICAgICAgLCBtX2VuZE9mZnNldChlbmRP
ZmZzZXQpCi0gICAgewotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dDsgfQotICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lcigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KLSAgICBjb25zdCBOb2RlUGF0aCYg
ZW5kQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb250YWluZXI7IH0KLSAgICB1bnNp
Z25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQotCi0gICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGV4dDsKLSAg
ICBOb2RlUGF0aCBtX3N0YXJ0Q29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQg
eyAwIH07Ci0gICAgTm9kZVBhdGggbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9lbmRP
ZmZzZXQgeyAwIH07Ci19OwotCi1jbGFzcyBBcHBIaWdobGlnaHRMaXN0RGF0YSB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEFwcEhpZ2hsaWdodExpc3REYXRhIGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKLQotICAg
IEFwcEhpZ2hsaWdodExpc3REYXRhKGNvbnN0IEFwcEhpZ2hsaWdodExpc3REYXRhJikgPSBkZWZh
dWx0OwotICAgIEFwcEhpZ2hsaWdodExpc3REYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hs
aWdodExpc3REYXRhKFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiYgYW5ub3RhdGlvblJh
bmdlcykKLSAgICAgICAgOiBtX2Fubm90YXRpb25SYW5nZXMoV1RGTW92ZShhbm5vdGF0aW9uUmFu
Z2VzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4mIHJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvblJhbmdlczsgfQotICAg
IHZvaWQgc2V0UmFuZ2VzKFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiYgcmFuZ2VzKSB7
IG1fYW5ub3RhdGlvblJhbmdlcyA9IFdURk1vdmUocmFuZ2VzKTsgfQotICAgIHZvaWQgYWRkUmFu
Z2VzKFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiYgcmFuZ2VzKSB7IG1fYW5ub3RhdGlv
blJhbmdlcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShyYW5nZXMpKTsgfQotCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9hbm5vdGF0aW9uUmFuZ2VzLnNpemUoKTsgfQotICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvblJhbmdlcy5pc0VtcHR5KCk7IH0KLQotICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlz
dERhdGE+IGRlY29kZShEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0KLSAgICBWZWN0b3I8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiBtX2Fubm90YXRpb25SYW5nZXM7Ci19OwotCi10ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRp
ZmllcjsKLSAgICBlbmNvZGVyIDw8IG5vZGVOYW1lOwotICAgIGVuY29kZXIgPDwgdGV4dERhdGE7
Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGF0aEluZGV4KTsKLX0KLQot
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpO
b2RlUGF0aENvbXBvbmVudD4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVu
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVu
dGlmaWVyOwotICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKLSAgICBpZiAoIWlkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IG5v
ZGVOYW1lOwotICAgIGRlY29kZXIgPj4gbm9kZU5hbWU7Ci0gICAgaWYgKCFub2RlTmFtZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dERh
dGE7Ci0gICAgZGVjb2RlciA+PiB0ZXh0RGF0YTsKLSAgICBpZiAoIXRleHREYXRhKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhdGhJbmRl
eDsKLSAgICBkZWNvZGVyID4+IHBhdGhJbmRleDsKLSAgICBpZiAoIXBhdGhJbmRleCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlm
aWVyKSwgV1RGTW92ZSgqbm9kZU5hbWUpLCBXVEZNb3ZlKCp0ZXh0RGF0YSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPigqcGF0aEluZGV4KSB9fTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAotewotICAgIGVuY29kZXIgPDwgbV90ZXh0OwotICAgIGVuY29kZXIgPDwgbV9zdGFydENvbnRh
aW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3N0YXJ0T2Zmc2V0
KTsKLSAgICBlbmNvZGVyIDw8IG1fZW5kQ29udGFpbmVyOwotICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG1fZW5kT2Zmc2V0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsK
LSAgICBkZWNvZGVyID4+IHRleHQ7Ci0gICAgaWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IHN0YXJ0Q29udGFpbmVyOwotICAg
IGRlY29kZXIgPj4gc3RhcnRDb250YWluZXI7Ci0gICAgaWYgKCFzdGFydENvbnRhaW5lcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzdGFy
dE9mZnNldDsKLSAgICBkZWNvZGVyID4+IHN0YXJ0T2Zmc2V0OwotICAgIGlmICghc3RhcnRPZmZz
ZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxOb2RlUGF0
aD4gZW5kQ29udGFpbmVyOwotICAgIGRlY29kZXIgPj4gZW5kQ29udGFpbmVyOwotICAgIGlmICgh
ZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IGVuZE9mZnNldDsKLSAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKLSAgICBp
ZiAoIWVuZE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotCi0gICAgcmV0
dXJuIHt7Ci0gICAgICAgIFdURk1vdmUoKnRleHQpLAotICAgICAgICBXVEZNb3ZlKCpzdGFydENv
bnRhaW5lciksCi0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqc3RhcnRPZmZzZXQpLAot
ICAgICAgICBXVEZNb3ZlKCplbmRDb250YWluZXIpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKmVuZE9mZnNldCksCi0gICAgfX07Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAotewotICAgIGVuY29kZXIgPDwgbV9hbm5vdGF0aW9uUmFuZ2VzOwotfQotCi10ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRMaXN0RGF0YT4gQXBwSGlnaGxpZ2h0
TGlzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3Rv
cjxBcHBIaWdobGlnaHRSYW5nZURhdGE+PiBhbm5vdGF0aW9uUmFuZ2VzOwotICAgIGRlY29kZXIg
Pj4gYW5ub3RhdGlvblJhbmdlczsKLSAgICBpZiAoIWFubm90YXRpb25SYW5nZXMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqYW5ub3RhdGlv
blJhbmdlcykgfX07Ci19Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTliYzU2OWE1MDQ5MjJiMTRmMzk1NjBlOWYyN2M4
N2JhMzc1NjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURh
dGEuaCIKKworI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRN
TEJvZHlFbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9j
dW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1w
bGVSYW5nZS5oIgorI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
eworICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1
cm4gZGF0YTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBl
bmNvZGVyOworICAgIGVuY29kZXIgPDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRo
Q29tcG9uZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8
IHRleHREYXRhOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhdGhJbmRl
eCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBh
dGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFN0
cmluZz4gaWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFp
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
U3RyaW5nPiBub2RlTmFtZTsKKyAgICBkZWNvZGVyID4+IG5vZGVOYW1lOworICAgIGlmICghbm9k
ZU5hbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJp
bmc+IHRleHREYXRhOworICAgIGRlY29kZXIgPj4gdGV4dERhdGE7CisgICAgaWYgKCF0ZXh0RGF0
YSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYXRoSW5kZXg7CisgICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CisgICAgaWYgKCFwYXRoSW5k
ZXgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92
ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oKnBhdGhJbmRleCkgfX07Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdGV4dDsKKyAgICBlbmNvZGVyIDw8IG1f
c3RhcnRDb250YWluZXI7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9z
dGFydE9mZnNldCk7CisgICAgZW5jb2RlciA8PCBtX2VuZENvbnRhaW5lcjsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2VuZE9mZnNldCk7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJp
bmc+IHRleHQ7CisgICAgZGVjb2RlciA+PiB0ZXh0OworICAgIGlmICghdGV4dCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRh
aW5lcjsKKyAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVyOworICAgIGlmICghc3RhcnRDb250
YWluZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50
NjRfdD4gc3RhcnRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKKyAgICBpZiAo
IXN0YXJ0T2Zmc2V0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKKyAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsK
KyAgICBpZiAoIWVuZENvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBlbmRPZmZz
ZXQ7CisgICAgaWYgKCFlbmRPZmZzZXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KworICAgIHJldHVybiB7eworICAgICAgICBXVEZNb3ZlKCp0ZXh0KSwKKyAgICAgICAgV1RGTW92
ZSgqc3RhcnRDb250YWluZXIpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0
T2Zmc2V0KSwKKyAgICAgICAgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KCplbmRPZmZzZXQpLAorICAgIH19OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTRjZGNhNzQx
NDVkNWIyN2Y1MTNkNzM1MTkzNWEyOTJhMjQ3ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAs
MCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKKworY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKK1dURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdHJ1Y3Qg
Tm9kZVBhdGhDb21wb25lbnQgeworICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICAgICAg
U3RyaW5nIG5vZGVOYW1lOworICAgICAgICBTdHJpbmcgdGV4dERhdGE7CisgICAgICAgIHVuc2ln
bmVkIHBhdGhJbmRleCB7IDAgfTsKKworICAgICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcm
JiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCisgICAgICAgICAgICA6IGlkZW50aWZpZXIoV1RGTW92ZShlbGVtZW50SWRlbnRp
ZmllcikpCisgICAgICAgICAgICAsIG5vZGVOYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICAg
ICAsIHRleHREYXRhKFdURk1vdmUoZGF0YSkpCisgICAgICAgICAgICAsIHBhdGhJbmRleChpbmRl
eCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoY29u
c3QgU3RyaW5nJiBlbGVtZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICAgICAgOiBpZGVudGlmaWVyKGVs
ZW1lbnRJZGVudGlmaWVyKQorICAgICAgICAgICAgLCBub2RlTmFtZShuYW1lKQorICAgICAgICAg
ICAgLCB0ZXh0RGF0YShkYXRhKQorICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlUGF0
aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBp
ZGVudGlmaWVyID09IG90aGVyLmlkZW50aWZpZXIgJiYgbm9kZU5hbWUgPT0gb3RoZXIubm9kZU5h
bWUgJiYgdGV4dERhdGEgPT0gb3RoZXIudGV4dERhdGEgJiYgcGF0aEluZGV4ID09IG90aGVyLnBh
dGhJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2Rl
UGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE5vZGVQYXRoQ29tcG9uZW50PiBkZWNvZGUo
RGVjb2RlciYpOworICAgIH07CisKKyAgICB1c2luZyBOb2RlUGF0aCA9IFZlY3RvcjxOb2RlUGF0
aENvbXBvbmVudD47CisKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhJikgPSBkZWZhdWx0OworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSgpID0g
ZGVmYXVsdDsKKyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoU3RyaW5nJiYgdGV4dCwgTm9kZVBh
dGgmJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE5vZGVQYXRoJiYgZW5k
Q29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogbV90ZXh0KFdURk1vdmUo
dGV4dCkpCisgICAgICAgICwgbV9zdGFydENvbnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVy
KSkKKyAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fZW5k
Q29udGFpbmVyKFdURk1vdmUoZW5kQ29udGFpbmVyKSkKKyAgICAgICAgLCBtX2VuZE9mZnNldChl
bmRPZmZzZXQpCisgICAgeworICAgIH0KKworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKKyAgICAgICAgOiBtX3RleHQodGV4dCkKKyAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KHN0YXJ0Q29udGFpbmVyKQorICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisg
ICAgICAgICwgbV9lbmRDb250YWluZXIoZW5kQ29udGFpbmVyKQorICAgICAgICAsIG1fZW5kT2Zm
c2V0KGVuZE9mZnNldCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFp
bmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbnRhaW5lcjsgfQorICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQorICAgIGNvbnN0IE5v
ZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2VuZENvbnRhaW5lcjsgfQor
ICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRv
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fdGV4dDsKKyAg
ICBOb2RlUGF0aCBtX3N0YXJ0Q29udGFpbmVyOworICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQg
eyAwIH07CisgICAgTm9kZVBhdGggbV9lbmRDb250YWluZXI7CisgICAgdW5zaWduZWQgbV9lbmRP
ZmZzZXQgeyAwIH07Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmNwcAppbmRleCBjM2I4YmI3N2MwYzRmNGU1Yzk5ODcxNzkyMzkyZTNkZGQ4ZDE5MTg2
Li4wZTAyYjVkNjRhY2JhYTBlODk3NmZjNjliMDY4MzRkMTE1MmI1MGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmNwcApAQCAtMjcsNyArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFw
cEhpZ2hsaWdodFN0b3JhZ2UuaCIKIAotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExpc3REYXRhLmgi
CisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKKyNpbmNsdWRlICJBcHBIaWdo
bGlnaHRSYW5nZURhdGEuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgpAQCAtNDAsNiArNDEs
OCBAQAogI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CiAKKyNkZWZpbmUgVEVYVF9QUkVWSUVXX0xFTkdUSCAxMDAKKwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTE5Niw4ICsxOTksMTAgQEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
Tm9kZVBhdGggbWFrZU5vZGVQYXRoKFJlZlB0cjxOb2RlPiYmIG5vZGUpCiAKIHN0YXRpYyBBcHBI
aWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRp
Y1JhbmdlJiByYW5nZSkKIHsKKyAgICBhdXRvIHRleHQgPSBwbGFpblRleHQocmFuZ2UpOworICAg
IHRleHQudHJ1bmNhdGUoVEVYVF9QUkVWSUVXX0xFTkdUSCk7CiAgICAgcmV0dXJuIHsKLSAgICAg
ICAgcGxhaW5UZXh0KHJhbmdlKSwKKyAgICAgICAgdGV4dCwKICAgICAgICAgbWFrZU5vZGVQYXRo
KCZyYW5nZS5zdGFydENvbnRhaW5lcigpKSwKICAgICAgICAgcmFuZ2Uuc3RhcnRPZmZzZXQoKSwK
ICAgICAgICAgbWFrZU5vZGVQYXRoKCZyYW5nZS5lbmRDb250YWluZXIoKSksCkBAIC0yMTAsNDgg
KzIxNSwzNSBAQCBBcHBIaWdobGlnaHRTdG9yYWdlOjpBcHBIaWdobGlnaHRTdG9yYWdlKERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSgpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBw
SGlnaGxpZ2h0KFN0YXRpY1JhbmdlJiByYW5nZSwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
aXNOZXdHcm91cCkKIHsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwor
ICAgIGF1dG8gZGF0YSA9IGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShyYW5nZSk7CisgICAg
T3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogCi0gICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFkYXRhLnRleHQoKS5pc0VtcHR5KCkpCisgICAgICAgIHRleHQgPSBk
YXRhLnRleHQoKTsKIAotICAgIGlmICghbV9kb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1
cm47CisgICAgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24gaW5mbyA9IHtkYXRhLnRvU2hhcmVkQnVm
ZmVyKCksIHRleHQsIGlzTmV3R3JvdXB9OwogCi0gICAgaWYgKGF1dG8gYXBwSGlnaGxpZ2h0UmVn
aXN0ZXIgPSBtX2RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcklmRXhpc3RzKCkpIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBhcHBIaWdobGlnaHRSZWdpc3Rlci0+bWFwKCkp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZhbHVlLT5y
YW5nZXNEYXRhKCkpCi0gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY3JlYXRlQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhKHJhbmdlRGF0YS0+cmFuZ2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBB
cHBIaWdobGlnaHRMaXN0RGF0YSBsaXN0RGF0YSB7IFdURk1vdmUoZGF0YSkgfTsKLQotICAgIG1f
ZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UobGlz
dERhdGEudG9TaGFyZWRCdWZmZXIoKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUo
KS5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdl
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK2Jvb2wg
QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGFwcEhpZ2hsaWdodExpc3REYXRhID0gQXBwSGlnaGxp
Z2h0TGlzdERhdGE6OmNyZWF0ZShidWZmZXIpOwotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IHVucmVzdG9yZWRSYW5nZXM7Ci0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gcmVzdG9yZWRSYW5nZXM7CisgICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1fZG9jdW1lbnQu
Z2V0KCk7CiAKICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1fZG9jdW1lbnQuZ2V0
KCk7CisgICAgYXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZShidWZmZXIpOworICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKGF1dG8mIGFwcEhpZ2hsaWdodExpc3REYXRh
IDogYXBwSGlnaGxpZ2h0TGlzdERhdGEucmFuZ2VzKCkpIHsKLSAgICAgICAgYXV0byByYW5nZSA9
IGZpbmRSYW5nZShhcHBIaWdobGlnaHRMaXN0RGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKLSAgICAg
ICAgaWYgKCFyYW5nZSkgewotICAgICAgICAgICAgdW5yZXN0b3JlZFJhbmdlcy5hcHBlbmQoYXBw
SGlnaGxpZ2h0TGlzdERhdGEpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAg
ICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKCphcHBIaWdobGlnaHRSYW5nZURhdGEsICpzdHJvbmdE
b2N1bWVudCk7CiAKLSAgICAgICAgcmVzdG9yZWRSYW5nZXMuYXBwZW5kKGFwcEhpZ2hsaWdodExp
c3REYXRhKTsKLSAgICAgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCku
YWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7Ci0gICAgfQorICAg
IHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChT
dGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCmluZGV4IDhiNjA3NWFkNjQwMjQyOWNlZGM0YmU5MjZmNmNkYTA5ZTQ0
M2JjOTkuLjhjYTAyNTQ2YjMyYmUwMGI0NmE2NjU5ZjM5MDk4NTYxNjZhNzc0MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmgKQEAgLTM2LDE4ICszNiwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIEFwcEhpZ2hsaWdodExpc3REYXRhOwogY2xhc3Mg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBIaWdobGlnaHQ7CisKK2VudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQgOiBib29sOwogCiBjbGFzcyBBcHBIaWdobGlnaHRTdG9yYWdlIDogUmVmQ291bnRlZDxB
cHBIaWdobGlnaHRTdG9yYWdlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQXBwSGlnaGxpZ2h0U3RvcmFnZShEb2N1bWVudCYpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgLCBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6
CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRjOTMxZjJiZGU0MjcyOGU4NjQ1NTgwZDdlMzAzZGZiNTAyMTc4OTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9DcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdo
dFJlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdo
dFJlZ2lzdGVyLmNwcAppbmRleCA2OGVkMjdmZGIzZjc0ZTBiMWE5MzlmNTgxZmU3MjM4NjM3MGZm
Y2Q5Li4xNGQwMzJjOTdlNWE2MTVlNmZjOWM1NmU3NDk2ZmQ3M2MwNWU3ZGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwCkBAIC02NSw1ICs2NSw2IEBAIHZvaWQgSGlnaGxpZ2h0UmVnaXN0ZXI6OmFkZEFwcEhpZ2hs
aWdodChSZWY8U3RhdGljUmFuZ2U+JiYgdmFsdWUpCiAgICAgZWxzZQogICAgICAgICBzZXRGcm9t
TWFwTGlrZShhcHBIaWdobGlnaHRLZXkoKSwgSGlnaGxpZ2h0OjpjcmVhdGUoV1RGTW92ZSh2YWx1
ZSkpKTsKIH0KKwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhjMDNiOTMyNjQ5ODVmMGJi
MWVlOWY2ZDIwMjNlMzQ4MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRlOGM1NGJiYTZiZjY1MDFjMGM2
MmQ5NjM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02NCw3ICs2NCw3IEBAIE1vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db29yZGluYXRlcy5j
cHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCi1Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKK01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0
b3JhZ2UuY3BwCiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKIE1vZHVs
ZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZTNiYTJkOGJiYWExNzYyNDRkYTYyM2M2
OTI5NmU1ZmViZjA3MzBiLi4zODgxYjZhNzAzOWRhNGEyN2Y5ODY1NjhiMDdhM2YxYWU1NzMxNDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjIzLDYgKzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1ODI5QTI3MDBDMDkzNjggLyog
QXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQyNTA3MDcyNTgyOUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3Jh
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NDMwRDAwQjI1NzVBODNFMDA0NkQ0MDEgLyogSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyog
SGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDQzMEQwMEQyNTc1QThBNTAwNDZENDAxIC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MDIzNkE1
NkFDMDA5QjQ4NDcgLyogSGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyog
QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ0NTc3NUU1MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NjND
RjY4MjIxMkZBNjgwMDFBODU3NyAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5
MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTQ0NjVE
N0JEMjUzNkQwNUUwMDE2NjY2RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4
RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTIzMSwxMiArMTIzMiwxMyBAQAogCQk0NDc5NTgwNDE2NDNC
NDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJz
ZWRDb250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ0OEEyOUJGMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4
QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ4QjFCN0EwRjNB
MkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRl
eHRTaXplQWRqdXN0bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ0OTMxNjkxMjVEN0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQ5MzE2OTAyNUQ3QTFFRjAwQUE2NkRFIC8qIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ5
NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlDMTM5ODEz
NkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggKi87IH07CiAJCTQ0OTZF
M0EwMTM5ODEzQTUwMDNFRTMyQSAvKiBKU1NWR01QYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5NkUzOUYxMzk4MTNBNTAwM0VFMzJB
IC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggKi87IH07CiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFG
RSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2VJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3Rvcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFC
MTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEy
OEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBN
YXRoTUxOYW1lcy5oICovOyB9OwotCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGln
aGxpZ2h0TGlzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5o
ICovOyB9OworCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEFF
MDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi87IH07CiAJ
CTQ0Qzk5MTg2MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAw
NTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUw
MDU4NjY3MCAvKiBUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRDOTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07
CiAJCTQ0RTM0OUY5MjQ2RjRFMTkwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0
REM3MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MTE3LDYgKzgxMTksNyBAQAogCQk0NDM3
QzRBOTI0RTJBRTVGMDAwOTUxMjggLyogTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExhenlMb2FkRnJhbWVPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0M0YwNDI2MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3Rp
ZmllcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDRE
NEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDgg
LyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVh
cmFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyog
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAvKiBQbGF5YmFj
a1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNr
VGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTgxMjksNiArODEzMiw3IEBACiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBK
U0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NDhCMUI3ODBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRTaXplQWRqdXN0bWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcg
LyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRo
ID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ0OTMxNjkwMjVEN0ExRUYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDk2RTM5QjEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQ5NkUzOUMxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlTW90aW9u
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDk2RTM5RjEzOTgxM0E1
MDAzRUUzMkEgLyogSlNTVkdNUGF0aEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTVkdNUGF0aEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgxMzYsOCArODE0MCw4IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJD
b3JlVVJMUmVzcG9uc2VJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4
QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0
aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMu
aDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodExpc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAv
KiBBcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0
NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZWxlY3Rpb25SYW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDRCMzhCRjkyNTM2OUE4ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyog
R2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRs
ZXJzK1NlbGVjdGlvbi5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MzYs
MTAgKzE5ODQwLDEyIEBACiAJCTQ0RTg4RTQ3MjM2OERGMEYwMDlCNDg0NyAvKiBoaWdobGlnaHQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4
MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRB
RTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8sCisJCQkJ
NDQ1MjEwREQyNUQ2MUVGRjAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8s
CisJCQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAgKi8sCisJCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oICovLAogCQkJCTQ0MjUwNzA2MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRT
dG9yYWdlLmNwcCAqLywKIAkJCQk0NDI1MDcwNzI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxp
Z2h0U3RvcmFnZS5oICovLAorCQkJCTQ0OTMxNjkwMjVEN0ExRUYwMEFBNjZERSAvKiBDcmVhdGVO
ZXdHcm91cEZvckhpZ2hsaWdodC5oICovLAogCQkJCTQ0RTg4RTU0MjM2QTY2QTEwMDlCNDg0NyAv
KiBIaWdobGlnaHQuY3BwICovLAogCQkJCTQ0RTg4RTUxMjM2QTVDOEQwMDlCNDg0NyAvKiBIaWdo
bGlnaHQuaCAqLywKIAkJCQk0NEU4OEU0RDIzNjkxMjhCMDA5QjQ4NDcgLyogSGlnaGxpZ2h0Lmlk
bCAqLywKQEAgLTMxMTU4LDcgKzMxMTY0LDggQEAKIAkJCQk1NzE1MkI1QTIxQ0IzRTg4MDAwQzM3
Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTUyQjVDMjFDQzE5MDIw
MDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5
RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAv
KiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MjUwNzA5MjU4
MjlBMjcwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTEzRTAyRTIzMzFBMTM0MDA5QzMzQTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFERjVBOTQxRjdFQzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFj
dEZpZWxkLmggaW4gSGVhZGVycyAqLywKQEAgLTMxNjIxLDYgKzMxNjI4LDcgQEAKIAkJCQk5Mzky
RjE0QzBBRDE4NjFCMDA2OTFCRDQgLyogQ291bnRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ0OTMxNjkxMjVEN0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VG
M0NEIC8qIENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTI5MTdBMTk4NUVGMzkw
MEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5MjkxN0Ux
OTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDA0YmY4YTUyMzFkN2Q3Njg1NjAy
MmM0Yjc4OTRjYWJhZTZkNGVmYjguLmZjOGE5NGEzMzcyMDY1ZWYwNjA3Nzk1YjE3Y2IxNjhlNzUx
NjQ5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW1wdHlDbGllbnRzLmgiCiAK
KyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNs
dWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpAQCAtNTAyLDcgKzUwMyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEYXRlVGltZUNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVEYXRlVGlt
ZUNob29zZXIoRGF0ZVRpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZv
aWQgRW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0Cit2b2lkIEVtcHR5Q2hyb21lQ2xpZW50OjpzdG9y
ZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNzg4YjQ1YWFk
MTVmMzQwZjJlZDA5OWRkNGJjY2Y1YTVlYzkzYzNlLi4xNGM0YTkyNzc1MWIwNmI2ODQ4OTQ1ZDA2
Y2EyMzI4MDIxMzViNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0x
NDYsNyArMTQ2LDcgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xp
ZW50IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29u
c3QgZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5l
bChGcmFtZSYsIEZpbGVDaG9vc2VyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXgg
ZDMwNjljZWUxMzc4ZWYwZDI2NTAwNGMyNzgwNWNmN2YxYzViZTM4My4uYTU5YWE0MTYzODcyOGNk
YzM0ZTY1MzFlMjJlMzE0ZTU1M2U5YjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtMjIs
NiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogCisj
aW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJDb250YWN0SW5mby5oIgogI2luY2x1ZGUgIkNvbnRhY3RzUmVxdWVz
dERhdGEuaCIKQEAgLTUxMiw5ICs1MTMsOSBAQCB2b2lkIENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZQogfQog
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBDaHJvbWU6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3Zv
aWQgQ2hyb21lOjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlv
biYgaW5mbykgY29uc3QKIHsKLSAgICBtX2NsaWVudC51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFn
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBtX2NsaWVudC5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBmODE2Nzg2MjI0OWFmZWE1ZDFkYWNl
ODVkOWQxZjc5MDIwYTgxYzk3Li5mYjZmMWM3OTcwZTYwZmZmYTIzODZkNWUwYzVhNWIyNWQwMTMw
ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgUG9wdXBNZW51
Q2xpZW50OwogY2xhc3MgUG9wdXBPcGVuaW5nT2JzZXJ2ZXI7CiBjbGFzcyBTZWFyY2hQb3B1cE1l
bnU7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBDb250YWN0SW5m
bzsKIHN0cnVjdCBDb250YWN0c1JlcXVlc3REYXRhOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBh
cmFtZXRlcnM7CkBAIC0xNjUsNyArMTY2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdDsKKyAgICB2b2lkIHN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3Q7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCmluZGV4IGNmMmIzZjBkOWFiYWQyZTcyZWNhZGM3ZTE1M2E5YjE1MTYz
MzFjNGQuLjUxYjA5N2I2OTgzNDJmZWE3OTZlNTRiYzkyOWU5ZDNkN2MzYWVkN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMjIsNiArMjIsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJBdXRvcGxheUV2ZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdElu
Zm8uaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKQEAgLTMwNCw3ICszMDUsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3Jl
OjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0ID0gMDsKICNlbmRpZgogCiAgICAgdmly
dHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZGI0YjY4YzQ1ZDhiZjBlNjkwMjM4M2UwZjhhYTI3
ODM3NjhhNjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
OiBib29sIHsgTm8sIFllcyB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM1NWJkYjU0OWE3
ZjdjNTQ3ZWUwNjEzYmEwN2MwOTU5MjcyNTdkZWEuLjcxMjA5YjhlYTUxN2I1ZWNmOGE0NDViOWU5
NTZkYjQyNTVmZDNiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMTE5LDYgKzExOSw3IEBACiAjaW1wb3J0ICJfV0tUZXh0TWFuaXB1
bGF0aW9uVG9rZW4uaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0
cmluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbG9yU2VyaWFsaXphdGlvbi5oPgpAQCAtMTQyMywxNCArMTQyNCwxNCBAQCAtICh2b2lkKV9z
ZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTooaWQgPF9XS0FwcEhpZ2hsaWdodERlbGVnYXRlPilkZWxl
Z2F0ZQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClfdXBkYXRlQXBw
SGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0YSAqKWRhdGEKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxp
Z2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpaGlnaGxpZ2h0SW5m
b3JtYXRpb24KIHsKICAgICBhdXRvIGRlbGVnYXRlID0gc2VsZi5fYXBwSGlnaGxpZ2h0RGVsZWdh
dGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlOildKQotICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZTpkYXRhXTsKKyAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNl
bGYgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6aGlnaGxpZ2h0SW5mb3JtYXRpb24uaGlnaGxp
Z2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApAQCAtMjAzNSwxMiArMjAz
NiwyMSBAQCAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiAgICAgW3NlbGYgcmVzdW1l
QWxsTWVkaWFQbGF5YmFjazpuaWxdOwogfQogCi0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0
czooTlNEYXRhICopZGF0YQorLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8
TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAg
ICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSkpOworICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJz
OworCisgICAgZm9yIChOU0RhdGEgKiBoaWdobGlnaHQgaW4gaGlnaGxpZ2h0cykgeworICAgICAg
ICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShoaWdo
bGlnaHQubGVuZ3RoKTsKKyAgICAgICAgaWYgKHNoYXJlZE1lbW9yeSkgeworICAgICAgICAgICAg
W2hpZ2hsaWdodCBnZXRCeXRlczpzaGFyZWRNZW1vcnktPmRhdGEoKSBsZW5ndGg6aGlnaGxpZ2h0
Lmxlbmd0aF07CisgICAgICAgICAgICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoYnVmZmVycyk7
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oaGlnaGxp
Z2h0cyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCA0MDlkOGFlZDMzMzAyZWRmOWQxZTNk
OGUzOTQyMjNhYTNlZGI5ZDc0Li42ODc3YzYxYTc3YzZmODE3MTEwNDNmNjY1MzU0ZTczY2RiNDg2
ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBBdHRhY2htZW50OwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBz
dHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIGVudW0gY2xhc3MgV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGUgOiB1aW50OF90OwogfQpAQCAtMjY1LDcgKzI2Niw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClf
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0YSAqKWRhdGE7CistICh2b2lkKV9zdG9y
ZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKWlu
Zm87CiAjZW5kaWYKIAogLSAodm9pZClfaW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZToodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sgd2l0aG91dFdhaXRpbmdGb3JQYWludGlu
ZzooQk9PTCl3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0
ZWRSZXNpemU6KEJPT0wpd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDkyNjIzOGFlYTBhMTQ3NjExOGU1YTY5MDg1NDdhZDc5YzNmNDU0ZDEuLmU0NWNiMWJiYmJl
YmEwYjFhNzk1NTZiOGQ0MzEwYzc3ODI1NTViZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzY4LDcgKzM2OCw3
IEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
SGFzQmxhbmtPdmVybGF5OikgQk9PTCBfaGFzQmxhbmtPdmVybGF5IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrLCBzZXR0ZXI9X3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOikgaWQgPF9XS0FwcEhp
Z2hsaWdodERlbGVnYXRlPiBfYXBwSGlnaGxpZ2h0RGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3Jlc3RvcmVBcHBI
aWdobGlnaHRzOihOU0RhdGEgKilkYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNB
cnJheTxOU0RhdGEgKj4gKilkYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIC8qISBAYWJzdHJhY3QgVGhlIHRoZW1lIGNvbG9yIG9mIHRo
ZSBhY3RpdmUgcGFnZS4KICBAZGlzY3Vzc2lvbiBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbW9z
dCByZWNlbnRseSBjcmVhdGVkIG9yIG1vZGlmaWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggZTM2ZThjYzRlNWY3MDc4
YTI0NDEzNWNlMmU2ZmI3ZGE5MGNkZTIxNy4uMzk4ODA0YTc2Y2MyMzU2NjcxNTk3NGQyZjhlZTRm
YjNlZGYxYjM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFn
ZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EuaApAQCAtMzgsNiArMzgsOCBAQCBjbGFzcyBBdHRhY2htZW50Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI7
CisKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC03NCw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnBs
YXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpIGZp
bmFsOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGln
aGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBmaW5hbDsK
KyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodElu
Zm9ybWF0aW9uJikgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggMzNi
YmU5Mjg1YTg4ZjUyZTkyYTQ2ZDNkMDM4MDJiMGVmNjlmOTU1OC4uMzUzMjY2N2RkMjBjYjMzMTdj
MjJjOGU5NWU2Yzg5MjUwNzVmMDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBAIC0xMjAsMTAgKzEyMCw5IEBAIE5T
U2V0ICpQYWdlQ2xpZW50SW1wbENvY29hOjpzZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMo
KSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFBhZ2VD
bGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6c3RvcmVBcHBI
aWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24gJmFwcEhpZ2hs
aWdodEluZm9ybWF0aW9uKQogewotICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRh
KCk7Ci0gICAgW21fd2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6bnNEYXRhLmdl
dCgpXTsKKyAgICBbbV93ZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDphcHBIaWdobGlnaHRJbmZv
cm1hdGlvbl07CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4
IGUxNWYxMGNhMjAxNTkyMGExNDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLmNkYzI1MDFkYTU1MDFh
YWQ2M2JkNjUwMmZlNzdjZDkzZjk3ZGQ2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC01MzQsNyArNTM0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmFkZEFjdGl2aXR5U3RhdGVVcGRhdGVDb21wbGV0aW9uSGFuZGxlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2kKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZv
aWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCit2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQyLDE0ICs1NDIsMjEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdo
dEluU2VsZWN0ZWRSYW5nZShjcmVhdGVOZXdHcm91cCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5
Pj4mIGhpZ2hsaWdodHMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZSB7IGRhdGEgfTsKKyAgICBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9y
eUhhbmRsZXM7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxp
Z2h0cyhkYXRhUmVmZXJlbmNlKSk7CisgICAgZm9yIChhdXRvIGhpZ2hsaWdodCA6IGhpZ2hsaWdo
dHMpIHsKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBoaWdo
bGlnaHQtPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKTsKKworICAgICAgICBtZW1vcnlIYW5kbGVzLmFwcGVuZChTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgaGlnaGxpZ2h0LT5zaXplKCkgfSk7CisgICAgfQor
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoV1RGTW92
ZShtZW1vcnlIYW5kbGVzKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA5ODhiOWZhOGUwNDRkZWRjMGU0ZjBmMDk2MjliZWM2ODFkMDA0NDg0Li41
OWIyMmNhM2FmZmU2OTY4YWNkOTA2NmY5YTViODViYWQyMWQ2NmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUgOiB1aW50OF90OwogZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9y
V2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlv
bjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRh
Owogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKQEAgLTE1MSw2ICsxNTIsNyBAQCBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb247CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKQEAgLTU3NSw3ICs1NzcsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdl
YkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYxYzQ4MzU1YmVhOTdkNzAuLmY1NzdjM2ViYWRjZTlj
ZGNlZmI2MmY5YTRmMWIyZjg4NjdlNjhkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTQzLDYgKzE0Myw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcEhp
Z2hsaWdodEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KQEAgLTY2ODUsMTEgKzY2ODYs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdl
YkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgfQogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdo
bGlnaHRUb05ld0dyb3VwKSB7Ci0gICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKKyAgICAgICAgY3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0OjpZZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvQ3VycmVudEdyb3VwKSB7Ci0gICAg
ICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodDo6Tm8pOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2Uo
V2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgpAQCAtOTgzOSwxMSArOTg0MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0
IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiBpbmZvKQogewotICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLCBkYXRhLmJ1ZmZlcigpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgIWluZm8uaGlnaGxpZ2h0LT5pc0VtcHR5KCkpOworCisgICAgcGFnZUNsaWVudCgpLnN0
b3JlQXBwSGlnaGxpZ2h0KGluZm8pOwogCi0gICAgcGFnZUNsaWVudCgpLnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4YjhlMmM4MWVjOTkw
NmVlNDQ4YjE3MTcuLmFhNWQ4MDA4NmY5ZjMwZTA4MzFhMDhjNjVjMWZlMWQ5NDE2YzZiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCi0jaW5j
bHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcgQEAgY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNz
IFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7
CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xh
c3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwogZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0
IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBAQCBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJv
b2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb247CiBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdDsKIHN0cnVjdCBBdHRyaWJ1
dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CkBAIC0zNzQsNyAr
Mzc1LDYgQEAgc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFVzZXJNZXNzYWdlOwogCi1lbnVtIGNsYXNzIENyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2Fj
eVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBi
b29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKQEAgLTE4MjYsOSArMTgyNiw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN5bmNJZk1vY2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIAog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7Ci0gICAgdm9pZCB1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKLSAg
ICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHJl
c3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgaGln
aGxpZ2h0cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDkxOWJj
OTg4ZTljNWZjYTcyZmZjOGMyMWEzZmMxNDMwYjI4YzA1YS4uNjQ3YmFjMDM5Yjg4ODAwNjUzZWQ5
OGUyNGI1NjRlY2JiMDQ4YzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTM1LDcgKzUzNSw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBV
cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkKKyAg
ICBTdG9yZUFwcEhpZ2hsaWdodChzdHJ1Y3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24gaW5mbykKICNlbmRpZgogCiAgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGtleVNpemVJbmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJMIHVybCkg
LT4gKFN0cmluZyByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1
OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVhNGI4Li4wMDg4YmVlNDJmZjMzODgxYzZmYmVk
ZGJlMmI2ZWYzYzcwMDY1YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMwLDcgKzMwLDcgQEAKIAog
I2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCIKLSNpbXBvcnQgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCisKICNpbXBv
cnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIKICNpbXBvcnQgIklucHV0Vmlld1VwZGF0ZURl
ZmVycmVyLmgiCiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgpAQCAtODk3NSwxMiArODk3
NSwxMiBAQCAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXMKIAogLSAodm9pZCljcmVhdGVI
aWdobGlnaHRJbkN1cnJlbnRHcm91cFdpdGhSYW5nZTooaWQpc2VuZGVyCiB7Ci0gICAgX3BhZ2Ut
PmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJLaXQ6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0OjpObyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0
ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOwogfQogCiAt
ICh2b2lkKWNyZWF0ZUhpZ2hsaWdodEluTmV3R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewot
ICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKKyAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxp
Z2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZ
ZXMpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDFlNmViMDhhOWNkYjNkMDAwMDYwMTNkYjU4NjUyOTJhZWNlNTI2
Y2EuLjBiM2U0ODc0OWNlOTdhZDA1MWE5YWM3N2JjYjY1ODlmNWFlMjczMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MjAsMTIg
KzExOTIwLDYgQEAKIAkJCQlDREFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQzIw
QzkyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NUExMjVDRjU3NDAwMDdBRjMxMiAvKiBSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5QzI1Q0U3
NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5RDI1Q0U3NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0
NzY1ODYyNUNDQTQxNjAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggaW4g
SGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5MzI1Q0NDRTkzMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTQyNUND
Q0U5MzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXNSZXBsaWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAw
MDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYzA5YTI3Yjdl
N2Y1M2ZiNDQyNDQ0NzFhNmQ2Yjc0ZmNlMDVkNDNhMC4uNDQ5ODc0YTNjMGNjZWY3M2Y3MTFkMTc0
MzQxYmE4OTJiMmMxYmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEyNDQsMTAgKzEy
NDQsOSBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQ
X0hJR0hMSUdIVFMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0
b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBjb25zdAordm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dEluZm9ybWF0aW9uJiBpbmZvKSBjb25zdAogewotICAgIGF1dG8gYnVmZmVyID0gSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KGRhdGEpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGJ1ZmZlcikpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3JlQXBwSGlnaGxpZ2h0KGluZm8pKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMDE0YmRjZjM5MzY1ZmJiN2FkNzA5M2VjYzg0
YzA5ZGMyNzBkMGI0Zi4uODlkZGVjZmVmMzEyMGE0ZTIyMTAyNmRkNGNlNTVjZjVmOTAyZmJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxX
ZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc2M2JjYWI4Njk2MmM3OWI2NzJmYzMzMzEy
M2M3MTRlYzJjZTEzNjYuLjA0OGZkMWU3MzhiYWQ0MmJmOTM4ZmViMmE3NjI0ZWU3YmM1MzRmODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03
MjUwLDcgKzcyNTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJldm9rZVNhbmRib3hFeHRlbnNpb25zKFZl
Y3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+JiBzYW5kYm94RQogfQogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotYm9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCitib29s
IFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKIHsKICAgICBhdXRvIGRvY3Vt
ZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmRvY3VtZW50KCkpOwogCkBAIC03MjYzLDE2ICs3MjYzLDE5IEBAIGJvb2wgV2ViUGFn
ZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0IGNyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvY3VtZW50LT5hcHBI
aWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNl
bGVjdGlvblJhbmdlLnZhbHVlKCkpKTsKLSAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCk7CisgICAgZG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFN0b3JhZ2UoKS5zdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVj
dGlvblJhbmdlLnZhbHVlKCkpLCBjcmVhdGVOZXdHcm91cCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0
IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKIHsKICAgICBh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCi0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdo
dFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hhbmRsZSA6
IG1lbW9yeUhhbmRsZXMpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBw
SGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4o
c2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSkpOworICAgIH0KIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggZWI1MjQ4OTAyODE1MDI2YTQ3YmE5ZDhjNTBjN2M4ZmNiNDVlMTllMC4uZTRmYzljY2MwNjEw
NmM0ZTBmNmY0Mzc3NTkwODg2ZDQ2YWU4OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzLmgiCi0jaW5jbHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgpAQCAtMjA0LDYgKzIwMyw3IEBAIGNsYXNz
IFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKIGVudW0gU3lu
dGhldGljQ2xpY2tUeXBlIDogaW50OF90OworZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCA6IGJvb2w7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50
OF90OwogZW51bSBjbGFzcyBEcmFnQXBwbGljYXRpb25GbGFncyA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3Q7CkBAIC0xMzk2LDggKzEzOTYsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBib29sIGNy
ZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dCk7Ci0gICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKKyAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxp
Z2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+KTsKICNlbmRpZgogCiAg
ICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVs
RXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDhj
ZmNjNDljZjZmMzgwNzZhZjljMzIzMTkzYWQzNzUzNDhhNDQ4ZjAuLjgyNzMxMTZlODMzMTc4Mjcy
MGFiZDFlZDY1N2FhZjIyMzJlN2JmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjI0LDggKzYyNCw4IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU2V0Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UoYm9v
bCBjYW5Vc2UpCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgQ3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJLaXQ6OkNyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQotICAgIFJlc3RvcmVBcHBIaWdobGlnaHRzKElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIENyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQgY3JlYXRlTmV3R3JvdXApCisgICAgUmVzdG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMpCiAjZW5kaWYKIAogICAg
IERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50
IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAxYTY2
Y2U5ZGZmODFhYjkyZTJlN2E4ZWJmNWFjODA5YTliZDlkMmQyLi43Y2ZmMWRkMjUzZTJiZDhhZjhm
OThmZWRjZDBkZDcyMzJkM2EyMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTUyLDcgKzE1Miw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2
b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCA4NmFmYTBlOWQzN2Fj
ZmUzZWQzNGNjMDRjMmYwMDRmMWU1ZGVjZWQ1Li43MjVjYjUwZjA5MDgyZGY2MjljZTljNTdkMzdl
N2QxMjA3MzhkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC03NDUsNyArNzQ1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERhdGVUaW1lQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRl
VGltZUNob29zZXIoRGF0ZVRpbWUKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRT
KQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0Cit2b2lkIFdlYkNocm9tZUNsaWVudDo6c3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBj
b25zdAogewogfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420391</attachid>
            <date>2021-02-15 16:29:37 -0800</date>
            <delta_ts>2021-02-15 17:11:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210215162936.patch</filename>
            <type>text/plain</type>
            <size>76437</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uM2VjNzc1ZGNmZGQ1ZDA4YTU4NWFiMzA3MGYyYzcy
NTBmYzI1NmY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUGlwZSB0aHJvdWdoIGFkZGl0aW9uYWwgZGF0YSBuZWVkZWQgZm9yIGRp
c3BsYXksIGFuZCB1cGRhdGUgdG8gYWxsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24gdG8gYmUgYWRk
ZWQgbW9yZSBlYXNpbHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRMaXN0RGF0YS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5oLgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGln
aGxpZ2h0U3RvcmFnZTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHA6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRz
U3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9D
aHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorCiAyMDIxLTAyLTExICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXR1cm5pbmcgc1JHQiBm
cm9tIENHIGNvbG9yIHNwYWNlIGZ1bmN0aW9ucyBvbiBmYWlsdXJlIGlzIHRvbyBlcnJvciBwcm9u
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAzNGNhOTA5YzdiM2E2MTViOGI1NDU1M2I3MjZkOWQ2YmMwMTg4ZDE1Li4w
MzZmZGQzOTE0YjcxMmVkZjI5MWJhNzdlYjEyZTkyZTM3NDlkZjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ3IEBACisyMDIxLTAyLTEyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFwcCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGlu
IHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGlwZSB0aHJvdWdoIGFk
ZGl0aW9uYWwgZGF0YSBuZWVkZWQgZm9yIGRpc3BsYXksIGFuZCB1cGRhdGUgdG8gYWxsb3cgZm9y
IG1vcmUgaW5mb3JtYXRpb24gdG8gYmUgYWRkZWQgbW9yZSBlYXNpbHkuCisKKyAgICAgICAgKiBT
aGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
dG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQXBwSGln
aGxpZ2h0czpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVBcHBIaWdobGlnaHRzU3Rv
cmFnZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjp1cGRhdGVBcHBIaWdobGlnaHRzU3Rv
cmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZUFwcEhpZ2hsaWdo
dEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9y
ZUFwcEhpZ2hsaWdodHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlSGlnaGxpZ2h0SW5DdXJy
ZW50R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlSGln
aGxpZ2h0SW5OZXdHcm91cFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c3Rv
cmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6
OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKIDIwMjEtMDItMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNPU10gRW5hYmxlIEF1ZGlvIENhcHR1cmUgaW4gR1BVUHJvY2VzcyBieSBk
ZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYTdlMjYxNTU3ZTgwNzM1YTcz
MzU0NDkyZjdkODRlNzVlMDY4MDQwNS4uYjhlNThhNWRmNmY1Y2RkM2M2Yjg3NGM4ZThjZDU5NmRi
ZjM4ODczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTAyLTEyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ2hhbmdlIEFwcCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEg
c2luZ2xlIHNlcmlhbGl6ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBE
ZWxldGVkLgorCiAyMDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVXNlIGV2ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0
ZjM4ZmIwNjg0YmM1OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li45NTc2M2VkYzhlNDlmMDE3
NWUzMTliNzFmYTA3MDU5MmZjMWZlYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3
LDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMv
Z2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0
aW9uL1Bvc2l0aW9uT3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRJbmZvcm1hdGlvbi5oCisgICAgTW9kdWxlcy9oaWdobGlnaHQvQ3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQuaAogICAgIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5oCiAgICAgTW9kdWxl
cy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNGVlYjExMTE4YTA3M2QxMjMxMDE4OTU3NDk1ZTVkZDZkMDk4NmIzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb24uaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpbmNsdWRlICJDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0cnVjdCBBcHBIaWdobGln
aHRJbmZvcm1hdGlvbiB7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0
OworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCBpc05ld0dyb3VwOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxBcHBIaWdobGlnaHRJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb246
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5k
YXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworCisgICAgaWYgKHRleHQp
CisgICAgICAgIGVuY29kZXIgPDwgdGV4dDsKKworICAgIGVuY29kZXIgPDwgaXNOZXdHcm91cDsK
KworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24+IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKworICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVu
Z3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWlu
dDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhf
dD4gaGlnaGxpZ2h0OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0LnNp
emUoKSwgMSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxP
cHRpb25hbDxTdHJpbmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRl
eHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBpc05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdHcm91
cCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSh0ZXh0KSwgaXNOZXdH
cm91cCB9fTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlz
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
TGlzdERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTRkNTliYjM1ZGRh
MTRjNmNmZGQ4YjdmZGU0NDg2MDVmNDBiOTRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodExpc3REYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERh
dGEuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiTm9k
ZS5oIgotI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKLSNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgotI2luY2x1ZGUgIlN0YXRpY1Jh
bmdlLmgiCi0jaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQotCi1BcHBIaWdobGlnaHRMaXN0RGF0YSBBcHBIaWdobGlnaHRM
aXN0RGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGF1dG8g
ZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7Ci0gICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlz
dERhdGE+IGRhdGE7Ci0gICAgZGVjb2RlciA+PiBkYXRhOwotICAgIHJldHVybiBkYXRhID8gKmRh
dGEgOiBBcHBIaWdobGlnaHRMaXN0RGF0YSB7eyB9fTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4g
QXBwSGlnaGxpZ2h0TGlzdERhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKLXsKLSAgICBXVEY6
OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7Ci0gICAgZW5jb2RlciA8PCAqdGhpczsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlz
dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxM2IyMTRkYjk3ODkyMDk0
NGNkZGIxZmIwZWExNjVkN2RhNmNlMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0TGlzdERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotCi1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0KLWNsYXNzIEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKLSAg
ICAgICAgU3RyaW5nIGlkZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBub2RlTmFtZTsKLSAgICAg
ICAgU3RyaW5nIHRleHREYXRhOwotICAgICAgICB1bnNpZ25lZCBwYXRoSW5kZXggeyAwIH07Ci0K
LSAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQotICAgICAgICAgICAg
OiBpZGVudGlmaWVyKFdURk1vdmUoZWxlbWVudElkZW50aWZpZXIpKQotICAgICAgICAgICAgLCBu
b2RlTmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAgICAgLCB0ZXh0RGF0YShXVEZNb3ZlKGRh
dGEpKQotICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNpZ25lZCBp
bmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRlbnRpZmllcikKLSAgICAg
ICAgICAgICwgbm9kZU5hbWUobmFtZSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoZGF0YSkKLSAg
ICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllciA9PSBvdGhlci5pZGVu
dGlmaWVyICYmIG5vZGVOYW1lID09IG90aGVyLm5vZGVOYW1lICYmIHRleHREYXRhID09IG90aGVy
LnRleHREYXRhICYmIHBhdGhJbmRleCA9PSBvdGhlci5wYXRoSW5kZXg7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxOb2RlUGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29kZXImKTsKLSAgICB9OwotCi0g
ICAgdXNpbmcgTm9kZVBhdGggPSBWZWN0b3I8Tm9kZVBhdGhDb21wb25lbnQ+OwotCi0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYpID0gZGVmYXVs
dDsKLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhKFN0cmluZyYmIHRleHQsIE5vZGVQYXRoJiYgc3RhcnRDb250YWluZXIsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCBOb2RlUGF0aCYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IG1fdGV4dChXVEZNb3ZlKHRleHQpKQotICAgICAgICAsIG1fc3Rh
cnRDb250YWluZXIoV1RGTW92ZShzdGFydENvbnRhaW5lcikpCi0gICAgICAgICwgbV9zdGFydE9m
ZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRhaW5lcihXVEZNb3ZlKGVuZENv
bnRhaW5lcikpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAgIHsKLSAgICB9
Ci0KLSAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBO
b2RlUGF0aCYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2Rl
UGF0aCYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogbV90ZXh0
KHRleHQpCi0gICAgICAgICwgbV9zdGFydENvbnRhaW5lcihzdGFydENvbnRhaW5lcikKLSAgICAg
ICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAsIG1fZW5kQ29udGFpbmVy
KGVuZENvbnRhaW5lcikKLSAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCi0gICAgewot
ICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsg
fQotICAgIGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhcnRPZmZzZXQ7IH0KLSAgICBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBlbmRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNv
ZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fdGV4dDsKLSAgICBOb2RlUGF0aCBtX3N0
YXJ0Q29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgeyAwIH07Ci0gICAgTm9k
ZVBhdGggbV9lbmRDb250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQgeyAwIH07Ci19
OwotCi1jbGFzcyBBcHBIaWdobGlnaHRMaXN0RGF0YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFwcEhpZ2hsaWdodExp
c3REYXRhIGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKLQotICAgIEFwcEhpZ2hsaWdodExp
c3REYXRhKGNvbnN0IEFwcEhpZ2hsaWdodExpc3REYXRhJikgPSBkZWZhdWx0OwotICAgIEFwcEhp
Z2hsaWdodExpc3REYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodExpc3REYXRhKFZl
Y3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiYgYW5ub3RhdGlvblJhbmdlcykKLSAgICAgICAg
OiBtX2Fubm90YXRpb25SYW5nZXMoV1RGTW92ZShhbm5vdGF0aW9uUmFuZ2VzKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4mIHJhbmdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvblJhbmdlczsgfQotICAgIHZvaWQgc2V0UmFuZ2Vz
KFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiYgcmFuZ2VzKSB7IG1fYW5ub3RhdGlvblJh
bmdlcyA9IFdURk1vdmUocmFuZ2VzKTsgfQotICAgIHZvaWQgYWRkUmFuZ2VzKFZlY3RvcjxBcHBI
aWdobGlnaHRSYW5nZURhdGE+JiYgcmFuZ2VzKSB7IG1fYW5ub3RhdGlvblJhbmdlcy5hcHBlbmRW
ZWN0b3IoV1RGTW92ZShyYW5nZXMpKTsgfQotCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFy
ZWRCdWZmZXIoKSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9h
bm5vdGF0aW9uUmFuZ2VzLnNpemUoKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYW5ub3RhdGlvblJhbmdlcy5pc0VtcHR5KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlzdERhdGE+IGRlY29kZShE
ZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0KLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBtX2Fubm90YXRpb25SYW5nZXM7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKLSAgICBlbmNv
ZGVyIDw8IG5vZGVOYW1lOwotICAgIGVuY29kZXIgPDwgdGV4dERhdGE7Ci0gICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocGF0aEluZGV4KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVu
dD4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOwotICAgIGRl
Y29kZXIgPj4gaWRlbnRpZmllcjsKLSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IG5vZGVOYW1lOwotICAgIGRl
Y29kZXIgPj4gbm9kZU5hbWU7Ci0gICAgaWYgKCFub2RlTmFtZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dERhdGE7Ci0gICAgZGVjb2Rl
ciA+PiB0ZXh0RGF0YTsKLSAgICBpZiAoIXRleHREYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhdGhJbmRleDsKLSAgICBkZWNvZGVy
ID4+IHBhdGhJbmRleDsKLSAgICBpZiAoIXBhdGhJbmRleCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgq
bm9kZU5hbWUpLCBXVEZNb3ZlKCp0ZXh0RGF0YSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqcGF0
aEluZGV4KSB9fTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGln
aHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29k
ZXIgPDwgbV90ZXh0OwotICAgIGVuY29kZXIgPDwgbV9zdGFydENvbnRhaW5lcjsKLSAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3N0YXJ0T2Zmc2V0KTsKLSAgICBlbmNvZGVy
IDw8IG1fZW5kQ29udGFpbmVyOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG1fZW5kT2Zmc2V0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKLSAgICBkZWNvZGVyID4+
IHRleHQ7Ci0gICAgaWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgT3B0aW9uYWw8Tm9kZVBhdGg+IHN0YXJ0Q29udGFpbmVyOwotICAgIGRlY29kZXIgPj4gc3Rh
cnRDb250YWluZXI7Ci0gICAgaWYgKCFzdGFydENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydE9mZnNldDsKLSAgICBk
ZWNvZGVyID4+IHN0YXJ0T2Zmc2V0OwotICAgIGlmICghc3RhcnRPZmZzZXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxOb2RlUGF0aD4gZW5kQ29udGFpbmVy
OwotICAgIGRlY29kZXIgPj4gZW5kQ29udGFpbmVyOwotICAgIGlmICghZW5kQ29udGFpbmVyKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGVu
ZE9mZnNldDsKLSAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKLSAgICBpZiAoIWVuZE9mZnNldCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotCi0gICAgcmV0dXJuIHt7Ci0gICAgICAg
IFdURk1vdmUoKnRleHQpLAotICAgICAgICBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksCi0gICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqc3RhcnRPZmZzZXQpLAotICAgICAgICBXVEZNb3Zl
KCplbmRDb250YWluZXIpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKmVuZE9mZnNl
dCksCi0gICAgfX07Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxp
Z2h0TGlzdERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29k
ZXIgPDwgbV9hbm5vdGF0aW9uUmFuZ2VzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxBcHBIaWdobGlnaHRMaXN0RGF0YT4gQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3RvcjxBcHBIaWdobGlnaHRS
YW5nZURhdGE+PiBhbm5vdGF0aW9uUmFuZ2VzOwotICAgIGRlY29kZXIgPj4gYW5ub3RhdGlvblJh
bmdlczsKLSAgICBpZiAoIWFubm90YXRpb25SYW5nZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqYW5ub3RhdGlvblJhbmdlcykgfX07Ci19
Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMTliYzU2OWE1MDQ5MjJiMTRmMzk1NjBlOWYyN2M4N2JhMzc1NjYzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKworI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50Lmgi
CisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgorI2lu
Y2x1ZGUgIlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8gZGVj
b2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBkYXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwor
UmVmPFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVu
Y29kZXIgPDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7
CisgICAgZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHREYXRhOworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBh
dGhDb21wb25lbnQ+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmll
cjsKKyAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFt
ZTsKKyAgICBkZWNvZGVyID4+IG5vZGVOYW1lOworICAgIGlmICghbm9kZU5hbWUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwor
ICAgIGRlY29kZXIgPj4gdGV4dERhdGE7CisgICAgaWYgKCF0ZXh0RGF0YSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Cisg
ICAgZGVjb2RlciA+PiBwYXRoSW5kZXg7CisgICAgaWYgKCFwYXRoSW5kZXgpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciks
IFdURk1vdmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKnBhdGhJbmRleCkgfX07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IG1fdGV4dDsKKyAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7
CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Cisg
ICAgZW5jb2RlciA8PCBtX2VuZENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX2VuZE9mZnNldCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAg
ZGVjb2RlciA+PiB0ZXh0OworICAgIGlmICghdGV4dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKKyAgICBkZWNv
ZGVyID4+IHN0YXJ0Q29udGFpbmVyOworICAgIGlmICghc3RhcnRDb250YWluZXIpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZz
ZXQ7CisgICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKKyAgICBpZiAoIXN0YXJ0T2Zmc2V0KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVu
ZENvbnRhaW5lcjsKKyAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKKyAgICBpZiAoIWVuZENv
bnRhaW5lcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBlbmRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CisgICAgaWYgKCFl
bmRPZmZzZXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgIHJldHVybiB7
eworICAgICAgICBXVEZNb3ZlKCp0ZXh0KSwKKyAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWlu
ZXIpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKKyAgICAg
ICAgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KCplbmRPZmZzZXQpLAorICAgIH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTRjZGNhNzQxNDVkNWIyN2Y1MTNkNzM1
MTkzNWEyOTJhMjQ3ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhIHsKK1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdHJ1Y3QgTm9kZVBhdGhDb21wb25l
bnQgeworICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICAgICAgU3RyaW5nIG5vZGVOYW1l
OworICAgICAgICBTdHJpbmcgdGV4dERhdGE7CisgICAgICAgIHVuc2lnbmVkIHBhdGhJbmRleCB7
IDAgfTsKKworICAgICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcmJiBlbGVtZW50SWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCisgICAg
ICAgICAgICA6IGlkZW50aWZpZXIoV1RGTW92ZShlbGVtZW50SWRlbnRpZmllcikpCisgICAgICAg
ICAgICAsIG5vZGVOYW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICAgICAsIHRleHREYXRhKFdU
Rk1vdmUoZGF0YSkpCisgICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRhdGEsIHVu
c2lnbmVkIGluZGV4KQorICAgICAgICAgICAgOiBpZGVudGlmaWVyKGVsZW1lbnRJZGVudGlmaWVy
KQorICAgICAgICAgICAgLCBub2RlTmFtZShuYW1lKQorICAgICAgICAgICAgLCB0ZXh0RGF0YShk
YXRhKQorICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlUGF0aENvbXBvbmVudCYgb3Ro
ZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyID09IG90
aGVyLmlkZW50aWZpZXIgJiYgbm9kZU5hbWUgPT0gb3RoZXIubm9kZU5hbWUgJiYgdGV4dERhdGEg
PT0gb3RoZXIudGV4dERhdGEgJiYgcGF0aEluZGV4ID09IG90aGVyLnBhdGhJbmRleDsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2RlUGF0aENvbXBvbmVudCYg
b3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPE5vZGVQYXRoQ29tcG9uZW50PiBkZWNvZGUoRGVjb2RlciYpOworICAg
IH07CisKKyAgICB1c2luZyBOb2RlUGF0aCA9IFZlY3RvcjxOb2RlUGF0aENvbXBvbmVudD47CisK
KyAgICBBcHBIaWdobGlnaHRSYW5nZURhdGEoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJikg
PSBkZWZhdWx0OworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSgpID0gZGVmYXVsdDsKKyAgICBB
cHBIaWdobGlnaHRSYW5nZURhdGEoU3RyaW5nJiYgdGV4dCwgTm9kZVBhdGgmJiBzdGFydENvbnRh
aW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE5vZGVQYXRoJiYgZW5kQ29udGFpbmVyLCB1bnNp
Z25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogbV90ZXh0KFdURk1vdmUodGV4dCkpCisgICAgICAg
ICwgbV9zdGFydENvbnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkKKyAgICAgICAgLCBt
X3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1v
dmUoZW5kQ29udGFpbmVyKSkKKyAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCisgICAg
eworICAgIH0KKworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNv
bnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
OiBtX3RleHQodGV4dCkKKyAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKHN0YXJ0Q29udGFpbmVy
KQorICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9lbmRD
b250YWluZXIoZW5kQ29udGFpbmVyKQorICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydENvbnRhaW5lcjsgfQorICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQorICAgIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250
YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2VuZENvbnRhaW5lcjsgfQorICAgIHVuc2lnbmVkIGVu
ZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVj
b2RlKERlY29kZXImKTsKKworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fdGV4dDsKKyAgICBOb2RlUGF0aCBtX3N0
YXJ0Q29udGFpbmVyOworICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgeyAwIH07CisgICAgTm9k
ZVBhdGggbV9lbmRDb250YWluZXI7CisgICAgdW5zaWduZWQgbV9lbmRPZmZzZXQgeyAwIH07Cit9
OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRl
eCBjM2I4YmI3N2MwYzRmNGU1Yzk5ODcxNzkyMzkyZTNkZGQ4ZDE5MTg2Li4wZTAyYjVkNjRhY2Jh
YTBlODk3NmZjNjliMDY4MzRkMTE1MmI1MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjcsNyAr
MjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3Jh
Z2UuaCIKIAotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExpc3REYXRhLmgiCisjaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEu
aCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgpAQCAtNDAsNiArNDEsOCBAQAogI2luY2x1ZGUg
IlN0YXRpY1JhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAKKyNkZWZpbmUgVEVY
VF9QUkVWSUVXX0xFTkdUSCAxMDAKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5Niw4
ICsxOTksMTAgQEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGggbWFrZU5v
ZGVQYXRoKFJlZlB0cjxOb2RlPiYmIG5vZGUpCiAKIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURh
dGEgY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiByYW5nZSkK
IHsKKyAgICBhdXRvIHRleHQgPSBwbGFpblRleHQocmFuZ2UpOworICAgIHRleHQudHJ1bmNhdGUo
VEVYVF9QUkVWSUVXX0xFTkdUSCk7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgcGxhaW5UZXh0KHJh
bmdlKSwKKyAgICAgICAgdGV4dCwKICAgICAgICAgbWFrZU5vZGVQYXRoKCZyYW5nZS5zdGFydENv
bnRhaW5lcigpKSwKICAgICAgICAgcmFuZ2Uuc3RhcnRPZmZzZXQoKSwKICAgICAgICAgbWFrZU5v
ZGVQYXRoKCZyYW5nZS5lbmRDb250YWluZXIoKSksCkBAIC0yMTAsNDggKzIxNSwzNSBAQCBBcHBI
aWdobGlnaHRTdG9yYWdlOjpBcHBIaWdobGlnaHRTdG9yYWdlKERvY3VtZW50JiBkb2N1bWVudCkK
IHsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3Rv
cmFnZSgpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFN0YXRp
Y1JhbmdlJiByYW5nZSwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cCkKIHsK
LSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOworICAgIGF1dG8gZGF0YSA9
IGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShyYW5nZSk7CisgICAgT3B0aW9uYWw8U3RyaW5n
PiB0ZXh0OwogCi0gICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47CisgICAgaWYg
KCFkYXRhLnRleHQoKS5pc0VtcHR5KCkpCisgICAgICAgIHRleHQgPSBkYXRhLnRleHQoKTsKIAot
ICAgIGlmICghbV9kb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm47CisgICAgQXBwSGln
aGxpZ2h0SW5mb3JtYXRpb24gaW5mbyA9IHtkYXRhLnRvU2hhcmVkQnVmZmVyKCksIHRleHQsIGlz
TmV3R3JvdXB9OwogCi0gICAgaWYgKGF1dG8gYXBwSGlnaGxpZ2h0UmVnaXN0ZXIgPSBtX2RvY3Vt
ZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcklmRXhpc3RzKCkpIHsKLSAgICAgICAgZm9yIChhdXRv
JiBoaWdobGlnaHQgOiBhcHBIaWdobGlnaHRSZWdpc3Rlci0+bWFwKCkpIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgcmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZhbHVlLT5yYW5nZXNEYXRhKCkpCi0g
ICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKHJh
bmdlRGF0YS0+cmFuZ2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBBcHBIaWdobGlnaHRMaXN0
RGF0YSBsaXN0RGF0YSB7IFdURk1vdmUoZGF0YSkgfTsKLQotICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCkudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UobGlzdERhdGEudG9TaGFyZWRC
dWZmZXIoKSk7CisgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hs
aWdodChpbmZvKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGln
aGxpZ2h0cyhSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK2Jvb2wgQXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBhdXRvIGFwcEhpZ2hsaWdodExpc3REYXRhID0gQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmNy
ZWF0ZShidWZmZXIpOwotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHVucmVzdG9y
ZWRSYW5nZXM7Ci0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gcmVzdG9yZWRSYW5n
ZXM7CisgICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1fZG9jdW1lbnQuZ2V0KCk7CiAKICAgICBp
ZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1fZG9jdW1lbnQuZ2V0KCk7CisgICAgYXV0byBh
cHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZm
ZXIpOworICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBmb3IgKGF1dG8mIGFwcEhpZ2hsaWdodExpc3REYXRhIDogYXBwSGlnaGxpZ2h0
TGlzdERhdGEucmFuZ2VzKCkpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShhcHBI
aWdobGlnaHRMaXN0RGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKLSAgICAgICAgaWYgKCFyYW5nZSkg
ewotICAgICAgICAgICAgdW5yZXN0b3JlZFJhbmdlcy5hcHBlbmQoYXBwSGlnaGxpZ2h0TGlzdERh
dGEpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICBhdXRvIHJhbmdlID0g
ZmluZFJhbmdlKCphcHBIaWdobGlnaHRSYW5nZURhdGEsICpzdHJvbmdEb2N1bWVudCk7CiAKLSAg
ICAgICAgcmVzdG9yZWRSYW5nZXMuYXBwZW5kKGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAg
ICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0
KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7Ci0gICAgfQorICAgIHN0cm9uZ0RvY3VtZW50
LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3Jl
YXRlKCpyYW5nZSkpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
CmluZGV4IDhiNjA3NWFkNjQwMjQyOWNlZGM0YmU5MjZmNmNkYTA5ZTQ0M2JjOTkuLjhjYTAyNTQ2
YjMyYmUwMGI0NmE2NjU5ZjM5MDk4NTYxNjZhNzc0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM2LDE4
ICszNiwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCiAKLWNsYXNzIEFwcEhpZ2hsaWdodExpc3REYXRhOwogY2xhc3MgQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBIaWdo
bGlnaHQ7CisKK2VudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwog
CiBjbGFzcyBBcHBIaWdobGlnaHRTdG9yYWdlIDogUmVmQ291bnRlZDxBcHBIaWdobGlnaHRTdG9y
YWdlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXBwSGln
aGxpZ2h0U3RvcmFnZShEb2N1bWVudCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9y
ZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgLCBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc3RvcmVBcHBI
aWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRjOTMxZjJiZGU0MjcyOGU4NjQ1NTgwZDdlMzAzZGZiNTAyMTc4OTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9DcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodC5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcApp
bmRleCA2OGVkMjdmZGIzZjc0ZTBiMWE5MzlmNTgxZmU3MjM4NjM3MGZmY2Q5Li4xNGQwMzJjOTdl
NWE2MTVlNmZjOWM1NmU3NDk2ZmQ3M2MwNWU3ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3BwCkBAIC02NSw1ICs2
NSw2IEBAIHZvaWQgSGlnaGxpZ2h0UmVnaXN0ZXI6OmFkZEFwcEhpZ2hsaWdodChSZWY8U3RhdGlj
UmFuZ2U+JiYgdmFsdWUpCiAgICAgZWxzZQogICAgICAgICBzZXRGcm9tTWFwTGlrZShhcHBIaWdo
bGlnaHRLZXkoKSwgSGlnaGxpZ2h0OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpKTsKIH0KKwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4
MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRlOGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC02NCw3ICs2NCw3IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRMaXN0RGF0YS5jcHAKK01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1
bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hp
Z2hsaWdodC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyZTNiYTJkOGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBi
Li4zODgxYjZhNzAzOWRhNGEyN2Y5ODY1NjhiMDdhM2YxYWU1NzMxNDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYg
KzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQy
NTA3MDcyNTgyOUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNF
MDA0NkQ0MDEgLyogSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQy
NTc1QThBNTAwNDZENDAxIC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyog
SGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NTc3NUU1
MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDU3NzVFNDIwNDcyRjcz
MDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NjNDRjY4MjIxMkZBNjgwMDFB
ODU3NyAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERh
dGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2
NjY2RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25S
YW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTIzMSwxMiArMTIzMiwxMyBAQAogCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyog
UGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0OEEy
OUJGMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAw
MzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8q
IFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ0
OTMxNjkxMjVEN0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5MzE2OTAyNUQ3
QTFFRjAwQUE2NkRFIC8qIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ5NkUzOUUxMzk4MTM2QzAw
M0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlDMTM5ODEzNkMwMDNFRTMyQSAvKiBK
U1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggKi87IH07CiAJCTQ0OTZFM0EwMTM5ODEzQTUwMDNF
RTMyQSAvKiBKU1NWR01QYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDQ5NkUzOUYxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhF
bGVtZW50LmggKi87IH07CiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFB
QzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIz
QiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBB
RTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICov
OyB9OwotCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVB
MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oICovOyB9OworCQk0NEFF
MDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBD
NDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9s
bGJhclRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2
RjRFMTkwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyog
TGliV2ViUlRDRW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MTE3LDYgKzgxMTksNyBAQAogCQk0NDM3QzRBOTI0RTJBRTVGMDAw
OTUxMjggLyogTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExh
enlMb2FkRnJhbWVPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
M0YwNDI2MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdGF0ZU5vdGlmaWVy
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDRENEUyMTBGNzA4QjJFMDAz
MTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxp
Z2h0SW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1Nzc1RTQy
MDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAvKiBQbGF5YmFja1RhcmdldENsaWVudENv
bnRleHRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMjksNiAr
ODEzMiw3IEBACiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhC
MUI3ODBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRTaXplQWRqdXN0bWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmlu
ZXMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0OTMxNjkwMjVEN0Ex
RUYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDk2RTM5QjEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5NkUzOUMx
Mzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDk2RTM5RjEzOTgxM0E1MDAzRUUzMkEgLyogSlNT
VkdNUGF0aEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdN
UGF0aEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzYsOCArODE0
MCw4IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFF
OTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKLQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExp
c3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcEhpZ2hs
aWdodExpc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRBRTA0NUEy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0
NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlv
blJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25S
YW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjkyNTM2OUE4
ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFsRXZlbnRIYW5k
bGVycytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5p
ZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MzYsMTAgKzE5ODQwLDEyIEBA
CiAJCTQ0RTg4RTQ3MjM2OERGMEYwMDlCNDg0NyAvKiBoaWdobGlnaHQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2
NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRBRTA0NUEyNTc5Q0ZGQjAw
QzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8sCisJCQkJNDQ1MjEwREQyNUQ2MUVG
RjAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8sCisJCQkJNDRBRTA0NTgy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8sCisJCQkJNDRB
RTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovLAogCQkJ
CTQ0MjUwNzA2MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmNwcCAqLywK
IAkJCQk0NDI1MDcwNzI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oICov
LAorCQkJCTQ0OTMxNjkwMjVEN0ExRUYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodC5oICovLAogCQkJCTQ0RTg4RTU0MjM2QTY2QTEwMDlCNDg0NyAvKiBIaWdobGlnaHQuY3Bw
ICovLAogCQkJCTQ0RTg4RTUxMjM2QTVDOEQwMDlCNDg0NyAvKiBIaWdobGlnaHQuaCAqLywKIAkJ
CQk0NEU4OEU0RDIzNjkxMjhCMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmlkbCAqLywKQEAgLTMxMTU4
LDcgKzMxMTY0LDggQEAKIAkJCQk1NzE1MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1
UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5RTY0OTIwMDU2RTU4MSAv
KiBBcHBlbmROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDRBRTA0NUMyNTc5Q0ZG
QjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRS
YW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MjUwNzA5MjU4MjlBMjcwMEMwOTM2OCAv
KiBBcHBIaWdobGlnaHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTEzRTAyRTIzMzFB
MTM0MDA5QzMzQTAgLyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFERjVBOTQxRjdFQzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxNjIxLDYgKzMxNjI4LDcgQEAKIAkJCQk5MzkyRjE0QzBBRDE4NjFCMDA2
OTFCRDQgLyogQ291bnRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzY5NkNCMUU3MjA1
RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5
QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ0OTMxNjkxMjVEN0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRp
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTI5MTdBMTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVk
ZW50aWFsQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYx
IC8qIENyZWRlbnRpYWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDA0YmY4YTUyMzFkN2Q3Njg1NjAyMmM0Yjc4OTRjYWJhZTZk
NGVmYjguLmZjOGE5NGEzMzcyMDY1ZWYwNjA3Nzk1YjE3Y2IxNjhlNzUxNjQ5NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRW1wdHlDbGllbnRzLmgiCiAKKyNpbmNsdWRlICJBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgpAQCAtNTAyLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGlt
ZUNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVEYXRlVGltZUNob29zZXIoRGF0ZVRp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgRW1wdHlDaHJvbWVD
bGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGNvbnN0Cit2b2lkIEVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChj
b25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNzg4YjQ1YWFkMTVmMzQwZjJlZDA5OWRk
NGJjY2Y1YTVlYzkzYzNlLi4xNGM0YTkyNzc1MWIwNmI2ODQ4OTQ1ZDA2Y2EyMzI4MDIxMzViNWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNDYsNyArMTQ2LDcgQEAg
Y2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVD
aG9vc2VyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggZDMwNjljZWUxMzc4ZWYw
ZDI2NTAwNGMyNzgwNWNmN2YxYzViZTM4My4uYTU5YWE0MTYzODcyOGNkYzM0ZTY1MzFlMjJlMzE0
ZTU1M2U5YjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogCisjaW5jbHVkZSAiQXBwSGln
aGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJDb250YWN0SW5mby5oIgogI2luY2x1ZGUgIkNvbnRhY3RzUmVxdWVzdERhdGEuaCIKQEAgLTUx
Miw5ICs1MTMsOSBAQCB2b2lkIENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRD
aGFuZ2UoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZQogfQogCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotdm9pZCBDaHJvbWU6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3ZvaWQgQ2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29uc3QK
IHsKLSAgICBtX2NsaWVudC51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICBtX2NsaWVudC5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAppbmRleCBmODE2Nzg2MjI0OWFmZWE1ZDFkYWNlODVkOWQxZjc5MDIwYTgx
Yzk3Li5mYjZmMWM3OTcwZTYwZmZmYTIzODZkNWUwYzVhNWIyNWQwMTMwZTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3Mg
UG9wdXBPcGVuaW5nT2JzZXJ2ZXI7CiBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKK3N0cnVjdCBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBDb250YWN0SW5mbzsKIHN0cnVjdCBDb250
YWN0c1JlcXVlc3REYXRhOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7CkBAIC0x
NjUsNyArMTY2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBjb25zdDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgcnVuT3Bl
blBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGNmMmIzZjBkOWFiYWQyZTcyZWNhZGM3ZTE1M2E5YjE1MTYzMzFjNGQuLjUxYjA5N2I2
OTgzNDJmZWE3OTZlNTRiYzkyOWU5ZDNkN2MzYWVkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMjIsNiArMjIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBWE9i
amVjdENhY2hlLmgiCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNs
dWRlICJBdXRvcGxheUV2ZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8uaCIKICNpbmNsdWRl
ICJDdXJzb3IuaCIKQEAgLTMwNCw3ICszMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbiYpIGNvbnN0ID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE5ZGI0YjY4YzQ1ZDhiZjBlNjkwMjM4M2UwZjhhYTI3ODM3NjhhNjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDMy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFll
cyB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM1NWJkYjU0OWE3ZjdjNTQ3ZWUwNjEzYmEw
N2MwOTU5MjcyNTdkZWEuLjRiZWYwYjA3ZDRhMDBhMjZmYjhkNjIwYTA2ODYyNjdjN2E3N2U5OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMTE5LDYgKzExOSw3IEBACiAjaW1wb3J0ICJfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCIK
ICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXph
dGlvbi5oPgpAQCAtMTQyMywxNCArMTQyNCwxNCBAQCAtICh2b2lkKV9zZXRBcHBIaWdobGlnaHRE
ZWxlZ2F0ZTooaWQgPF9XS0FwcEhpZ2hsaWdodERlbGVnYXRlPilkZWxlZ2F0ZQogfQogCiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2U6KE5TRGF0YSAqKWRhdGEKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJD
b3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpaGlnaGxpZ2h0SW5mb3JtYXRpb24KIHsKICAg
ICBhdXRvIGRlbGVnYXRlID0gc2VsZi5fYXBwSGlnaGxpZ2h0RGVsZWdhdGU7CiAgICAgaWYgKCFk
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOild
KQotICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1cGRhdGVBcHBIaWdobGlnaHRzU3Rv
cmFnZTpkYXRhXTsKKyAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgdXBkYXRlQXBwSGln
aGxpZ2h0c1N0b3JhZ2U6aGlnaGxpZ2h0SW5mb3JtYXRpb24uaGlnaGxpZ2h0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApAQCAtMjAzNSwxMiArMjAzNiwyMSBAQCAtICh2b2lk
KV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiAgICAgW3NlbGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFj
azpuaWxdOwogfQogCi0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNEYXRhICopZGF0
YQorLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGln
aGxpZ2h0cwogewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBfcGFnZS0+cmVzdG9y
ZUFwcEhpZ2hsaWdodHMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAg
IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOworCisgICAgZm9yIChO
U0RhdGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKSB7CisgICAgICAgIGF1dG8gc2hhcmVkTWVt
b3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGhpZ2hsaWdodC5sZW5ndGgpOwor
ICAgICAgICBpZiAoc2hhcmVkTWVtb3J5KSB7CisgICAgICAgICAgICBbaGlnaGxpZ2h0IGdldEJ5
dGVzOnNoYXJlZE1lbW9yeS0+ZGF0YSgpIGxlbmd0aDpoaWdobGlnaHQubGVuZ3RoXTsKKyAgICAg
ICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOworICAgICAgICB9CisgICAgfQor
ICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhidWZmZXJzKTsKICNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHRzKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdJbnRlcm5hbC5oCmluZGV4IDQwOWQ4YWVkMzMzMDJlZGY5ZDFlM2Q4ZTM5NDIyM2FhM2VkYjlk
NzQuLjY4NzdjNjFhNzdjNmY4MTcxMTA0M2Y2NjUzNTRlNzNjZGI0ODZkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBFeGNlcHRpb25E
ZXRhaWxzOwogZW51bSBjbGFzcyBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA6IHVpbnQ4X3Q7CiB9
CkBAIC0yNjUsNyArMjY2LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2b2lkKV91cGRhdGVBcHBIaWdobGln
aHRzU3RvcmFnZTooTlNEYXRhICopZGF0YTsKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihj
b25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpaW5mbzsKICNlbmRpZgogCiAt
ICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jayB3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOihCT09MKXdpdGhvdXRX
YWl0aW5nRm9yUGFpbnRpbmcgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTooQk9PTCl3
aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTI2MjM4YWVhMGEx
NDc2MTE4ZTVhNjkwODU0N2FkNzljM2Y0NTRkMS4uZTQ1Y2IxYmJiYmViYTBiMWE3OTU1NmI4ZDQz
MTBjNzc4MjU1NWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNjgsNyArMzY4LDcgQEAgZm9yIHRoaXMgcHJv
cGVydHkuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRIYXNCbGFua092ZXJsYXk6
KSBCT09MIF9oYXNCbGFua092ZXJsYXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRl
cj1fc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6KSBpZCA8X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+
IF9hcHBIaWdobGlnaHREZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TRGF0
YSAqKWRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAq
KWRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAogLyohIEBhYnN0cmFjdCBUaGUgdGhlbWUgY29sb3Igb2YgdGhlIGFjdGl2ZSBwYWdlLgog
IEBkaXNjdXNzaW9uIFRoaXMgaXMgdGhlIHZhbHVlIG9mIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0
ZWQgb3IgbW9kaWZpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBlMzZlOGNjNGU1ZjcwNzhhMjQ0MTM1Y2UyZTZmYjdk
YTkwY2RlMjE3Li4zOTg4MDRhNzZjYzIzNTY2NzE1OTc0ZDJmOGVlNGZiM2VkZjFiMzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCkBAIC0zOCw2ICszOCw4IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKworc3RydWN0IEFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDcgKzc2
LDcgQEAgcHVibGljOgogICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25B
bHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgZmluYWw7CiAKICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGZpbmFsOworICAgIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBmaW5h
bDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCAzM2JiZTkyODVhODhmNTJlOTJh
NDZkM2QwMzgwMmIwZWY2OWY5NTU4Li4zNTMyNjY3ZGQyMGNiMzMxN2MyMmM4ZTk1ZTZjODkyNTA3
NWYwM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EubW0KQEAgLTEyMCwxMCArMTIwLDkgQEAgTlNTZXQgKlBhZ2VDbGllbnRJ
bXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQordm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBX
ZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiAmYXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24p
CiB7Ci0gICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKLSAgICBbbV93ZWJW
aWV3IF91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpuc0RhdGEuZ2V0KCldOworICAgIFttX3dl
YlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0OmFwcEhpZ2hsaWdodEluZm9ybWF0aW9uXTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZTE1ZjEwY2EyMDE1OTIw
YTE0MmU2ZGVhY2Q2MjI1ZDQ2OWVjODUwOC4uY2RjMjUwMWRhNTUwMWFhZDYzYmQ2NTAyZmU3N2Nk
OTNmOTdkZDY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YWRkQWN0aXZpdHlTdGF0ZVVwZGF0ZUNvbXBsZXRpb25IYW5kbGVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJQYWdlUHJveHk6
OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCBjcmVhdGVOZXdHcm91cCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGln
aHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3Jl
YXRlTmV3R3JvdXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CkBAIC01NDIsMTQgKzU0MiwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KGNyZWF0ZU5ld0dyb3VwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGln
aGxpZ2h0cyhSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
dG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cykK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9Owor
ICAgIFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlczsKIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzKGRhdGFSZWZlcmVu
Y2UpKTsKKyAgICBmb3IgKGF1dG8gaGlnaGxpZ2h0IDogaGlnaGxpZ2h0cykgeworICAgICAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGhpZ2hsaWdodC0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworCisgICAg
ICAgIG1lbW9yeUhhbmRsZXMuYXBwZW5kKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92
ZShoYW5kbGUpLCBoaWdobGlnaHQtPnNpemUoKSB9KTsKKyAgICB9CisKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhXVEZNb3ZlKG1lbW9yeUhhbmRsZXMp
KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDk4
OGI5ZmE4ZTA0NGRlZGMwZTRmMGYwOTYyOWJlYzY4MWQwMDQ0ODQuLjU5YjIyY2EzYWZmZTY5Njhh
Y2Q5MDY2ZjlhNWI4NWJhZDIxZDY2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dMaWZl
dGltZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxB
bmltYXRpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDog
dWludDhfdDsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IERpY3Rp
b25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CiBzdHJ1Y3QgVmlld3Bv
cnRBdHRyaWJ1dGVzOwpAQCAtMTUxLDYgKzE1Miw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sIHsgTm8sIFllcyB9OwogCitz
dHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbjsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uOwpAQCAtNTc1LDcgKzU3Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0SW5mb3JtYXRpb24mKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggY2QzYmFjYzIzMDY1OWRj
OTdhMTVjM2M1NjFjNDgzNTViZWE5N2Q3MC4uZjU3N2MzZWJhZGNlOWNkY2VmYjYyZjlhNGYxYjJm
ODg2N2U2OGQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xNDMsNiArMTQzLDcgQEAKICNpbmNsdWRlICJXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgpAQCAtNjY4NSwxMSArNjY4NiwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYgaXRlbSkKICAgICB9CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIGlmIChp
dGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3R3JvdXAp
IHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpZZXMpOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJ
dGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50R3JvdXApIHsKLSAgICAgICAgY3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyk7Cisg
ICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVO
ZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CkBAIC05ODM5LDExICs5ODQwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlv
bk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCit2
b2lkIFdlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGln
aGxpZ2h0SW5mb3JtYXRpb24mIGluZm8pCiB7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3Ms
IGRhdGEuYnVmZmVyKCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCAhaW5mby5oaWdo
bGlnaHQtPmlzRW1wdHkoKSk7CisKKyAgICBwYWdlQ2xpZW50KCkuc3RvcmVBcHBIaWdobGlnaHQo
aW5mbyk7CiAKLSAgICBwYWdlQ2xpZW50KCkudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKmRh
dGEuYnVmZmVyKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggZjRjMzllYjhlNTQzODZlNDhiOGUyYzgxZWM5OTA2ZWU0NDhiMTcxNy4uYWE1
ZDgwMDg2ZjlmMzBlMDgzMWEwOGM2NWMxZmUxZDk0MTZjNmJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgog
I2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKLSNpbmNsdWRlICJDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKQEAgLTIz
NSw2ICsyMzQsNyBAQCBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJs
ZTsKIAogZW51bSBjbGFzcyBBdXRvcGxheUV2ZW50IDogdWludDhfdDsKK2VudW0gY2xhc3MgQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJs
ZSA6IGJvb2w7CiBlbnVtIGNsYXNzIExvY2tCYWNrRm9yd2FyZExpc3QgOiBib29sOwpAQCAtMjQ3
LDYgKzI0Nyw3IEBAIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3Mg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgV3JpdGluZ0Rp
cmVjdGlvbiA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0
cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0Owogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CiBzdHJ1
Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKQEAgLTM3NCw3ICszNzUsNiBAQCBzdHJ1Y3Qg
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U7CiBzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7
CiBzdHJ1Y3QgVXNlck1lc3NhZ2U7CiAKLWVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKIGVu
dW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiBlbnVtIGNsYXNz
IFVuZG9PclJlZG8gOiBib29sOwpAQCAtMTgyNiw5ICsxODI2LDkgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY0lmTW9ja0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQotICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNT
dG9yYWdlKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwotICAgIHZvaWQgcmVzdG9yZUFw
cEhpZ2hsaWdodHMoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lk
IGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCk7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3Jl
OjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdo
dHMoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0OTE5YmM5ODhlOWM1ZmNhNzJmZmM4
YzIxYTNmYzE0MzBiMjhjMDVhLi42NDdiYWMwMzliODg4MDA2NTNlZDk4ZTI0YjU2NGVjYmIwNDhj
MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC01MzUsNyArNTM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIFVwZGF0ZUFwcEhpZ2hsaWdo
dHNTdG9yYWdlKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQorICAgIFN0b3JlQXBwSGlnaGxp
Z2h0KHN0cnVjdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiBpbmZvKQogI2VuZGlm
CiAKICAgICBTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBTdHJpbmcgY2hhbGxlbmdlU3RyaW5nLCBVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3Vs
dCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGNlYzg3YzU4ZjAxMWNhN2RhNDk5M2Nm
MTUzYzFkNmZlNzI0NWE0YjguLjIxNzc3NDZlZTVkOTFiMjg4NzlkOGQyN2YwYTcxMjhjYWEyMTUy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJBUElVSUNs
aWVudC5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgotI2ltcG9y
dCAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGlu
Z0NvbnRleHQuaCIKICNpbXBvcnQgIklucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgiCiAjaW1wb3J0
ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgpAQCAtODk3NSwxMiArODk3NCwxMiBAQCAtICh2b2lkKXNl
dFVwQXBwSGlnaGxpZ2h0TWVudXMKIAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRJbkN1cnJlbnRH
cm91cFdpdGhSYW5nZTooaWQpc2VuZGVyCiB7Ci0gICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdo
dEluU2VsZWN0ZWRSYW5nZShXZWJLaXQ6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyk7
CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOwogfQogCiAtICh2b2lkKWNyZWF0ZUhpZ2hs
aWdodEluTmV3R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9wYWdlLT5jcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodDo6WWVzKTsKKyAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMpOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDFlNmViMDhhOWNkYjNkMDAwMDYwMTNkYjU4NjUyOTJhZWNlNTI2Y2EuLjBiM2U0ODc0OWNlOTdh
ZDA1MWE5YWM3N2JjYjY1ODlmNWFlMjczMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5MjAsMTIgKzExOTIwLDYgQEAKIAkJCQlD
REFDMjBCNDIzRkI1OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFERUUz
IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTFENDc2NUExMjVDRjU3NDAwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5QzI1Q0U3NEFEMDA3QUYzMTIgLyogUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
RDQ3NjU5RDI1Q0U3NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1l
c3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1ODYyNUNDQTQxNjAwN0FG
MzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggaW4gSGVhZGVycyAqLywKLQkJCQkx
RDQ3NjU5MzI1Q0NDRTkzMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTQyNUNDQ0U5MzAwN0FGMzEyIC8qIFJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVB
MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYzA5YTI3YjdlN2Y1M2ZiNDQyNDQ0NzFhNmQ2
Yjc0ZmNlMDVkNDNhMC4uNDQ5ODc0YTNjMGNjZWY3M2Y3MTFkMTc0MzQxYmE4OTJiMmMxYmM5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEyNDQsMTAgKzEyNDQsOSBAQCBib29sIFdlYkNo
cm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBl
ZEtleSwgVmVjdG9yPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lk
IFdlYkNocm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3Jl
QXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiBpbmZv
KSBjb25zdAogewotICAgIGF1dG8gYnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGRhdGEp
OwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKGJ1ZmZlcikpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0b3JlQXBwSGlnaGxpZ2h0KGluZm8pKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKaW5kZXggMDE0YmRjZjM5MzY1ZmJiN2FkNzA5M2VjYzg0YzA5ZGMyNzBkMGI0Zi4uODlk
ZGVjZmVmMzEyMGE0ZTIyMTAyNmRkNGNlNTVjZjVmOTAyZmJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2
ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2
ZW50RmxhZ3M+KSBmaW5hbDsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lk
IHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6
QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDc2M2JjYWI4Njk2MmM3OWI2NzJmYzMzMzEyM2M3MTRlYzJjZTEzNjYuLmQ5
Y2Q4ZTc3MTJiZmNlZjhiOTgwZGEyYjU1NzA3Yzk2MzRiMThiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MjUwLDcgKzcyNTAsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJldm9rZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4+JiBzYW5kYm94RQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQot
Ym9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCitib29sIFdlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCBjcmVhdGVOZXdHcm91cCkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0ciht
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkp
OwogCkBAIC03MjYzLDE2ICs3MjYzLDE5IEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxp
Z2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3Rlcigp
LmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVl
KCkpKTsKLSAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCk7CisgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5zdG9y
ZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkp
LCBjcmVhdGVOZXdHcm91cCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2
b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFr
ZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRv
Y3VtZW50KCkpOwogCi0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3Jl
QXBwSGlnaGxpZ2h0cyhTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hhbmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsK
KyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUu
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgZG9j
dW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEo
KSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSk7CisgICAgfQogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlYjUyNDg5MDI4MTUwMjZh
NDdiYTlkOGM1MGM3YzhmY2I0NWUxOWUwLi5lNGZjOWNjYzA2MTA2YzRlMGY2ZjQzNzc1OTA4ODZk
NDZhZTg5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2Fs
bGJhY2tJRC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMu
aCIKLSNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFJbmZvLmgiCkBAIC0yMDQsNiArMjAzLDcgQEAgY2xhc3MgVGV4dENoZWNraW5nUmVxdWVz
dDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBp
bnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVu
dW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERy
YWdBcHBsaWNhdGlvbkZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0hhbmRsaW5nTWV0
aG9kIDogdWludDhfdDsKQEAgLTEzOTYsOCArMTM5Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKLSAgICB2b2lkIHJlc3Rv
cmVBcHBIaWdobGlnaHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIGJvb2wgY3Jl
YXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0KTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4pOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoV2hl
ZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOGNmY2M0OWNmNmYzODA3NmFmOWMz
MjMxOTNhZDM3NTM0OGE0NDhmMC4uODI3MzExNmU4MzMxNzgyNzIwYWJkMWVkNjU3YWFmMjIzMmU3
YmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC02MjQsOCArNjI0LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICAgICBTZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZSkKIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLSAgICBDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFu
Z2UoZW51bTpib29sIFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3
R3JvdXApCi0gICAgUmVzdG9yZUFwcEhpZ2hsaWdodHMoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGRhdGEpCisgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06
Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkK
KyAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhWZWN0b3I8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKICNlbmRpZgogCiAgICAgRGlzcGF0Y2hXaGVlbEV2ZW50
V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhh
bmRsZWQpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDFhNjZjZTlkZmY4MWFiOTJlMmU3YThl
YmY1YWM4MDlhOWJkOWQyZDIuLjdjZmYxZGQyNTNlMmJkOGFmOGY5OGZlZGNkMGRkNzIzMmQzYTIx
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxp
Z2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDg2YWZhMGU5ZDM3YWNmZTNlZDM0Y2MwNGMyZjAwNGYx
ZTVkZWNlZDUuLjcyNWNiNTBmMDkwODJkZjYyOWNlOWM1N2QzN2U3ZDEyMDczOGRhYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTc0NSw3ICs3NDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0ZVRp
bWVDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGVUaW1lQ2hvb3NlcihEYXRlVGlt
ZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYkNocm9tZUNs
aWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgY29uc3QKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25z
dCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420398</attachid>
            <date>2021-02-15 17:11:07 -0800</date>
            <delta_ts>2021-02-15 19:04:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221802-20210215171106.patch</filename>
            <type>text/plain</type>
            <size>76425</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uN2Q1ZjFmMTYxNzhlNWJlM2UwZjg0YTExMGQxNjlm
MzUxMGU1N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBQaXBlIHRocm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxh
eSwgYW5kIHVwZGF0ZSB0byBhbGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBt
b3JlIGVhc2lseS4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmguCisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjEtMDItMTEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybmluZyBzUkdCIGZyb20g
Q0cgY29sb3Igc3BhY2UgZnVuY3Rpb25zIG9uIGZhaWx1cmUgaXMgdG9vIGVycm9yIHByb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM0Y2E5MDljN2IzYTYxNWI4YjU0NTUzYjcyNmQ5ZDZiYzAxODhkMTUuLmE0MDU4
OWExYmY3NTYxMTUwMjgyM2FmMGJlYmE3OGNmZGI1ZGIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgQXBwIEhpZ2hsaWdodHMgQVBJIHRvIG9wZXJhdGUgaW4gdGVy
bXMgb2YgYSBzaW5nbGUgc2VyaWFsaXplZCBoaWdobGlnaHQgYXQgYSB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFs
IGRhdGEgbmVlZGVkIGZvciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGlu
Zm9ybWF0aW9uIHRvIGJlIGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEluQ3VycmVudEdyb3Vw
V2l0aFJhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodElu
TmV3R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIxLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjT1NdIEVuYWJsZSBBdWRpbyBDYXB0dXJlIGluIEdQVVByb2Nlc3MgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3
ZDg0ZTc1ZTA2ODA0MDUuLmViMzk4NmQ0ZDM0ZjA2MTA2MGFiNWU4YWE3OWY3YmExNTY3ZDIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
MiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSBBcHAgSGlnaGxpZ2h0cyBBUEkgdG8gb3BlcmF0ZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSBz
ZXJpYWxpemVkIGhpZ2hsaWdodCBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorCiAy
MDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2
ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1
OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li45NTc2M2VkYzhlNDlmMDE3NWUzMTliNzFmYTA3
MDU5MmZjMWZlYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3LDggQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24v
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlv
bi5oCisgICAgTW9kdWxlcy9oaWdobGlnaHQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaAog
ICAgIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5oCiAgICAgTW9kdWxlcy9oaWdobGlnaHQv
SGlnaGxpZ2h0UmVnaXN0ZXIuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGVl
YjExMTE4YTA3M2QxMjMxMDE4OTU3NDk1ZTVkZDZkMDk4NmIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
aApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlv
biB7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OworICAgIE9wdGlv
bmFsPFN0cmluZz4gdGV4dDsKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dy
b3VwOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXImKTsKK307CisKKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb246OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihoaWdobGlnaHQtPnNpemUoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGlnaGxpZ2h0LT5kYXRhQXNVSW50OFB0
cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworCisgICAgaWYgKHRleHQpCisgICAgICAgIGVu
Y29kZXIgPDwgdGV4dDsKKworICAgIGVuY29kZXIgPDwgaXNOZXdHcm91cDsKKworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24+IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKworICAg
IE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlm
ICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNv
ZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3Ro
LnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gaGlnaGxpZ2h0
OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0LnNpemUoKSwgMSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxTdHJp
bmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRleHQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBp
c05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdHcm91cCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSh0ZXh0KSwgaXNOZXdHcm91cCB9fTsKK30K
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTRkNTliYjM1ZGRhMTRjNmNmZGQ4Yjdm
ZGU0NDg2MDVmNDBiOTRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3RE
YXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKLQotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgi
Ci0jaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1
ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
LSNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgotI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCi0jaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRDb2RlcnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgRU5BQkxFKEFQUF9ISUdI
TElHSFRTKQotCi1BcHBIaWdobGlnaHRMaXN0RGF0YSBBcHBIaWdobGlnaHRMaXN0RGF0YTo6Y3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIGF1dG8gZGVjb2RlciA9IGJ1
ZmZlci5kZWNvZGVyKCk7Ci0gICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlzdERhdGE+IGRhdGE7
Ci0gICAgZGVjb2RlciA+PiBkYXRhOwotICAgIHJldHVybiBkYXRhID8gKmRhdGEgOiBBcHBIaWdo
bGlnaHRMaXN0RGF0YSB7eyB9fTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0
TGlzdERhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKLXsKLSAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGVuY29kZXI7Ci0gICAgZW5jb2RlciA8PCAqdGhpczsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkp
OwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxM2IyMTRkYjk3ODkyMDk0NGNkZGIxZmIwZWEx
NjVkN2RhNmNlMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0TGlzdERhdGEu
aAorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQu
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgRU5BQkxFKEFQUF9ISUdITElHSFRT
KQotCi1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0KLWNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7
Ci1wdWJsaWM6Ci0gICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKLSAgICAgICAgU3RyaW5n
IGlkZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBub2RlTmFtZTsKLSAgICAgICAgU3RyaW5nIHRl
eHREYXRhOwotICAgICAgICB1bnNpZ25lZCBwYXRoSW5kZXggeyAwIH07Ci0KLSAgICAgICAgTm9k
ZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUs
IFN0cmluZyYmIGRhdGEsIHVuc2lnbmVkIGluZGV4KQotICAgICAgICAgICAgOiBpZGVudGlmaWVy
KFdURk1vdmUoZWxlbWVudElkZW50aWZpZXIpKQotICAgICAgICAgICAgLCBub2RlTmFtZShXVEZN
b3ZlKG5hbWUpKQotICAgICAgICAgICAgLCB0ZXh0RGF0YShXVEZNb3ZlKGRhdGEpKQotICAgICAg
ICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAg
ICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgICwgbm9k
ZU5hbWUobmFtZSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoZGF0YSkKLSAgICAgICAgICAgICwg
cGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllciA9PSBvdGhlci5pZGVudGlmaWVyICYmIG5v
ZGVOYW1lID09IG90aGVyLm5vZGVOYW1lICYmIHRleHREYXRhID09IG90aGVyLnRleHREYXRhICYm
IHBhdGhJbmRleCA9PSBvdGhlci5wYXRoSW5kZXg7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb2Rl
UGF0aENvbXBvbmVudD4gZGVjb2RlKERlY29kZXImKTsKLSAgICB9OwotCi0gICAgdXNpbmcgTm9k
ZVBhdGggPSBWZWN0b3I8Tm9kZVBhdGhDb21wb25lbnQ+OwotCi0gICAgQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYpID0gZGVmYXVsdDsKLSAgICBBcHBI
aWdobGlnaHRSYW5nZURhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
KFN0cmluZyYmIHRleHQsIE5vZGVQYXRoJiYgc3RhcnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCBOb2RlUGF0aCYmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICA6IG1fdGV4dChXVEZNb3ZlKHRleHQpKQotICAgICAgICAsIG1fc3RhcnRDb250YWluZXIo
V1RGTW92ZShzdGFydENvbnRhaW5lcikpCi0gICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9m
ZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRhaW5lcihXVEZNb3ZlKGVuZENvbnRhaW5lcikpCi0g
ICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAgIHsKLSAgICB9Ci0KLSAgICBBcHBI
aWdobGlnaHRSYW5nZURhdGEoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBOb2RlUGF0aCYgc3Rh
cnRDb250YWluZXIsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBjb25zdCBOb2RlUGF0aCYgZW5kQ29u
dGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogbV90ZXh0KHRleHQpCi0gICAg
ICAgICwgbV9zdGFydENvbnRhaW5lcihzdGFydENvbnRhaW5lcikKLSAgICAgICAgLCBtX3N0YXJ0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KQotICAgICAgICAsIG1fZW5kQ29udGFpbmVyKGVuZENvbnRhaW5l
cikKLSAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIGNvbnN0
IE5vZGVQYXRoJiBzdGFydENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb250YWlu
ZXI7IH0KLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRP
ZmZzZXQ7IH0KLSAgICBjb25zdCBOb2RlUGF0aCYgZW5kQ29udGFpbmVyKCkgY29uc3QgeyByZXR1
cm4gbV9lbmRDb250YWluZXI7IH0KLSAgICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2VuZE9mZnNldDsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7Ci0KLXBy
aXZhdGU6Ci0gICAgU3RyaW5nIG1fdGV4dDsKLSAgICBOb2RlUGF0aCBtX3N0YXJ0Q29udGFpbmVy
OwotICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgeyAwIH07Ci0gICAgTm9kZVBhdGggbV9lbmRD
b250YWluZXI7Ci0gICAgdW5zaWduZWQgbV9lbmRPZmZzZXQgeyAwIH07Ci19OwotCi1jbGFzcyBB
cHBIaWdobGlnaHRMaXN0RGF0YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFwcEhpZ2hsaWdodExpc3REYXRhIGNyZWF0
ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKLQotICAgIEFwcEhpZ2hsaWdodExpc3REYXRhKGNvbnN0
IEFwcEhpZ2hsaWdodExpc3REYXRhJikgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodExpc3RE
YXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodExpc3REYXRhKFZlY3RvcjxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+JiYgYW5ub3RhdGlvblJhbmdlcykKLSAgICAgICAgOiBtX2Fubm90YXRp
b25SYW5nZXMoV1RGTW92ZShhbm5vdGF0aW9uUmFuZ2VzKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
Y29uc3QgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4mIHJhbmdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYW5ub3RhdGlvblJhbmdlczsgfQotICAgIHZvaWQgc2V0UmFuZ2VzKFZlY3RvcjxBcHBI
aWdobGlnaHRSYW5nZURhdGE+JiYgcmFuZ2VzKSB7IG1fYW5ub3RhdGlvblJhbmdlcyA9IFdURk1v
dmUocmFuZ2VzKTsgfQotICAgIHZvaWQgYWRkUmFuZ2VzKFZlY3RvcjxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+JiYgcmFuZ2VzKSB7IG1fYW5ub3RhdGlvblJhbmdlcy5hcHBlbmRWZWN0b3IoV1RGTW92
ZShyYW5nZXMpKTsgfQotCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBj
b25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbm5vdGF0aW9uUmFu
Z2VzLnNpemUoKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3Rh
dGlvblJhbmdlcy5pc0VtcHR5KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlzdERhdGE+IGRlY29kZShEZWNvZGVyJik7Ci0K
LXByaXZhdGU6Ci0KLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX2Fubm90YXRp
b25SYW5nZXM7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKLSAgICBlbmNvZGVyIDw8IG5vZGVO
YW1lOwotICAgIGVuY29kZXIgPDwgdGV4dERhdGE7Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocGF0aEluZGV4KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudD4gQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Ci17Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOwotICAgIGRlY29kZXIgPj4gaWRl
bnRpZmllcjsKLSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IG5vZGVOYW1lOwotICAgIGRlY29kZXIgPj4gbm9k
ZU5hbWU7Ci0gICAgaWYgKCFub2RlTmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dERhdGE7Ci0gICAgZGVjb2RlciA+PiB0ZXh0RGF0
YTsKLSAgICBpZiAoIXRleHREYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhdGhJbmRleDsKLSAgICBkZWNvZGVyID4+IHBhdGhJbmRl
eDsKLSAgICBpZiAoIXBhdGhJbmRleCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqbm9kZU5hbWUpLCBX
VEZNb3ZlKCp0ZXh0RGF0YSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPigqcGF0aEluZGV4KSB9fTsK
LX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV90ZXh0
OwotICAgIGVuY29kZXIgPDwgbV9zdGFydENvbnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtX3N0YXJ0T2Zmc2V0KTsKLSAgICBlbmNvZGVyIDw8IG1fZW5kQ29u
dGFpbmVyOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fZW5kT2Zmc2V0
KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQot
ewotICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKLSAgICBkZWNvZGVyID4+IHRleHQ7Ci0gICAg
aWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
Tm9kZVBhdGg+IHN0YXJ0Q29udGFpbmVyOwotICAgIGRlY29kZXIgPj4gc3RhcnRDb250YWluZXI7
Ci0gICAgaWYgKCFzdGFydENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzdGFydE9mZnNldDsKLSAgICBkZWNvZGVyID4+IHN0
YXJ0T2Zmc2V0OwotICAgIGlmICghc3RhcnRPZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxOb2RlUGF0aD4gZW5kQ29udGFpbmVyOwotICAgIGRlY29k
ZXIgPj4gZW5kQ29udGFpbmVyOwotICAgIGlmICghZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGVuZE9mZnNldDsKLSAg
ICBkZWNvZGVyID4+IGVuZE9mZnNldDsKLSAgICBpZiAoIWVuZE9mZnNldCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotCi0gICAgcmV0dXJuIHt7Ci0gICAgICAgIFdURk1vdmUoKnRl
eHQpLAotICAgICAgICBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksCi0gICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPigqc3RhcnRPZmZzZXQpLAotICAgICAgICBXVEZNb3ZlKCplbmRDb250YWlu
ZXIpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKmVuZE9mZnNldCksCi0gICAgfX07
Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0TGlzdERhdGE6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9hbm5v
dGF0aW9uUmFuZ2VzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBI
aWdobGlnaHRMaXN0RGF0YT4gQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+PiBh
bm5vdGF0aW9uUmFuZ2VzOwotICAgIGRlY29kZXIgPj4gYW5ub3RhdGlvblJhbmdlczsKLSAgICBp
ZiAoIWFubm90YXRpb25SYW5nZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICByZXR1cm4ge3sgV1RGTW92ZSgqYW5ub3RhdGlvblJhbmdlcykgfX07Ci19Ci0KLSNlbmRpZgot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
MTliYzU2OWE1MDQ5MjJiMTRmMzk1NjBlOWYyN2M4N2JhMzc1NjYzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKworI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5jbHVkZSAi
Tm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgorI2luY2x1ZGUgIlN0YXRp
Y1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitPcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZl
ci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwor
ICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworUmVmPFNoYXJlZEJ1
ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Cit7Cisg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgKnRo
aXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVu
Y29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgZW5jb2Rl
ciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHREYXRhOworICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKKyAgICBkZWNv
ZGVyID4+IGlkZW50aWZpZXI7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKKyAgICBkZWNv
ZGVyID4+IG5vZGVOYW1lOworICAgIGlmICghbm9kZU5hbWUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOworICAgIGRlY29kZXIg
Pj4gdGV4dERhdGE7CisgICAgaWYgKCF0ZXh0RGF0YSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7CisgICAgZGVjb2RlciA+
PiBwYXRoSW5kZXg7CisgICAgaWYgKCFwYXRoSW5kZXgpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5v
ZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnBhdGhJ
bmRleCkgfX07Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fdGV4dDsKKyAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7CisgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7CisgICAgZW5jb2RlciA8
PCBtX2VuZENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
X2VuZE9mZnNldCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhp
Z2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAgZGVjb2RlciA+PiB0
ZXh0OworICAgIGlmICghdGV4dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKKyAgICBkZWNvZGVyID4+IHN0YXJ0
Q29udGFpbmVyOworICAgIGlmICghc3RhcnRDb250YWluZXIpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7CisgICAgZGVj
b2RlciA+PiBzdGFydE9mZnNldDsKKyAgICBpZiAoIXN0YXJ0T2Zmc2V0KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsK
KyAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKKyAgICBpZiAoIWVuZENvbnRhaW5lcikKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRP
ZmZzZXQ7CisgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CisgICAgaWYgKCFlbmRPZmZzZXQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgIHJldHVybiB7eworICAgICAgICBX
VEZNb3ZlKCp0ZXh0KSwKKyAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAorICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKKyAgICAgICAgV1RGTW92ZSgq
ZW5kQ29udGFpbmVyKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRPZmZzZXQp
LAorICAgIH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTRjZGNhNzQxNDVkNWIyN2Y1MTNkNzM1MTkzNWEyOTJhMjQ3
ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhIHsKK1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQgeworICAgICAg
ICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICAgICAgU3RyaW5nIG5vZGVOYW1lOworICAgICAgICBT
dHJpbmcgdGV4dERhdGE7CisgICAgICAgIHVuc2lnbmVkIHBhdGhJbmRleCB7IDAgfTsKKworICAg
ICAgICBOb2RlUGF0aENvbXBvbmVudChTdHJpbmcmJiBlbGVtZW50SWRlbnRpZmllciwgU3RyaW5n
JiYgbmFtZSwgU3RyaW5nJiYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCisgICAgICAgICAgICA6IGlk
ZW50aWZpZXIoV1RGTW92ZShlbGVtZW50SWRlbnRpZmllcikpCisgICAgICAgICAgICAsIG5vZGVO
YW1lKFdURk1vdmUobmFtZSkpCisgICAgICAgICAgICAsIHRleHREYXRhKFdURk1vdmUoZGF0YSkp
CisgICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkIGluZGV4
KQorICAgICAgICAgICAgOiBpZGVudGlmaWVyKGVsZW1lbnRJZGVudGlmaWVyKQorICAgICAgICAg
ICAgLCBub2RlTmFtZShuYW1lKQorICAgICAgICAgICAgLCB0ZXh0RGF0YShkYXRhKQorICAgICAg
ICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlUGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyID09IG90aGVyLmlkZW50aWZp
ZXIgJiYgbm9kZU5hbWUgPT0gb3RoZXIubm9kZU5hbWUgJiYgdGV4dERhdGEgPT0gb3RoZXIudGV4
dERhdGEgJiYgcGF0aEluZGV4ID09IG90aGVyLnBhdGhJbmRleDsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2RlUGF0aENvbXBvbmVudCYgb3RoZXIpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPE5vZGVQYXRoQ29tcG9uZW50PiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICB1
c2luZyBOb2RlUGF0aCA9IFZlY3RvcjxOb2RlUGF0aENvbXBvbmVudD47CisKKyAgICBBcHBIaWdo
bGlnaHRSYW5nZURhdGEoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJikgPSBkZWZhdWx0Owor
ICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSgpID0gZGVmYXVsdDsKKyAgICBBcHBIaWdobGlnaHRS
YW5nZURhdGEoU3RyaW5nJiYgdGV4dCwgTm9kZVBhdGgmJiBzdGFydENvbnRhaW5lciwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIE5vZGVQYXRoJiYgZW5kQ29udGFpbmVyLCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogbV90ZXh0KFdURk1vdmUodGV4dCkpCisgICAgICAgICwgbV9zdGFydENv
bnRhaW5lcihXVEZNb3ZlKHN0YXJ0Q29udGFpbmVyKSkKKyAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0
KHN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fZW5kQ29udGFpbmVyKFdURk1vdmUoZW5kQ29udGFp
bmVyKSkKKyAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpCisgICAgeworICAgIH0KKwor
ICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IE5vZGVQ
YXRoJiBzdGFydENvbnRhaW5lciwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGNvbnN0IE5vZGVQYXRo
JiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBtX3RleHQodGV4
dCkKKyAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVyKHN0YXJ0Q29udGFpbmVyKQorICAgICAgICAs
IG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9lbmRDb250YWluZXIoZW5k
Q29udGFpbmVyKQorICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7CisgICAg
fQorCisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9Cisg
ICAgY29uc3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdGFy
dENvbnRhaW5lcjsgfQorICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9zdGFydE9mZnNldDsgfQorICAgIGNvbnN0IE5vZGVQYXRoJiBlbmRDb250YWluZXIoKSBjb25z
dCB7IHJldHVybiBtX2VuZENvbnRhaW5lcjsgfQorICAgIHVuc2lnbmVkIGVuZE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKKworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgU3RyaW5nIG1fdGV4dDsKKyAgICBOb2RlUGF0aCBtX3N0YXJ0Q29udGFpbmVy
OworICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQgeyAwIH07CisgICAgTm9kZVBhdGggbV9lbmRD
b250YWluZXI7CisgICAgdW5zaWduZWQgbV9lbmRPZmZzZXQgeyAwIH07Cit9OworCisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCBjM2I4YmI3N2Mw
YzRmNGU1Yzk5ODcxNzkyMzkyZTNkZGQ4ZDE5MTg2Li4wZTAyYjVkNjRhY2JhYTBlODk3NmZjNjli
MDY4MzRkMTE1MmI1MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjcsNyArMjcsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKIAotI2lu
Y2x1ZGUgIkFwcEhpZ2hsaWdodExpc3REYXRhLmgiCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKICNpbmNsdWRl
ICJDaHJvbWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIgpAQCAtNDAsNiArNDEsOCBAQAogI2luY2x1ZGUgIlN0YXRpY1Jhbmdl
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAKKyNkZWZpbmUgVEVYVF9QUkVWSUVXX0xF
TkdUSCAxMDAKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5Niw4ICsxOTksMTAgQEAg
c3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGggbWFrZU5vZGVQYXRoKFJlZlB0
cjxOb2RlPiYmIG5vZGUpCiAKIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiByYW5nZSkKIHsKKyAgICBhdXRv
IHRleHQgPSBwbGFpblRleHQocmFuZ2UpOworICAgIHRleHQudHJ1bmNhdGUoVEVYVF9QUkVWSUVX
X0xFTkdUSCk7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgcGxhaW5UZXh0KHJhbmdlKSwKKyAgICAg
ICAgdGV4dCwKICAgICAgICAgbWFrZU5vZGVQYXRoKCZyYW5nZS5zdGFydENvbnRhaW5lcigpKSwK
ICAgICAgICAgcmFuZ2Uuc3RhcnRPZmZzZXQoKSwKICAgICAgICAgbWFrZU5vZGVQYXRoKCZyYW5n
ZS5lbmRDb250YWluZXIoKSksCkBAIC0yMTAsNDggKzIxNSwzNSBAQCBBcHBIaWdobGlnaHRTdG9y
YWdlOjpBcHBIaWdobGlnaHRTdG9yYWdlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotdm9p
ZCBBcHBIaWdobGlnaHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSgpCit2b2lk
IEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlJiByYW5n
ZSwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cCkKIHsKLSAgICBWZWN0b3I8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOworICAgIGF1dG8gZGF0YSA9IGNyZWF0ZUFwcEhp
Z2hsaWdodFJhbmdlRGF0YShyYW5nZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogCi0g
ICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFkYXRhLnRleHQo
KS5pc0VtcHR5KCkpCisgICAgICAgIHRleHQgPSBkYXRhLnRleHQoKTsKIAotICAgIGlmICghbV9k
b2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm47CisgICAgQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24gaW5mbyA9IHtkYXRhLnRvU2hhcmVkQnVmZmVyKCksIHRleHQsIGlzTmV3R3JvdXB9Owog
Ci0gICAgaWYgKGF1dG8gYXBwSGlnaGxpZ2h0UmVnaXN0ZXIgPSBtX2RvY3VtZW50LT5hcHBIaWdo
bGlnaHRSZWdpc3RlcklmRXhpc3RzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQg
OiBhcHBIaWdobGlnaHRSZWdpc3Rlci0+bWFwKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
cmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZhbHVlLT5yYW5nZXNEYXRhKCkpCi0gICAgICAgICAgICAg
ICAgZGF0YS5hcHBlbmQoY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKHJhbmdlRGF0YS0+cmFu
Z2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YSBsaXN0RGF0
YSB7IFdURk1vdmUoZGF0YSkgfTsKLQotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCku
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UobGlzdERhdGEudG9TaGFyZWRCdWZmZXIoKSk7Cisg
ICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsK
IH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK2Jvb2wgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9y
ZUFwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGFw
cEhpZ2hsaWdodExpc3REYXRhID0gQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmNyZWF0ZShidWZmZXIp
OwotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHVucmVzdG9yZWRSYW5nZXM7Ci0g
ICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gcmVzdG9yZWRSYW5nZXM7CisgICAgYXV0
byBzdHJvbmdEb2N1bWVudCA9IG1fZG9jdW1lbnQuZ2V0KCk7CiAKICAgICBpZiAoIW1fZG9jdW1l
bnQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBz
dHJvbmdEb2N1bWVudCA9IG1fZG9jdW1lbnQuZ2V0KCk7CisgICAgYXV0byBhcHBIaWdobGlnaHRS
YW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZmZXIpOworICAgIGlm
ICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBm
b3IgKGF1dG8mIGFwcEhpZ2hsaWdodExpc3REYXRhIDogYXBwSGlnaGxpZ2h0TGlzdERhdGEucmFu
Z2VzKCkpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShhcHBIaWdobGlnaHRMaXN0
RGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKLSAgICAgICAgaWYgKCFyYW5nZSkgewotICAgICAgICAg
ICAgdW5yZXN0b3JlZFJhbmdlcy5hcHBlbmQoYXBwSGlnaGxpZ2h0TGlzdERhdGEpOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKCph
cHBIaWdobGlnaHRSYW5nZURhdGEsICpzdHJvbmdEb2N1bWVudCk7CiAKLSAgICAgICAgcmVzdG9y
ZWRSYW5nZXMuYXBwZW5kKGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAgc3Ryb25nRG9j
dW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1Jhbmdl
OjpjcmVhdGUoKnJhbmdlKSk7Ci0gICAgfQorICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGln
aHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkp
OworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IDhiNjA3
NWFkNjQwMjQyOWNlZGM0YmU5MjZmNmNkYTA5ZTQ0M2JjOTkuLjhjYTAyNTQ2YjMyYmUwMGI0NmE2
NjU5ZjM5MDk4NTYxNjZhNzc0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM2LDE4ICszNiwyMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNz
IEFwcEhpZ2hsaWdodExpc3REYXRhOwogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBIaWdobGlnaHQ7CisKK2Vu
dW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwogCiBjbGFzcyBBcHBI
aWdobGlnaHRTdG9yYWdlIDogUmVmQ291bnRlZDxBcHBIaWdobGlnaHRTdG9yYWdlPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXBwSGlnaGxpZ2h0U3RvcmFn
ZShEb2N1bWVudCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBcHBIaWdobGln
aHRzU3RvcmFnZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdo
dHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFw
cEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgLCBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05l
d0dyb3VwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc3RvcmVBcHBIaWdobGlnaHQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9k
b2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjOTMxZjJiZGU0
MjcyOGU4NjQ1NTgwZDdlMzAzZGZiNTAyMTc4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCkBA
IC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcAppbmRleCA2OGVkMjdm
ZGIzZjc0ZTBiMWE5MzlmNTgxZmU3MjM4NjM3MGZmY2Q5Li4xNGQwMzJjOTdlNWE2MTVlNmZjOWM1
NmU3NDk2ZmQ3M2MwNWU3ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIuY3BwCkBAIC02NSw1ICs2NSw2IEBAIHZvaWQg
SGlnaGxpZ2h0UmVnaXN0ZXI6OmFkZEFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYgdmFs
dWUpCiAgICAgZWxzZQogICAgICAgICBzZXRGcm9tTWFwTGlrZShhcHBIaWdobGlnaHRLZXkoKSwg
SGlnaGxpZ2h0OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpKTsKIH0KKwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4MzA5MmY0NjIuLjA1
YmI1ZTg3YTQzMmRlOGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC02NCw3ICs2NCw3IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCiBNb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2
aWdhdG9yR2VvbG9jYXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0
RGF0YS5jcHAKK01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1bGVzL2hpZ2hsaWdo
dC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyZTNiYTJkOGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBiLi4zODgxYjZhNzAz
OWRhNGEyN2Y5ODY1NjhiMDdhM2YxYWU1NzMxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYgKzEyMjMsNyBAQAog
CQk0NDI1MDcwOTI1ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyNTA3MDcyNTgyOUEx
NDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNFMDA0NkQ0MDEgLyog
SGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQyNTc1QThBNTAwNDZE
NDAxIC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyogSGlnaGxpZ2h0UmVn
aXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTIxMEREMjVE
NjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NTc3NUU1MjA0NzJGNzMwMDhE
Q0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyog
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NjNDRjY4MjIxMkZBNjgwMDFBODU3NyAvKiBEYXRh
RGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsubW0gKi87IH07CiAJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2NjY2RCAvKiBTZWxl
Y3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIzMSwx
MiArMTIzMiwxMyBAQAogCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVu
dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0OEEyOUJGMEE0NkQ5Q0Iw
MDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRq
dXN0bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ0OTMxNjkxMjVEN0Ex
RjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5MzE2OTAyNUQ3QTFFRjAwQUE2NkRF
IC8qIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ5NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8qIEpT
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlDMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmggKi87IH07CiAJCTQ0OTZFM0EwMTM5ODEzQTUwMDNFRTMyQSAvKiBKU1NW
R01QYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQ5NkUzOUYxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggKi87
IH07CiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTIwREI4
MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEEyOEFBQzEyREZCOEFDMDBB
RTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxF
bGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0
aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwotCQk0NEFF
MDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVBMjU3OUNGRkIwMEM0
MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oICovOyB9OworCQk0NEFFMDQ1QzI1NzlDRkZC
MDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUwMDU4NjY3MCAv
KiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9T
LmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxOUQwRjNEMjEw
RTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2RjRFMTkwMDY4NDc5
QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51
bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC04MTE3LDYgKzgxMTksNyBAQAogCQk0NDM3QzRBOTI0RTJBRTVGMDAwOTUxMjggLyogTGF6
eUxvYWRGcmFtZU9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExhenlMb2FkRnJhbWVP
YnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0M0YwNDI2MEU3NUM4
RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1Nzc1RTQyMDQ3MkY3MzAwOERD
RTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsRGVmYXVs
dFN5c3RlbUFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NkRD
NjQ2MjRBMjlEOUIwMDYxRjM5MCAvKiBQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMjksNiArODEzMiw3IEBACiAJ
CTQ0OEEyOUJFMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDhCMUI3ODBGM0EyRjlC
MDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRTaXplQWRqdXN0bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0OTMxNjkwMjVEN0ExRUYwMEFBNjZERSAv
KiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDk2RTM5
QjEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5NkUzOUMxMzk4MTM2QzAwM0VF
MzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NDk2RTM5RjEzOTgxM0E1MDAzRUUzMkEgLyogSlNTVkdNUGF0aEVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdNUGF0aEVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzYsOCArODE0MCw4IEBACiAJCTQ0
QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNYXRo
TUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxF
bGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0
NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQy
RTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0NUEyNTc5Q0ZGQjAw
QzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjkyNTM2OUE4ODAwQTQ0NThEIC8q
IFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFsRXZlbnRIYW5kbGVycytTZWxlY3Rp
b24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MzYsMTAgKzE5ODQwLDEyIEBACiAJCTQ0RTg4RTQ3
MjM2OERGMEYwMDlCNDg0NyAvKiBoaWdobGlnaHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdo
bGlnaHRMaXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFw
cEhpZ2hsaWdodExpc3REYXRhLmggKi8sCisJCQkJNDQ1MjEwREQyNUQ2MUVGRjAwM0EyRUQ4IC8q
IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8sCisJCQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQy
RTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8sCisJCQkJNDRBRTA0NUEyNTc5Q0ZG
QjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovLAogCQkJCTQ0MjUwNzA2MjU4
MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmNwcCAqLywKIAkJCQk0NDI1MDcw
NzI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oICovLAorCQkJCTQ0OTMx
NjkwMjVEN0ExRUYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oICovLAog
CQkJCTQ0RTg4RTU0MjM2QTY2QTEwMDlCNDg0NyAvKiBIaWdobGlnaHQuY3BwICovLAogCQkJCTQ0
RTg4RTUxMjM2QTVDOEQwMDlCNDg0NyAvKiBIaWdobGlnaHQuaCAqLywKIAkJCQk0NEU4OEU0RDIz
NjkxMjhCMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmlkbCAqLywKQEAgLTMxMTU4LDcgKzMxMTY0LDgg
QEAKIAkJCQk1NzE1MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmROb2Rl
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodExpc3REYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NDUyMTBERjI1RDYx
RjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ0MjUwNzA5MjU4MjlBMjcwMEMwOTM2OCAvKiBBcHBIaWdobGln
aHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTEzRTAyRTIzMzFBMTM0MDA5QzMzQTAg
LyogQXBwbGVQYXlDYW5jZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjVBOTQxRjdF
QzQzMjAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLywKQEAg
LTMxNjIxLDYgKzMxNjI4LDcgQEAKIAkJCQk5MzkyRjE0QzBBRDE4NjFCMDA2OTFCRDQgLyogQ291
bnRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEIwNTU2ODA5QzY3MDAxMDAzMDdF
NDMgLyogQ3JlYXRlTGlua0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0OTMxNjkxMjVE
N0ExRjYwMEFBNjZERSAvKiBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3OTI5MTdBMTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5MjkxN0UxOTg3Njc4RjAwRjRCNjYxIC8qIENyZWRlbnRp
YWxDb2NvYS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCmluZGV4IDA0YmY4YTUyMzFkN2Q3Njg1NjAyMmM0Yjc4OTRjYWJhZTZkNGVmYjguLmZjOGE5
NGEzMzcyMDY1ZWYwNjA3Nzk1YjE3Y2IxNjhlNzUxNjQ5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRW1wdHlDbGllbnRzLmgiCiAKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbi5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgpAQCAtNTAyLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IEVt
cHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVEYXRlVGltZUNob29zZXIoRGF0ZVRpCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0
Cit2b2lkIEVtcHR5Q2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdo
bGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBhNzg4YjQ1YWFkMTVmMzQwZjJlZDA5OWRkNGJjY2Y1YTVlYzkz
YzNlLi4xNGM0YTkyNzc1MWIwNmI2ODQ4OTQ1ZDA2Y2EyMzI4MDIxMzViNWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgRW1wdHlD
aHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9yZUFw
cEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggZDMwNjljZWUxMzc4ZWYwZDI2NTAwNGMyNzgw
NWNmN2YxYzViZTM4My4uYTU5YWE0MTYzODcyOGNkYzM0ZTY1MzFlMjJlMzE0ZTU1M2U5YjA0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb250YWN0SW5m
by5oIgogI2luY2x1ZGUgIkNvbnRhY3RzUmVxdWVzdERhdGEuaCIKQEAgLTUxMiw5ICs1MTMsOSBA
QCB2b2lkIENocm9tZTo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3Qg
Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRT
KQotdm9pZCBDaHJvbWU6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3ZvaWQgQ2hyb21lOjpzdG9yZUFwcEhpZ2hsaWdo
dChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29uc3QKIHsKLSAgICBtX2Ns
aWVudC51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBtX2Ns
aWVudC5zdG9yZUFwcEhpZ2hsaWdodChpbmZvKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
aAppbmRleCBmODE2Nzg2MjI0OWFmZWE1ZDFkYWNlODVkOWQxZjc5MDIwYTgxYzk3Li5mYjZmMWM3
OTcwZTYwZmZmYTIzODZkNWUwYzVhNWIyNWQwMTMwZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAg
LTU3LDYgKzU3LDcgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUG9wdXBPcGVuaW5n
T2JzZXJ2ZXI7CiBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbjsKIHN0cnVjdCBDb250YWN0SW5mbzsKIHN0cnVjdCBDb250YWN0c1JlcXVlc3RE
YXRhOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7CkBAIC0xNjUsNyArMTY2LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9p
ZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBjb25zdDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFwcEhpZ2hsaWdodElu
Zm9ybWF0aW9uJikgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1l
JiwgRmlsZUNob29zZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGNmMmIz
ZjBkOWFiYWQyZTcyZWNhZGM3ZTE1M2E5YjE1MTYzMzFjNGQuLjUxYjA5N2I2OTgzNDJmZWE3OTZl
NTRiYzkyOWU5ZDNkN2MzYWVkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAt
MjIsNiArMjIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgi
CisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJBdXRvcGxh
eUV2ZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8uaCIKICNpbmNsdWRlICJDdXJzb3IuaCIK
QEAgLTMwNCw3ICszMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYp
IGNvbnN0ID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFt
ZSYsIEZpbGVDaG9vc2VyJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5
ZGI0YjY4YzQ1ZDhiZjBlNjkwMjM4M2UwZjhhYTI3ODM3NjhhNjMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gY2xh
c3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGM1NWJkYjU0OWE3ZjdjNTQ3ZWUwNjEzYmEwN2MwOTU5MjcyNTdk
ZWEuLjRiZWYwYjA3ZDRhMDBhMjZmYjhkNjIwYTA2ODYyNjdjN2E3N2U5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTE5LDYgKzEx
OSw3IEBACiAjaW1wb3J0ICJfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCIKICNpbXBvcnQgIl9X
S1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVz
SW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
b2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXphdGlvbi5oPgpAQCAt
MTQyMywxNCArMTQyNCwxNCBAQCAtICh2b2lkKV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTooaWQg
PF9XS0FwcEhpZ2hsaWdodERlbGVnYXRlPilkZWxlZ2F0ZQogfQogCiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQotLSAodm9pZClfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0YSAq
KWRhdGEKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHRJbmZvcm1hdGlvbiYpaGlnaGxpZ2h0SW5mb3JtYXRpb24KIHsKICAgICBhdXRvIGRlbGVn
YXRlID0gc2VsZi5fYXBwSGlnaGxpZ2h0RGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOildKQotICAgICAgICBb
ZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpkYXRhXTsK
KyAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2U6aGlnaGxpZ2h0SW5mb3JtYXRpb24uaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CiB9CiAjZW5kaWYKIApAQCAtMjAzNSwxMiArMjAzNiwyMSBAQCAtICh2b2lkKV9yZXN1bWVBbGxN
ZWRpYVBsYXliYWNrCiAgICAgW3NlbGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogfQog
Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNEYXRhICopZGF0YQorLSAodm9pZClf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogewog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdo
dHMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAgIFZlY3RvcjxSZWY8
V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOworCisgICAgZm9yIChOU0RhdGEgKmhpZ2hs
aWdodCBpbiBoaWdobGlnaHRzKSB7CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGhpZ2hsaWdodC5sZW5ndGgpOworICAgICAgICBpZiAo
c2hhcmVkTWVtb3J5KSB7CisgICAgICAgICAgICBbaGlnaGxpZ2h0IGdldEJ5dGVzOnNoYXJlZE1l
bW9yeS0+ZGF0YSgpIGxlbmd0aDpoaWdobGlnaHQubGVuZ3RoXTsKKyAgICAgICAgICAgIGJ1ZmZl
cnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOworICAgICAgICB9CisgICAgfQorICAgIF9wYWdlLT5y
ZXN0b3JlQXBwSGlnaGxpZ2h0cyhidWZmZXJzKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRh
dGEpOworICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHRzKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CmluZGV4IDQwOWQ4YWVkMzMzMDJlZGY5ZDFlM2Q4ZTM5NDIyM2FhM2VkYjlkNzQuLjY4NzdjNjFh
NzdjNmY4MTcxMTA0M2Y2NjUzNTRlNzNjZGI0ODZkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02Nyw2ICs2
Nyw3IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogZW51
bSBjbGFzcyBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA6IHVpbnQ4X3Q7CiB9CkBAIC0yNjUsNyAr
MjY2LDcgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2b2lkKV91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZToo
TlNEYXRhICopZGF0YTsKKy0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3Jl
OjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpaW5mbzsKICNlbmRpZgogCiAtICh2b2lkKV9pbnRl
cm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVC
bG9jayB3aXRob3V0V2FpdGluZ0ZvclBhaW50aW5nOihCT09MKXdpdGhvdXRXYWl0aW5nRm9yUGFp
bnRpbmcgd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTooQk9PTCl3aXRob3V0V2FpdGlu
Z0ZvckFuaW1hdGVkUmVzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOTI2MjM4YWVhMGExNDc2MTE4ZTVhNjkw
ODU0N2FkNzljM2Y0NTRkMS4uZTQ1Y2IxYmJiYmViYTBiMWE3OTU1NmI4ZDQzMTBjNzc4MjU1NWJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCkBAIC0zNjgsNyArMzY4LDcgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRIYXNCbGFua092ZXJsYXk6KSBCT09MIF9oYXNC
bGFua092ZXJsYXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0QXBwSGln
aGxpZ2h0RGVsZWdhdGU6KSBpZCA8X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+IF9hcHBIaWdobGln
aHREZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwotLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TRGF0YSAqKWRhdGEgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZv
aWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGEgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLyohIEBh
YnN0cmFjdCBUaGUgdGhlbWUgY29sb3Igb2YgdGhlIGFjdGl2ZSBwYWdlLgogIEBkaXNjdXNzaW9u
IFRoaXMgaXMgdGhlIHZhbHVlIG9mIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgb3IgbW9kaWZp
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBs
Q29jb2EuaAppbmRleCBlMzZlOGNjNGU1ZjcwNzhhMjQ0MTM1Y2UyZTZmYjdkYTkwY2RlMjE3Li4z
OTg4MDRhNzZjYzIzNTY2NzE1OTc0ZDJmOGVlNGZiM2VkZjFiMzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCkBAIC0zOCw2
ICszOCw4IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjsKKworc3RydWN0IEFwcEhpZ2hsaWdodEluZm9y
bWF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMo
V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgZmluYWw7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQo
Y29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBmaW5hbDsKICNlbmRpZgog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFn
ZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCAzM2JiZTkyODVhODhmNTJlOTJhNDZkM2QwMzgwMmIw
ZWY2OWY5NTU4Li4zNTMyNjY3ZGQyMGNiMzMxN2MyMmM4ZTk1ZTZjODkyNTA3NWYwM2FmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EubW0KQEAgLTEyMCwxMCArMTIwLDkgQEAgTlNTZXQgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OnNl
cmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKLXZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGln
aGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBQ
YWdlQ2xpZW50SW1wbENvY29hOjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbiAmYXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24pCiB7Ci0gICAgYXV0
byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKLSAgICBbbV93ZWJWaWV3IF91cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZTpuc0RhdGEuZ2V0KCldOworICAgIFttX3dlYlZpZXcgX3N0b3Jl
QXBwSGlnaGxpZ2h0OmFwcEhpZ2hsaWdodEluZm9ybWF0aW9uXTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZTE1ZjEwY2EyMDE1OTIwYTE0MmU2ZGVhY2Q2
MjI1ZDQ2OWVjODUwOC4uY2RjMjUwMWRhNTUwMWFhZDYzYmQ2NTAyZmU3N2NkOTNmOTdkZDY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkQWN0aXZpdHlT
dGF0ZVVwZGF0ZUNvbXBsZXRpb25IYW5kbGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaQogfQogCiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVO
ZXdHcm91cCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVk
UmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXAp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC01
NDIsMTQgKzU0MiwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGNyZWF0ZU5ld0dy
b3VwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHMoVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cykKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OworICAgIFZlY3RvcjxT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlczsKIAotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzKGRhdGFSZWZlcmVuY2UpKTsKKyAgICBm
b3IgKGF1dG8gaGlnaGxpZ2h0IDogaGlnaGxpZ2h0cykgeworICAgICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGhpZ2hsaWdodC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworCisgICAgICAgIG1lbW9yeUhh
bmRsZXMuYXBwZW5kKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBo
aWdobGlnaHQtPnNpemUoKSB9KTsKKyAgICB9CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhXVEZNb3ZlKG1lbW9yeUhhbmRsZXMpKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDk4OGI5ZmE4ZTA0NGRl
ZGMwZTRmMGYwOTYyOWJlYzY4MWQwMDQ0ODQuLjU5YjIyY2EzYWZmZTY5NjhhY2Q5MDY2ZjlhNWI4
NWJhZDIxZDY2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEwOCw2
ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24gOiB1
aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAor
c3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IERpY3Rpb25hcnlQb3B1cElu
Zm87CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CiBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVz
OwpAQCAtMTUxLDYgKzE1Miw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogZW51bSBjbGFz
cyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sIHsgTm8sIFllcyB9OwogCitzdHJ1Y3QgQXBwSGln
aGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbjsKIHN0
cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uOwpAQCAtNTc1LDcgKzU3Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFn
ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24mKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggY2QzYmFjYzIzMDY1OWRjOTdhMTVjM2M1NjFj
NDgzNTViZWE5N2Q3MC4uZjU3N2MzZWJhZGNlOWNkY2VmYjYyZjlhNGYxYjJmODg2N2U2OGQ0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNDMsNiArMTQz
LDcgQEAKICNpbmNsdWRlICJXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlv
bkhpZ2hsaWdodC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlci5oPgpAQCAtNjY4NSwxMSArNjY4NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkK
ICAgICB9CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3R3JvdXApIHsKLSAgICAgICAg
Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0OjpZZXMpOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2Vi
Q29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQWRkSGln
aGxpZ2h0VG9DdXJyZW50R3JvdXApIHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxl
Y3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGNyZWF0
ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodDo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC05ODM5LDEx
ICs5ODQwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgT3B0aW9uYWw8CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBcHBIaWdobGlnaHRz
U3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24mIGluZm8pCiB7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGRhdGEuYnVmZmVy
KCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCAhaW5mby5oaWdobGlnaHQtPmlzRW1w
dHkoKSk7CisKKyAgICBwYWdlQ2xpZW50KCkuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiAKLSAg
ICBwYWdlQ2xpZW50KCkudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKmRhdGEuYnVmZmVyKCkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZjRjMzllYjhlNTQzODZlNDhiOGUyYzgxZWM5OTA2ZWU0NDhiMTcxNy4uYWE1ZDgwMDg2ZjlmMzBl
MDgzMWEwOGM2NWMxZmUxZDk0MTZjNmJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgogI2luY2x1ZGUgIkNv
bnRleHRNZW51Q29udGV4dERhdGEuaCIKLSNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElE
LmgiCiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKQEAgLTIzNSw2ICsyMzQsNyBA
QCBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKIAogZW51bSBj
bGFzcyBBdXRvcGxheUV2ZW50IDogdWludDhfdDsKK2VudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgRXZlbnRNYWtlc0dhbWVwYWRzVmlzaWJsZSA6IGJvb2w7CiBl
bnVtIGNsYXNzIExvY2tCYWNrRm9yd2FyZExpc3QgOiBib29sOwpAQCAtMjQ3LDYgKzI0Nyw3IEBA
IGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgV3JpdGluZ0RpcmVjdGlvbiA6IHVp
bnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBBcHBsaWNh
dGlvbk1hbmlmZXN0Owogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CiBzdHJ1Y3QgQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcjsKQEAgLTM3NCw3ICszNzUsNiBAQCBzdHJ1Y3QgV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U7CiBzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CiBzdHJ1Y3QgVXNl
ck1lc3NhZ2U7CiAKLWVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29s
OwogZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKIGVudW0gY2xhc3MgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVuZG9PclJlZG8g
OiBib29sOwpAQCAtMTgyNiw5ICsxODI2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3luY0lmTW9j
a0RldmljZXNFbmFibGVkQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQot
ICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0KTsKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwotICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIGNyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dCk7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGln
aHRJbmZvcm1hdGlvbiYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFJl
ZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCA0OTE5YmM5ODhlOWM1ZmNhNzJmZmM4YzIxYTNmYzE0MzBi
MjhjMDVhLi42NDdiYWMwMzliODg4MDA2NTNlZDk4ZTI0YjU2NGVjYmIwNDhjMmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01
MzUsNyArNTM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIFVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQorICAgIFN0b3JlQXBwSGlnaGxpZ2h0KHN0cnVjdCBX
ZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiBpbmZvKQogI2VuZGlmCiAKICAgICBTaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBTdHJp
bmcgY2hhbGxlbmdlU3RyaW5nLCBVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkgU3luY2hyb25v
dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IGNlYzg3YzU4ZjAxMWNhN2RhNDk5M2NmMTUzYzFkNmZlNzI0
NWE0YjguLjIxNzc3NDZlZTVkOTFiMjg4NzlkOGQyN2YwYTcxMjhjYWEyMTUyNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2lt
cG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgotI2ltcG9ydCAiQ3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIK
ICNpbXBvcnQgIklucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgiCiAjaW1wb3J0ICJJbnNlcnRUZXh0
T3B0aW9ucy5oIgpAQCAtODk3NSwxMiArODk3NCwxMiBAQCAtICh2b2lkKXNldFVwQXBwSGlnaGxp
Z2h0TWVudXMKIAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRJbkN1cnJlbnRHcm91cFdpdGhSYW5n
ZTooaWQpc2VuZGVyCiB7Ci0gICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShXZWJLaXQ6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpObyk7CisgICAgX3BhZ2Ut
PmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodDo6Tm8pOwogfQogCiAtICh2b2lkKWNyZWF0ZUhpZ2hsaWdodEluTmV3R3Jv
dXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJ
blNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsK
KyAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFlNmViMDhhOWNk
YjNkMDAwMDYwMTNkYjU4NjUyOTJhZWNlNTI2Y2EuLjBiM2U0ODc0OWNlOTdhZDA1MWE5YWM3N2Jj
YjY1ODlmNWFlMjczMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTE5MjAsMTIgKzExOTIwLDYgQEAKIAkJCQlDREFDMjBCNDIzRkI1
OEYyMDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RBQzIwQ0EyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQzIwQzkyM0ZDMkY3NTAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NUEx
MjVDRjU3NDAwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkxRDQ3NjU5QzI1Q0U3NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5RDI1Q0U3
NEFEMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzUmVwbGll
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1ODYyNUNDQTQxNjAwN0FGMzEyIC8qIFJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5LmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjU5MzI1Q0ND
RTkzMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTQyNUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2
RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5
MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggYzA5YTI3YjdlN2Y1M2ZiNDQyNDQ0NzFhNmQ2Yjc0ZmNlMDVkNDNh
MC4uNDQ5ODc0YTNjMGNjZWY3M2Y3MTFkMTc0MzQxYmE4OTJiMmMxYmM5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTEyNDQsMTAgKzEyNDQsOSBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6
dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9y
PAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYkNocm9tZUNs
aWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0
KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiBpbmZvKSBjb25zdAogewot
ICAgIGF1dG8gYnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGRhdGEpOwotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdl
KGJ1ZmZlcikpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3Jl
QXBwSGlnaGxpZ2h0KGluZm8pKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
MDE0YmRjZjM5MzY1ZmJiN2FkNzA5M2VjYzg0YzA5ZGMyNzBkMGI0Zi4uODlkZGVjZmVmMzEyMGE0
ZTIyMTAyNmRkNGNlNTVjZjVmOTAyZmJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3M+KSBm
aW5hbDsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhp
Z2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9DUllQ
VE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDc2M2JjYWI4Njk2MmM3OWI2NzJmYzMzMzEyM2M3MTRlYzJjZTEzNjYuLmQ5Y2Q4ZTc3MTJiZmNl
ZjhiOTgwZGEyYjU1NzA3Yzk2MzRiMThiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MjUwLDcgKzcyNTAsNyBAQCB2b2lkIFdlYlBhZ2U6
OnJldm9rZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+
JiBzYW5kYm94RQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotYm9vbCBXZWJQYWdl
OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQgY3JlYXRlTmV3R3JvdXApCitib29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVO
ZXdHcm91cCkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCkBAIC03MjYz
LDE2ICs3MjYzLDE5IEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3Rl
ZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0CiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hs
aWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpKTsKLSAgICBk
b2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdl
KCk7CisgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5zdG9yZUFwcEhpZ2hsaWdo
dChTdGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpLCBjcmVhdGVOZXdH
cm91cCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBw
SGlnaGxpZ2h0cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6
OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4gbWVtb3J5SGFuZGxlcykKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwog
Ci0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0
cyhTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGlwY0hhbmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsKKyAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhp
Z2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1l
bW9yeS0+c2l6ZSgpKSk7CisgICAgfQogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlYjUyNDg5MDI4MTUwMjZhNDdiYTlkOGM1MGM3
YzhmY2I0NWUxOWUwLi5lNGZjOWNjYzA2MTA2YzRlMGY2ZjQzNzc1OTA4ODZkNDZhZTg5Y2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKLSNpbmNsdWRl
ICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgi
CkBAIC0yMDQsNiArMjAzLDcgQEAgY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZp
c2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CitlbnVt
IGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgRE9N
UGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERyYWdBcHBsaWNhdGlv
bkZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhf
dDsKQEAgLTEzOTYsOCArMTM5Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGln
aHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxp
Z2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsK
KyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZT4pOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhv
dXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOGNmY2M0OWNmNmYzODA3NmFmOWMzMjMxOTNhZDM3NTM0
OGE0NDhmMC4uODI3MzExNmU4MzMxNzgyNzIwYWJkMWVkNjU3YWFmMjIzMmU3YmYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC02MjQsOCArNjI0LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTZXRD
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZSkKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLSAgICBDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoZW51bTpib29s
IFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCi0gICAg
UmVzdG9yZUFwcEhpZ2hsaWdodHMoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEp
CisgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKKyAgICBSZXN0b3Jl
QXBwSGlnaGxpZ2h0cyhWZWN0b3I8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVt
b3J5SGFuZGxlcykKICNlbmRpZgogCiAgICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9s
bGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IDFhNjZjZTlkZmY4MWFiOTJlMmU3YThlYmY1YWM4MDlhOWJk
OWQyZDIuLjdjZmYxZGQyNTNlMmJkOGFmOGY5OGZlZGNkMGRkNzIzMmQzYTIxMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9y
ZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCmluZGV4IDg2YWZhMGU5ZDM3YWNmZTNlZDM0Y2MwNGMyZjAwNGYxZTVkZWNlZDUuLjcy
NWNiNTBmMDkwODJkZjYyOWNlOWM1N2QzN2U3ZDEyMDczOGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KQEAgLTc0NSw3ICs3NDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0ZVRpbWVDaG9vc2VyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGVUaW1lQ2hvb3NlcihEYXRlVGltZQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QK
K3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0CiB7CiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420415</attachid>
            <date>2021-02-15 19:04:11 -0800</date>
            <delta_ts>2021-02-15 22:54:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210215190410.patch</filename>
            <type>text/plain</type>
            <size>71783</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uN2Q1ZjFmMTYxNzhlNWJlM2UwZjg0YTExMGQxNjlm
MzUxMGU1N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBQaXBlIHRocm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxh
eSwgYW5kIHVwZGF0ZSB0byBhbGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBt
b3JlIGVhc2lseS4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmguCisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjEtMDItMTEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybmluZyBzUkdCIGZyb20g
Q0cgY29sb3Igc3BhY2UgZnVuY3Rpb25zIG9uIGZhaWx1cmUgaXMgdG9vIGVycm9yIHByb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM0Y2E5MDljN2IzYTYxNWI4YjU0NTUzYjcyNmQ5ZDZiYzAxODhkMTUuLmE0MDU4
OWExYmY3NTYxMTUwMjgyM2FmMGJlYmE3OGNmZGI1ZGIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgQXBwIEhpZ2hsaWdodHMgQVBJIHRvIG9wZXJhdGUgaW4gdGVy
bXMgb2YgYSBzaW5nbGUgc2VyaWFsaXplZCBoaWdobGlnaHQgYXQgYSB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFs
IGRhdGEgbmVlZGVkIGZvciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGlu
Zm9ybWF0aW9uIHRvIGJlIGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEluQ3VycmVudEdyb3Vw
V2l0aFJhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodElu
TmV3R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIxLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjT1NdIEVuYWJsZSBBdWRpbyBDYXB0dXJlIGluIEdQVVByb2Nlc3MgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3
ZDg0ZTc1ZTA2ODA0MDUuLmViMzk4NmQ0ZDM0ZjA2MTA2MGFiNWU4YWE3OWY3YmExNTY3ZDIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
MiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSBBcHAgSGlnaGxpZ2h0cyBBUEkgdG8gb3BlcmF0ZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSBz
ZXJpYWxpemVkIGhpZ2hsaWdodCBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorCiAy
MDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2
ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1
OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li5jYzRkZTczZTYzMzk2NDFhMzNhNjE3YmNhYWQ3
MTNiZTM4NzM3ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24v
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlv
bi5oCiAgICAgTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKICAgICBNb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRSZWdpc3Rlci5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc4MDBkMjBkMTFiODkzMWQwMDM5MTg0ZDEzNzQ1NTcwNTdmYjhlYmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1h
dGlvbi5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0cnVjdCBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbiB7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGln
aGxpZ2h0LT5kYXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworCisgICAg
ZW5jb2RlciA8PCB0ZXh0OworCisgICAgZW5jb2RlciA8PCBpc05ld0dyb3VwOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24+IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKworICAg
IE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlm
ICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNv
ZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3Ro
LnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gaGlnaGxpZ2h0
OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0LnNpemUoKSwgMSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxTdHJp
bmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRleHQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBp
c05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdHcm91cCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlzTmV3R3JvdXAgfX07Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0ZDU5YmIzNWRkYTE0YzZjZmRkOGI3
ZmRlNDQ4NjA1ZjQwYjk0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0
RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExpc3REYXRhLmgiCi0KLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IgotI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNs
dWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKLSNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgotI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLQotQXBwSGlnaGxpZ2h0TGlzdERhdGEgQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkYXRh
OwotICAgIGRlY29kZXIgPj4gZGF0YTsKLSAgICByZXR1cm4gZGF0YSA/ICpkYXRhIDogQXBwSGln
aGxpZ2h0TGlzdERhdGEge3sgfX07Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdo
dExpc3REYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTNiMjE0ZGI5Nzg5MjA5NDRjZGRiMWZiMGVh
MTY1ZDdkYTZjZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRh
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEg
ewotcHVibGljOgotICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7Ci0gICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Ci0gICAgICAgIFN0cmluZyB0
ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OwotCi0gICAgICAgIE5v
ZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1l
LCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmll
cihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICwgbm9kZU5hbWUoV1RG
TW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAg
ICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAg
ICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCi0gICAg
ICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCi0gICAgICAgICAgICAsIG5v
ZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCi0gICAgICAgICAgICAs
IHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllciAmJiBu
b2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0RGF0YSAm
JiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm9k
ZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIE5v
ZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKLQotICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKLSAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQot
ICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0gICAgfQotCi0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBhdGgmIHN0
YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgmIGVuZENv
bnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1fdGV4dCh0ZXh0KQotICAg
ICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCi0gICAgICAgICwgbV9zdGFy
dE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRDb250YWlu
ZXIpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KLSAgICBjb25z
dCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29udGFp
bmVyOyB9Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
T2Zmc2V0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwotCi1w
cml2YXRlOgotICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5l
cjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwotICAgIE5vZGVQYXRoIG1fZW5k
Q29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OwotfTsKLQotY2xhc3Mg
QXBwSGlnaGxpZ2h0TGlzdERhdGEgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBcHBIaWdobGlnaHRMaXN0RGF0YSBjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0KLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YShjb25z
dCBBcHBIaWdobGlnaHRMaXN0RGF0YSYpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0
RGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YShWZWN0b3I8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiYmIGFubm90YXRpb25SYW5nZXMpCi0gICAgICAgIDogbV9hbm5vdGF0
aW9uUmFuZ2VzKFdURk1vdmUoYW5ub3RhdGlvblJhbmdlcykpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiByYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBtX2Fubm90YXRpb25SYW5nZXM7IH0KLSAgICB2b2lkIHNldFJhbmdlcyhWZWN0b3I8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMgPSBXVEZN
b3ZlKHJhbmdlcyk7IH0KLSAgICB2b2lkIGFkZFJhbmdlcyhWZWN0b3I8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUocmFuZ2VzKSk7IH0KLQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvblJh
bmdlcy5zaXplKCk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Fubm90
YXRpb25SYW5nZXMuaXNFbXB0eSgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkZWNvZGUoRGVjb2RlciYpOwot
Ci1wcml2YXRlOgotCi0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV9hbm5vdGF0
aW9uUmFuZ2VzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGln
aHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Ci0gICAgZW5jb2RlciA8PCBub2Rl
TmFtZTsKLSAgICBlbmNvZGVyIDw8IHRleHREYXRhOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKLSAgICBkZWNvZGVyID4+IGlk
ZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKLSAgICBkZWNvZGVyID4+IG5v
ZGVOYW1lOwotICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwotICAgIGRlY29kZXIgPj4gdGV4dERh
dGE7Ci0gICAgaWYgKCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Ci0gICAgZGVjb2RlciA+PiBwYXRoSW5k
ZXg7Ci0gICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5vZGVOYW1lKSwg
V1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnBhdGhJbmRleCkgfX07
Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fdGV4
dDsKLSAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Ci0gICAgZW5jb2RlciA8PCBtX2VuZENv
bnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2VuZE9mZnNl
dCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
LXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7Ci0gICAgZGVjb2RlciA+PiB0ZXh0OwotICAg
IGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKLSAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVy
OwotICAgIGlmICghc3RhcnRDb250YWluZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBz
dGFydE9mZnNldDsKLSAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKLSAgICBkZWNv
ZGVyID4+IGVuZENvbnRhaW5lcjsKLSAgICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRPZmZzZXQ7Ci0g
ICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7Ci0gICAgaWYgKCFlbmRPZmZzZXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLQotICAgIHJldHVybiB7ewotICAgICAgICBXVEZNb3ZlKCp0
ZXh0KSwKLSAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAotICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKLSAgICAgICAgV1RGTW92ZSgqZW5kQ29udGFp
bmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRPZmZzZXQpLAotICAgIH19
OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodExpc3REYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fYW5u
b3RhdGlvblJhbmdlczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0TGlzdERhdGE+IEFwcEhpZ2hsaWdodExpc3REYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPj4g
YW5ub3RhdGlvblJhbmdlczsKLSAgICBkZWNvZGVyID4+IGFubm90YXRpb25SYW5nZXM7Ci0gICAg
aWYgKCFhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmFubm90YXRpb25SYW5nZXMpIH19OwotfQotCi0jZW5kaWYK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTc1MDZmNjc3NTk4ODliNDJlMWUwYWJlMTFmODRjMTNhZDAyNWUyYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKworI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5j
bHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgorI2luY2x1ZGUg
IlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8gZGVjb2RlciA9
IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBk
YXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworUmVmPFNo
YXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIg
PDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAg
ZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHREYXRhOworICAgIGVuY29k
ZXIgPDwgcGF0aEluZGV4OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaWdobGlnaHRSYW5n
ZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7CisgICAgZGVjb2RlciA+PiBub2RlTmFtZTsK
KyAgICBpZiAoIW5vZGVOYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAgICBkZWNvZGVyID4+IHRleHREYXRhOworICAg
IGlmICghdGV4dERhdGEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDx1aW50NjRfdD4gcGF0aEluZGV4OworICAgIGRlY29kZXIgPj4gcGF0aEluZGV4OworICAg
IGlmICghcGF0aEluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2RlTmFtZSksIFdURk1vdmUo
KnRleHREYXRhKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpwYXRoSW5kZXgpIH19OworfQorCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3RleHQ7CisgICAg
ZW5jb2RlciA8PCBtX3N0YXJ0Q29udGFpbmVyOworICAgIGVuY29kZXIgPDwgbV9zdGFydE9mZnNl
dDsKKyAgICBlbmNvZGVyIDw8IG1fZW5kQ29udGFpbmVyOworICAgIGVuY29kZXIgPDwgbV9lbmRP
ZmZzZXQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CisgICAgZGVjb2RlciA+PiB0ZXh0Owor
ICAgIGlmICghdGV4dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKKyAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFp
bmVyOworICAgIGlmICghc3RhcnRDb250YWluZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7CisgICAgZGVjb2RlciA+
PiBzdGFydE9mZnNldDsKKyAgICBpZiAoIXN0YXJ0T2Zmc2V0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKKyAgICBk
ZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKKyAgICBpZiAoIWVuZENvbnRhaW5lcikKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRPZmZzZXQ7
CisgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CisgICAgaWYgKCFlbmRPZmZzZXQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKworICAgIHJldHVybiB7eworICAgICAgICBXVEZNb3Zl
KCp0ZXh0KSwKKyAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAorICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKKyAgICAgICAgV1RGTW92ZSgqZW5kQ29u
dGFpbmVyKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRPZmZzZXQpLAorICAg
IH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OWY4Y2Y3NDU3NjYyNmZiZjg2NTAxYjkxYTVmZDgyYTBjYWRiZTUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBBcHBIaWdobGlnaHRSYW5n
ZURhdGEgeworV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CisgICAgICAg
IFN0cmluZyBpZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CisgICAgICAgIFN0
cmluZyB0ZXh0RGF0YTsKKyAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OworCisgICAg
ICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcm
JiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogaWRl
bnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICwgbm9kZU5h
bWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkK
KyAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgp
CisgICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCisgICAgICAgICAg
ICAsIG5vZGVOYW1lKG5hbWUpCisgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCisgICAgICAg
ICAgICAsIHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmll
ciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0
RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAg
ICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHVz
aW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKKworICAgIEFwcEhpZ2hs
aWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7Cisg
ICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OworICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICAgICAgLCBtX3N0YXJ0Q29u
dGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQorICAgICAgICAsIG1fc3RhcnRPZmZzZXQo
c3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWlu
ZXIpKQorICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7CisgICAgfQorCisg
ICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBh
dGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgm
IGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1fdGV4dCh0ZXh0
KQorICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCisgICAgICAgICwg
bV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRD
b250YWluZXIpCisgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAg
ICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
Q29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0T2Zmc2V0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYp
OworCisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBTdHJpbmcgbV90ZXh0OworICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7
CisgICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICBOb2RlUGF0aCBtX2VuZENv
bnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKK307CisKKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGMzYjhiYjc3YzBj
NGY0ZTVjOTk4NzE3OTIzOTJlM2RkZDhkMTkxODYuLmRlNDFkMDkxNDJiMjMyZTRhNzc1YzFkMDc1
MTU5YjQzODVlZmQyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIgogCi0jaW5j
bHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbi5oIgorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgiCkBAIC00MSwxMCArNDIsMTMgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKIAogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKIAorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0ZXh0UHJldmlld0xlbmd0aCA9IDEw
MDsKKwogc3RhdGljIFJlZlB0cjxOb2RlPiBmaW5kTm9kZUJ5UGF0aEluZGV4KGNvbnN0IE5vZGUm
IHBhcmVudCwgdW5zaWduZWQgcGF0aEluZGV4LCBjb25zdCBTdHJpbmcmIG5vZGVOYW1lKQogewog
ICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4ocGFyZW50KSkKQEAgLTE5Niw4ICsyMDAsMTAgQEAg
c3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGggbWFrZU5vZGVQYXRoKFJlZlB0
cjxOb2RlPiYmIG5vZGUpCiAKIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiByYW5nZSkKIHsKKyAgICBhdXRv
IHRleHQgPSBwbGFpblRleHQocmFuZ2UpOworICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZpZXdM
ZW5ndGgpOwogICAgIHJldHVybiB7Ci0gICAgICAgIHBsYWluVGV4dChyYW5nZSksCisgICAgICAg
IHRleHQsCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAg
ICAgICAgIHJhbmdlLnN0YXJ0T2Zmc2V0KCksCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uu
ZW5kQ29udGFpbmVyKCkpLApAQCAtMjEwLDQ4ICsyMTYsMzUgQEAgQXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQg
QXBwSGlnaGxpZ2h0U3RvcmFnZTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKQordm9pZCBB
cHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgcmFuZ2Us
IENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXApCiB7Ci0gICAgVmVjdG9yPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVBcHBIaWdo
bGlnaHRSYW5nZURhdGEocmFuZ2UpOworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKIAotICAg
IGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghZGF0YS50ZXh0KCku
aXNFbXB0eSgpKQorICAgICAgICB0ZXh0ID0gZGF0YS50ZXh0KCk7CiAKLSAgICBpZiAoIW1fZG9j
dW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8gYXBwSGlnaGxp
Z2h0UmVnaXN0ZXIgPSBtX2RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcklmRXhpc3RzKCkp
IHsKLSAgICAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBhcHBIaWdobGlnaHRSZWdpc3Rlci0+
bWFwKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZh
bHVlLT5yYW5nZXNEYXRhKCkpCi0gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY3JlYXRlQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKHJhbmdlRGF0YS0+cmFuZ2UpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YSBsaXN0RGF0YSB7IFdURk1vdmUoZGF0YSkgfTsKKyAg
ICBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiBpbmZvID0ge2RhdGEudG9TaGFyZWRCdWZmZXIoKSwg
dGV4dCwgaXNOZXdHcm91cH07CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGxpc3REYXRhLnRvU2hhcmVkQnVmZmVyKCkpOworICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiB9
CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXV0byBhcHBI
aWdobGlnaHRMaXN0RGF0YSA9IEFwcEhpZ2hsaWdodExpc3REYXRhOjpjcmVhdGUoYnVmZmVyKTsK
LSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiB1bnJlc3RvcmVkUmFuZ2VzOwotICAg
IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlc3RvcmVkUmFuZ2VzOworICAgIGF1dG8g
c3Ryb25nRG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ry
b25nRG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAo
IWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9y
IChhdXRvJiBhcHBIaWdobGlnaHRMaXN0RGF0YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdl
cygpKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERh
dGEsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAg
IHVucmVzdG9yZWRSYW5nZXMuYXBwZW5kKGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ryb25nRG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVk
UmFuZ2VzLmFwcGVuZChhcHBIaWdobGlnaHRMaXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3Vt
ZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6
Y3JlYXRlKCpyYW5nZSkpOwotICAgIH0KKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0
UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVh
ZDY0MDI0MjljZWRjNGJlOTI2ZjZjZGEwOWU0NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1
OWYzOTA5ODU2MTY2YTc3NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBB
cHBIaWdobGlnaHRMaXN0RGF0YTsKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVt
IGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGln
aGxpZ2h0U3RvcmFnZSA6IFJlZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2Uo
RG9jdW1lbnQmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRz
KFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBI
aWdobGlnaHQoU3RhdGljUmFuZ2UmICwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdH
cm91cCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxT
aGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4
MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRlOGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC02NCw3ICs2NCw3IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRMaXN0RGF0YS5jcHAKK01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1
bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hp
Z2hsaWdodC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyZTNiYTJkOGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBi
Li4yYzdlN2JiZmQzZDViMjVmZWZkMDI0ODIxNjZlM2RkODQ2OTI1MDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYg
KzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQy
NTA3MDcyNTgyOUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNF
MDA0NkQ0MDEgLyogSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQy
NTc1QThBNTAwNDZENDAxIC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyog
SGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NTc3NUU1
MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDU3NzVFNDIwNDcyRjcz
MDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NjNDRjY4MjIxMkZBNjgwMDFB
ODU3NyAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERh
dGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2
NjY2RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25S
YW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTIzNiw3ICsxMjM3LDcgQEAKIAkJNDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8qIFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25z
ZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRGQjhB
QzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFGMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5h
bWVzLmggKi87IH07Ci0JCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRM
aXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi87IH07
CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVBMjU3
OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAqLzsgfTsKIAkJNDRDOTkx
ODYwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAg
LyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRDOTkxOUYwRjNEMjEwRTAwNTg2Njcw
IC8qIFRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRF
MzQ5RjkyNDZGNEUxOTAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTM0OUY3MjQ2RjREQzcwMDY4
NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxMTcsNiArODExOCw3IEBACiAJCTQ0MzdDNEE5MjRF
MkFFNUYwMDA5NTEyOCAvKiBMYXp5TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NEQ0RTIxMEY3
MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTc3NUU5MjA0NzMwM0IwMDhEQ0U1RCAvKiBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQ2REM2NDYyNEEyOUQ5QjAwNjFGMzkwIC8qIFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODEzNiw4ICs4MTM4LDggQEAKIAkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVV
UkxSZXNwb25zZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3Jl
VVJMUmVzcG9uc2VJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIx
MkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL01hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxO
YW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNYXRoTUxOYW1lcy5oOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUgLyogQXBw
SGlnaGxpZ2h0TGlzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQg
LyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlbGVjdGlvblJhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIz
OEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdGlvblJhbmdlRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QkQyQjM2MjUyNzc5NzgwMDU1RDk1QSAvKiBHbG9i
YWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2ZW50SGFuZGxlcnMr
U2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTgzNiw4ICsx
OTgzOCw5IEBACiAJCTQ0RTg4RTQ3MjM2OERGMEYwMDlCNDg0NyAvKiBoaWdobGlnaHQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4MjU3OUNG
RkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRBRTA0NUEy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8sCisJCQkJNDQ1MjEw
REQyNUQ2MUVGRjAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8sCisJCQkJ
NDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8s
CisJCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
ICovLAogCQkJCTQ0MjUwNzA2MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdl
LmNwcCAqLywKIAkJCQk0NDI1MDcwNzI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oICovLAogCQkJCTQ0RTg4RTU0MjM2QTY2QTEwMDlCNDg0NyAvKiBIaWdobGlnaHQuY3Bw
ICovLApAQCAtMzExNTgsNyArMzExNjEsOCBAQAogCQkJCTU3MTUyQjVBMjFDQjNFODgwMDBDMzdD
QSAvKiBBcGR1Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxNTJCNUMyMUNDMTkwMjAw
MEMzN0NBIC8qIEFwZHVSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcwOTlF
NjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ0NTIxMERGMjVENjFGMDAwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQyNTA3MDkyNTgy
OUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNlbEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VDNDMyMDA1OEE0NzcgLyogQXBwbGVQYXlDb250YWN0
RmllbGQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCAwNGJmOGE1MjMxZDdkNzY4NTYwMjJjNGI3ODk0Y2FiYWU2ZDRlZmI4Li5mYzhhOTRh
MzM3MjA2NWVmMDYwNzc5NWIxN2NiMTY4ZTc1MTY0OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUg
IkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIK
QEAgLTUwMiw3ICs1MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0
eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVUaQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAor
dm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxp
Z2h0SW5mb3JtYXRpb24mKSBjb25zdAogewogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKaW5kZXggYTc4OGI0NWFhZDE1ZjM0MGYyZWQwOTlkZDRiY2NmNWE1ZWM5M2Mz
ZS4uMTRjNGE5Mjc3NTFiMDZiNjg0ODk0NWQwNmNhMjMyODAyMTM1YjViOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEVtcHR5Q2hy
b21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBI
aWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNl
bmRpZgogCiAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGQzMDY5Y2VlMTM3OGVmMGQyNjUwMDRjMjc4MDVj
ZjdmMWM1YmUzODMuLmE1OWFhNDE2Mzg3MjhjZGMzNGU2NTMxZTIyZTMxNGU1NTNlOWIwNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDaHJvbWUuaCIKIAorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0
aW9uLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8u
aCIKICNpbmNsdWRlICJDb250YWN0c1JlcXVlc3REYXRhLmgiCkBAIC01MTIsOSArNTEzLDkgQEAg
dm9pZCBDaHJvbWU6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZp
ZXdwb3J0QXJndW1lbnRzJiBhcmd1bWUKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
LXZvaWQgQ2hyb21lOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEpIGNvbnN0Cit2b2lkIENocm9tZTo6c3RvcmVBcHBIaWdobGlnaHQo
Y29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mIGluZm8pIGNvbnN0CiB7Ci0gICAgbV9jbGll
bnQudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoV1RGTW92ZShkYXRhKSk7CisgICAgbV9jbGll
bnQuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
aW5kZXggZjgxNjc4NjIyNDlhZmVhNWQxZGFjZTg1ZDlkMWY3OTAyMGE4MWM5Ny4uZmI2ZjFjNzk3
MGU2MGZmZmEyMzg2ZDVlMGM1YTViMjVkMDEzMGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01
Nyw2ICs1Nyw3IEBAIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFBvcHVwT3BlbmluZ09i
c2VydmVyOwogY2xhc3MgU2VhcmNoUG9wdXBNZW51OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb247CiBzdHJ1Y3QgQ29udGFjdEluZm87CiBzdHJ1Y3QgQ29udGFjdHNSZXF1ZXN0RGF0
YTsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwpAQCAtMTY1LDcgKzE2Niw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQg
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
Y29uc3Q7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbiYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYs
IEZpbGVDaG9vc2VyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjZjJiM2Yw
ZDlhYmFkMmU3MmVjYWRjN2UxNTNhOWIxNTE2MzMxYzRkLi41MWIwOTdiNjk4MzQyZmVhNzk2ZTU0
YmM5MjllOWQzZDdjM2FlZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTIy
LDYgKzIyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgor
I2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlF
dmVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJbmZvLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCkBA
IC0zMDQsNyArMzA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBj
b25zdCA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUm
LCBGaWxlQ2hvb3NlciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IGEzNjE3N2VlMGUyYmViYWRkYjE5MmQzYjM3YjU0YzNiMTUzYjFiOWEuLjNiYzQw
MjlmMzIxYTQwZDBhZDJiMWE4Y2Q4N2Q2MWQwYTc3NDNhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU2LDYgKzY1Niw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnU3RyaW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+
J10sCiAgICAgICAgICdQQUw6OlNlc3Npb25JRCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlF
dmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQn
OiBbJzxXZWJDb3JlL0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlJzogWyc8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJzogWyc8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRl
bnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTlkYjRiNjhjNDVkOGJmMGU2OTAyMzgzZTBmOGFhMjc4Mzc2
OGE2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJv
b2wgeyBObywgWWVzIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzU1YmRiNTQ5YTdmN2M1
NDdlZTA2MTNiYTA3YzA5NTkyNzI1N2RlYS4uNGJlZjBiMDdkNGEwMGEyNmZiOGQ2MjBhMDY4NjI2
N2M3YTc3ZTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xMTksNiArMTE5LDcgQEAKICNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRp
b25Ub2tlbi5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BcHBI
aWdobGlnaHRJbmZvcm1hdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5n
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29s
b3JTZXJpYWxpemF0aW9uLmg+CkBAIC0xNDIzLDE0ICsxNDI0LDE0IEBAIC0gKHZvaWQpX3NldEFw
cEhpZ2hsaWdodERlbGVnYXRlOihpZCA8X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+KWRlbGVnYXRl
CiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2b2lkKV91cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZTooTlNEYXRhICopZGF0YQorLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6
KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiloaWdobGlnaHRJbmZvcm1h
dGlvbgogewogICAgIGF1dG8gZGVsZWdhdGUgPSBzZWxmLl9hcHBIaWdobGlnaHREZWxlZ2F0ZTsK
ICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2U6KV0pCi0gICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHVwZGF0ZUFwcEhp
Z2hsaWdodHNTdG9yYWdlOmRhdGFdOworICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1
cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpoaWdobGlnaHRJbmZvcm1hdGlvbi5oaWdobGlnaHQt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCkBAIC0yMDM1LDEyICsyMDM2LDIx
IEBAIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKICAgICBbc2VsZiByZXN1bWVBbGxN
ZWRpYVBsYXliYWNrOm5pbF07CiB9CiAKLS0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihO
U0RhdGEgKilkYXRhCistICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0Rh
dGEgKj4gKiloaWdobGlnaHRzCiB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIF9w
YWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKSk7CisgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CisK
KyAgICBmb3IgKE5TRGF0YSAqaGlnaGxpZ2h0IGluIGhpZ2hsaWdodHMpIHsKKyAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoaGlnaGxpZ2h0
Lmxlbmd0aCk7CisgICAgICAgIGlmIChzaGFyZWRNZW1vcnkpIHsKKyAgICAgICAgICAgIFtoaWdo
bGlnaHQgZ2V0Qnl0ZXM6c2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5sZW5n
dGhdOworICAgICAgICAgICAgYnVmZmVycy5hcHBlbmQoKnNoYXJlZE1lbW9yeSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzKGJ1ZmZlcnMpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodHMp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggNDA5ZDhhZWQzMzMwMmVkZjlkMWUzZDhlMzk0
MjIzYWEzZWRiOWQ3NC4uNjg3N2M2MWE3N2M2ZjgxNzExMDQzZjY2NTM1NGU3M2NkYjQ4NmQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0
IEV4Y2VwdGlvbkRldGFpbHM7CiBlbnVtIGNsYXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlIDog
dWludDhfdDsKIH0KQEAgLTI2NSw3ICsyNjYsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLS0gKHZvaWQpX3VwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOihOU0RhdGEgKilkYXRhOworLSAodm9pZClfc3RvcmVBcHBI
aWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJilpbmZvOwog
I2VuZGlmCiAKIC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJP
T0wpd2l0aG91dFdhaXRpbmdGb3JQYWludGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVz
aXplOihCT09MKXdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5
MjYyMzhhZWEwYTE0NzYxMThlNWE2OTA4NTQ3YWQ3OWMzZjQ1NGQxLi5lNDVjYjFiYmJiZWJhMGIx
YTc5NTU2YjhkNDMxMGM3NzgyNTU1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBm
b3IgdGhpcyBwcm9wZXJ0eS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEhhc0Js
YW5rT3ZlcmxheTopIEJPT0wgX2hhc0JsYW5rT3ZlcmxheSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
d2Vhaywgc2V0dGVyPV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGln
aHREZWxlZ2F0ZT4gX2FwcEhpZ2hsaWdodERlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxp
Z2h0czooTlNEYXRhICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8
TlNEYXRhICo+ICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiAvKiEgQGFic3RyYWN0IFRoZSB0aGVtZSBjb2xvciBvZiB0aGUgYWN0
aXZlIHBhZ2UuCiAgQGRpc2N1c3Npb24gVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIG1vc3QgcmVj
ZW50bHkgY3JlYXRlZCBvciBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGUzNmU4Y2M0ZTVmNzA3OGEyNDQx
MzVjZTJlNmZiN2RhOTBjZGUyMTcuLjM5ODgwNGE3NmNjMjM1NjY3MTU5NzRkMmY4ZWU0ZmIzZWRm
MWIzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGll
bnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgQXR0YWNobWVudDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworCitz
dHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNzQsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICpwbGF0Zm9y
bURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdo
dHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgZmluYWw7CisgICAg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1h
dGlvbiYpIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCmluZGV4IDMzYmJlOTI4
NWE4OGY1MmU5MmE0NmQzZDAzODAyYjBlZjY5Zjk1NTguLjM1MzI2NjdkZDIwY2IzMzE3YzIyYzhl
OTVlNmM4OTI1MDc1ZjAzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAtMTIwLDEwICsxMjAsOSBAQCBOU1NldCAq
UGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29u
c3QKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBQYWdlQ2xpZW50
SW1wbENvY29hOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxp
Z2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uICZhcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbikKIHsKLSAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOwot
ICAgIFttX3dlYlZpZXcgX3VwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOm5zRGF0YS5nZXQoKV07
CisgICAgW21fd2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6YXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b25dOwogfQogI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBlMTVm
MTBjYTIwMTU5MjBhMTQyZTZkZWFjZDYyMjVkNDY5ZWM4NTA4Li5lZGYwNGE0MDQ5NzQwZDAyYjRi
ZDA0YzkxNDc2NjNmNDVhM2YzMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjphZGRBY3Rpdml0eVN0YXRlVXBkYXRlQ29tcGxldGlvbkhhbmRsZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdl
YlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0
ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBjcmVhdGVOZXdHcm91cCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTU0MiwxNCArNTQyLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoY3JlYXRlTmV3R3JvdXApKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFNoYXJlZE1lbW9y
eT4+JiBoaWdobGlnaHRzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UgeyBkYXRhIH07CisgICAgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1v
cnlIYW5kbGVzOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hs
aWdodHMoZGF0YVJlZmVyZW5jZSkpOworICAgIGZvciAoYXV0byBoaWdobGlnaHQgOiBoaWdobGln
aHRzKSB7CisgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaGln
aGxpZ2h0LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKKworICAgICAgICBtZW1vcnlIYW5kbGVzLmFwcGVuZChTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgaGlnaGxpZ2h0LT5zaXplKCkgfSk7CisgICAgfQor
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoV1RGTW92
ZShtZW1vcnlIYW5kbGVzKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA5ODhiOWZhOGUwNDRkZWRjMGU0ZjBmMDk2MjliZWM2ODFkMDA0NDg0Li41
OWIyMmNhM2FmZmU2OTY4YWNkOTA2NmY5YTViODViYWQyMWQ2NmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUgOiB1aW50OF90OwogZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9y
V2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlv
bjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRh
Owogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKQEAgLTE1MSw2ICsxNTIsNyBAQCBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb247CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKQEAgLTU3NSw3ICs1NzcsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdl
YkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYxYzQ4MzU1YmVhOTdkNzAuLmY1NzdjM2ViYWRjZTlj
ZGNlZmI2MmY5YTRmMWIyZjg4NjdlNjhkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTQzLDYgKzE0Myw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcEhp
Z2hsaWdodEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KQEAgLTY2ODUsMTEgKzY2ODYs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdl
YkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgfQogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdo
bGlnaHRUb05ld0dyb3VwKSB7Ci0gICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKKyAgICAgICAgY3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0OjpZZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvQ3VycmVudEdyb3VwKSB7Ci0gICAg
ICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodDo6Tm8pOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2Uo
V2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgpAQCAtOTgzOSwxMSArOTg0MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0
IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiBpbmZvKQogewotICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLCBkYXRhLmJ1ZmZlcigpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgIWluZm8uaGlnaGxpZ2h0LT5pc0VtcHR5KCkpOworCisgICAgcGFnZUNsaWVudCgpLnN0
b3JlQXBwSGlnaGxpZ2h0KGluZm8pOwogCi0gICAgcGFnZUNsaWVudCgpLnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4YjhlMmM4MWVjOTkw
NmVlNDQ4YjE3MTcuLjk3ZTIwNDVlYzI1ODg3NTRlODhiMDA5OGFlM2FmZDIzYWRhNDRiZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCi0jaW5j
bHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcgQEAgY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNz
IFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7
CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xh
c3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwogZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0
IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBAQCBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJv
b2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb247CiBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdDsKIHN0cnVjdCBBdHRyaWJ1
dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CkBAIC0zNzQsNyAr
Mzc1LDYgQEAgc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFVzZXJNZXNzYWdlOwogCi1lbnVtIGNsYXNzIENyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2Fj
eVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBi
b29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKQEAgLTE4MjYsOSArMTgyNiw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN5bmNJZk1vY2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIAog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7Ci0gICAgdm9pZCB1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKLSAg
ICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHJl
c3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
PiYgaGlnaGxpZ2h0cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
NDkxOWJjOTg4ZTljNWZjYTcyZmZjOGMyMWEzZmMxNDMwYjI4YzA1YS4uNjQ3YmFjMDM5Yjg4ODAw
NjUzZWQ5OGUyNGI1NjRlY2JiMDQ4YzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTM1LDcgKzUzNSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
LSAgICBVcGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0
YSkKKyAgICBTdG9yZUFwcEhpZ2hsaWdodChzdHJ1Y3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24gaW5mbykKICNlbmRpZgogCiAgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJM
IHVybCkgLT4gKFN0cmluZyByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBj
ZWM4N2M1OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVhNGI4Li4yMTc3NzQ2ZWU1ZDkxYjI4
ODc5ZDhkMjdmMGE3MTI4Y2FhMjE1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMwLDcgKzMwLDYg
QEAKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXIuaCIKLSNpbXBvcnQgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAj
aW1wb3J0ICJEb2N1bWVudEVkaXRpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlci5oIgogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKQEAgLTg5NzUsMTIg
Kzg5NzQsMTIgQEAgLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzCiAKIC0gKHZvaWQpY3Jl
YXRlSGlnaGxpZ2h0SW5DdXJyZW50R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9w
YWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodDo6Tm8pOworICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKIH0K
IAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOihpZClzZW5kZXIK
IHsKLSAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYktpdDo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dDo6WWVzKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxZTZlYjA4YTljZGIzZDAwMDA2MDEzZGI1ODY1MjkyYWVj
ZTUyNmNhLi4wYjNlNDg3NDljZTk3YWQwNTFhOWFjNzdiY2I2NTg5ZjVhZTI3MzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTIw
LDEyICsxMTkyMCw2IEBACiAJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
QUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjVBMTI1Q0Y1NzQwMDA3QUYzMTIgLyogUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUMy
NUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUQyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTFENDc2NTg2MjVDQ0E0MTYwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTMyNUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTk0
MjVDQ0NFOTMwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1
MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGMwOWEy
N2I3ZTdmNTNmYjQ0MjQ0NDcxYTZkNmI3NGZjZTA1ZDQzYTAuLjQ0OTg3NGEzYzBjY2VmNzNmNzEx
ZDE3NDM0MWJhODkyYjJjMWJjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMjQ0LDEw
ICsxMjQ0LDkgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdo
dHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29uc3QKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IElQQzo6
U2hhcmVkQnVmZmVyQ29weShkYXRhKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpVcGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShidWZmZXIpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9yZUFwcEhpZ2hsaWdodChpbmZvKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDAxNGJkY2YzOTM2NWZiYjdhZDcwOTNl
Y2M4NGMwOWRjMjcwZDBiNGYuLjg5ZGRlY2ZlZjMxMjBhNGUyMjEwMjZkZDRjZTU1Y2Y1ZjkwMmZi
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM0Nyw3ICszNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25T
ZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVBQ
X0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgZmlu
YWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3NjNiY2FiODY5NjJjNzliNjcyZmMz
MzMxMjNjNzE0ZWMyY2UxMzY2Li4xNGQ1M2Q0ZjQ0NWFiNTczM2U0MGExYmNmMDBiNzI2ZDczNDli
MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNzI1MCw3ICs3MjUwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXZva2VTYW5kYm94RXh0ZW5zaW9u
cyhWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgc2FuZGJveEUKIH0KIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLWJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQor
Ym9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCiB7CiAgICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIApAQCAtNzI2MywxNiArNzI2MywyMSBAQCBib29sIFdl
YlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBjcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkb2N1bWVudC0+
YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0
ZShzZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSk7Ci0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0
b3JhZ2UoKS51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSgpOworICAgIGRvY3VtZW50LT5hcHBI
aWdobGlnaHRTdG9yYWdlKCkuc3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZShz
ZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSwgY3JlYXRlTmV3R3JvdXApOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhj
b25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5SGFuZGxlcykKIHsK
ICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCi0gICAgZG9jdW1lbnQtPmFwcEhp
Z2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hh
bmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBw
SGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihz
aGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSk7CisgICAgfQogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBlYjUyNDg5MDI4MTUwMjZhNDdiYTlkOGM1MGM3YzhmY2I0NWUxOWUwLi40NmMwM2FmNjc2MDU5
ODQ1YWM1MzU5ZjY1MWVkMzRjNTE1MzgwYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0lu
Y2x1ZGVzQ2hpbGRGcmFtZXMuaCIKLSNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCkBAIC0yMDQsNiArMjAzLDcgQEAgY2xhc3Mg
VGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50
aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIERyYWdBcHBsaWNhdGlvbkZsYWdzIDogdWludDhfdDsKIGVudW0gY2xh
c3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhfdDsKQEAgLTEzOTYsOCArMTM5Niw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIGJvb2wgY3Jl
YXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
KTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOworICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGln
aHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVl
bEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4
Y2ZjYzQ5Y2Y2ZjM4MDc2YWY5YzMyMzE5M2FkMzc1MzQ4YTQ0OGYwLi44MjczMTE2ZTgzMzE3ODI3
MjBhYmQxZWQ2NTdhYWYyMjMyZTdiZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTYyNCw4ICs2MjQsOCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJv
b2wgY2FuVXNlKQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIENyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBDcmVhdGVBcHBIaWdobGlnaHRJ
blNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0IGNyZWF0ZU5ld0dyb3VwKQorICAgIFJlc3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAKICAg
ICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKFdlYktpdDo6V2ViV2hlZWxFdmVu
dCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE2
NmNlOWRmZjgxYWI5MmUyZTdhOGViZjVhYzgwOWE5YmQ5ZDJkMi4uN2NmZjFkZDI1M2UyYmQ4YWY4
Zjk4ZmVkY2QwZGQ3MjMyZDNhMjEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1Miw3ICsxNTIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAg
dm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggODZhZmEwZTlkMzdh
Y2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uNzI1Y2I1MGYwOTA4MmRmNjI5Y2U5YzU3ZDM3
ZTdkMTIwNzM4ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0
ZVRpbWVDaG9vc2VyKERhdGVUaW1lCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0
b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikg
Y29uc3QKIHsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420424</attachid>
            <date>2021-02-15 22:54:59 -0800</date>
            <delta_ts>2021-02-16 09:43:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210215225458.patch</filename>
            <type>text/plain</type>
            <size>71669</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uN2Q1ZjFmMTYxNzhlNWJlM2UwZjg0YTExMGQxNjlm
MzUxMGU1N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBQaXBlIHRocm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxh
eSwgYW5kIHVwZGF0ZSB0byBhbGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBt
b3JlIGVhc2lseS4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmguCisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjEtMDItMTEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybmluZyBzUkdCIGZyb20g
Q0cgY29sb3Igc3BhY2UgZnVuY3Rpb25zIG9uIGZhaWx1cmUgaXMgdG9vIGVycm9yIHByb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM0Y2E5MDljN2IzYTYxNWI4YjU0NTUzYjcyNmQ5ZDZiYzAxODhkMTUuLmE0MDU4
OWExYmY3NTYxMTUwMjgyM2FmMGJlYmE3OGNmZGI1ZGIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgQXBwIEhpZ2hsaWdodHMgQVBJIHRvIG9wZXJhdGUgaW4gdGVy
bXMgb2YgYSBzaW5nbGUgc2VyaWFsaXplZCBoaWdobGlnaHQgYXQgYSB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFs
IGRhdGEgbmVlZGVkIGZvciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGlu
Zm9ybWF0aW9uIHRvIGJlIGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEluQ3VycmVudEdyb3Vw
V2l0aFJhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodElu
TmV3R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIxLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjT1NdIEVuYWJsZSBBdWRpbyBDYXB0dXJlIGluIEdQVVByb2Nlc3MgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3
ZDg0ZTc1ZTA2ODA0MDUuLmViMzk4NmQ0ZDM0ZjA2MTA2MGFiNWU4YWE3OWY3YmExNTY3ZDIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
MiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSBBcHAgSGlnaGxpZ2h0cyBBUEkgdG8gb3BlcmF0ZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSBz
ZXJpYWxpemVkIGhpZ2hsaWdodCBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorCiAy
MDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2
ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1
OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li5jYzRkZTczZTYzMzk2NDFhMzNhNjE3YmNhYWQ3
MTNiZTM4NzM3ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24v
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlv
bi5oCiAgICAgTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKICAgICBNb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRSZWdpc3Rlci5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc4MDBkMjBkMTFiODkzMWQwMDM5MTg0ZDEzNzQ1NTcwNTdmYjhlYmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1h
dGlvbi5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0cnVjdCBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbiB7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGln
aGxpZ2h0LT5kYXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworCisgICAg
ZW5jb2RlciA8PCB0ZXh0OworCisgICAgZW5jb2RlciA8PCBpc05ld0dyb3VwOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24+IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKworICAg
IE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlm
ICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNv
ZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3Ro
LnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gaGlnaGxpZ2h0
OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0LnNpemUoKSwgMSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxTdHJp
bmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRleHQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBp
c05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdHcm91cCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlzTmV3R3JvdXAgfX07Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0ZDU5YmIzNWRkYTE0YzZjZmRkOGI3
ZmRlNDQ4NjA1ZjQwYjk0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0
RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExpc3REYXRhLmgiCi0KLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IgotI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNs
dWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKLSNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgotI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLQotQXBwSGlnaGxpZ2h0TGlzdERhdGEgQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkYXRh
OwotICAgIGRlY29kZXIgPj4gZGF0YTsKLSAgICByZXR1cm4gZGF0YSA/ICpkYXRhIDogQXBwSGln
aGxpZ2h0TGlzdERhdGEge3sgfX07Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdo
dExpc3REYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTNiMjE0ZGI5Nzg5MjA5NDRjZGRiMWZiMGVh
MTY1ZDdkYTZjZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRh
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEg
ewotcHVibGljOgotICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7Ci0gICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Ci0gICAgICAgIFN0cmluZyB0
ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OwotCi0gICAgICAgIE5v
ZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1l
LCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmll
cihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICwgbm9kZU5hbWUoV1RG
TW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAg
ICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAg
ICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCi0gICAg
ICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCi0gICAgICAgICAgICAsIG5v
ZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCi0gICAgICAgICAgICAs
IHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllciAmJiBu
b2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0RGF0YSAm
JiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm9k
ZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIE5v
ZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKLQotICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKLSAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQot
ICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0gICAgfQotCi0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBhdGgmIHN0
YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgmIGVuZENv
bnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1fdGV4dCh0ZXh0KQotICAg
ICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCi0gICAgICAgICwgbV9zdGFy
dE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRDb250YWlu
ZXIpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KLSAgICBjb25z
dCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29udGFp
bmVyOyB9Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
T2Zmc2V0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwotCi1w
cml2YXRlOgotICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5l
cjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwotICAgIE5vZGVQYXRoIG1fZW5k
Q29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OwotfTsKLQotY2xhc3Mg
QXBwSGlnaGxpZ2h0TGlzdERhdGEgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBcHBIaWdobGlnaHRMaXN0RGF0YSBjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0KLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YShjb25z
dCBBcHBIaWdobGlnaHRMaXN0RGF0YSYpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0
RGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YShWZWN0b3I8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiYmIGFubm90YXRpb25SYW5nZXMpCi0gICAgICAgIDogbV9hbm5vdGF0
aW9uUmFuZ2VzKFdURk1vdmUoYW5ub3RhdGlvblJhbmdlcykpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiByYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBtX2Fubm90YXRpb25SYW5nZXM7IH0KLSAgICB2b2lkIHNldFJhbmdlcyhWZWN0b3I8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMgPSBXVEZN
b3ZlKHJhbmdlcyk7IH0KLSAgICB2b2lkIGFkZFJhbmdlcyhWZWN0b3I8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUocmFuZ2VzKSk7IH0KLQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvblJh
bmdlcy5zaXplKCk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Fubm90
YXRpb25SYW5nZXMuaXNFbXB0eSgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkZWNvZGUoRGVjb2RlciYpOwot
Ci1wcml2YXRlOgotCi0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV9hbm5vdGF0
aW9uUmFuZ2VzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGln
aHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Ci0gICAgZW5jb2RlciA8PCBub2Rl
TmFtZTsKLSAgICBlbmNvZGVyIDw8IHRleHREYXRhOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKLSAgICBkZWNvZGVyID4+IGlk
ZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKLSAgICBkZWNvZGVyID4+IG5v
ZGVOYW1lOwotICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwotICAgIGRlY29kZXIgPj4gdGV4dERh
dGE7Ci0gICAgaWYgKCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Ci0gICAgZGVjb2RlciA+PiBwYXRoSW5k
ZXg7Ci0gICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5vZGVOYW1lKSwg
V1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnBhdGhJbmRleCkgfX07
Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fdGV4
dDsKLSAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Ci0gICAgZW5jb2RlciA8PCBtX2VuZENv
bnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2VuZE9mZnNl
dCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
LXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7Ci0gICAgZGVjb2RlciA+PiB0ZXh0OwotICAg
IGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKLSAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVy
OwotICAgIGlmICghc3RhcnRDb250YWluZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBz
dGFydE9mZnNldDsKLSAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKLSAgICBkZWNv
ZGVyID4+IGVuZENvbnRhaW5lcjsKLSAgICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRPZmZzZXQ7Ci0g
ICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7Ci0gICAgaWYgKCFlbmRPZmZzZXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLQotICAgIHJldHVybiB7ewotICAgICAgICBXVEZNb3ZlKCp0
ZXh0KSwKLSAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAotICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKLSAgICAgICAgV1RGTW92ZSgqZW5kQ29udGFp
bmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRPZmZzZXQpLAotICAgIH19
OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodExpc3REYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fYW5u
b3RhdGlvblJhbmdlczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0TGlzdERhdGE+IEFwcEhpZ2hsaWdodExpc3REYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPj4g
YW5ub3RhdGlvblJhbmdlczsKLSAgICBkZWNvZGVyID4+IGFubm90YXRpb25SYW5nZXM7Ci0gICAg
aWYgKCFhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmFubm90YXRpb25SYW5nZXMpIH19OwotfQotCi0jZW5kaWYK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTNlZDVjYTRlMjcyYzk3Y2YxYzM2MGFhODZjNTQwNThlMGRlNmNlZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKworI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5j
bHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgorI2luY2x1ZGUg
IlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8gZGVjb2RlciA9
IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBk
YXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworUmVmPFNo
YXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIg
PDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAg
ZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHREYXRhOworICAgIGVuY29k
ZXIgPDwgcGF0aEluZGV4OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaWdobGlnaHRSYW5n
ZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7CisgICAgZGVjb2RlciA+PiBub2RlTmFtZTsK
KyAgICBpZiAoIW5vZGVOYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAgICBkZWNvZGVyID4+IHRleHREYXRhOworICAg
IGlmICghdGV4dERhdGEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDx1bnNpZ25lZD4gcGF0aEluZGV4OworICAgIGRlY29kZXIgPj4gcGF0aEluZGV4OworICAg
IGlmICghcGF0aEluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2RlTmFtZSksIFdURk1vdmUo
KnRleHREYXRhKSwgKCpwYXRoSW5kZXgpIH19OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3RleHQ7CisgICAgZW5jb2RlciA8PCBtX3N0YXJ0Q29u
dGFpbmVyOworICAgIGVuY29kZXIgPDwgbV9zdGFydE9mZnNldDsKKyAgICBlbmNvZGVyIDw8IG1f
ZW5kQ29udGFpbmVyOworICAgIGVuY29kZXIgPDwgbV9lbmRPZmZzZXQ7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxT
dHJpbmc+IHRleHQ7CisgICAgZGVjb2RlciA+PiB0ZXh0OworICAgIGlmICghdGV4dCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENv
bnRhaW5lcjsKKyAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVyOworICAgIGlmICghc3RhcnRD
b250YWluZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1
bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKKyAgICBp
ZiAoIXN0YXJ0T2Zmc2V0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKKyAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5l
cjsKKyAgICBpZiAoIWVuZENvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgZGVjb2RlciA+PiBlbmRP
ZmZzZXQ7CisgICAgaWYgKCFlbmRPZmZzZXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc3RhcnRDb250YWlu
ZXIpLCAoKnN0YXJ0T2Zmc2V0KSwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKCplbmRPZmZzZXQp
IH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OWY4Y2Y3NDU3NjYyNmZiZjg2NTAxYjkxYTVmZDgyYTBjYWRiZTUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBBcHBIaWdobGlnaHRSYW5n
ZURhdGEgeworV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CisgICAgICAg
IFN0cmluZyBpZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CisgICAgICAgIFN0
cmluZyB0ZXh0RGF0YTsKKyAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OworCisgICAg
ICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcm
JiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogaWRl
bnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICwgbm9kZU5h
bWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkK
KyAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgp
CisgICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCisgICAgICAgICAg
ICAsIG5vZGVOYW1lKG5hbWUpCisgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCisgICAgICAg
ICAgICAsIHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmll
ciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0
RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAg
ICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHVz
aW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKKworICAgIEFwcEhpZ2hs
aWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7Cisg
ICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OworICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICAgICAgLCBtX3N0YXJ0Q29u
dGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQorICAgICAgICAsIG1fc3RhcnRPZmZzZXQo
c3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWlu
ZXIpKQorICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7CisgICAgfQorCisg
ICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBh
dGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgm
IGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1fdGV4dCh0ZXh0
KQorICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCisgICAgICAgICwg
bV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRD
b250YWluZXIpCisgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAg
ICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
Q29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0T2Zmc2V0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYp
OworCisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBTdHJpbmcgbV90ZXh0OworICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7
CisgICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICBOb2RlUGF0aCBtX2VuZENv
bnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKK307CisKKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGMzYjhiYjc3YzBj
NGY0ZTVjOTk4NzE3OTIzOTJlM2RkZDhkMTkxODYuLmRlNDFkMDkxNDJiMjMyZTRhNzc1YzFkMDc1
MTU5YjQzODVlZmQyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIgogCi0jaW5j
bHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbi5oIgorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgiCkBAIC00MSwxMCArNDIsMTMgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKIAogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKIAorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0ZXh0UHJldmlld0xlbmd0aCA9IDEw
MDsKKwogc3RhdGljIFJlZlB0cjxOb2RlPiBmaW5kTm9kZUJ5UGF0aEluZGV4KGNvbnN0IE5vZGUm
IHBhcmVudCwgdW5zaWduZWQgcGF0aEluZGV4LCBjb25zdCBTdHJpbmcmIG5vZGVOYW1lKQogewog
ICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4ocGFyZW50KSkKQEAgLTE5Niw4ICsyMDAsMTAgQEAg
c3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGggbWFrZU5vZGVQYXRoKFJlZlB0
cjxOb2RlPiYmIG5vZGUpCiAKIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGEgY3JlYXRlQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiByYW5nZSkKIHsKKyAgICBhdXRv
IHRleHQgPSBwbGFpblRleHQocmFuZ2UpOworICAgIHRleHQudHJ1bmNhdGUodGV4dFByZXZpZXdM
ZW5ndGgpOwogICAgIHJldHVybiB7Ci0gICAgICAgIHBsYWluVGV4dChyYW5nZSksCisgICAgICAg
IHRleHQsCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSksCiAg
ICAgICAgIHJhbmdlLnN0YXJ0T2Zmc2V0KCksCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uu
ZW5kQ29udGFpbmVyKCkpLApAQCAtMjEwLDQ4ICsyMTYsMzUgQEAgQXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQg
QXBwSGlnaGxpZ2h0U3RvcmFnZTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKQordm9pZCBB
cHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZSYgcmFuZ2Us
IENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXApCiB7Ci0gICAgVmVjdG9yPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVBcHBIaWdo
bGlnaHRSYW5nZURhdGEocmFuZ2UpOworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKIAotICAg
IGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghZGF0YS50ZXh0KCku
aXNFbXB0eSgpKQorICAgICAgICB0ZXh0ID0gZGF0YS50ZXh0KCk7CiAKLSAgICBpZiAoIW1fZG9j
dW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8gYXBwSGlnaGxp
Z2h0UmVnaXN0ZXIgPSBtX2RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcklmRXhpc3RzKCkp
IHsKLSAgICAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBhcHBIaWdobGlnaHRSZWdpc3Rlci0+
bWFwKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VEYXRhIDogaGlnaGxpZ2h0LnZh
bHVlLT5yYW5nZXNEYXRhKCkpCi0gICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY3JlYXRlQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKHJhbmdlRGF0YS0+cmFuZ2UpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YSBsaXN0RGF0YSB7IFdURk1vdmUoZGF0YSkgfTsKKyAg
ICBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiBpbmZvID0ge2RhdGEudG9TaGFyZWRCdWZmZXIoKSwg
dGV4dCwgaXNOZXdHcm91cH07CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGxpc3REYXRhLnRvU2hhcmVkQnVmZmVyKCkpOworICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiB9
CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXV0byBhcHBI
aWdobGlnaHRMaXN0RGF0YSA9IEFwcEhpZ2hsaWdodExpc3REYXRhOjpjcmVhdGUoYnVmZmVyKTsK
LSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiB1bnJlc3RvcmVkUmFuZ2VzOwotICAg
IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlc3RvcmVkUmFuZ2VzOworICAgIGF1dG8g
c3Ryb25nRG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ry
b25nRG9jdW1lbnQgPSBtX2RvY3VtZW50LmdldCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAo
IWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9y
IChhdXRvJiBhcHBIaWdobGlnaHRMaXN0RGF0YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdl
cygpKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERh
dGEsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAg
IHVucmVzdG9yZWRSYW5nZXMuYXBwZW5kKGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ryb25nRG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVk
UmFuZ2VzLmFwcGVuZChhcHBIaWdobGlnaHRMaXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3Vt
ZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6
Y3JlYXRlKCpyYW5nZSkpOwotICAgIH0KKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0
UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsK
KworICAgIHJldHVybiB0cnVlOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVh
ZDY0MDI0MjljZWRjNGJlOTI2ZjZjZGEwOWU0NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1
OWYzOTA5ODU2MTY2YTc3NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBB
cHBIaWdobGlnaHRMaXN0RGF0YTsKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVt
IGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGln
aGxpZ2h0U3RvcmFnZSA6IFJlZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2Uo
RG9jdW1lbnQmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRz
KFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBI
aWdobGlnaHQoU3RhdGljUmFuZ2UmICwgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdH
cm91cCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxT
aGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4
MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRlOGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC02NCw3ICs2NCw3IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2Vv
bG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRMaXN0RGF0YS5jcHAKK01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1
bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hp
Z2hsaWdodC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyZTNiYTJkOGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBi
Li4yYzdlN2JiZmQzZDViMjVmZWZkMDI0ODIxNjZlM2RkODQ2OTI1MDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYg
KzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQy
NTA3MDcyNTgyOUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNF
MDA0NkQ0MDEgLyogSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIzNkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQy
NTc1QThBNTAwNDZENDAxIC8qIEhpZ2hsaWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyog
SGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0NDUyMTBERjI1RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NTc3NUU1
MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDU3NzVFNDIwNDcyRjcz
MDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0NjNDRjY4MjIxMkZBNjgwMDFB
ODU3NyAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERh
dGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi87IH07CiAJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2
NjY2RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QjM4QkY0MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25S
YW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTIzNiw3ICsxMjM3LDcgQEAKIAkJNDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8qIFdl
YkNvcmVVUkxSZXNwb25zZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25z
ZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRGQjhB
QzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFGMTJE
RkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5h
bWVzLmggKi87IH07Ci0JCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRM
aXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi87IH07
CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVBMjU3
OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAqLzsgfTsKIAkJNDRDOTkx
ODYwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAg
LyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRDOTkxOUYwRjNEMjEwRTAwNTg2Njcw
IC8qIFRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRF
MzQ5RjkyNDZGNEUxOTAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTM0OUY3MjQ2RjREQzcwMDY4
NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxMTcsNiArODExOCw3IEBACiAJCTQ0MzdDNEE5MjRF
MkFFNUYwMDA5NTEyOCAvKiBMYXp5TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NEQ0RTIxMEY3
MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBI
aWdobGlnaHRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTc3NUU5MjA0NzMwM0IwMDhEQ0U1RCAvKiBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQ2REM2NDYyNEEyOUQ5QjAwNjFGMzkwIC8qIFBsYXliYWNrVGFyZ2V0
Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxheWJhY2tUYXJnZXRD
bGllbnRDb250ZXh0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODEzNiw4ICs4MTM4LDggQEAKIAkJNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVV
UkxSZXNwb25zZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3Jl
VVJMUmVzcG9uc2VJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIx
MkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL01hdGhNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxO
YW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNYXRoTUxOYW1lcy5oOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUgLyogQXBw
SGlnaGxpZ2h0TGlzdERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQg
LyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlbGVjdGlvblJhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIz
OEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbGVjdGlvblJhbmdlRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QkQyQjM2MjUyNzc5NzgwMDU1RDk1QSAvKiBHbG9i
YWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkdsb2JhbEV2ZW50SGFuZGxlcnMr
U2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTgzNiw4ICsx
OTgzOCw5IEBACiAJCTQ0RTg4RTQ3MjM2OERGMEYwMDlCNDg0NyAvKiBoaWdobGlnaHQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4MjU3OUNG
RkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRBRTA0NUEy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8sCisJCQkJNDQ1MjEw
REQyNUQ2MUVGRjAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggKi8sCisJCQkJ
NDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8s
CisJCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
ICovLAogCQkJCTQ0MjUwNzA2MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdl
LmNwcCAqLywKIAkJCQk0NDI1MDcwNzI1ODI5QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oICovLAogCQkJCTQ0RTg4RTU0MjM2QTY2QTEwMDlCNDg0NyAvKiBIaWdobGlnaHQuY3Bw
ICovLApAQCAtMzExNTgsNyArMzExNjEsOCBAQAogCQkJCTU3MTUyQjVBMjFDQjNFODgwMDBDMzdD
QSAvKiBBcGR1Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxNTJCNUMyMUNDMTkwMjAw
MEMzN0NBIC8qIEFwZHVSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcwOTlF
NjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ0NTIxMERGMjVENjFGMDAwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQyNTA3MDkyNTgy
OUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAvKiBBcHBsZVBheUNhbmNlbEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VDNDMyMDA1OEE0NzcgLyogQXBwbGVQYXlDb250YWN0
RmllbGQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCAwNGJmOGE1MjMxZDdkNzY4NTYwMjJjNGI3ODk0Y2FiYWU2ZDRlZmI4Li5mYzhhOTRh
MzM3MjA2NWVmMDYwNzc5NWIxN2NiMTY4ZTc1MTY0OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogCisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUg
IkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIK
QEAgLTUwMiw3ICs1MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0
eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVUaQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAor
dm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxp
Z2h0SW5mb3JtYXRpb24mKSBjb25zdAogewogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKaW5kZXggYTc4OGI0NWFhZDE1ZjM0MGYyZWQwOTlkZDRiY2NmNWE1ZWM5M2Mz
ZS4uMTRjNGE5Mjc3NTFiMDZiNjg0ODk0NWQwNmNhMjMyODAyMTM1YjViOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEVtcHR5Q2hy
b21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBI
aWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNl
bmRpZgogCiAgICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGQzMDY5Y2VlMTM3OGVmMGQyNjUwMDRjMjc4MDVj
ZjdmMWM1YmUzODMuLmE1OWFhNDE2Mzg3MjhjZGMzNGU2NTMxZTIyZTMxNGU1NTNlOWIwNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDaHJvbWUuaCIKIAorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0
aW9uLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8u
aCIKICNpbmNsdWRlICJDb250YWN0c1JlcXVlc3REYXRhLmgiCkBAIC01MTIsOSArNTEzLDkgQEAg
dm9pZCBDaHJvbWU6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZp
ZXdwb3J0QXJndW1lbnRzJiBhcmd1bWUKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
LXZvaWQgQ2hyb21lOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEpIGNvbnN0Cit2b2lkIENocm9tZTo6c3RvcmVBcHBIaWdobGlnaHQo
Y29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mIGluZm8pIGNvbnN0CiB7Ci0gICAgbV9jbGll
bnQudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoV1RGTW92ZShkYXRhKSk7CisgICAgbV9jbGll
bnQuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
aW5kZXggZjgxNjc4NjIyNDlhZmVhNWQxZGFjZTg1ZDlkMWY3OTAyMGE4MWM5Ny4uZmI2ZjFjNzk3
MGU2MGZmZmEyMzg2ZDVlMGM1YTViMjVkMDEzMGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01
Nyw2ICs1Nyw3IEBAIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFBvcHVwT3BlbmluZ09i
c2VydmVyOwogY2xhc3MgU2VhcmNoUG9wdXBNZW51OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb247CiBzdHJ1Y3QgQ29udGFjdEluZm87CiBzdHJ1Y3QgQ29udGFjdHNSZXF1ZXN0RGF0
YTsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwpAQCAtMTY1LDcgKzE2Niw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQg
dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
Y29uc3Q7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZv
cm1hdGlvbiYpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYs
IEZpbGVDaG9vc2VyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjZjJiM2Yw
ZDlhYmFkMmU3MmVjYWRjN2UxNTNhOWIxNTE2MzMxYzRkLi41MWIwOTdiNjk4MzQyZmVhNzk2ZTU0
YmM5MjllOWQzZDdjM2FlZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTIy
LDYgKzIyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgor
I2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlF
dmVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJbmZvLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCkBA
IC0zMDQsNyArMzA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBj
b25zdCA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUm
LCBGaWxlQ2hvb3NlciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IGEzNjE3N2VlMGUyYmViYWRkYjE5MmQzYjM3YjU0YzNiMTUzYjFiOWEuLjNiYzQw
MjlmMzIxYTQwZDBhZDJiMWE4Y2Q4N2Q2MWQwYTc3NDNhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjU2LDYgKzY1Niw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnU3RyaW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+
J10sCiAgICAgICAgICdQQUw6OlNlc3Npb25JRCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlF
dmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQn
OiBbJzxXZWJDb3JlL0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlJzogWyc8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJzogWyc8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRl
bnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTlkYjRiNjhjNDVkOGJmMGU2OTAyMzgzZTBmOGFhMjc4Mzc2
OGE2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJv
b2wgeyBObywgWWVzIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzU1YmRiNTQ5YTdmN2M1
NDdlZTA2MTNiYTA3YzA5NTkyNzI1N2RlYS4uNGJlZjBiMDdkNGEwMGEyNmZiOGQ2MjBhMDY4NjI2
N2M3YTc3ZTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xMTksNiArMTE5LDcgQEAKICNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRp
b25Ub2tlbi5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BcHBI
aWdobGlnaHRJbmZvcm1hdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5n
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29s
b3JTZXJpYWxpemF0aW9uLmg+CkBAIC0xNDIzLDE0ICsxNDI0LDE0IEBAIC0gKHZvaWQpX3NldEFw
cEhpZ2hsaWdodERlbGVnYXRlOihpZCA8X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+KWRlbGVnYXRl
CiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2b2lkKV91cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZTooTlNEYXRhICopZGF0YQorLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6
KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiloaWdobGlnaHRJbmZvcm1h
dGlvbgogewogICAgIGF1dG8gZGVsZWdhdGUgPSBzZWxmLl9hcHBIaWdobGlnaHREZWxlZ2F0ZTsK
ICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2U6KV0pCi0gICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHVwZGF0ZUFwcEhp
Z2hsaWdodHNTdG9yYWdlOmRhdGFdOworICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1
cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpoaWdobGlnaHRJbmZvcm1hdGlvbi5oaWdobGlnaHQt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCkBAIC0yMDM1LDEyICsyMDM2LDIx
IEBAIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKICAgICBbc2VsZiByZXN1bWVBbGxN
ZWRpYVBsYXliYWNrOm5pbF07CiB9CiAKLS0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihO
U0RhdGEgKilkYXRhCistICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0Rh
dGEgKj4gKiloaWdobGlnaHRzCiB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIF9w
YWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKSk7CisgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CisK
KyAgICBmb3IgKE5TRGF0YSAqaGlnaGxpZ2h0IGluIGhpZ2hsaWdodHMpIHsKKyAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoaGlnaGxpZ2h0
Lmxlbmd0aCk7CisgICAgICAgIGlmIChzaGFyZWRNZW1vcnkpIHsKKyAgICAgICAgICAgIFtoaWdo
bGlnaHQgZ2V0Qnl0ZXM6c2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5sZW5n
dGhdOworICAgICAgICAgICAgYnVmZmVycy5hcHBlbmQoKnNoYXJlZE1lbW9yeSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzKGJ1ZmZlcnMpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodHMp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggNDA5ZDhhZWQzMzMwMmVkZjlkMWUzZDhlMzk0
MjIzYWEzZWRiOWQ3NC4uNjg3N2M2MWE3N2M2ZjgxNzExMDQzZjY2NTM1NGU3M2NkYjQ4NmQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgQXR0YWNobWVudDsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0
IEV4Y2VwdGlvbkRldGFpbHM7CiBlbnVtIGNsYXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlIDog
dWludDhfdDsKIH0KQEAgLTI2NSw3ICsyNjYsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLS0gKHZvaWQpX3VwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOihOU0RhdGEgKilkYXRhOworLSAodm9pZClfc3RvcmVBcHBI
aWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJilpbmZvOwog
I2VuZGlmCiAKIC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJP
T0wpd2l0aG91dFdhaXRpbmdGb3JQYWludGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVz
aXplOihCT09MKXdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5
MjYyMzhhZWEwYTE0NzYxMThlNWE2OTA4NTQ3YWQ3OWMzZjQ1NGQxLi5lNDVjYjFiYmJiZWJhMGIx
YTc5NTU2YjhkNDMxMGM3NzgyNTU1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBm
b3IgdGhpcyBwcm9wZXJ0eS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEhhc0Js
YW5rT3ZlcmxheTopIEJPT0wgX2hhc0JsYW5rT3ZlcmxheSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
d2Vhaywgc2V0dGVyPV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGln
aHREZWxlZ2F0ZT4gX2FwcEhpZ2hsaWdodERlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxp
Z2h0czooTlNEYXRhICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8
TlNEYXRhICo+ICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiAvKiEgQGFic3RyYWN0IFRoZSB0aGVtZSBjb2xvciBvZiB0aGUgYWN0
aXZlIHBhZ2UuCiAgQGRpc2N1c3Npb24gVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIG1vc3QgcmVj
ZW50bHkgY3JlYXRlZCBvciBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGUzNmU4Y2M0ZTVmNzA3OGEyNDQx
MzVjZTJlNmZiN2RhOTBjZGUyMTcuLjM5ODgwNGE3NmNjMjM1NjY3MTU5NzRkMmY4ZWU0ZmIzZWRm
MWIzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGll
bnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgQXR0YWNobWVudDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworCitz
dHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNzQsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzICpwbGF0Zm9y
bURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdo
dHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgZmluYWw7CisgICAg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1h
dGlvbiYpIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCmluZGV4IDMzYmJlOTI4
NWE4OGY1MmU5MmE0NmQzZDAzODAyYjBlZjY5Zjk1NTguLjM1MzI2NjdkZDIwY2IzMzE3YzIyYzhl
OTVlNmM4OTI1MDc1ZjAzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAtMTIwLDEwICsxMjAsOSBAQCBOU1NldCAq
UGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29u
c3QKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBQYWdlQ2xpZW50
SW1wbENvY29hOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxp
Z2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uICZhcHBIaWdobGlnaHRJ
bmZvcm1hdGlvbikKIHsKLSAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOwot
ICAgIFttX3dlYlZpZXcgX3VwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOm5zRGF0YS5nZXQoKV07
CisgICAgW21fd2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6YXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b25dOwogfQogI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBlMTVm
MTBjYTIwMTU5MjBhMTQyZTZkZWFjZDYyMjVkNDY5ZWM4NTA4Li5lZGYwNGE0MDQ5NzQwZDAyYjRi
ZDA0YzkxNDc2NjNmNDVhM2YzMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjphZGRBY3Rpdml0eVN0YXRlVXBkYXRlQ29tcGxldGlvbkhhbmRsZXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdl
YlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0
ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBjcmVhdGVOZXdHcm91cCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTU0MiwxNCArNTQyLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoY3JlYXRlTmV3R3JvdXApKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFNoYXJlZE1lbW9y
eT4+JiBoaWdobGlnaHRzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UgeyBkYXRhIH07CisgICAgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1v
cnlIYW5kbGVzOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hs
aWdodHMoZGF0YVJlZmVyZW5jZSkpOworICAgIGZvciAoYXV0byBoaWdobGlnaHQgOiBoaWdobGln
aHRzKSB7CisgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaGln
aGxpZ2h0LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKKworICAgICAgICBtZW1vcnlIYW5kbGVzLmFwcGVuZChTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgaGlnaGxpZ2h0LT5zaXplKCkgfSk7CisgICAgfQor
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoV1RGTW92
ZShtZW1vcnlIYW5kbGVzKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA5ODhiOWZhOGUwNDRkZWRjMGU0ZjBmMDk2MjliZWM2ODFkMDA0NDg0Li41
OWIyMmNhM2FmZmU2OTY4YWNkOTA2NmY5YTViODViYWQyMWQ2NmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUgOiB1aW50OF90OwogZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9y
V2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlv
bjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRh
Owogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKQEAgLTE1MSw2ICsxNTIsNyBAQCBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAorc3RydWN0IEFwcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb247CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKQEAgLTU3NSw3ICs1NzcsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdl
YkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYxYzQ4MzU1YmVhOTdkNzAuLmY1NzdjM2ViYWRjZTlj
ZGNlZmI2MmY5YTRmMWIyZjg4NjdlNjhkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTQzLDYgKzE0Myw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcEhp
Z2hsaWdodEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KQEAgLTY2ODUsMTEgKzY2ODYs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdl
YkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgfQogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdo
bGlnaHRUb05ld0dyb3VwKSB7Ci0gICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKKyAgICAgICAgY3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0OjpZZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvQ3VycmVudEdyb3VwKSB7Ci0gICAg
ICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodDo6Tm8pOworICAgICAgICBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2Uo
V2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgpAQCAtOTgzOSwxMSArOTg0MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9w
dGlvbmFsPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0
IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJiBpbmZvKQogewotICAgIE1FU1NBR0Vf
Q0hFQ0sobV9wcm9jZXNzLCBkYXRhLmJ1ZmZlcigpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgIWluZm8uaGlnaGxpZ2h0LT5pc0VtcHR5KCkpOworCisgICAgcGFnZUNsaWVudCgpLnN0
b3JlQXBwSGlnaGxpZ2h0KGluZm8pOwogCi0gICAgcGFnZUNsaWVudCgpLnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4YjhlMmM4MWVjOTkw
NmVlNDQ4YjE3MTcuLjk3ZTIwNDVlYzI1ODg3NTRlODhiMDA5OGFlM2FmZDIzYWRhNDRiZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCi0jaW5j
bHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
QWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcgQEAgY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNz
IFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7
CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xh
c3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEV2ZW50TWFr
ZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwogZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0
IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBAQCBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJv
b2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb247CiBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdDsKIHN0cnVjdCBBdHRyaWJ1
dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CkBAIC0zNzQsNyAr
Mzc1LDYgQEAgc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFVzZXJNZXNzYWdlOwogCi1lbnVtIGNsYXNzIENyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2Fj
eVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBi
b29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKQEAgLTE4MjYsOSArMTgyNiw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN5bmNJZk1vY2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIAog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7Ci0gICAgdm9pZCB1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKLSAg
ICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHJl
c3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
PiYgaGlnaGxpZ2h0cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
NDkxOWJjOTg4ZTljNWZjYTcyZmZjOGMyMWEzZmMxNDMwYjI4YzA1YS4uNjQ3YmFjMDM5Yjg4ODAw
NjUzZWQ5OGUyNGI1NjRlY2JiMDQ4YzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTM1LDcgKzUzNSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
LSAgICBVcGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0
YSkKKyAgICBTdG9yZUFwcEhpZ2hsaWdodChzdHJ1Y3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb24gaW5mbykKICNlbmRpZgogCiAgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJM
IHVybCkgLT4gKFN0cmluZyByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBj
ZWM4N2M1OGYwMTFjYTdkYTQ5OTNjZjE1M2MxZDZmZTcyNDVhNGI4Li4yMTc3NzQ2ZWU1ZDkxYjI4
ODc5ZDhkMjdmMGE3MTI4Y2FhMjE1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMwLDcgKzMwLDYg
QEAKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXIuaCIKLSNpbXBvcnQgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAj
aW1wb3J0ICJEb2N1bWVudEVkaXRpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlci5oIgogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKQEAgLTg5NzUsMTIg
Kzg5NzQsMTIgQEAgLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzCiAKIC0gKHZvaWQpY3Jl
YXRlSGlnaGxpZ2h0SW5DdXJyZW50R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9w
YWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodDo6Tm8pOworICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKIH0K
IAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOihpZClzZW5kZXIK
IHsKLSAgICBfcGFnZS0+Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYktpdDo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olllcyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dDo6WWVzKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxZTZlYjA4YTljZGIzZDAwMDA2MDEzZGI1ODY1MjkyYWVj
ZTUyNmNhLi4wYjNlNDg3NDljZTk3YWQwNTFhOWFjNzdiY2I2NTg5ZjVhZTI3MzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTIw
LDEyICsxMTkyMCw2IEBACiAJCQkJQ0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNE
TUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIx
REVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
QUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxRDQ3NjVBMTI1Q0Y1NzQwMDA3QUYzMTIgLyogUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUMy
NUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUQyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTFENDc2NTg2MjVDQ0E0MTYwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OTMyNUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTk0
MjVDQ0NFOTMwMDdBRjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1
MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGMwOWEy
N2I3ZTdmNTNmYjQ0MjQ0NDcxYTZkNmI3NGZjZTA1ZDQzYTAuLjQ0OTg3NGEzYzBjY2VmNzNmNzEx
ZDE3NDM0MWJhODkyYjJjMWJjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMjQ0LDEw
ICsxMjQ0LDkgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdo
dHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29uc3QKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IElQQzo6
U2hhcmVkQnVmZmVyQ29weShkYXRhKTsKLSAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpVcGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShidWZmZXIpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9yZUFwcEhpZ2hsaWdodChpbmZvKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDAxNGJkY2YzOTM2NWZiYjdhZDcwOTNl
Y2M4NGMwOWRjMjcwZDBiNGYuLjg5ZGRlY2ZlZjMxMjBhNGUyMjEwMjZkZDRjZTU1Y2Y1ZjkwMmZi
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM0Nyw3ICszNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25T
ZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVBQ
X0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgZmlu
YWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3NjNiY2FiODY5NjJjNzliNjcyZmMz
MzMxMjNjNzE0ZWMyY2UxMzY2Li4xNGQ1M2Q0ZjQ0NWFiNTczM2U0MGExYmNmMDBiNzI2ZDczNDli
MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNzI1MCw3ICs3MjUwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXZva2VTYW5kYm94RXh0ZW5zaW9u
cyhWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgc2FuZGJveEUKIH0KIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLWJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQor
Ym9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCiB7CiAgICAgYXV0byBk
b2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIApAQCAtNzI2MywxNiArNzI2MywyMSBAQCBib29sIFdl
YlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBjcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkb2N1bWVudC0+
YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0
ZShzZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSk7Ci0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0
b3JhZ2UoKS51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSgpOworICAgIGRvY3VtZW50LT5hcHBI
aWdobGlnaHRTdG9yYWdlKCkuc3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZShz
ZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSwgY3JlYXRlTmV3R3JvdXApOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhj
b25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5SGFuZGxlcykKIHsK
ICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCi0gICAgZG9jdW1lbnQtPmFwcEhp
Z2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hh
bmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBw
SGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihz
aGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSk7CisgICAgfQogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBlYjUyNDg5MDI4MTUwMjZhNDdiYTlkOGM1MGM3YzhmY2I0NWUxOWUwLi40NmMwM2FmNjc2MDU5
ODQ1YWM1MzU5ZjY1MWVkMzRjNTE1MzgwYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0lu
Y2x1ZGVzQ2hpbGRGcmFtZXMuaCIKLSNpbmNsdWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCkBAIC0yMDQsNiArMjAzLDcgQEAgY2xhc3Mg
VGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50
aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIERyYWdBcHBsaWNhdGlvbkZsYWdzIDogdWludDhfdDsKIGVudW0gY2xh
c3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhfdDsKQEAgLTEzOTYsOCArMTM5Niw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIGJvb2wgY3Jl
YXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
KTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOworICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGln
aHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVl
bEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4
Y2ZjYzQ5Y2Y2ZjM4MDc2YWY5YzMyMzE5M2FkMzc1MzQ4YTQ0OGYwLi44MjczMTE2ZTgzMzE3ODI3
MjBhYmQxZWQ2NTdhYWYyMjMyZTdiZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTYyNCw4ICs2MjQsOCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJv
b2wgY2FuVXNlKQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIENyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBDcmVhdGVBcHBIaWdobGlnaHRJ
blNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0IGNyZWF0ZU5ld0dyb3VwKQorICAgIFJlc3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAKICAg
ICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKFdlYktpdDo6V2ViV2hlZWxFdmVu
dCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE2
NmNlOWRmZjgxYWI5MmUyZTdhOGViZjVhYzgwOWE5YmQ5ZDJkMi4uN2NmZjFkZDI1M2UyYmQ4YWY4
Zjk4ZmVkY2QwZGQ3MjMyZDNhMjEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1Miw3ICsxNTIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAg
dm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggODZhZmEwZTlkMzdh
Y2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uNzI1Y2I1MGYwOTA4MmRmNjI5Y2U5YzU3ZDM3
ZTdkMTIwNzM4ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0
ZVRpbWVDaG9vc2VyKERhdGVUaW1lCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0
b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikg
Y29uc3QKIHsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420479</attachid>
            <date>2021-02-16 09:43:15 -0800</date>
            <delta_ts>2021-02-16 12:36:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210216094314.patch</filename>
            <type>text/plain</type>
            <size>71699</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uN2Q1ZjFmMTYxNzhlNWJlM2UwZjg0YTExMGQxNjlm
MzUxMGU1N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBQaXBlIHRocm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxh
eSwgYW5kIHVwZGF0ZSB0byBhbGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBt
b3JlIGVhc2lseS4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmguCisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjEtMDItMTEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybmluZyBzUkdCIGZyb20g
Q0cgY29sb3Igc3BhY2UgZnVuY3Rpb25zIG9uIGZhaWx1cmUgaXMgdG9vIGVycm9yIHByb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM0Y2E5MDljN2IzYTYxNWI4YjU0NTUzYjcyNmQ5ZDZiYzAxODhkMTUuLmE0MDU4
OWExYmY3NTYxMTUwMjgyM2FmMGJlYmE3OGNmZGI1ZGIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgQXBwIEhpZ2hsaWdodHMgQVBJIHRvIG9wZXJhdGUgaW4gdGVy
bXMgb2YgYSBzaW5nbGUgc2VyaWFsaXplZCBoaWdobGlnaHQgYXQgYSB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFs
IGRhdGEgbmVlZGVkIGZvciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGlu
Zm9ybWF0aW9uIHRvIGJlIGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEluQ3VycmVudEdyb3Vw
V2l0aFJhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodElu
TmV3R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIxLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjT1NdIEVuYWJsZSBBdWRpbyBDYXB0dXJlIGluIEdQVVByb2Nlc3MgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3
ZDg0ZTc1ZTA2ODA0MDUuLmViMzk4NmQ0ZDM0ZjA2MTA2MGFiNWU4YWE3OWY3YmExNTY3ZDIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
MiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSBBcHAgSGlnaGxpZ2h0cyBBUEkgdG8gb3BlcmF0ZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSBz
ZXJpYWxpemVkIGhpZ2hsaWdodCBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorCiAy
MDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2
ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1
OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li5jYzRkZTczZTYzMzk2NDFhMzNhNjE3YmNhYWQ3
MTNiZTM4NzM3ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24v
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlv
bi5oCiAgICAgTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmgKICAgICBNb2R1bGVzL2hpZ2hs
aWdodC9IaWdobGlnaHRSZWdpc3Rlci5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc4MDBkMjBkMTFiODkzMWQwMDM5MTg0ZDEzNzQ1NTcwNTdmYjhlYmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRJbmZvcm1h
dGlvbi5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0cnVjdCBB
cHBIaWdobGlnaHRJbmZvcm1hdGlvbiB7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKKyAgICBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxBcHBIaWdobGlnaHRJbmZvcm1hdGlvbj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0SW5m
b3JtYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGln
aGxpZ2h0LT5kYXRhQXNVSW50OFB0cigpKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworCisgICAg
ZW5jb2RlciA8PCB0ZXh0OworCisgICAgZW5jb2RlciA8PCBpc05ld0dyb3VwOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24+IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKworICAg
IE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4gbGVuZ3RoOworICAgIGlm
ICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNv
ZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3Ro
LnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gaGlnaGxpZ2h0
OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0LnNpemUoKSwgMSkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxTdHJp
bmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRleHQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBp
c05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdHcm91cCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlzTmV3R3JvdXAgfX07Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0ZDU5YmIzNWRkYTE0YzZjZmRkOGI3
ZmRlNDQ4NjA1ZjQwYjk0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0
RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExpc3REYXRhLmgiCi0KLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
IgotI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNs
dWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKLSNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgotI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLQotQXBwSGlnaGxpZ2h0TGlzdERhdGEgQXBwSGlnaGxpZ2h0TGlzdERhdGE6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBhdXRvIGRlY29kZXIgPSBi
dWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkYXRh
OwotICAgIGRlY29kZXIgPj4gZGF0YTsKLSAgICByZXR1cm4gZGF0YSA/ICpkYXRhIDogQXBwSGln
aGxpZ2h0TGlzdERhdGEge3sgfX07Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdo
dExpc3REYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTNiMjE0ZGI5Nzg5MjA5NDRjZGRiMWZiMGVh
MTY1ZDdkYTZjZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRh
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEg
ewotcHVibGljOgotICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7Ci0gICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Ci0gICAgICAgIFN0cmluZyB0
ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OwotCi0gICAgICAgIE5v
ZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1l
LCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmll
cihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICwgbm9kZU5hbWUoV1RG
TW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAg
ICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAg
ICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCi0gICAg
ICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCi0gICAgICAgICAgICAsIG5v
ZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCi0gICAgICAgICAgICAs
IHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllciAmJiBu
b2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0RGF0YSAm
JiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm9k
ZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIE5v
ZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKLQotICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7Ci0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKLSAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQot
ICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0gICAgfQotCi0gICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBhdGgmIHN0
YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgmIGVuZENv
bnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1fdGV4dCh0ZXh0KQotICAg
ICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCi0gICAgICAgICwgbV9zdGFy
dE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRDb250YWlu
ZXIpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KLSAgICBjb25z
dCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29udGFp
bmVyOyB9Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
T2Zmc2V0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwotCi1w
cml2YXRlOgotICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgTm9kZVBhdGggbV9zdGFydENvbnRhaW5l
cjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwotICAgIE5vZGVQYXRoIG1fZW5k
Q29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9OwotfTsKLQotY2xhc3Mg
QXBwSGlnaGxpZ2h0TGlzdERhdGEgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBcHBIaWdobGlnaHRMaXN0RGF0YSBjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0KLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YShjb25z
dCBBcHBIaWdobGlnaHRMaXN0RGF0YSYpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0
RGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YShWZWN0b3I8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiYmIGFubm90YXRpb25SYW5nZXMpCi0gICAgICAgIDogbV9hbm5vdGF0
aW9uUmFuZ2VzKFdURk1vdmUoYW5ub3RhdGlvblJhbmdlcykpCi0gICAgewotICAgIH0KLQotICAg
IGNvbnN0IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiByYW5nZXMoKSBjb25zdCB7IHJl
dHVybiBtX2Fubm90YXRpb25SYW5nZXM7IH0KLSAgICB2b2lkIHNldFJhbmdlcyhWZWN0b3I8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMgPSBXVEZN
b3ZlKHJhbmdlcyk7IH0KLSAgICB2b2lkIGFkZFJhbmdlcyhWZWN0b3I8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUocmFuZ2VzKSk7IH0KLQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5ub3RhdGlvblJh
bmdlcy5zaXplKCk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Fubm90
YXRpb25SYW5nZXMuaXNFbXB0eSgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkZWNvZGUoRGVjb2RlciYpOwot
Ci1wcml2YXRlOgotCi0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV9hbm5vdGF0
aW9uUmFuZ2VzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGln
aHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Ci0gICAgZW5jb2RlciA8PCBub2Rl
TmFtZTsKLSAgICBlbmNvZGVyIDw8IHRleHREYXRhOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKLSAgICBkZWNvZGVyID4+IGlk
ZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKLSAgICBkZWNvZGVyID4+IG5v
ZGVOYW1lOwotICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwotICAgIGRlY29kZXIgPj4gdGV4dERh
dGE7Ci0gICAgaWYgKCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Ci0gICAgZGVjb2RlciA+PiBwYXRoSW5k
ZXg7Ci0gICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5vZGVOYW1lKSwg
V1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnBhdGhJbmRleCkgfX07
Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fdGV4
dDsKLSAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7Ci0gICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Ci0gICAgZW5jb2RlciA8PCBtX2VuZENv
bnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2VuZE9mZnNl
dCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
LXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7Ci0gICAgZGVjb2RlciA+PiB0ZXh0OwotICAg
IGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKLSAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVy
OwotICAgIGlmICghc3RhcnRDb250YWluZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBz
dGFydE9mZnNldDsKLSAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKLSAgICBkZWNv
ZGVyID4+IGVuZENvbnRhaW5lcjsKLSAgICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBlbmRPZmZzZXQ7Ci0g
ICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7Ci0gICAgaWYgKCFlbmRPZmZzZXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLQotICAgIHJldHVybiB7ewotICAgICAgICBXVEZNb3ZlKCp0
ZXh0KSwKLSAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAotICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKLSAgICAgICAgV1RGTW92ZSgqZW5kQ29udGFp
bmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRPZmZzZXQpLAotICAgIH19
OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodExpc3REYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fYW5u
b3RhdGlvblJhbmdlczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBw
SGlnaGxpZ2h0TGlzdERhdGE+IEFwcEhpZ2hsaWdodExpc3REYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPj4g
YW5ub3RhdGlvblJhbmdlczsKLSAgICBkZWNvZGVyID4+IGFubm90YXRpb25SYW5nZXM7Ci0gICAg
aWYgKCFhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmFubm90YXRpb25SYW5nZXMpIH19OwotfQotCi0jZW5kaWYK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzE0ZWFlZDc4MGVlMzY3M2ZjMDA0NjE0NTg0ZWFjNGY3NDFkMTVjYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKworI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCisjaW5j
bHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgorI2luY2x1ZGUg
IlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6
Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGF1dG8gZGVjb2RlciA9
IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBk
YXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworUmVmPFNo
YXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIg
PDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAg
ZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHREYXRhOworICAgIGVuY29k
ZXIgPDwgcGF0aEluZGV4OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaWdobGlnaHRSYW5n
ZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7CisgICAgZGVjb2RlciA+PiBub2RlTmFtZTsK
KyAgICBpZiAoIW5vZGVOYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAgICBkZWNvZGVyID4+IHRleHREYXRhOworICAg
IGlmICghdGV4dERhdGEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDx1bnNpZ25lZD4gcGF0aEluZGV4OworICAgIGRlY29kZXIgPj4gcGF0aEluZGV4OworICAg
IGlmICghcGF0aEluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2RlTmFtZSksIFdURk1vdmUo
KnRleHREYXRhKSwgKnBhdGhJbmRleCB9fTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV90ZXh0OworICAgIGVuY29kZXIgPDwgbV9zdGFydENvbnRh
aW5lcjsKKyAgICBlbmNvZGVyIDw8IG1fc3RhcnRPZmZzZXQ7CisgICAgZW5jb2RlciA8PCBtX2Vu
ZENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IG1fZW5kT2Zmc2V0OworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAoIXRleHQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxOb2RlUGF0aD4gc3RhcnRDb250
YWluZXI7CisgICAgZGVjb2RlciA+PiBzdGFydENvbnRhaW5lcjsKKyAgICBpZiAoIXN0YXJ0Q29u
dGFpbmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CisgICAgaWYg
KCFzdGFydE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7CisgICAgZGVjb2RlciA+PiBlbmRDb250YWluZXI7
CisgICAgaWYgKCFlbmRDb250YWluZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIGRlY29kZXIgPj4gZW5kT2Zm
c2V0OworICAgIGlmICghZW5kT2Zmc2V0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUoKnN0YXJ0Q29udGFpbmVy
KSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIpLCAqZW5kT2Zmc2V0IH19Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44OWY4Y2Y3NDU3NjYyNmZiZjg2NTAxYjkxYTVmZDgyYTBjYWRiZTUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEg
eworV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CisgICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CisgICAgICAgIFN0cmluZyB0
ZXh0RGF0YTsKKyAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9OworCisgICAgICAgIE5v
ZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1l
LCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgICAgIDogaWRlbnRpZmll
cihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICwgbm9kZU5hbWUoV1RG
TW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAg
ICAgICAgICwgcGF0aEluZGV4KGluZGV4KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQgaW5kZXgpCisgICAg
ICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCisgICAgICAgICAgICAsIG5v
ZGVOYW1lKG5hbWUpCisgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEpCisgICAgICAgICAgICAs
IHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllciAmJiBu
b2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0RGF0YSAm
JiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAgICB9CisK
KyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm9k
ZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHVzaW5nIE5v
ZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKKworICAgIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRlZmF1bHQ7CisgICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OworICAgIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAg
ICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICAgICAgLCBtX3N0YXJ0Q29udGFpbmVy
KFdURk1vdmUoc3RhcnRDb250YWluZXIpKQorICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCisgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShlbmRDb250YWluZXIpKQor
ICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7CisgICAgfQorCisgICAgQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgTm9kZVBhdGgmIHN0
YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3QgTm9kZVBhdGgmIGVuZENv
bnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1fdGV4dCh0ZXh0KQorICAg
ICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCisgICAgICAgICwgbV9zdGFy
dE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRhaW5lcihlbmRDb250YWlu
ZXIpCisgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBjb25z
dCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29udGFp
bmVyOyB9CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
T2Zmc2V0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5lcigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRPZmZzZXQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOworCisg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICBTdHJpbmcgbV90ZXh0OworICAgIE5vZGVQYXRoIG1fc3RhcnRDb250YWluZXI7CisgICAg
dW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICBOb2RlUGF0aCBtX2VuZENvbnRhaW5l
cjsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKK307CisKKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGMzYjhiYjc3YzBjNGY0ZTVj
OTk4NzE3OTIzOTJlM2RkZDhkMTkxODYuLmRkYjc3MmZlNWVlOWU4YjJhYWQwOTYzYmVkMDRhNmEy
MWM4ODU3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIgogCi0jaW5jbHVkZSAi
QXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRJbmZvcm1hdGlv
bi5oIgorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIkNocm9t
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmgiCkBAIC00MCwxMSArNDEsMTIgQEAKICNpbmNsdWRlICJTdGF0aWNSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKIAorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0ZXh0
UHJldmlld0xlbmd0aCA9IDEwMDsKKwogc3RhdGljIFJlZlB0cjxOb2RlPiBmaW5kTm9kZUJ5UGF0
aEluZGV4KGNvbnN0IE5vZGUmIHBhcmVudCwgdW5zaWduZWQgcGF0aEluZGV4LCBjb25zdCBTdHJp
bmcmIG5vZGVOYW1lKQogewogICAgIGlmICghaXM8Q29udGFpbmVyTm9kZT4ocGFyZW50KSkKQEAg
LTE5Niw4ICsxOTgsMTAgQEAgc3RhdGljIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGgg
bWFrZU5vZGVQYXRoKFJlZlB0cjxOb2RlPiYmIG5vZGUpCiAKIHN0YXRpYyBBcHBIaWdobGlnaHRS
YW5nZURhdGEgY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0YXRpY1JhbmdlJiBy
YW5nZSkKIHsKKyAgICBhdXRvIHRleHQgPSBwbGFpblRleHQocmFuZ2UpOworICAgIHRleHQudHJ1
bmNhdGUodGV4dFByZXZpZXdMZW5ndGgpOwogICAgIHJldHVybiB7Ci0gICAgICAgIHBsYWluVGV4
dChyYW5nZSksCisgICAgICAgIHRleHQsCiAgICAgICAgIG1ha2VOb2RlUGF0aCgmcmFuZ2Uuc3Rh
cnRDb250YWluZXIoKSksCiAgICAgICAgIHJhbmdlLnN0YXJ0T2Zmc2V0KCksCiAgICAgICAgIG1h
a2VOb2RlUGF0aCgmcmFuZ2UuZW5kQ29udGFpbmVyKCkpLApAQCAtMjEwLDQ4ICsyMTQsMzUgQEAg
QXBwSGlnaGxpZ2h0U3RvcmFnZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6dXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChT
dGF0aWNSYW5nZSYgcmFuZ2UsIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXAp
CiB7Ci0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKLQotICAgIGlmICgh
bV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGF0YSA9IGNyZWF0ZUFwcEhp
Z2hsaWdodFJhbmdlRGF0YShyYW5nZSk7CisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogCi0g
ICAgaWYgKCFtX2RvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRh
dGEudGV4dCgpLmlzRW1wdHkoKSkKKyAgICAgICAgdGV4dCA9IGRhdGEudGV4dCgpOwogCi0gICAg
aWYgKGF1dG8gYXBwSGlnaGxpZ2h0UmVnaXN0ZXIgPSBtX2RvY3VtZW50LT5hcHBIaWdobGlnaHRS
ZWdpc3RlcklmRXhpc3RzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBhcHBI
aWdobGlnaHRSZWdpc3Rlci0+bWFwKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VE
YXRhIDogaGlnaGxpZ2h0LnZhbHVlLT5yYW5nZXNEYXRhKCkpCi0gICAgICAgICAgICAgICAgZGF0
YS5hcHBlbmQoY3JlYXRlQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKHJhbmdlRGF0YS0+cmFuZ2UpKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0YSBsaXN0RGF0YSB7IFdU
Rk1vdmUoZGF0YSkgfTsKKyAgICBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiBpbmZvID0ge2RhdGEu
dG9TaGFyZWRCdWZmZXIoKSwgdGV4dCwgaXNOZXdHcm91cH07CiAKLSAgICBtX2RvY3VtZW50LT5w
YWdlKCktPmNocm9tZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKGxpc3REYXRhLnRvU2hh
cmVkQnVmZmVyKCkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBI
aWdobGlnaHQoaW5mbyk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitib29sIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7Ci0gICAgYXV0byBhcHBIaWdobGlnaHRMaXN0RGF0YSA9IEFwcEhpZ2hsaWdodExpc3REYXRh
OjpjcmVhdGUoYnVmZmVyKTsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiB1bnJl
c3RvcmVkUmFuZ2VzOwotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlc3RvcmVk
UmFuZ2VzOworICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQu
Z2V0KCkpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtX2RvY3VtZW50Lmdl
dCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvJiBhcHBIaWdobGlnaHRMaXN0RGF0
YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdlcygpKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2Ug
PSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERhdGEsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAg
ICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAgIHVucmVzdG9yZWRSYW5nZXMuYXBwZW5kKGFw
cEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Cisg
ICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ryb25n
RG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVkUmFuZ2VzLmFwcGVuZChhcHBIaWdobGlnaHRM
aXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3Rlcigp
LmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOwotICAgIH0KKyAg
ICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQo
U3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVhZDY0MDI0MjljZWRjNGJlOTI2ZjZjZGEwOWU0
NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1OWYzOTA5ODU2MTY2YTc3NDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRMaXN0RGF0YTsKIGNsYXNz
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0U3RvcmFnZSA6IFJlZkNvdW50ZWQ8
QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2UmICwgQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRl
OgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDhj
MDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRlOGM1
NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02NCw3ICs2NCw3IEBA
IE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRp
b24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKK01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdp
c3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZTNiYTJkOGJi
YWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBiLi4yYzdlN2JiZmQzZDViMjVmZWZkMDI0ODIx
NjZlM2RkODQ2OTI1MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYgKzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1ODI5
QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyNTA3MDcyNTgyOUExNDAwQzA5MzY4IC8qIEFw
cEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNFMDA0NkQ0MDEgLyogSGlnaGxpZ2h0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIzNkE1
QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQyNTc1QThBNTAwNDZENDAxIC8qIEhpZ2hsaWdo
dFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyogSGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NDUyMTBERjI1RDYx
RjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTIxMEREMjVENjFFRkYwMDNBMkVEOCAv
KiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ0NTc3NUU1MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERl
ZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ0NjNDRjY4MjIxMkZBNjgwMDFBODU3NyAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNv
ZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0g
Ki87IH07CiAJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2NjY2RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QjM4QkY0
MjUzNjkwMUEwMEE0NDU4RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIzNiw3ICsxMjM3LDcgQEAKIAkJ
NDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjBEQjgwRjg0MTY2
QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAv
KiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRG
YWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhB
QUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07Ci0JCTQ0QUUwNDVDMjU3
OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi87IH07CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2
NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGln
aHRSYW5nZURhdGEuaCAqLzsgfTsKIAkJNDRDOTkxODYwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9s
bGJhclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLzsg
fTsKIAkJNDRDOTkxOUYwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE5RDBGM0QyMTBFMDA1ODY2
NzAgLyogVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRFMzQ5RjkyNDZGNEUxOTAwNjg0NzlDIC8qIExp
YldlYlJUQ0VudW1UcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0RTM0OUY3MjQ2RjREQzcwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgx
MTcsNiArODExOCw3IEBACiAJCTQ0MzdDNEE5MjRFMkFFNUYwMDA5NTEyOCAvKiBMYXp5TG9hZEZy
YW1lT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF6eUxvYWRGcmFtZU9ic2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzRjA0MjYwRTc1QzhGQjAwN0U1
NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ0NEQ0RTIxMEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJM
UmVzcG9uc2VJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDb3JlVVJMUmVzcG9uc2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0
NTIxMEREMjVENjFFRkYwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDU3NzVFNDIwNDcyRjczMDA4RENFNUQgLyog
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTc3
NUU5MjA0NzMwM0IwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ2REM2NDYyNEEy
OUQ5QjAwNjFGMzkwIC8qIFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODEzNiw4ICs4MTM4LDggQEAKIAkJNDRBMjBE
QjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hdGhNTEVs
ZW1lbnRGYWN0b3J5Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTEVsZW1l
bnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ0QTI4
QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNYXRoTUxOYW1lcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9NYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0
NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUg
LyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXBwSGlnaGxpZ2h0TGlzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NEFFMDQ1QTI1NzlDRkZCMDBDNDJF
NjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQgLyogU2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdGlvblJhbmdlRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEIzOEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNlbGVjdGlvblJhbmdlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
QkQyQjM2MjUyNzc5NzgwMDU1RDk1QSAvKiBHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gIkdsb2JhbEV2ZW50SGFuZGxlcnMrU2VsZWN0aW9uLmlkbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTgzNiw4ICsxOTgzOCw5IEBACiAJCTQ0RTg4RTQ3MjM2OERG
MEYwMDlCNDg0NyAvKiBoaWdobGlnaHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRM
aXN0RGF0YS5jcHAgKi8sCi0JCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hs
aWdodExpc3REYXRhLmggKi8sCisJCQkJNDQ1MjEwREQyNUQ2MUVGRjAwM0EyRUQ4IC8qIEFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uLmggKi8sCisJCQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8q
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgKi8sCisJCQkJNDRBRTA0NUEyNTc5Q0ZGQjAwQzQy
RTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovLAogCQkJCTQ0MjUwNzA2MjU4MjlBMTQw
MEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmNwcCAqLywKIAkJCQk0NDI1MDcwNzI1ODI5
QTE0MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oICovLAogCQkJCTQ0RTg4RTU0MjM2
QTY2QTEwMDlCNDg0NyAvKiBIaWdobGlnaHQuY3BwICovLApAQCAtMzExNTgsNyArMzExNjEsOCBA
QAogCQkJCTU3MTUyQjVBMjFDQjNFODgwMDBDMzdDQSAvKiBBcGR1Q29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTcxNTJCNUMyMUNDMTkwMjAwMEMzN0NBIC8qIEFwZHVSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDcwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyog
QXBwSGlnaGxpZ2h0TGlzdERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0NTIxMERGMjVENjFG
MDAwMDNBMkVEOCAvKiBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDQyNTA3MDkyNTgyOUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdo
dFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAv
KiBBcHBsZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VD
NDMyMDA1OEE0NzcgLyogQXBwbGVQYXlDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwNGJmOGE1MjMxZDdkNzY4NTYw
MjJjNGI3ODk0Y2FiYWU2ZDRlZmI4Li5mYzhhOTRhMzM3MjA2NWVmMDYwNzc5NWIxN2NiMTY4ZTc1
MTY0OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgog
CisjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKQEAgLTUwMiw3ICs1MDMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRp
bWVDaG9vc2VyKERhdGVUaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12
b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdAogewog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYTc4OGI0NWFh
ZDE1ZjM0MGYyZWQwOTlkZDRiY2NmNWE1ZWM5M2MzZS4uMTRjNGE5Mjc3NTFiMDZiNjg0ODk0NWQw
NmNhMjMyODAyMTM1YjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAt
MTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNs
aWVudCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0
SW5mb3JtYXRpb24mKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBydW5PcGVuUGFu
ZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4
IGQzMDY5Y2VlMTM3OGVmMGQyNjUwMDRjMjc4MDVjZjdmMWM1YmUzODMuLmE1OWFhNDE2Mzg3Mjhj
ZGMzNGU2NTMxZTIyZTMxNGU1NTNlOWIwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKIAor
I2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29udGFjdEluZm8uaCIKICNpbmNsdWRlICJDb250YWN0c1JlcXVl
c3REYXRhLmgiCkBAIC01MTIsOSArNTEzLDkgQEAgdm9pZCBDaHJvbWU6OmRpc3BhdGNoVmlld3Bv
cnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWUKIH0K
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgQ2hyb21lOjp1cGRhdGVBcHBIaWdo
bGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGNvbnN0Cit2
b2lkIENocm9tZTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b24mIGluZm8pIGNvbnN0CiB7Ci0gICAgbV9jbGllbnQudXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UoV1RGTW92ZShkYXRhKSk7CisgICAgbV9jbGllbnQuc3RvcmVBcHBIaWdobGlnaHQoaW5mbyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZjgxNjc4NjIyNDlhZmVhNWQxZGFj
ZTg1ZDlkMWY3OTAyMGE4MWM5Ny4uZmI2ZjFjNzk3MGU2MGZmZmEyMzg2ZDVlMGM1YTViMjVkMDEz
MGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFBvcHVwTWVu
dUNsaWVudDsKIGNsYXNzIFBvcHVwT3BlbmluZ09ic2VydmVyOwogY2xhc3MgU2VhcmNoUG9wdXBN
ZW51OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgQ29udGFjdElu
Zm87CiBzdHJ1Y3QgQ29udGFjdHNSZXF1ZXN0RGF0YTsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzOwpAQCAtMTY1LDcgKzE2Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2Uo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3Q7CisgICAgdm9pZCBzdG9yZUFwcEhp
Z2hsaWdodChjb25zdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGNvbnN0OwogI2VuZGlmCiAK
ICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCBjZjJiM2YwZDlhYmFkMmU3MmVjYWRjN2UxNTNhOWIxNTE2
MzMxYzRkLi41MWIwOTdiNjk4MzQyZmVhNzk2ZTU0YmM5MjllOWQzZDdjM2FlZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTIyLDYgKzIyLDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodEluZm9y
bWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJ
bmZvLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCkBAIC0zMDQsNyArMzA1LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24mKSBjb25zdCA9IDA7CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGEzNjE3N2VlMGUyYmViYWRk
YjE5MmQzYjM3YjU0YzNiMTUzYjFiOWEuLjNiYzQwMjlmMzIxYTQwZDBhZDJiMWE4Y2Q4N2Q2MWQw
YTc3NDNhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
NjU2LDYgKzY1Niw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnU3Ry
aW5nJzogWyc8d3RmL3RleHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdQQUw6OlNlc3Npb25J
RCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1dG9wbGF5RXZl
bnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAorICAgICAgICAnV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQnOiBbJzxXZWJDb3JlL0FwcEhpZ2hsaWdodElu
Zm9ybWF0aW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
JzogWyc8V2ViQ29yZS9ET01QYXN0ZUFjY2Vzcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlJzogWyc8V2ViQ29yZS9Db2xvclNwYWNlLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlkYjRi
NjhjNDVkOGJmMGU2OTAyMzgzZTBmOGFhMjc4Mzc2OGE2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYzU1YmRiNTQ5YTdmN2M1NDdlZTA2MTNiYTA3YzA5NTkyNzI1N2RlYS4u
NGJlZjBiMDdkNGEwMGEyNmZiOGQ2MjBhMDY4NjI2N2M3YTc3ZTk4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTksNiArMTE5LDcg
QEAKICNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIgogI2ltcG9ydCAiX1dLVmlz
aXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRl
cm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BcHBIaWdobGlnaHRJbmZvcm1hdGlvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9y
Q29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CkBAIC0xNDIz
LDE0ICsxNDI0LDE0IEBAIC0gKHZvaWQpX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOihpZCA8X1dL
QXBwSGlnaGxpZ2h0RGVsZWdhdGU+KWRlbGVnYXRlCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0tICh2b2lkKV91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTooTlNEYXRhICopZGF0
YQorLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dEluZm9ybWF0aW9uJiloaWdobGlnaHRJbmZvcm1hdGlvbgogewogICAgIGF1dG8gZGVsZWdhdGUg
PSBzZWxmLl9hcHBIaWdobGlnaHREZWxlZ2F0ZTsKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KV0pCi0gICAgICAgIFtkZWxl
Z2F0ZSBfd2ViVmlldzpzZWxmIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOmRhdGFdOworICAg
ICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpo
aWdobGlnaHRJbmZvcm1hdGlvbi5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0K
ICNlbmRpZgogCkBAIC0yMDM1LDEyICsyMDM2LDIxIEBAIC0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlh
UGxheWJhY2sKICAgICBbc2VsZiByZXN1bWVBbGxNZWRpYVBsYXliYWNrOm5pbF07CiB9CiAKLS0g
KHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0RhdGEgKilkYXRhCistICh2b2lkKV9yZXN0
b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiB7CiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CisgICAgVmVjdG9yPFJlZjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CisKKyAgICBmb3IgKE5TRGF0YSAqaGlnaGxpZ2h0
IGluIGhpZ2hsaWdodHMpIHsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6YWxsb2NhdGUoaGlnaGxpZ2h0Lmxlbmd0aCk7CisgICAgICAgIGlmIChzaGFy
ZWRNZW1vcnkpIHsKKyAgICAgICAgICAgIFtoaWdobGlnaHQgZ2V0Qnl0ZXM6c2hhcmVkTWVtb3J5
LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5sZW5ndGhdOworICAgICAgICAgICAgYnVmZmVycy5h
cHBlbmQoKnNoYXJlZE1lbW9yeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgX3BhZ2UtPnJlc3Rv
cmVBcHBIaWdobGlnaHRzKGJ1ZmZlcnMpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7
CisgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodHMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5k
ZXggNDA5ZDhhZWQzMzMwMmVkZjlkMWUzZDhlMzk0MjIzYWEzZWRiOWQ3NC4uNjg3N2M2MWE3N2M2
ZjgxNzExMDQzZjY2NTM1NGU3M2NkYjQ4NmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTY3LDYgKzY3LDcg
QEAgY2xhc3MgQXR0YWNobWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBlbnVtIGNs
YXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlIDogdWludDhfdDsKIH0KQEAgLTI2NSw3ICsyNjYs
NyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLS0gKHZvaWQpX3VwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOihOU0Rh
dGEgKilkYXRhOworLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFw
cEhpZ2hsaWdodEluZm9ybWF0aW9uJilpbmZvOwogI2VuZGlmCiAKIC0gKHZvaWQpX2ludGVybmFs
RG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2Nr
IHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJPT0wpd2l0aG91dFdhaXRpbmdGb3JQYWludGlu
ZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOihCT09MKXdpdGhvdXRXYWl0aW5nRm9y
QW5pbWF0ZWRSZXNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5MjYyMzhhZWEwYTE0NzYxMThlNWE2OTA4NTQ3
YWQ3OWMzZjQ1NGQxLi5lNDVjYjFiYmJiZWJhMGIxYTc5NTU2YjhkNDMxMGM3NzgyNTU1YmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEhhc0JsYW5rT3ZlcmxheTopIEJPT0wgX2hhc0JsYW5r
T3ZlcmxheSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBcHBIaWdobGln
aHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGlnaHREZWxlZ2F0ZT4gX2FwcEhpZ2hsaWdodERl
bGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNEYXRhICopZGF0YSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClf
cmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopZGF0YSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAvKiEgQGFic3Ry
YWN0IFRoZSB0aGVtZSBjb2xvciBvZiB0aGUgYWN0aXZlIHBhZ2UuCiAgQGRpc2N1c3Npb24gVGhp
cyBpcyB0aGUgdmFsdWUgb2YgdGhlIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBvciBtb2RpZmllZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCmluZGV4IGUzNmU4Y2M0ZTVmNzA3OGEyNDQxMzVjZTJlNmZiN2RhOTBjZGUyMTcuLjM5ODgw
NGE3NmNjMjM1NjY3MTU5NzRkMmY4ZWU0ZmIzZWRmMWIzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTM4LDYgKzM4
LDggQEAgY2xhc3MgQXR0YWNobWVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRp
b247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzQsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgTlNUZXh0QWx0ZXJuYXRpdmVzICpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJD
b3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hU
UykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkgZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25z
dCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYpIGZpbmFsOwogI2VuZGlmCiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLm1tCmluZGV4IDMzYmJlOTI4NWE4OGY1MmU5MmE0NmQzZDAzODAyYjBlZjY5
Zjk1NTguLjM1MzI2NjdkZDIwY2IzMzE3YzIyYzhlOTVlNmM4OTI1MDc1ZjAzYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5t
bQpAQCAtMTIwLDEwICsxMjAsOSBAQCBOU1NldCAqUGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFs
aXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjp1cGRhdGVBcHBIaWdobGln
aHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhZ2VD
bGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hs
aWdodEluZm9ybWF0aW9uICZhcHBIaWdobGlnaHRJbmZvcm1hdGlvbikKIHsKLSAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOwotICAgIFttX3dlYlZpZXcgX3VwZGF0ZUFwcEhp
Z2hsaWdodHNTdG9yYWdlOm5zRGF0YS5nZXQoKV07CisgICAgW21fd2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6YXBwSGlnaGxpZ2h0SW5mb3JtYXRpb25dOwogfQogI2VuZGlmIC8vIEVOQUJMRShB
UFBfSElHSExJR0hUUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBlMTVmMTBjYTIwMTU5MjBhMTQyZTZkZWFjZDYyMjVk
NDY5ZWM4NTA4Li5lZGYwNGE0MDQ5NzQwZDAyYjRiZDA0YzkxNDc2NjNmNDVhM2YzMTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRBY3Rpdml0eVN0YXRl
VXBkYXRlQ29tcGxldGlvbkhhbmRsZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiB9CiAKICNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxp
Z2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dy
b3VwKQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5n
ZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0Miwx
NCArNTQyLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoY3JlYXRlTmV3R3JvdXAp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0
cyhjb25zdCBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CisgICAgVmVjdG9y
PFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzOwogCi0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoZGF0YVJlZmVyZW5jZSkpOworICAg
IGZvciAoYXV0byBoaWdobGlnaHQgOiBoaWdobGlnaHRzKSB7CisgICAgICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaGlnaGxpZ2h0LT5jcmVhdGVIYW5kbGUoaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgICAgICBtZW1vcnlI
YW5kbGVzLmFwcGVuZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwg
aGlnaGxpZ2h0LT5zaXplKCkgfSk7CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoV1RGTW92ZShtZW1vcnlIYW5kbGVzKSkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA5ODhiOWZhOGUwNDRk
ZWRjMGU0ZjBmMDk2MjliZWM2ODFkMDA0NDg0Li41OWIyMmNhM2FmZmU2OTY4YWNkOTA2NmY5YTVi
ODViYWQyMWQ2NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMDgs
NiArMTA4LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgOiB1aW50
OF90OwogZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDog
dWludDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAK
K3N0cnVjdCBBcHBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvOwogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0cmlidXRl
czsKQEAgLTE1MSw2ICsxNTIsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xh
c3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbCB7IE5vLCBZZXMgfTsKIAorc3RydWN0IEFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uOwogc3RydWN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb247CiBz
dHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbjsKQEAgLTU3NSw3ICs1NzcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0
aW9uJikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGNkM2JhY2MyMzA2NTlkYzk3YTE1YzNjNTYx
YzQ4MzU1YmVhOTdkNzAuLmY1NzdjM2ViYWRjZTljZGNlZmI2MmY5YTRmMWIyZjg4NjdlNjhkNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTQzLDYgKzE0
Myw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmgiCiAjaW5j
bHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdodEluZm9ybWF0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRp
b25IaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRh
VHJhbnNmZXIuaD4KQEAgLTY2ODUsMTEgKzY2ODYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0p
CiAgICAgfQogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBpZiAoaXRlbS5hY3Rpb24o
KSA9PSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb05ld0dyb3VwKSB7Ci0gICAgICAg
IGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodDo6WWVzKTsKKyAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdl
YkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0FkZEhp
Z2hsaWdodFRvQ3VycmVudEdyb3VwKSB7Ci0gICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2Vs
ZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOworICAgICAgICBjcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQ6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtOTgzOSwx
MSArOTg0MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXBwSGlnaGxpZ2h0
c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9y
bWF0aW9uJiBpbmZvKQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBkYXRhLmJ1ZmZl
cigpKTsKKyAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgIWluZm8uaGlnaGxpZ2h0LT5pc0Vt
cHR5KCkpOworCisgICAgcGFnZUNsaWVudCgpLnN0b3JlQXBwSGlnaGxpZ2h0KGluZm8pOwogCi0g
ICAgcGFnZUNsaWVudCgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigp
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGY0YzM5ZWI4ZTU0Mzg2ZTQ4YjhlMmM4MWVjOTkwNmVlNDQ4YjE3MTcuLjk3ZTIwNDVlYzI1ODg3
NTRlODhiMDA5OGFlM2FmZDIzYWRhNDRiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJD
b250ZXh0TWVudUNvbnRleHREYXRhLmgiCi0jaW5jbHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJ
RC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcg
QEAgY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0g
Y2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwog
ZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBA
QCBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1
aW50OF90OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0SW5mb3JtYXRpb247CiBzdHJ1Y3QgQXBwbGlj
YXRpb25NYW5pZmVzdDsKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI7CkBAIC0zNzQsNyArMzc1LDYgQEAgc3RydWN0IFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFVz
ZXJNZXNzYWdlOwogCi1lbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9v
bDsKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRv
IDogYm9vbDsKQEAgLTE4MjYsOSArMTgyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNJZk1v
Y2tEZXZpY2VzRW5hYmxlZENoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
LSAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCk7Ci0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRz
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCBjcmVhdGVBcHBI
aWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQpOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0SW5mb3JtYXRpb24mKTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZl
Y3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cyk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDkxOWJjOTg4ZTljNWZjYTcyZmZjOGMyMWEz
ZmMxNDMwYjI4YzA1YS4uNjQ3YmFjMDM5Yjg4ODAwNjUzZWQ5OGUyNGI1NjRlY2JiMDQ4YzJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNTM1LDcgKzUzNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBVcGRhdGVBcHBIaWdobGlnaHRzU3Rv
cmFnZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkKKyAgICBTdG9yZUFwcEhpZ2hsaWdodChz
dHJ1Y3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0SW5mb3JtYXRpb24gaW5mbykKICNlbmRpZgogCiAg
ICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpIFN5
bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1OGYwMTFjYTdkYTQ5OTNjZjE1M2Mx
ZDZmZTcyNDVhNGI4Li4yMTc3NzQ2ZWU1ZDkxYjI4ODc5ZDhkMjdmMGE3MTI4Y2FhMjE1MjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQu
aCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKLSNpbXBvcnQgIkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW1wb3J0ICJEb2N1bWVudEVkaXRpbmdDb250
ZXh0LmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIgogI2ltcG9ydCAiSW5z
ZXJ0VGV4dE9wdGlvbnMuaCIKQEAgLTg5NzUsMTIgKzg5NzQsMTIgQEAgLSAodm9pZClzZXRVcEFw
cEhpZ2hsaWdodE1lbnVzCiAKIC0gKHZvaWQpY3JlYXRlSGlnaGxpZ2h0SW5DdXJyZW50R3JvdXBX
aXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOworICAg
IF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKIH0KIAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRJ
bk5ld0dyb3VwV2l0aFJhbmdlOihpZClzZW5kZXIKIHsKLSAgICBfcGFnZS0+Y3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6
Olllcyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJD
b3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZTZl
YjA4YTljZGIzZDAwMDA2MDEzZGI1ODY1MjkyYWVjZTUyNmNhLi4wYjNlNDg3NDljZTk3YWQwNTFh
OWFjNzdiY2I2NTg5ZjVhZTI3MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTIwLDEyICsxMTkyMCw2IEBACiAJCQkJQ0RBQzIw
QjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
RDQ3NjVBMTI1Q0Y1NzQwMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUMyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1
OUQyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdl
c1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTg2MjVDQ0E0MTYwMDdBRjMxMiAv
KiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1
OTMyNUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTk0MjVDQ0NFOTMwMDdBRjMxMiAvKiBSZW1vdGVJ
bWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2NEIz
QTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGMwOWEyN2I3ZTdmNTNmYjQ0MjQ0NDcxYTZkNmI3NGZj
ZTA1ZDQzYTAuLjQ0OTg3NGEzYzBjY2VmNzNmNzExZDE3NDM0MWJhODkyYjJjMWJjOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMjQ0LDEwICsxMjQ0LDkgQEAgYm9vbCBXZWJDaHJvbWVD
bGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXks
IFZlY3RvcjwKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkgY29uc3QKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdG9yZUFwcEhp
Z2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHRJbmZvcm1hdGlvbiYgaW5mbykgY29u
c3QKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKTsKLSAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVcGRhdGVBcHBIaWdobGlnaHRz
U3RvcmFnZShidWZmZXIpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTdG9yZUFwcEhpZ2hsaWdodChpbmZvKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CmluZGV4IDAxNGJkY2YzOTM2NWZiYjdhZDcwOTNlY2M4NGMwOWRjMjcwZDBiNGYuLjg5ZGRlY2Zl
ZjMxMjBhNGUyMjEwMjZkZDRjZTU1Y2Y1ZjkwMmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAg
LTM0Nyw3ICszNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlQXV0b3BsYXlFdmVudChX
ZWJDb3JlOjpBdXRvcGxheUV2ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZs
YWdzPikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRh
dGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhp
Z2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA3NjNiY2FiODY5NjJjNzliNjcyZmMzMzMxMjNjNzE0ZWMyY2UxMzY2Li4xNGQ1M2Q0
ZjQ0NWFiNTczM2U0MGExYmNmMDBiNzI2ZDczNDliMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzI1MCw3ICs3MjUwLDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZXZva2VTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+PiYgc2FuZGJveEUKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLWJvb2wg
V2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQorYm9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdo
bGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
Y3JlYXRlTmV3R3JvdXApCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIApA
QCAtNzI2MywxNiArNzI2MywyMSBAQCBib29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRB
cHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSk7
Ci0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS51cGRhdGVBcHBIaWdobGlnaHRz
U3RvcmFnZSgpOworICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkuc3RvcmVBcHBI
aWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS52YWx1ZSgpKSwgY3Jl
YXRlTmV3R3JvdXApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVz
dG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBX
ZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGU+JiYgbWVtb3J5SGFuZGxlcykKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJl
ZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3Vt
ZW50KCkpOwogCi0gICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBw
SGlnaGxpZ2h0cyhTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hhbmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsKKyAg
ICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKCFz
aGFyZWRNZW1vcnkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZG9jdW1lbnQtPmFw
cEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJl
ZE1lbW9yeS0+c2l6ZSgpKSk7CisgICAgfQogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlYjUyNDg5MDI4MTUwMjZhNDdiYTlkOGM1
MGM3YzhmY2I0NWUxOWUwLi40NmMwM2FmNjc2MDU5ODQ1YWM1MzU5ZjY1MWVkMzRjNTE1MzgwYjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5o
IgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKLSNpbmNs
dWRlICJDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZv
LmgiCkBAIC0yMDQsNiArMjAzLDcgQEAgY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNz
IFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7Citl
bnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIGVudW0gY2xhc3Mg
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERyYWdBcHBsaWNh
dGlvbkZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWlu
dDhfdDsKQEAgLTEzOTYsOCArMTM5Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJh
bmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdo
bGlnaHRzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIGJvb2wgY3JlYXRlQXBwSGln
aGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0
KTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50
V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4Y2ZjYzQ5Y2Y2ZjM4MDc2YWY5YzMyMzE5M2Fk
Mzc1MzQ4YTQ0OGYwLi44MjczMTE2ZTgzMzE3ODI3MjBhYmQxZWQ2NTdhYWYyMjMyZTdiZjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTYyNCw4ICs2MjQsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wgY2FuVXNlKQogCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotICAgIENyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVt
OmJvb2wgV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkK
LSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YSkKKyAgICBDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdl
YkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQorICAgIFJl
c3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
PiBtZW1vcnlIYW5kbGVzKQogI2VuZGlmCiAKICAgICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0
U2Nyb2xsaW5nKFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkg
QXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMWE2NmNlOWRmZjgxYWI5MmUyZTdhOGViZjVhYzgw
OWE5YmQ5ZDJkMi4uN2NmZjFkZDI1M2UyYmQ4YWY4Zjk4ZmVkY2QwZGQ3MjMyZDNhMjEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3Rv
cmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9u
JikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0KaW5kZXggODZhZmEwZTlkMzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2Vk
NS4uNzI1Y2I1MGYwOTA4MmRmNjI5Y2U5YzU3ZDM3ZTdkMTIwNzM4ZGFjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29z
ZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVUaW1lCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1
cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBj
b25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNv
cmU6OkFwcEhpZ2hsaWdodEluZm9ybWF0aW9uJikgY29uc3QKIHsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420522</attachid>
            <date>2021-02-16 12:30:48 -0800</date>
            <delta_ts>2021-02-16 12:36:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221802-20210216123048.patch</filename>
            <type>text/plain</type>
            <size>71322</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uN2Q1ZjFmMTYxNzhlNWJlM2UwZjg0YTExMGQxNjlm
MzUxMGU1N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBQaXBlIHRocm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxh
eSwgYW5kIHVwZGF0ZSB0byBhbGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBt
b3JlIGVhc2lseS4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmguCisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjEtMDItMTEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybmluZyBzUkdCIGZyb20g
Q0cgY29sb3Igc3BhY2UgZnVuY3Rpb25zIG9uIGZhaWx1cmUgaXMgdG9vIGVycm9yIHByb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM0Y2E5MDljN2IzYTYxNWI4YjU0NTUzYjcyNmQ5ZDZiYzAxODhkMTUuLmE0MDU4
OWExYmY3NTYxMTUwMjgyM2FmMGJlYmE3OGNmZGI1ZGIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgQXBwIEhpZ2hsaWdodHMgQVBJIHRvIG9wZXJhdGUgaW4gdGVy
bXMgb2YgYSBzaW5nbGUgc2VyaWFsaXplZCBoaWdobGlnaHQgYXQgYSB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFs
IGRhdGEgbmVlZGVkIGZvciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGlu
Zm9ybWF0aW9uIHRvIGJlIGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEluQ3VycmVudEdyb3Vw
V2l0aFJhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodElu
TmV3R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIxLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjT1NdIEVuYWJsZSBBdWRpbyBDYXB0dXJlIGluIEdQVVByb2Nlc3MgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3
ZDg0ZTc1ZTA2ODA0MDUuLmViMzk4NmQ0ZDM0ZjA2MTA2MGFiNWU4YWE3OWY3YmExNTY3ZDIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
MiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSBBcHAgSGlnaGxpZ2h0cyBBUEkgdG8gb3BlcmF0ZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSBz
ZXJpYWxpemVkIGhpZ2hsaWdodCBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorCiAy
MDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2
ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1
OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li5iMzNhMzY5MTdiYTIyNGJkZGY2MmQ2MDU3NTA0
MGQyZDdlYzk2Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24v
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAogICAgIE1v
ZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5oCiAgICAgTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxp
Z2h0UmVnaXN0ZXIuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMzlkY2ZlNjI0NDIzMDVhZGRmNDVjMDE2YzI5YTI4
YWU4MDRjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9
OworCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBoaWdobGlnaHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodD4gZGVjb2RlKERlY29kZXImKTsKK307CisK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4oaGlnaGxpZ2h0LT5zaXplKCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hsaWdodC0+ZGF0YUFzVUludDhQ
dHIoKSksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKworICAgIGVuY29kZXIgPDwgdGV4dDsKKwor
ICAgIGVuY29kZXIgPDwgaXNOZXdHcm91cDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPEFwcEhpZ2hsaWdodD4gQXBwSGlnaGxpZ2h0OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKworICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4g
bGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48
dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQo
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gaGlnaGxpZ2h0OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0
LnNpemUoKSwgMSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxPcHRpb25hbDxTdHJpbmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAo
IXRleHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdH
cm91cCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlz
TmV3R3JvdXAgfX07Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dExpc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodExpc3REYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0ZDU5YmIz
NWRkYTE0YzZjZmRkOGI3ZmRlNDQ4NjA1ZjQwYjk0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExp
c3REYXRhLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2luY2x1ZGUg
Ik5vZGUuaCIKLSNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKLSNpbmNsdWRlICJTdGF0
aWNSYW5nZS5oIgotI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKLQotQXBwSGlnaGxpZ2h0TGlzdERhdGEgQXBwSGlnaGxp
Z2h0TGlzdERhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBh
dXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdo
dExpc3REYXRhPiBkYXRhOwotICAgIGRlY29kZXIgPj4gZGF0YTsKLSAgICByZXR1cm4gZGF0YSA/
ICpkYXRhIDogQXBwSGlnaGxpZ2h0TGlzdERhdGEge3sgfX07Ci19Ci0KLVJlZjxTaGFyZWRCdWZm
ZXI+IEFwcEhpZ2hsaWdodExpc3REYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgKnRoaXM7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dExpc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRMaXN0RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTNiMjE0ZGI5Nzg5
MjA5NDRjZGRiMWZiMGVhMTY1ZDdkYTZjZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodExpc3REYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBBcHBIaWdo
bGlnaHRSYW5nZURhdGEgewotcHVibGljOgotICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7
Ci0gICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Ci0g
ICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9
OwotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVy
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAg
ICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAg
ICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92
ZShkYXRhKSkKLSAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCi0gICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCi0g
ICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHRleHREYXRhKGRhdGEp
Ci0gICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIu
aWRlbnRpZmllciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBv
dGhlci50ZXh0RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgfTsK
LQotICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKLQotICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRl
ZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhp
Z2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVy
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKLSAgICAgICAgLCBt
X3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICAgICAsIG1fc3Rh
cnRPZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShl
bmRDb250YWluZXIpKQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3Qg
Tm9kZVBhdGgmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1f
dGV4dCh0ZXh0KQotICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCi0g
ICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRh
aW5lcihlbmRDb250YWluZXIpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHQ7IH0KLSAgICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0Q29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUo
RGVjb2RlciYpOwotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgTm9kZVBhdGgg
bV9zdGFydENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwotICAg
IE5vZGVQYXRoIG1fZW5kQ29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9
OwotfTsKLQotY2xhc3MgQXBwSGlnaGxpZ2h0TGlzdERhdGEgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBcHBIaWdobGln
aHRMaXN0RGF0YSBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0KLSAgICBBcHBIaWdobGln
aHRMaXN0RGF0YShjb25zdCBBcHBIaWdobGlnaHRMaXN0RGF0YSYpID0gZGVmYXVsdDsKLSAgICBB
cHBIaWdobGlnaHRMaXN0RGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0
YShWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIGFubm90YXRpb25SYW5nZXMpCi0gICAg
ICAgIDogbV9hbm5vdGF0aW9uUmFuZ2VzKFdURk1vdmUoYW5ub3RhdGlvblJhbmdlcykpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiByYW5n
ZXMoKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXM7IH0KLSAgICB2b2lkIHNldFJh
bmdlcyhWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRp
b25SYW5nZXMgPSBXVEZNb3ZlKHJhbmdlcyk7IH0KLSAgICB2b2lkIGFkZFJhbmdlcyhWZWN0b3I8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMuYXBw
ZW5kVmVjdG9yKFdURk1vdmUocmFuZ2VzKSk7IH0KLQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRv
U2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5ub3RhdGlvblJhbmdlcy5zaXplKCk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXMuaXNFbXB0eSgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOwotCi1wcml2YXRlOgotCi0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gbV9hbm5vdGF0aW9uUmFuZ2VzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Ci0gICAg
ZW5jb2RlciA8PCBub2RlTmFtZTsKLSAgICBlbmNvZGVyIDw8IHRleHREYXRhOwotICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Ci19Ci0KLXRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21w
b25lbnQ+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKLSAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKLSAg
ICBkZWNvZGVyID4+IG5vZGVOYW1lOwotICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwotICAgIGRl
Y29kZXIgPj4gdGV4dERhdGE7Ci0gICAgaWYgKCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Ci0gICAgZGVj
b2RlciA+PiBwYXRoSW5kZXg7Ci0gICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1v
dmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
KnBhdGhJbmRleCkgfX07Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IG1fdGV4dDsKLSAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7Ci0gICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Ci0gICAgZW5j
b2RlciA8PCBtX2VuZENvbnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihtX2VuZE9mZnNldCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7Ci0gICAgZGVjb2Rl
ciA+PiB0ZXh0OwotICAgIGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKLSAgICBkZWNvZGVyID4+
IHN0YXJ0Q29udGFpbmVyOwotICAgIGlmICghc3RhcnRDb250YWluZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7Ci0g
ICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKLSAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRh
aW5lcjsKLSAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKLSAgICBpZiAoIWVuZENvbnRhaW5l
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBlbmRPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7Ci0gICAgaWYgKCFlbmRPZmZz
ZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLQotICAgIHJldHVybiB7ewotICAg
ICAgICBXVEZNb3ZlKCp0ZXh0KSwKLSAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAot
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKLSAgICAgICAgV1RG
TW92ZSgqZW5kQ29udGFpbmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRP
ZmZzZXQpLAotICAgIH19OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhp
Z2hsaWdodExpc3REYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IG1fYW5ub3RhdGlvblJhbmdlczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlzdERhdGE+IEFwcEhpZ2hsaWdodExpc3REYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPj4gYW5ub3RhdGlvblJhbmdlczsKLSAgICBkZWNvZGVyID4+IGFubm90YXRp
b25SYW5nZXM7Ci0gICAgaWYgKCFhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmFubm90YXRpb25SYW5nZXMpIH19
OwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzE0ZWFlZDc4MGVlMzY3M2ZjMDA0NjE0NTg0ZWFjNGY3NDFkMTVjYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIK
KworI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlF
bGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRN
YXJrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgorI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAg
IGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBkYXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0
YTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVy
OworICAgIGVuY29kZXIgPDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9u
ZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHRE
YXRhOworICAgIGVuY29kZXIgPDwgcGF0aEluZGV4OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7CisgICAgZGVjb2Rl
ciA+PiBub2RlTmFtZTsKKyAgICBpZiAoIW5vZGVOYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAgICBkZWNvZGVyID4+
IHRleHREYXRhOworICAgIGlmICghdGV4dERhdGEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gcGF0aEluZGV4OworICAgIGRlY29kZXIgPj4g
cGF0aEluZGV4OworICAgIGlmICghcGF0aEluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2Rl
TmFtZSksIFdURk1vdmUoKnRleHREYXRhKSwgKnBhdGhJbmRleCB9fTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV90ZXh0OworICAgIGVuY29kZXIg
PDwgbV9zdGFydENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IG1fc3RhcnRPZmZzZXQ7CisgICAg
ZW5jb2RlciA8PCBtX2VuZENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IG1fZW5kT2Zmc2V0Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAo
IXRleHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxOb2Rl
UGF0aD4gc3RhcnRDb250YWluZXI7CisgICAgZGVjb2RlciA+PiBzdGFydENvbnRhaW5lcjsKKyAg
ICBpZiAoIXN0YXJ0Q29udGFpbmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIGRlY29kZXIgPj4gc3RhcnRP
ZmZzZXQ7CisgICAgaWYgKCFzdGFydE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7CisgICAgZGVjb2RlciA+
PiBlbmRDb250YWluZXI7CisgICAgaWYgKCFlbmRDb250YWluZXIpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIGRl
Y29kZXIgPj4gZW5kT2Zmc2V0OworICAgIGlmICghZW5kT2Zmc2V0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUo
KnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIpLCAq
ZW5kT2Zmc2V0IH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWY4Y2Y3NDU3NjYyNmZiZjg2NTAxYjkxYTVmZDgyYTBj
YWRiZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBBcHBIaWdo
bGlnaHRSYW5nZURhdGEgeworV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7
CisgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Cisg
ICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKKyAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9
OworCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVy
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAg
ICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAg
ICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92
ZShkYXRhKSkKKyAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCisgICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCisg
ICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCisgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEp
CisgICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIu
aWRlbnRpZmllciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBv
dGhlci50ZXh0RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhl
cikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsK
KworICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKKworICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRl
ZmF1bHQ7CisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OworICAgIEFwcEhp
Z2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVy
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICAgICAgLCBt
X3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQorICAgICAgICAsIG1fc3Rh
cnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShl
bmRDb250YWluZXIpKQorICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7Cisg
ICAgfQorCisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3Qg
Tm9kZVBhdGgmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1f
dGV4dCh0ZXh0KQorICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCisg
ICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRh
aW5lcihlbmRDb250YWluZXIpCisgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHQ7IH0KKyAgICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0Q29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgZW5kT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUo
RGVjb2RlciYpOworCisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV90ZXh0OworICAgIE5vZGVQYXRoIG1fc3RhcnRD
b250YWluZXI7CisgICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICBOb2RlUGF0
aCBtX2VuZENvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKK307CisK
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGMz
YjhiYjc3YzBjNGY0ZTVjOTk4NzE3OTIzOTJlM2RkZDhkMTkxODYuLmUzZjA4ZGZhMDk5NzMzMzk2
YzljODUyNmNmMmU3YTU5NzA2N2RjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
IgogCi0jaW5jbHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKKyNpbmNsdWRlICJBcHBIaWdo
bGlnaHQuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIgpAQCAtNDAsMTEgKzQxLDEyIEBACiAjaW5jbHVkZSAiU3RhdGljUmFuZ2Uu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dGV4dFByZXZpZXdMZW5ndGggPSAxMDA7CisKIHN0YXRpYyBSZWZQdHI8Tm9kZT4gZmluZE5vZGVC
eVBhdGhJbmRleChjb25zdCBOb2RlJiBwYXJlbnQsIHVuc2lnbmVkIHBhdGhJbmRleCwgY29uc3Qg
U3RyaW5nJiBub2RlTmFtZSkKIHsKICAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KHBhcmVudCkp
CkBAIC0xOTYsOCArMTk4LDEwIEBAIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQ
YXRoIG1ha2VOb2RlUGF0aChSZWZQdHI8Tm9kZT4mJiBub2RlKQogCiBzdGF0aWMgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhIGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBTdGF0aWNSYW5n
ZSYgcmFuZ2UpCiB7CisgICAgYXV0byB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKKyAgICB0ZXh0
LnRydW5jYXRlKHRleHRQcmV2aWV3TGVuZ3RoKTsKICAgICByZXR1cm4gewotICAgICAgICBwbGFp
blRleHQocmFuZ2UpLAorICAgICAgICB0ZXh0LAogICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdl
LnN0YXJ0Q29udGFpbmVyKCkpLAogICAgICAgICByYW5nZS5zdGFydE9mZnNldCgpLAogICAgICAg
ICBtYWtlTm9kZVBhdGgoJnJhbmdlLmVuZENvbnRhaW5lcigpKSwKQEAgLTIxMCw0OCArMjE0LDM1
IEBAIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OkFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCkKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBIaWdobGln
aHQoU3RhdGljUmFuZ2UmIHJhbmdlLCBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dy
b3VwKQogewotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7Ci0KLSAgICBp
ZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVB
cHBIaWdobGlnaHRSYW5nZURhdGEocmFuZ2UpOworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsK
IAotICAgIGlmICghbV9kb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm47CisgICAgaWYg
KCFkYXRhLnRleHQoKS5pc0VtcHR5KCkpCisgICAgICAgIHRleHQgPSBkYXRhLnRleHQoKTsKIAot
ICAgIGlmIChhdXRvIGFwcEhpZ2hsaWdodFJlZ2lzdGVyID0gbV9kb2N1bWVudC0+YXBwSGlnaGxp
Z2h0UmVnaXN0ZXJJZkV4aXN0cygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDog
YXBwSGlnaGxpZ2h0UmVnaXN0ZXItPm1hcCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJh
bmdlRGF0YSA6IGhpZ2hsaWdodC52YWx1ZS0+cmFuZ2VzRGF0YSgpKQotICAgICAgICAgICAgICAg
IGRhdGEuYXBwZW5kKGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShyYW5nZURhdGEtPnJhbmdl
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEgbGlzdERhdGEg
eyBXVEZNb3ZlKGRhdGEpIH07CisgICAgQXBwSGlnaGxpZ2h0IGhpZ2hsaWdodCA9IHtkYXRhLnRv
U2hhcmVkQnVmZmVyKCksIHRleHQsIGlzTmV3R3JvdXB9OwogCi0gICAgbV9kb2N1bWVudC0+cGFn
ZSgpLT5jaHJvbWUoKS51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShsaXN0RGF0YS50b1NoYXJl
ZEJ1ZmZlcigpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGln
aGxpZ2h0KGhpZ2hsaWdodCk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9y
ZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitib29sIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7Ci0gICAgYXV0byBhcHBIaWdobGlnaHRMaXN0RGF0YSA9IEFwcEhpZ2hsaWdodExpc3RE
YXRhOjpjcmVhdGUoYnVmZmVyKTsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiB1
bnJlc3RvcmVkUmFuZ2VzOwotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlc3Rv
cmVkUmFuZ2VzOworICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1l
bnQuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtX2RvY3VtZW50
LmdldCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvJiBhcHBIaWdobGlnaHRMaXN0
RGF0YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdlcygpKSB7Ci0gICAgICAgIGF1dG8gcmFu
Z2UgPSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERhdGEsICpzdHJvbmdEb2N1bWVudCk7Ci0g
ICAgICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAgIHVucmVzdG9yZWRSYW5nZXMuYXBwZW5k
KGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
CisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ry
b25nRG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVkUmFuZ2VzLmFwcGVuZChhcHBIaWdobGln
aHRMaXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3Rl
cigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOwotICAgIH0K
KyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGln
aHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKKworICAgIHJldHVybiB0cnVlOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVhZDY0MDI0MjljZWRjNGJlOTI2ZjZjZGEw
OWU0NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1OWYzOTA5ODU2MTY2YTc3NDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRMaXN0RGF0YTsKIGNs
YXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0U3RvcmFnZSA6IFJlZkNvdW50
ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2UmICwg
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2
YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRl
OGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02NCw3ICs2NCw3
IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9j
YXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKK01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRS
ZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZTNiYTJk
OGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBiLi5mMDg5MDg5NzJlMWQyYzQ1NWJiMDk2
NzY5MzJkNjBkMTkwOTJmNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYgKzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1
ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyNTA3MDcyNTgyOUExNDAwQzA5MzY4IC8q
IEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNFMDA0NkQ0MDEgLyogSGlnaGxpZ2h0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIz
NkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQyNTc1QThBNTAwNDZENDAxIC8qIEhpZ2hs
aWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyogSGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NDUyMTBERjI1
RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGln
aGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDQ1Nzc1RTUyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTc3
NUU0MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ2M0NGNjgy
MjEyRkE2ODAwMUE4NTc3IC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBB
NEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ2NUQ3QkQy
NTM2RDA1RTAwMTY2NjZEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8q
IFNlbGVjdGlvblJhbmdlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjM2LDcgKzEyMzcsNyBAQAogCQk0NEEyMERCOTBGODQxNjZDMDBC
M0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEy
OEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJ
NDRBMjhBQUYxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0Ig
LyogTWF0aE1MTmFtZXMuaCAqLzsgfTsKLQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFw
cEhpZ2hsaWdodExpc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERh
dGEuaCAqLzsgfTsKKwkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovOyB9
OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0Qy
MTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICov
OyB9OwogCQk0NEUzNDlGOTI0NkY0RTE5MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMzQ5Rjcy
NDZGNERDNzAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODExNyw2ICs4MTE4LDcgQEAKIAkJ
NDQzN0M0QTkyNEUyQUU1RjAwMDk1MTI4IC8qIExhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMYXp5TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDNGMDQyNjBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ1MjEwREQyNUQ2MUVGRjAwM0Ey
RUQ4IC8qIEFwcEhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBIaWdobGlnaHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1Nzc1RTQyMDQ3
MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ0NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAvKiBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzYsOCArODEz
OCw4IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFF
OTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKLQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExp
c3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcEhpZ2hs
aWdodExpc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRBRTA0NUEy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0
NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlv
blJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25S
YW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjkyNTM2OUE4
ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFsRXZlbnRIYW5k
bGVycytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5p
ZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MzYsOCArMTk4MzgsOSBAQAog
CQk0NEU4OEU0NzIzNjhERjBGMDA5QjQ4NDcgLyogaGlnaGxpZ2h0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUg
LyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwICovLAotCQkJCTQ0QUUwNDVBMjU3OUNGRkIwMEM0
MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oICovLAorCQkJCTQ0NTIxMEREMjVENjFFRkYw
MDNBMkVEOCAvKiBBcHBIaWdobGlnaHQuaCAqLywKKwkJCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJF
NjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCAqLywKKwkJCQk0NEFFMDQ1QTI1NzlDRkZC
MDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi8sCiAJCQkJNDQyNTA3MDYyNTgy
OUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwICovLAogCQkJCTQ0MjUwNzA3
MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmggKi8sCiAJCQkJNDRFODhF
NTQyMzZBNjZBMTAwOUI0ODQ3IC8qIEhpZ2hsaWdodC5jcHAgKi8sCkBAIC0zMTE1OCw3ICszMTE2
MSw4IEBACiAJCQkJNTcxNTJCNUEyMUNCM0U4ODAwMEMzN0NBIC8qIEFwZHVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NzE1MkI1QzIxQ0MxOTAyMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURENzA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5k
Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2
NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ1MjEwREYy
NUQ2MUYwMDAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDRB
RTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDQyNTA3MDkyNTgyOUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAvKiBBcHBs
ZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VDNDMyMDA1
OEE0NzcgLyogQXBwbGVQYXlDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwNGJmOGE1MjMxZDdkNzY4NTYwMjJjNGI3
ODk0Y2FiYWU2ZDRlZmI4Li4yYjM5YTBkNjViZDg3YjM2OTA3ZWE2NjcyZTBmOTUxZjkyNGFhYmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogCisjaW5j
bHVkZSAiQXBwSGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZVByb3ZpZGVyLmgiCkBAIC01MDIsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERhdGVUaW1l
Q2hvb3Nlcj4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGVUaW1lQ2hvb3NlcihEYXRlVGkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBFbXB0eUNocm9tZUNs
aWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgY29uc3QKK3ZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNv
bnN0IEFwcEhpZ2hsaWdodCYpIGNvbnN0CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBhNzg4YjQ1YWFkMTVmMzQwZjJlZDA5OWRkNGJjY2Y1YTVlYzkz
YzNlLi4xZjUxZTliM2RhMjY3NTA1ODU2YWFjYzJjYTJhZWFjMDM4YjY0NzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgRW1wdHlD
aHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9yZUFw
cEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHQmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAg
ICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCmluZGV4IGQzMDY5Y2VlMTM3OGVmMGQyNjUwMDRjMjc4MDVjZjdmMWM1YmUz
ODMuLmViOGMwYTdmY2ViNjY0MTU3YzJhMGViOGRkNjQyNGM0ZjNlYTY1MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDaHJvbWUuaCIKIAorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJbmZvLmgiCiAjaW5jbHVkZSAiQ29udGFj
dHNSZXF1ZXN0RGF0YS5oIgpAQCAtNTEyLDkgKzUxMyw5IEBAIHZvaWQgQ2hyb21lOjpkaXNwYXRj
aFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJn
dW1lCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIENocm9tZTo6dXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBj
b25zdAordm9pZCBDaHJvbWU6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFwcEhpZ2hsaWdodCYg
aGlnaGxpZ2h0KSBjb25zdAogewotICAgIG1fY2xpZW50LnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlKFdURk1vdmUoZGF0YSkpOworICAgIG1fY2xpZW50LnN0b3JlQXBwSGlnaGxpZ2h0KGhpZ2hs
aWdodCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZjgxNjc4NjIyNDlhZmVh
NWQxZGFjZTg1ZDlkMWY3OTAyMGE4MWM5Ny4uMWU3MTQ2YjU2ZGJkOWQ4YjU0Y2E2MWM0ZDcxYjI3
NzY5OGY5YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKIGNsYXNzIFBvcHVwT3BlbmluZ09ic2VydmVyOwogY2xhc3MgU2VhcmNo
UG9wdXBNZW51OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0Owogc3RydWN0IENvbnRhY3RJbmZvOwog
c3RydWN0IENvbnRhY3RzUmVxdWVzdERhdGE7CiBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVyczsKQEAgLTE2NSw3ICsxNjYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0OworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgQXBwSGlnaGxpZ2h0JikgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgcnVuT3Bl
blBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGNmMmIzZjBkOWFiYWQyZTcyZWNhZGM3ZTE1M2E5YjE1MTYzMzFjNGQuLmE5YTNiMDdl
ZGIwOGU5ZTViZWQ5NWNlNGVkZTk3OTgxZDcwNTk0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIFdpZGdldDsKIGNsYXNzIE1lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOwogI2VuZGlmCiAKK3N0cnVj
dCBBcHBIaWdobGlnaHQ7CiBzdHJ1Y3QgQ29udGFjdHNSZXF1ZXN0RGF0YTsKIHN0cnVjdCBDb250
ZW50UnVsZUxpc3RSZXN1bHRzOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7CkBA
IC0zMDQsNyArMzA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JikgY29uc3QgPSAwOwog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29z
ZXImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBh
MzYxNzdlZTBlMmJlYmFkZGIxOTJkM2IzN2I1NGMzYjE1M2IxYjlhLi5mZTdmNWY5YTdhYWI1ZGY4
ODgwYjliYjQ0Y2VjNjk4YjM0ZTk1N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTY1Niw2ICs2NTYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBl
KToKICAgICAgICAgJ1N0cmluZyc6IFsnPHd0Zi90ZXh0L1dURlN0cmluZy5oPiddLAogICAgICAg
ICAnUEFMOjpTZXNzaW9uSUQnOiBbJzxwYWwvU2Vzc2lvbklELmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1dG9wbGF5RXZlbnQuaD4nXSwK
KyAgICAgICAgJ1dlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0JzogWyc8V2ViQ29y
ZS9BcHBIaWdobGlnaHQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2UnOiBbJzxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UnOiBbJzxXZWJDb3JlL0NvbG9yU3BhY2UuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
OWRiNGI2OGM0NWQ4YmYwZTY5MDIzODNlMGY4YWEyNzgzNzY4YTYzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNs
YXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBjNTViZGI1NDlhN2Y3YzU0N2VlMDYxM2JhMDdjMDk1OTI3MjU3
ZGVhLi5kY2I2MjQyNzI1OGQ3YmEyMjg4MzkzYmE5OWNlMGUwYzQ4NjI0ZDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTExOSw2ICsx
MTksNyBAQAogI2ltcG9ydCAiX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgiCiAjaW1wb3J0ICJf
V0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2ll
c0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcEhpZ2hsaWdodC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2Eu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CkBAIC0xNDIzLDE0ICsx
NDI0LDE0IEBAIC0gKHZvaWQpX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOihpZCA8X1dLQXBwSGln
aGxpZ2h0RGVsZWdhdGU+KWRlbGVnYXRlCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
Ci0tICh2b2lkKV91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTooTlNEYXRhICopZGF0YQorLSAo
dm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGln
aGxpZ2h0SW5mb3JtYXRpb24KIHsKICAgICBhdXRvIGRlbGVnYXRlID0gc2VsZi5fYXBwSGlnaGxp
Z2h0RGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOildKQotICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2Vs
ZiB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpkYXRhXTsKKyAgICAgICAgW2RlbGVnYXRlIF93
ZWJWaWV3OnNlbGYgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6aGlnaGxpZ2h0SW5mb3JtYXRp
b24uaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApAQCAtMjAz
NSwxMiArMjAzNiwyMSBAQCAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiAgICAgW3Nl
bGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogfQogCi0tICh2b2lkKV9yZXN0b3JlQXBw
SGlnaGxpZ2h0czooTlNEYXRhICopZGF0YQorLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogewogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSkpOworICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
PiBidWZmZXJzOworCisgICAgZm9yIChOU0RhdGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKSB7
CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlKGhpZ2hsaWdodC5sZW5ndGgpOworICAgICAgICBpZiAoc2hhcmVkTWVtb3J5KSB7CisgICAg
ICAgICAgICBbaGlnaGxpZ2h0IGdldEJ5dGVzOnNoYXJlZE1lbW9yeS0+ZGF0YSgpIGxlbmd0aDpo
aWdobGlnaHQubGVuZ3RoXTsKKyAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1v
cnkpOworICAgICAgICB9CisgICAgfQorICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhi
dWZmZXJzKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJB
TShoaWdobGlnaHRzKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDQwOWQ4YWVkMzMzMDJl
ZGY5ZDFlM2Q4ZTM5NDIyM2FhM2VkYjlkNzQuLjJhNWZjMzkyZDJlZWQzZmJlZGIxYjBiYjU5OTFl
OGZhNDc1NTQ4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEF0dGFjaG1l
bnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBBcHBIaWdobGlnaHQ7CiBzdHJ1
Y3QgRXhjZXB0aW9uRGV0YWlsczsKIGVudW0gY2xhc3MgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUg
OiB1aW50OF90OwogfQpAQCAtMjY1LDcgKzI2Niw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClfdXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0YSAqKWRhdGE7CistICh2b2lkKV9zdG9yZUFw
cEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JilpbmZvOwogI2VuZGlmCiAK
IC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4p
KHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJPT0wpd2l0aG91
dFdhaXRpbmdGb3JQYWludGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOihCT09M
KXdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5MjYyMzhhZWEw
YTE0NzYxMThlNWE2OTA4NTQ3YWQ3OWMzZjQ1NGQxLi5lNDVjYjFiYmJiZWJhMGIxYTc5NTU2Yjhk
NDMxMGM3NzgyNTU1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBmb3IgdGhpcyBw
cm9wZXJ0eS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEhhc0JsYW5rT3Zlcmxh
eTopIEJPT0wgX2hhc0JsYW5rT3ZlcmxheSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0
dGVyPV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGlnaHREZWxlZ2F0
ZT4gX2FwcEhpZ2hsaWdodERlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNE
YXRhICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+
ICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiAvKiEgQGFic3RyYWN0IFRoZSB0aGVtZSBjb2xvciBvZiB0aGUgYWN0aXZlIHBhZ2Uu
CiAgQGRpc2N1c3Npb24gVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIG1vc3QgcmVjZW50bHkgY3Jl
YXRlZCBvciBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGUzNmU4Y2M0ZTVmNzA3OGEyNDQxMzVjZTJlNmZi
N2RhOTBjZGUyMTcuLmMxNGY3N2E4NmFlNTAzM2E4ZTNjZGE1NWMwOTdhZWZmMzdhOWZlZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENv
Y29hLmgKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgQXR0YWNobWVudDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworCitzdHJ1Y3QgQXBw
SGlnaGxpZ2h0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDcgKzc2LDcgQEAgcHVi
bGljOgogICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2
ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgZmluYWw7CiAKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JikgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVu
dEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0KaW5kZXggMzNiYmU5Mjg1YTg4ZjUyZTkyYTQ2ZDNkMDM4MDJiMGVmNjlmOTU1
OC4uZGJmMzQzNjBiMmUxZjI5YmEwZDUwN2I4MzAzMTBkMmQ0MDMyNDliMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBA
IC0xMjAsMTAgKzEyMCw5IEBAIE5TU2V0ICpQYWdlQ2xpZW50SW1wbENvY29hOjpzZXJpYWxpemFi
bGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCi12b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hsaWdodHNT
dG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFnZUNsaWVu
dEltcGxDb2NvYTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
ICZoaWdobGlnaHQpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsK
LSAgICBbbV93ZWJWaWV3IF91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpuc0RhdGEuZ2V0KCld
OworICAgIFttX3dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0OmhpZ2hsaWdodF07CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGUxNWYxMGNhMjAxNTkyMGEx
NDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLmVkZjA0YTQwNDk3NDBkMDJiNGJkMDRjOTE0NzY2M2Y0
NWEzZjMxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFk
ZEFjdGl2aXR5U3RhdGVVcGRhdGVDb21wbGV0aW9uSGFuZGxlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2kKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQgY3JlYXRlTmV3R3JvdXApCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0
SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0
ZU5ld0dyb3VwKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTQyLDE0ICs1NDIsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShj
cmVhdGVOZXdHcm91cCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdo
dHMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEg
fTsKKyAgICBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXM7CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhkYXRhUmVm
ZXJlbmNlKSk7CisgICAgZm9yIChhdXRvIGhpZ2hsaWdodCA6IGhpZ2hsaWdodHMpIHsKKyAgICAg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBoaWdobGlnaHQtPmNyZWF0
ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworCisg
ICAgICAgIG1lbW9yeUhhbmRsZXMuYXBwZW5kKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RG
TW92ZShoYW5kbGUpLCBoaWdobGlnaHQtPnNpemUoKSB9KTsKKyAgICB9CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhXVEZNb3ZlKG1lbW9yeUhhbmRs
ZXMpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IDk4OGI5ZmE4ZTA0NGRlZGMwZTRmMGYwOTYyOWJlYzY4MWQwMDQ0ODQuLmM4ODQxOTlmNGI2OTNj
MmJjZGE3ZjUzNzI5Y2RjYTNiMzQyNmYxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dM
aWZldGltZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNz
YWxBbmltYXRpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
IDogdWludDhfdDsKIAorc3RydWN0IEFwcEhpZ2hsaWdodDsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9w
dXBJbmZvOwogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0cmli
dXRlczsKQEAgLTU3NSw3ICs1NzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjZDNiYWNjMjMwNjU5ZGM5N2ExNWMzYzU2MWM0ODM1NWJlYTk3
ZDcwLi4wMzUwMjg5OWZkZTViY2NjZTBkY2E0NDAwN2I3NDNmOTViNzVhNmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYldo
ZWVsRXZlbnRDb2FsZXNjZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9BcHBIaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcElt
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgpAQCAtNjY4NSwx
MSArNjY4NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Y29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0FkZEhpZ2hsaWdodFRvTmV3R3JvdXApIHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMpOworICAgICAgICBj
cmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQ6Olllcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0u
YWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50R3JvdXAp
IHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0
ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC05ODM5LDExICs5ODQwLDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgT3B0aW9uYWw8CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0gICAgTUVTU0FH
RV9DSEVDSyhtX3Byb2Nlc3MsIGRhdGEuYnVmZmVyKCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCAhaGlnaGxpZ2h0LmhpZ2hsaWdodC0+aXNFbXB0eSgpKTsKKworICAgIHBhZ2VDbGll
bnQoKS5zdG9yZUFwcEhpZ2hsaWdodChoaWdobGlnaHQpOwogCi0gICAgcGFnZUNsaWVudCgpLnVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4
YjhlMmM4MWVjOTkwNmVlNDQ4YjE3MTcuLmViNmY2MWYzMjMxNzBiYzI4NTM4MjNjYTVmY2EyYmQx
MGJlN2YzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0
cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHRE
YXRhLmgiCi0jaW5jbHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRy
YWdDb250cm9sbGVyQWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcgQEAgY2xhc3MgVGV4dEluZGlj
YXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVu
dCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9v
bDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwogZW51bSBjbGFzcyBMb2NrQmFj
a0ZvcndhcmRMaXN0IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBAQCBlbnVtIGNsYXNzIFNob3Vs
ZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6
IGJvb2w7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCitzdHJ1Y3Qg
QXBwSGlnaGxpZ2h0Owogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CiBzdHJ1Y3QgQXR0cmli
dXRlZFN0cmluZzsKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwpAQCAtMzc0LDcg
KzM3NSw2IEBAIHN0cnVjdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTsKIHN0cnVjdCBVUkxTY2hl
bWVUYXNrUGFyYW1ldGVyczsKIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAotZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2w7CiBlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdh
Y3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDog
Ym9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CkBAIC0xODI2LDkgKzE4MjYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jSWZNb2NrRGV2aWNlc0VuYWJsZWRDaGFuZ2VkKCk7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJ
blNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOwotICAgIHZvaWQgdXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik7Ci0g
ICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEpOworICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNv
cmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxp
Z2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhp
Z2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGln
aHRzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0OTE5YmM5ODhl
OWM1ZmNhNzJmZmM4YzIxYTNmYzE0MzBiMjhjMDVhLi44MjhjYTQ0YzE4OTkwY2NmNjk5MTViMDA0
NTE1NWYxYzZjZWQ2Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzUsNyArNTM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIFVwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQorICAgIFN0
b3JlQXBwSGlnaGxpZ2h0KHN0cnVjdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQgaW5mbykKICNlbmRp
ZgogCiAgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJMIHVybCkgLT4gKFN0cmluZyByZXN1
bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1OGYwMTFjYTdkYTQ5OTNj
ZjE1M2MxZDZmZTcyNDVhNGI4Li4yMTc3NzQ2ZWU1ZDkxYjI4ODc5ZDhkMjdmMGE3MTI4Y2FhMjE1
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQVBJVUlD
bGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKLSNpbXBv
cnQgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW1wb3J0ICJEb2N1bWVudEVkaXRp
bmdDb250ZXh0LmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIgogI2ltcG9y
dCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKQEAgLTg5NzUsMTIgKzg5NzQsMTIgQEAgLSAodm9pZClz
ZXRVcEFwcEhpZ2hsaWdodE1lbnVzCiAKIC0gKHZvaWQpY3JlYXRlSGlnaGxpZ2h0SW5DdXJyZW50
R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGln
aHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8p
OworICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKIH0KIAogLSAodm9pZCljcmVhdGVIaWdo
bGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOihpZClzZW5kZXIKIHsKLSAgICBfcGFnZS0+Y3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQ6Olllcyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5n
ZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxZTZlYjA4YTljZGIzZDAwMDA2MDEzZGI1ODY1MjkyYWVjZTUyNmNhLi4wYjNlNDg3NDljZTk3
YWQwNTFhOWFjNzdiY2I2NTg5ZjVhZTI3MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTIwLDEyICsxMTkyMCw2IEBACiAJCQkJ
Q0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQkxRDQ3NjVBMTI1Q0Y1NzQwMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUMyNUNFNzRBRDAwN0FGMzEyIC8qIFJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MUQ0NzY1OUQyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTg2MjVDQ0E0MTYwMDdB
RjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MUQ0NzY1OTMyNUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTk0MjVDQ0NFOTMwMDdBRjMxMiAvKiBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFF
QTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGMwOWEyN2I3ZTdmNTNmYjQ0MjQ0NDcxYTZk
NmI3NGZjZTA1ZDQzYTAuLmZhODRlZmFkM2MzMzBmYjFkMWJiMTc5NDkwYTNlYmVkNzljZjFiYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU2VhcmNoUG9wdXBNZW51LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9B
cHBIaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvckNob29zZXIuaD4KQEAgLTEyNDQsMTAgKzEyNDUsOSBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwg
VmVjdG9yPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYgaGlnaGxpZ2h0KSBjb25zdAogewot
ICAgIGF1dG8gYnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGRhdGEpOwotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdl
KGJ1ZmZlcikpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3Jl
QXBwSGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCAwMTRiZGNmMzkzNjVmYmI3YWQ3MDkzZWNjODRjMDlkYzI3MGQwYjRmLi42YTMzMzE1YTYz
ZDM1ZGI3YTY3MjRiMzcxZWEzNzdjYzZmNjdhZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0z
NDcsNyArMzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFn
cz4pIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHQmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc2M2Jj
YWI4Njk2MmM3OWI2NzJmYzMzMzEyM2M3MTRlYzJjZTEzNjYuLjE0ZDUzZDRmNDQ1YWI1NzMzZTQw
YTFiY2YwMGI3MjZkNzM0OWIxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC03MjUwLDcgKzcyNTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJldm9r
ZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+JiBzYW5k
Ym94RQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotYm9vbCBXZWJQYWdlOjpjcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
Y3JlYXRlTmV3R3JvdXApCitib29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0
ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91
cCkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCkBAIC03MjYzLDE2ICs3
MjYzLDIxIEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChT
dGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpKTsKLSAgICBkb2N1bWVu
dC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCk7Cisg
ICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5zdG9yZUFwcEhpZ2hsaWdodChTdGF0
aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpLCBjcmVhdGVOZXdHcm91cCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiBt
ZW1vcnlIYW5kbGVzKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CiAKLSAg
ICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBcHBIaWdobGlnaHRzKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgaXBjSGFuZGxlIDogbWVtb3J5SGFuZGxlcykgeworICAgICAgICBhdXRvIHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3Rv
cmFnZSgpLnJlc3RvcmVBcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXpl
KCkpKTsKKyAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGViNTI0ODkwMjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZjYjQ1ZTE5
ZTAuLjQ2YzAzYWY2NzYwNTk4NDVhYzUzNTlmNjUxZWQzNGM1MTUzODBiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAi
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgotI2luY2x1ZGUgIkNyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKQEAgLTIwNCw2
ICsyMDMsNyBAQCBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwogCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKK2VudW0gY2xhc3MgQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgOiB1
aW50OF90OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90OwpAQCAtMTM5
Niw4ICsxMzk2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCi0gICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQpOwotICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAgIHZvaWQg
cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
PiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xs
aW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDhjZmNjNDljZjZmMzgwNzZhZjljMzIzMTkzYWQzNzUzNDhhNDQ4ZjAu
LjgyNzMxMTZlODMzMTc4MjcyMGFiZDFlZDY1N2FhZjIyMzJlN2JmM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
NjI0LDggKzYyNCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU2V0Q2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoYm9vbCBjYW5Vc2UpCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
Ci0gICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJLaXQ6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQotICAgIFJlc3RvcmVB
cHBIaWdobGlnaHRzKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIENy
ZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCisgICAgUmVzdG9yZUFwcEhpZ2hs
aWdodHMoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRs
ZXMpCiAjZW5kaWYKIAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2Vi
S2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCAxYTY2Y2U5ZGZmODFhYjkyZTJlN2E4ZWJmNWFjODA5YTliZDlkMmQyLi4y
OWNlYzNmYjMzZjUxNjdlMGUzMWM0YzdhN2Q4ZWEzODIyY2JjOTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBf
SElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdo
bGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JikgY29uc3QgZmluYWw7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggODZhZmEw
ZTlkMzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uMTUxMTEzMmI1MzRkYWVlNTE4YjAy
YzZjNmU2YzczZmQxMWQ1ZDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNzQ1LDcgKzc0NSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVUaW1lCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFn
ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpIGNvbnN0
CiB7CiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420524</attachid>
            <date>2021-02-16 12:36:23 -0800</date>
            <delta_ts>2021-02-16 13:44:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221802-20210216123622.patch</filename>
            <type>text/plain</type>
            <size>71322</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjJmZGIzYmRhNDY1
ZWI0NjJjMTJmNWUyNzEzMDRhNzY4MWMyZS4uN2Q1ZjFmMTYxNzhlNWJlM2UwZjg0YTExMGQxNjlm
MzUxMGU1N2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTAyLTEyICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEFw
cCBIaWdobGlnaHRzIEFQSSB0byBvcGVyYXRlIGluIHRlcm1zIG9mIGEgc2luZ2xlIHNlcmlhbGl6
ZWQgaGlnaGxpZ2h0IGF0IGEgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxODAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBQaXBlIHRocm91Z2ggYWRkaXRpb25hbCBkYXRhIG5lZWRlZCBmb3IgZGlzcGxh
eSwgYW5kIHVwZGF0ZSB0byBhbGxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBhZGRlZCBt
b3JlIGVhc2lseS4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodExp
c3REYXRhLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodExpc3REYXRhLmguCisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBcHBI
aWdobGlnaHRSYW5nZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHRTdG9yYWdlOjp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcDoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdG9y
ZUFwcEhpZ2hsaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUFw
cEhpZ2hsaWdodHNTdG9yYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMjEtMDItMTEgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHVybmluZyBzUkdCIGZyb20g
Q0cgY29sb3Igc3BhY2UgZnVuY3Rpb25zIG9uIGZhaWx1cmUgaXMgdG9vIGVycm9yIHByb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDM0Y2E5MDljN2IzYTYxNWI4YjU0NTUzYjcyNmQ5ZDZiYzAxODhkMTUuLmE0MDU4
OWExYmY3NTYxMTUwMjgyM2FmMGJlYmE3OGNmZGI1ZGIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDcgQEAKKzIwMjEtMDItMTIgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgQXBwIEhpZ2hsaWdodHMgQVBJIHRvIG9wZXJhdGUgaW4gdGVy
bXMgb2YgYSBzaW5nbGUgc2VyaWFsaXplZCBoaWdobGlnaHQgYXQgYSB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFBpcGUgdGhyb3VnaCBhZGRpdGlvbmFs
IGRhdGEgbmVlZGVkIGZvciBkaXNwbGF5LCBhbmQgdXBkYXRlIHRvIGFsbG93IGZvciBtb3JlIGlu
Zm9ybWF0aW9uIHRvIGJlIGFkZGVkIG1vcmUgZWFzaWx5LgorCisgICAgICAgICogU2hhcmVkL0Ny
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBI
aWdobGlnaHQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OnN0b3JlQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzdG9yZUFwcEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodEluQ3VycmVudEdyb3Vw
V2l0aFJhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNyZWF0ZUhpZ2hsaWdodElu
TmV3R3JvdXBXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVB
cHBIaWdobGlnaHRzU3RvcmFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIxLTAyLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWFjT1NdIEVuYWJsZSBBdWRpbyBDYXB0dXJlIGluIEdQVVByb2Nlc3MgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3ZTI2MTU1N2U4MDczNWE3MzM1NDQ5MmY3
ZDg0ZTc1ZTA2ODA0MDUuLmViMzk4NmQ0ZDM0ZjA2MTA2MGFiNWU4YWE3OWY3YmExNTY3ZDIzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
MiAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSBBcHAgSGlnaGxpZ2h0cyBBUEkgdG8gb3BlcmF0ZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSBz
ZXJpYWxpemVkIGhpZ2hsaWdodCBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UgY29uc3QpOiBEZWxldGVkLgorCiAy
MDIxLTAyLTEwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGV2
ZW50IGxvb3AgdG8gc2V0IHRpdGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0ZjM4ZmIwNjg0YmM1
OWVlNmY3Yzk4OTgyOWVjODgyY2U4MDU4NmM4Li5iMzNhMzY5MTdiYTIyNGJkZGY2MmQ2MDU3NTA0
MGQyZDdlYzk2Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24v
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgKICAgICBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCiAKKyAgICBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAogICAgIE1v
ZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5oCiAgICAgTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxp
Z2h0UmVnaXN0ZXIuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMzlkY2ZlNjI0NDIzMDVhZGRmNDVjMDE2YzI5YTI4
YWU4MDRjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9
OworCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBoaWdobGlnaHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodD4gZGVjb2RlKERlY29kZXImKTsKK307CisK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4oaGlnaGxpZ2h0LT5zaXplKCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhpZ2hsaWdodC0+ZGF0YUFzVUludDhQ
dHIoKSksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKworICAgIGVuY29kZXIgPDwgdGV4dDsKKwor
ICAgIGVuY29kZXIgPDwgaXNOZXdHcm91cDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPEFwcEhpZ2hsaWdodD4gQXBwSGlnaGxpZ2h0OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKworICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOworICAgIGRlY29kZXIgPj4g
bGVuZ3RoOworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48
dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQo
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gaGlnaGxpZ2h0OworICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGlnaGxpZ2h0
LnNpemUoKSwgMSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxPcHRpb25hbDxTdHJpbmc+PiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAo
IXRleHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOZXdH
cm91cCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlz
TmV3R3JvdXAgfX07Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBfSElHSExJR0hUUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dExpc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodExpc3REYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU0ZDU5YmIz
NWRkYTE0YzZjZmRkOGI3ZmRlNDQ4NjA1ZjQwYjk0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFwcEhpZ2hsaWdodExp
c3REYXRhLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgotI2luY2x1ZGUg
Ik5vZGUuaCIKLSNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKLSNpbmNsdWRlICJTdGF0
aWNSYW5nZS5oIgotI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKLQotQXBwSGlnaGxpZ2h0TGlzdERhdGEgQXBwSGlnaGxp
Z2h0TGlzdERhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBh
dXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOwotICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdo
dExpc3REYXRhPiBkYXRhOwotICAgIGRlY29kZXIgPj4gZGF0YTsKLSAgICByZXR1cm4gZGF0YSA/
ICpkYXRhIDogQXBwSGlnaGxpZ2h0TGlzdERhdGEge3sgfX07Ci19Ci0KLVJlZjxTaGFyZWRCdWZm
ZXI+IEFwcEhpZ2hsaWdodExpc3REYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgKnRoaXM7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dExpc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRMaXN0RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTNiMjE0ZGI5Nzg5
MjA5NDRjZGRiMWZiMGVhMTY1ZDdkYTZjZTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodExpc3REYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBBcHBIaWdo
bGlnaHRSYW5nZURhdGEgewotcHVibGljOgotICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7
Ci0gICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Ci0g
ICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKLSAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9
OwotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVy
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAg
ICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKLSAgICAgICAgICAg
ICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92
ZShkYXRhKSkKLSAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCi0gICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCi0g
ICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAsIHRleHREYXRhKGRhdGEp
Ci0gICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIu
aWRlbnRpZmllciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBv
dGhlci50ZXh0RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgfTsK
LQotICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKLQotICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRl
ZmF1bHQ7Ci0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OwotICAgIEFwcEhp
Z2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVy
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKLSAgICAgICAgLCBt
X3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQotICAgICAgICAsIG1fc3Rh
cnRPZmZzZXQoc3RhcnRPZmZzZXQpCi0gICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShl
bmRDb250YWluZXIpKQotICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3Qg
Tm9kZVBhdGgmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IG1f
dGV4dCh0ZXh0KQotICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCi0g
ICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKLSAgICAgICAgLCBtX2VuZENvbnRh
aW5lcihlbmRDb250YWluZXIpCi0gICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQotICAg
IHsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHQ7IH0KLSAgICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0Q29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9Ci0gICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9Ci0gICAgdW5zaWduZWQgZW5kT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUo
RGVjb2RlciYpOwotCi1wcml2YXRlOgotICAgIFN0cmluZyBtX3RleHQ7Ci0gICAgTm9kZVBhdGgg
bV9zdGFydENvbnRhaW5lcjsKLSAgICB1bnNpZ25lZCBtX3N0YXJ0T2Zmc2V0IHsgMCB9OwotICAg
IE5vZGVQYXRoIG1fZW5kQ29udGFpbmVyOwotICAgIHVuc2lnbmVkIG1fZW5kT2Zmc2V0IHsgMCB9
OwotfTsKLQotY2xhc3MgQXBwSGlnaGxpZ2h0TGlzdERhdGEgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBcHBIaWdobGln
aHRMaXN0RGF0YSBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0KLSAgICBBcHBIaWdobGln
aHRMaXN0RGF0YShjb25zdCBBcHBIaWdobGlnaHRMaXN0RGF0YSYpID0gZGVmYXVsdDsKLSAgICBB
cHBIaWdobGlnaHRMaXN0RGF0YSgpID0gZGVmYXVsdDsKLSAgICBBcHBIaWdobGlnaHRMaXN0RGF0
YShWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIGFubm90YXRpb25SYW5nZXMpCi0gICAg
ICAgIDogbV9hbm5vdGF0aW9uUmFuZ2VzKFdURk1vdmUoYW5ub3RhdGlvblJhbmdlcykpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+JiByYW5n
ZXMoKSBjb25zdCB7IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXM7IH0KLSAgICB2b2lkIHNldFJh
bmdlcyhWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRp
b25SYW5nZXMgPSBXVEZNb3ZlKHJhbmdlcyk7IH0KLSAgICB2b2lkIGFkZFJhbmdlcyhWZWN0b3I8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiYmIHJhbmdlcykgeyBtX2Fubm90YXRpb25SYW5nZXMuYXBw
ZW5kVmVjdG9yKFdURk1vdmUocmFuZ2VzKSk7IH0KLQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRv
U2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5ub3RhdGlvblJhbmdlcy5zaXplKCk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2Fubm90YXRpb25SYW5nZXMuaXNFbXB0eSgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodExpc3REYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOwotCi1wcml2YXRlOgotCi0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gbV9hbm5vdGF0aW9uUmFuZ2VzOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Ci0gICAg
ZW5jb2RlciA8PCBub2RlTmFtZTsKLSAgICBlbmNvZGVyIDw8IHRleHREYXRhOwotICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHBhdGhJbmRleCk7Ci19Ci0KLXRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21w
b25lbnQ+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKLSAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKLSAg
ICBkZWNvZGVyID4+IG5vZGVOYW1lOwotICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHREYXRhOwotICAgIGRl
Y29kZXIgPj4gdGV4dERhdGE7Ci0gICAgaWYgKCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYXRoSW5kZXg7Ci0gICAgZGVj
b2RlciA+PiBwYXRoSW5kZXg7Ci0gICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1v
dmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
KnBhdGhJbmRleCkgfX07Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IG1fdGV4dDsKLSAgICBlbmNvZGVyIDw8IG1fc3RhcnRDb250YWluZXI7Ci0gICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9zdGFydE9mZnNldCk7Ci0gICAgZW5j
b2RlciA8PCBtX2VuZENvbnRhaW5lcjsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihtX2VuZE9mZnNldCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7Ci0gICAgZGVjb2Rl
ciA+PiB0ZXh0OwotICAgIGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsKLSAgICBkZWNvZGVyID4+
IHN0YXJ0Q29udGFpbmVyOwotICAgIGlmICghc3RhcnRDb250YWluZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gc3RhcnRPZmZzZXQ7Ci0g
ICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKLSAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRh
aW5lcjsKLSAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKLSAgICBpZiAoIWVuZENvbnRhaW5l
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBlbmRPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7Ci0gICAgaWYgKCFlbmRPZmZz
ZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLQotICAgIHJldHVybiB7ewotICAg
ICAgICBXVEZNb3ZlKCp0ZXh0KSwKLSAgICAgICAgV1RGTW92ZSgqc3RhcnRDb250YWluZXIpLAot
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKnN0YXJ0T2Zmc2V0KSwKLSAgICAgICAgV1RG
TW92ZSgqZW5kQ29udGFpbmVyKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCplbmRP
ZmZzZXQpLAotICAgIH19OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhp
Z2hsaWdodExpc3REYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IG1fYW5ub3RhdGlvblJhbmdlczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0TGlzdERhdGE+IEFwcEhpZ2hsaWdodExpc3REYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxWZWN0b3I8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPj4gYW5ub3RhdGlvblJhbmdlczsKLSAgICBkZWNvZGVyID4+IGFubm90YXRp
b25SYW5nZXM7Ci0gICAgaWYgKCFhbm5vdGF0aW9uUmFuZ2VzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmFubm90YXRpb25SYW5nZXMpIH19
OwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzE0ZWFlZDc4MGVlMzY3M2ZjMDA0NjE0NTg0ZWFjNGY3NDFkMTVjYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIK
KworI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlF
bGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRN
YXJrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5n
ZS5oIgorI2luY2x1ZGUgIlN0YXRpY1JhbmdlLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAg
IGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBkYXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICByZXR1cm4gZGF0
YTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVy
OworICAgIGVuY29kZXIgPDwgKnRoaXM7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9u
ZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBub2RlTmFtZTsKKyAgICBlbmNvZGVyIDw8IHRleHRE
YXRhOworICAgIGVuY29kZXIgPDwgcGF0aEluZGV4OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CisgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFN0cmluZz4gbm9kZU5hbWU7CisgICAgZGVjb2Rl
ciA+PiBub2RlTmFtZTsKKyAgICBpZiAoIW5vZGVOYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0RGF0YTsKKyAgICBkZWNvZGVyID4+
IHRleHREYXRhOworICAgIGlmICghdGV4dERhdGEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gcGF0aEluZGV4OworICAgIGRlY29kZXIgPj4g
cGF0aEluZGV4OworICAgIGlmICghcGF0aEluZGV4KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpub2Rl
TmFtZSksIFdURk1vdmUoKnRleHREYXRhKSwgKnBhdGhJbmRleCB9fTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV90ZXh0OworICAgIGVuY29kZXIg
PDwgbV9zdGFydENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IG1fc3RhcnRPZmZzZXQ7CisgICAg
ZW5jb2RlciA8PCBtX2VuZENvbnRhaW5lcjsKKyAgICBlbmNvZGVyIDw8IG1fZW5kT2Zmc2V0Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OworICAgIGRlY29kZXIgPj4gdGV4dDsKKyAgICBpZiAo
IXRleHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxOb2Rl
UGF0aD4gc3RhcnRDb250YWluZXI7CisgICAgZGVjb2RlciA+PiBzdGFydENvbnRhaW5lcjsKKyAg
ICBpZiAoIXN0YXJ0Q29udGFpbmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OworICAgIGRlY29kZXIgPj4gc3RhcnRP
ZmZzZXQ7CisgICAgaWYgKCFzdGFydE9mZnNldCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBlbmRDb250YWluZXI7CisgICAgZGVjb2RlciA+
PiBlbmRDb250YWluZXI7CisgICAgaWYgKCFlbmRDb250YWluZXIpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OworICAgIGRl
Y29kZXIgPj4gZW5kT2Zmc2V0OworICAgIGlmICghZW5kT2Zmc2V0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUo
KnN0YXJ0Q29udGFpbmVyKSwgKnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKCplbmRDb250YWluZXIpLCAq
ZW5kT2Zmc2V0IH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWY4Y2Y3NDU3NjYyNmZiZjg2NTAxYjkxYTVmZDgyYTBj
YWRiZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBBcHBIaWdo
bGlnaHRSYW5nZURhdGEgeworV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7
CisgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgbm9kZU5hbWU7Cisg
ICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKKyAgICAgICAgdW5zaWduZWQgcGF0aEluZGV4IHsgMCB9
OworCisgICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVsZW1lbnRJZGVudGlmaWVy
LCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAg
ICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVyKSkKKyAgICAgICAgICAg
ICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKKyAgICAgICAgICAgICwgdGV4dERhdGEoV1RGTW92
ZShkYXRhKSkKKyAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWdu
ZWQgaW5kZXgpCisgICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVudElkZW50aWZpZXIpCisg
ICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCisgICAgICAgICAgICAsIHRleHREYXRhKGRhdGEp
CisgICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPT0gb3RoZXIu
aWRlbnRpZmllciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAmJiB0ZXh0RGF0YSA9PSBv
dGhlci50ZXh0RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aEluZGV4OworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JiBvdGhl
cikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsK
KworICAgIHVzaW5nIE5vZGVQYXRoID0gVmVjdG9yPE5vZGVQYXRoQ29tcG9uZW50PjsKKworICAg
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBBcHBIaWdobGlnaHRSYW5nZURhdGEmKSA9IGRl
ZmF1bHQ7CisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKCkgPSBkZWZhdWx0OworICAgIEFwcEhp
Z2hsaWdodFJhbmdlRGF0YShTdHJpbmcmJiB0ZXh0LCBOb2RlUGF0aCYmIHN0YXJ0Q29udGFpbmVy
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTm9kZVBhdGgmJiBlbmRDb250YWluZXIsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBtX3RleHQoV1RGTW92ZSh0ZXh0KSkKKyAgICAgICAgLCBt
X3N0YXJ0Q29udGFpbmVyKFdURk1vdmUoc3RhcnRDb250YWluZXIpKQorICAgICAgICAsIG1fc3Rh
cnRPZmZzZXQoc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9lbmRDb250YWluZXIoV1RGTW92ZShl
bmRDb250YWluZXIpKQorICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkKKyAgICB7Cisg
ICAgfQorCisgICAgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgTm9kZVBhdGgmIHN0YXJ0Q29udGFpbmVyLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgY29uc3Qg
Tm9kZVBhdGgmIGVuZENvbnRhaW5lciwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IG1f
dGV4dCh0ZXh0KQorICAgICAgICAsIG1fc3RhcnRDb250YWluZXIoc3RhcnRDb250YWluZXIpCisg
ICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAgICAgLCBtX2VuZENvbnRh
aW5lcihlbmRDb250YWluZXIpCisgICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHQ7IH0KKyAgICBjb25zdCBOb2RlUGF0aCYgc3RhcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0Q29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CisgICAgY29uc3QgTm9kZVBhdGgmIGVuZENvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29udGFpbmVyOyB9CisgICAgdW5zaWduZWQgZW5kT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUo
RGVjb2RlciYpOworCisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV90ZXh0OworICAgIE5vZGVQYXRoIG1fc3RhcnRD
b250YWluZXI7CisgICAgdW5zaWduZWQgbV9zdGFydE9mZnNldCB7IDAgfTsKKyAgICBOb2RlUGF0
aCBtX2VuZENvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX2VuZE9mZnNldCB7IDAgfTsKK307CisK
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGMz
YjhiYjc3YzBjNGY0ZTVjOTk4NzE3OTIzOTJlM2RkZDhkMTkxODYuLmUzZjA4ZGZhMDk5NzMzMzk2
YzljODUyNmNmMmU3YTU5NzA2N2RjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yNyw3ICsyNyw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
IgogCi0jaW5jbHVkZSAiQXBwSGlnaGxpZ2h0TGlzdERhdGEuaCIKKyNpbmNsdWRlICJBcHBIaWdo
bGlnaHQuaCIKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oIgpAQCAtNDAsMTEgKzQxLDEyIEBACiAjaW5jbHVkZSAiU3RhdGljUmFuZ2Uu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dGV4dFByZXZpZXdMZW5ndGggPSAxMDA7CisKIHN0YXRpYyBSZWZQdHI8Tm9kZT4gZmluZE5vZGVC
eVBhdGhJbmRleChjb25zdCBOb2RlJiBwYXJlbnQsIHVuc2lnbmVkIHBhdGhJbmRleCwgY29uc3Qg
U3RyaW5nJiBub2RlTmFtZSkKIHsKICAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KHBhcmVudCkp
CkBAIC0xOTYsOCArMTk4LDEwIEBAIHN0YXRpYyBBcHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQ
YXRoIG1ha2VOb2RlUGF0aChSZWZQdHI8Tm9kZT4mJiBub2RlKQogCiBzdGF0aWMgQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhIGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShjb25zdCBTdGF0aWNSYW5n
ZSYgcmFuZ2UpCiB7CisgICAgYXV0byB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlKTsKKyAgICB0ZXh0
LnRydW5jYXRlKHRleHRQcmV2aWV3TGVuZ3RoKTsKICAgICByZXR1cm4gewotICAgICAgICBwbGFp
blRleHQocmFuZ2UpLAorICAgICAgICB0ZXh0LAogICAgICAgICBtYWtlTm9kZVBhdGgoJnJhbmdl
LnN0YXJ0Q29udGFpbmVyKCkpLAogICAgICAgICByYW5nZS5zdGFydE9mZnNldCgpLAogICAgICAg
ICBtYWtlTm9kZVBhdGgoJnJhbmdlLmVuZENvbnRhaW5lcigpKSwKQEAgLTIxMCw0OCArMjE0LDM1
IEBAIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OkFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnVwZGF0ZUFwcEhpZ2hs
aWdodHNTdG9yYWdlKCkKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBIaWdobGln
aHQoU3RhdGljUmFuZ2UmIHJhbmdlLCBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dy
b3VwKQogewotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7Ci0KLSAgICBp
ZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRhdGEgPSBjcmVhdGVB
cHBIaWdobGlnaHRSYW5nZURhdGEocmFuZ2UpOworICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsK
IAotICAgIGlmICghbV9kb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm47CisgICAgaWYg
KCFkYXRhLnRleHQoKS5pc0VtcHR5KCkpCisgICAgICAgIHRleHQgPSBkYXRhLnRleHQoKTsKIAot
ICAgIGlmIChhdXRvIGFwcEhpZ2hsaWdodFJlZ2lzdGVyID0gbV9kb2N1bWVudC0+YXBwSGlnaGxp
Z2h0UmVnaXN0ZXJJZkV4aXN0cygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDog
YXBwSGlnaGxpZ2h0UmVnaXN0ZXItPm1hcCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHJh
bmdlRGF0YSA6IGhpZ2hsaWdodC52YWx1ZS0+cmFuZ2VzRGF0YSgpKQotICAgICAgICAgICAgICAg
IGRhdGEuYXBwZW5kKGNyZWF0ZUFwcEhpZ2hsaWdodFJhbmdlRGF0YShyYW5nZURhdGEtPnJhbmdl
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQXBwSGlnaGxpZ2h0TGlzdERhdGEgbGlzdERhdGEg
eyBXVEZNb3ZlKGRhdGEpIH07CisgICAgQXBwSGlnaGxpZ2h0IGhpZ2hsaWdodCA9IHtkYXRhLnRv
U2hhcmVkQnVmZmVyKCksIHRleHQsIGlzTmV3R3JvdXB9OwogCi0gICAgbV9kb2N1bWVudC0+cGFn
ZSgpLT5jaHJvbWUoKS51cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShsaXN0RGF0YS50b1NoYXJl
ZEJ1ZmZlcigpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGln
aGxpZ2h0KGhpZ2hsaWdodCk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9y
ZUFwcEhpZ2hsaWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitib29sIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7Ci0gICAgYXV0byBhcHBIaWdobGlnaHRMaXN0RGF0YSA9IEFwcEhpZ2hsaWdodExpc3RE
YXRhOjpjcmVhdGUoYnVmZmVyKTsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiB1
bnJlc3RvcmVkUmFuZ2VzOwotICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlc3Rv
cmVkUmFuZ2VzOworICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1l
bnQuZ2V0KCkpOwogCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBtX2RvY3VtZW50
LmdldCgpOworICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKKyAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvJiBhcHBIaWdobGlnaHRMaXN0
RGF0YSA6IGFwcEhpZ2hsaWdodExpc3REYXRhLnJhbmdlcygpKSB7Ci0gICAgICAgIGF1dG8gcmFu
Z2UgPSBmaW5kUmFuZ2UoYXBwSGlnaGxpZ2h0TGlzdERhdGEsICpzdHJvbmdEb2N1bWVudCk7Ci0g
ICAgICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAgICAgIHVucmVzdG9yZWRSYW5nZXMuYXBwZW5k
KGFwcEhpZ2hsaWdodExpc3REYXRhKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
CisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ry
b25nRG9jdW1lbnQpOwogCi0gICAgICAgIHJlc3RvcmVkUmFuZ2VzLmFwcGVuZChhcHBIaWdobGln
aHRMaXN0RGF0YSk7Ci0gICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3Rl
cigpLmFkZEFwcEhpZ2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOwotICAgIH0K
KyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGln
aHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKKworICAgIHJldHVybiB0cnVlOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCA4YjYwNzVhZDY0MDI0MjljZWRjNGJlOTI2ZjZjZGEw
OWU0NDNiYzk5Li44Y2EwMjU0NmIzMmJlMDBiNDZhNjY1OWYzOTA5ODU2MTY2YTc3NDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5oCkBAIC0zNiwxOCArMzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRMaXN0RGF0YTsKIGNs
YXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgSGlnaGxpZ2h0OworCitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IDogYm9vbDsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0U3RvcmFnZSA6IFJlZkNvdW50
ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEFwcEhpZ2hsaWdodFN0b3JhZ2UoRG9jdW1lbnQmKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2UmICwg
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCByZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2
YXRlOgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDhjMDNiOTMyNjQ5ODVmMGJiMWVlOWY2ZDIwMjNlMzQ4MzA5MmY0NjIuLjA1YmI1ZTg3YTQzMmRl
OGM1NGJiYTZiZjY1MDFjMGM2MmQ5NjM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC02NCw3ICs2NCw3
IEBAIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCiBNb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Db29yZGluYXRlcy5jcHAKIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9j
YXRpb24uY3BwCi1Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRMaXN0RGF0YS5jcHAKK01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCiBNb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRS
ZWdpc3Rlci5jcHAKIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZTNiYTJk
OGJiYWExNzYyNDRkYTYyM2M2OTI5NmU1ZmViZjA3MzBiLi5mMDg5MDg5NzJlMWQyYzQ1NWJiMDk2
NzY5MzJkNjBkMTkwOTJmNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjIzLDYgKzEyMjMsNyBAQAogCQk0NDI1MDcwOTI1
ODI5QTI3MDBDMDkzNjggLyogQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyNTA3MDcyNTgyOUExNDAwQzA5MzY4IC8q
IEFwcEhpZ2hsaWdodFN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NDMwRDAwQjI1NzVBODNFMDA0NkQ0MDEgLyogSGlnaGxpZ2h0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU4OEU1MTIz
NkE1QzhEMDA5QjQ4NDcgLyogSGlnaGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQzMEQwMEQyNTc1QThBNTAwNDZENDAxIC8qIEhpZ2hs
aWdodFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEU4OEU1MDIzNkE1NkFDMDA5QjQ4NDcgLyogSGlnaGxpZ2h0UmVnaXN0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NDUyMTBERjI1
RDYxRjAwMDAzQTJFRDggLyogQXBwSGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUyMTBERDI1RDYxRUZGMDAzQTJFRDggLyogQXBwSGln
aGxpZ2h0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDQ1Nzc1RTUyMDQ3MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTc3
NUU0MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQ2M0NGNjgy
MjEyRkE2ODAwMUE4NTc3IC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBB
NEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ2NUQ3QkQy
NTM2RDA1RTAwMTY2NjZEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8q
IFNlbGVjdGlvblJhbmdlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjM2LDcgKzEyMzcsNyBAQAogCQk0NEEyMERCOTBGODQxNjZDMDBC
M0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEy
OEFBQjEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJ
NDRBMjhBQUYxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0Ig
LyogTWF0aE1MTmFtZXMuaCAqLzsgfTsKLQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFw
cEhpZ2hsaWdodExpc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0TGlzdERh
dGEuaCAqLzsgfTsKKwkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJh
bmdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovOyB9
OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFF
QkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0Qy
MTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICov
OyB9OwogCQk0NEUzNDlGOTI0NkY0RTE5MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMzQ5Rjcy
NDZGNERDNzAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODExNyw2ICs4MTE4LDcgQEAKIAkJ
NDQzN0M0QTkyNEUyQUU1RjAwMDk1MTI4IC8qIExhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMYXp5TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDNGMDQyNjBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
ZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNwb25zZUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ1MjEwREQyNUQ2MUVGRjAwM0Ey
RUQ4IC8qIEFwcEhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBIaWdobGlnaHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1Nzc1RTQyMDQ3
MkY3MzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NDU3NzVFOTIwNDczMDNCMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVt
QXBwZWFyYW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExv
Y2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ0NkRDNjQ2MjRBMjlEOUIwMDYxRjM5MCAvKiBQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4
dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzYsOCArODEz
OCw4IEBACiAJCTQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJ
T1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTI4QUFCMTJERkI4QUMwMEFF
OTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0aE1MTmFtZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKLQkJNDRBRTA0NTgyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExp
c3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcEhpZ2hs
aWdodExpc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRBRTA0NUEy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodExpc3REYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEhpZ2hsaWdodExpc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ0QUUwNDU4MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRBRTA0
NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBIaWdobGlnaHRSYW5nZURhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlv
blJhbmdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25S
YW5nZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRCMzhCRjkyNTM2OUE4
ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTZWxlY3Rpb25SYW5nZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEJEMkIzNjI1Mjc3OTc4MDA1NUQ5NUEgLyogR2xvYmFsRXZlbnRIYW5k
bGVycytTZWxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJHbG9iYWxFdmVudEhhbmRsZXJzK1NlbGVjdGlvbi5p
ZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MzYsOCArMTk4MzgsOSBAQAog
CQk0NEU4OEU0NzIzNjhERjBGMDA5QjQ4NDcgLyogaGlnaGxpZ2h0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJFNjUg
LyogQXBwSGlnaGxpZ2h0TGlzdERhdGEuY3BwICovLAotCQkJCTQ0QUUwNDVBMjU3OUNGRkIwMEM0
MkU2NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oICovLAorCQkJCTQ0NTIxMEREMjVENjFFRkYw
MDNBMkVEOCAvKiBBcHBIaWdobGlnaHQuaCAqLywKKwkJCQk0NEFFMDQ1ODI1NzlDRkZCMDBDNDJF
NjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCAqLywKKwkJCQk0NEFFMDQ1QTI1NzlDRkZC
MDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi8sCiAJCQkJNDQyNTA3MDYyNTgy
OUExNDAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwICovLAogCQkJCTQ0MjUwNzA3
MjU4MjlBMTQwMEMwOTM2OCAvKiBBcHBIaWdobGlnaHRTdG9yYWdlLmggKi8sCiAJCQkJNDRFODhF
NTQyMzZBNjZBMTAwOUI0ODQ3IC8qIEhpZ2hsaWdodC5jcHAgKi8sCkBAIC0zMTE1OCw3ICszMTE2
MSw4IEBACiAJCQkJNTcxNTJCNUEyMUNCM0U4ODAwMEMzN0NBIC8qIEFwZHVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NzE1MkI1QzIxQ0MxOTAyMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURENzA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5k
Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2
NSAvKiBBcHBIaWdobGlnaHRMaXN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ1MjEwREYy
NUQ2MUYwMDAwM0EyRUQ4IC8qIEFwcEhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDRB
RTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDQyNTA3MDkyNTgyOUEyNzAwQzA5MzY4IC8qIEFwcEhpZ2hsaWdodFN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTNFMDJFMjMzMUExMzQwMDlDMzNBMCAvKiBBcHBs
ZVBheUNhbmNlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE5NDFGN0VDNDMyMDA1
OEE0NzcgLyogQXBwbGVQYXlDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwNGJmOGE1MjMxZDdkNzY4NTYwMjJjNGI3
ODk0Y2FiYWU2ZDRlZmI4Li4yYjM5YTBkNjViZDg3YjM2OTA3ZWE2NjcyZTBmOTUxZjkyNGFhYmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgogCisjaW5j
bHVkZSAiQXBwSGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFn
ZVByb3ZpZGVyLmgiCkBAIC01MDIsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERhdGVUaW1l
Q2hvb3Nlcj4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGVUaW1lQ2hvb3NlcihEYXRlVGkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotdm9pZCBFbXB0eUNocm9tZUNs
aWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgY29uc3QKK3ZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNv
bnN0IEFwcEhpZ2hsaWdodCYpIGNvbnN0CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBhNzg4YjQ1YWFkMTVmMzQwZjJlZDA5OWRkNGJjY2Y1YTVlYzkz
YzNlLi4xZjUxZTliM2RhMjY3NTA1ODU2YWFjYzJjYTJhZWFjMDM4YjY0NzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgRW1wdHlD
aHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9yZUFw
cEhpZ2hsaWdodChjb25zdCBBcHBIaWdobGlnaHQmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAg
ICAgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCmluZGV4IGQzMDY5Y2VlMTM3OGVmMGQyNjUwMDRjMjc4MDVjZjdmMWM1YmUz
ODMuLmViOGMwYTdmY2ViNjY0MTU3YzJhMGViOGRkNjQyNGM0ZjNlYTY1MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDaHJvbWUuaCIKIAorI2luY2x1ZGUgIkFwcEhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRhY3RJbmZvLmgiCiAjaW5jbHVkZSAiQ29udGFj
dHNSZXF1ZXN0RGF0YS5oIgpAQCAtNTEyLDkgKzUxMyw5IEBAIHZvaWQgQ2hyb21lOjpkaXNwYXRj
aFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgYXJn
dW1lCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIENocm9tZTo6dXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSBj
b25zdAordm9pZCBDaHJvbWU6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IEFwcEhpZ2hsaWdodCYg
aGlnaGxpZ2h0KSBjb25zdAogewotICAgIG1fY2xpZW50LnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9y
YWdlKFdURk1vdmUoZGF0YSkpOworICAgIG1fY2xpZW50LnN0b3JlQXBwSGlnaGxpZ2h0KGhpZ2hs
aWdodCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggZjgxNjc4NjIyNDlhZmVh
NWQxZGFjZTg1ZDlkMWY3OTAyMGE4MWM5Ny4uMWU3MTQ2YjU2ZGJkOWQ4YjU0Y2E2MWM0ZDcxYjI3
NzY5OGY5YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKIGNsYXNzIFBvcHVwT3BlbmluZ09ic2VydmVyOwogY2xhc3MgU2VhcmNo
UG9wdXBNZW51OwogCitzdHJ1Y3QgQXBwSGlnaGxpZ2h0Owogc3RydWN0IENvbnRhY3RJbmZvOwog
c3RydWN0IENvbnRhY3RzUmVxdWVzdERhdGE7CiBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVyczsKQEAgLTE2NSw3ICsxNjYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0OworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgQXBwSGlnaGxpZ2h0JikgY29uc3Q7CiAjZW5kaWYKIAogICAgIHZvaWQgcnVuT3Bl
blBhbmVsKEZyYW1lJiwgRmlsZUNob29zZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGNmMmIzZjBkOWFiYWQyZTcyZWNhZGM3ZTE1M2E5YjE1MTYzMzFjNGQuLmE5YTNiMDdl
ZGIwOGU5ZTViZWQ5NWNlNGVkZTk3OTgxZDcwNTk0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIFdpZGdldDsKIGNsYXNzIE1lZGlhUGxh
eWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrOwogI2VuZGlmCiAKK3N0cnVj
dCBBcHBIaWdobGlnaHQ7CiBzdHJ1Y3QgQ29udGFjdHNSZXF1ZXN0RGF0YTsKIHN0cnVjdCBDb250
ZW50UnVsZUxpc3RSZXN1bHRzOwogc3RydWN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnM7CkBA
IC0zMDQsNyArMzA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JikgY29uc3QgPSAwOwog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lJiwgRmlsZUNob29z
ZXImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBh
MzYxNzdlZTBlMmJlYmFkZGIxOTJkM2IzN2I1NGMzYjE1M2IxYjlhLi5mZTdmNWY5YTdhYWI1ZGY4
ODgwYjliYjQ0Y2VjNjk4YjM0ZTk1N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTY1Niw2ICs2NTYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBl
KToKICAgICAgICAgJ1N0cmluZyc6IFsnPHd0Zi90ZXh0L1dURlN0cmluZy5oPiddLAogICAgICAg
ICAnUEFMOjpTZXNzaW9uSUQnOiBbJzxwYWwvU2Vzc2lvbklELmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1dG9wbGF5RXZlbnQuaD4nXSwK
KyAgICAgICAgJ1dlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0JzogWyc8V2ViQ29y
ZS9BcHBIaWdobGlnaHQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2UnOiBbJzxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UnOiBbJzxXZWJDb3JlL0NvbG9yU3BhY2UuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
OWRiNGI2OGM0NWQ4YmYwZTY5MDIzODNlMGY4YWEyNzgzNzY4YTYzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIGNs
YXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBjNTViZGI1NDlhN2Y3YzU0N2VlMDYxM2JhMDdjMDk1OTI3MjU3
ZGVhLi5kY2I2MjQyNzI1OGQ3YmEyMjg4MzkzYmE5OWNlMGUwYzQ4NjI0ZDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTExOSw2ICsx
MTksNyBAQAogI2ltcG9ydCAiX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgiCiAjaW1wb3J0ICJf
V0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2ll
c0ludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcEhpZ2hsaWdodC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2Eu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CkBAIC0xNDIzLDE0ICsx
NDI0LDE0IEBAIC0gKHZvaWQpX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOihpZCA8X1dLQXBwSGln
aGxpZ2h0RGVsZWdhdGU+KWRlbGVnYXRlCiB9CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
Ci0tICh2b2lkKV91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTooTlNEYXRhICopZGF0YQorLSAo
dm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGln
aGxpZ2h0SW5mb3JtYXRpb24KIHsKICAgICBhdXRvIGRlbGVnYXRlID0gc2VsZi5fYXBwSGlnaGxp
Z2h0RGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlOildKQotICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2Vs
ZiB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpkYXRhXTsKKyAgICAgICAgW2RlbGVnYXRlIF93
ZWJWaWV3OnNlbGYgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6aGlnaGxpZ2h0SW5mb3JtYXRp
b24uaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApAQCAtMjAz
NSwxMiArMjAzNiwyMSBAQCAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiAgICAgW3Nl
bGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogfQogCi0tICh2b2lkKV9yZXN0b3JlQXBw
SGlnaGxpZ2h0czooTlNEYXRhICopZGF0YQorLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6
KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogewogI2lmIEVOQUJMRShBUFBfSElHSExJ
R0hUUykKLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSkpOworICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
PiBidWZmZXJzOworCisgICAgZm9yIChOU0RhdGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKSB7
CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlKGhpZ2hsaWdodC5sZW5ndGgpOworICAgICAgICBpZiAoc2hhcmVkTWVtb3J5KSB7CisgICAg
ICAgICAgICBbaGlnaGxpZ2h0IGdldEJ5dGVzOnNoYXJlZE1lbW9yeS0+ZGF0YSgpIGxlbmd0aDpo
aWdobGlnaHQubGVuZ3RoXTsKKyAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1v
cnkpOworICAgICAgICB9CisgICAgfQorICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhi
dWZmZXJzKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJB
TShoaWdobGlnaHRzKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDQwOWQ4YWVkMzMzMDJl
ZGY5ZDFlM2Q4ZTM5NDIyM2FhM2VkYjlkNzQuLjJhNWZjMzkyZDJlZWQzZmJlZGIxYjBiYjU5OTFl
OGZhNDc1NTQ4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEF0dGFjaG1l
bnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBBcHBIaWdobGlnaHQ7CiBzdHJ1
Y3QgRXhjZXB0aW9uRGV0YWlsczsKIGVudW0gY2xhc3MgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUg
OiB1aW50OF90OwogfQpAQCAtMjY1LDcgKzI2Niw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClfdXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2U6KE5TRGF0YSAqKWRhdGE7CistICh2b2lkKV9zdG9yZUFw
cEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JilpbmZvOwogI2VuZGlmCiAK
IC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4p
KHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJPT0wpd2l0aG91
dFdhaXRpbmdGb3JQYWludGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOihCT09M
KXdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5MjYyMzhhZWEw
YTE0NzYxMThlNWE2OTA4NTQ3YWQ3OWMzZjQ1NGQxLi5lNDVjYjFiYmJiZWJhMGIxYTc5NTU2Yjhk
NDMxMGM3NzgyNTU1YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBmb3IgdGhpcyBw
cm9wZXJ0eS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEhhc0JsYW5rT3Zlcmxh
eTopIEJPT0wgX2hhc0JsYW5rT3ZlcmxheSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0
dGVyPV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGlnaHREZWxlZ2F0
ZT4gX2FwcEhpZ2hsaWdodERlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNE
YXRhICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+
ICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogCiAvKiEgQGFic3RyYWN0IFRoZSB0aGVtZSBjb2xvciBvZiB0aGUgYWN0aXZlIHBhZ2Uu
CiAgQGRpc2N1c3Npb24gVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIG1vc3QgcmVjZW50bHkgY3Jl
YXRlZCBvciBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
UGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGUzNmU4Y2M0ZTVmNzA3OGEyNDQxMzVjZTJlNmZi
N2RhOTBjZGUyMTcuLmMxNGY3N2E4NmFlNTAzM2E4ZTNjZGE1NWMwOTdhZWZmMzdhOWZlZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENv
Y29hLmgKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgQXR0YWNobWVudDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOworCitzdHJ1Y3QgQXBw
SGlnaGxpZ2h0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc0LDcgKzc2LDcgQEAgcHVi
bGljOgogICAgIE5TVGV4dEFsdGVybmF0aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2
ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgZmluYWw7CiAKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCi0gICAgdm9pZCB1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpIGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JikgZmluYWw7CiAjZW5kaWYKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVu
dEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0KaW5kZXggMzNiYmU5Mjg1YTg4ZjUyZTkyYTQ2ZDNkMDM4MDJiMGVmNjlmOTU1
OC4uZGJmMzQzNjBiMmUxZjI5YmEwZDUwN2I4MzAzMTBkMmQ0MDMyNDliMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCkBA
IC0xMjAsMTAgKzEyMCw5IEBAIE5TU2V0ICpQYWdlQ2xpZW50SW1wbENvY29hOjpzZXJpYWxpemFi
bGVGaWxlV3JhcHBlckNsYXNzZXMoKSBjb25zdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCi12b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnVwZGF0ZUFwcEhpZ2hsaWdodHNT
dG9yYWdlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFnZUNsaWVu
dEltcGxDb2NvYTo6c3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
ICZoaWdobGlnaHQpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsK
LSAgICBbbV93ZWJWaWV3IF91cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZTpuc0RhdGEuZ2V0KCld
OworICAgIFttX3dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0OmhpZ2hsaWdodF07CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGUxNWYxMGNhMjAxNTkyMGEx
NDJlNmRlYWNkNjIyNWQ0NjllYzg1MDguLmVkZjA0YTQwNDk3NDBkMDJiNGJkMDRjOTE0NzY2M2Y0
NWEzZjMxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFk
ZEFjdGl2aXR5U3RhdGVVcGRhdGVDb21wbGV0aW9uSGFuZGxlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2kKIH0KIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQgY3JlYXRlTmV3R3JvdXApCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0
SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0
ZU5ld0dyb3VwKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTQyLDE0ICs1NDIsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUFwcEhp
Z2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShj
cmVhdGVOZXdHcm91cCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHMoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdo
dHMpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEg
fTsKKyAgICBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXM7CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhkYXRhUmVm
ZXJlbmNlKSk7CisgICAgZm9yIChhdXRvIGhpZ2hsaWdodCA6IGhpZ2hsaWdodHMpIHsKKyAgICAg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBoaWdobGlnaHQtPmNyZWF0
ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworCisg
ICAgICAgIG1lbW9yeUhhbmRsZXMuYXBwZW5kKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RG
TW92ZShoYW5kbGUpLCBoaWdobGlnaHQtPnNpemUoKSB9KTsKKyAgICB9CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0cyhXVEZNb3ZlKG1lbW9yeUhhbmRs
ZXMpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IDk4OGI5ZmE4ZTA0NGRlZGMwZTRmMGYwOTYyOWJlYzY4MWQwMDQ0ODQuLmM4ODQxOTlmNGI2OTNj
MmJjZGE3ZjUzNzI5Y2RjYTNiMzQyNmYxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dM
aWZldGltZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNz
YWxBbmltYXRpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
IDogdWludDhfdDsKIAorc3RydWN0IEFwcEhpZ2hsaWdodDsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9w
dXBJbmZvOwogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogc3RydWN0IFZpZXdwb3J0QXR0cmli
dXRlczsKQEAgLTU3NSw3ICs1NzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3Jh
Z2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjZDNiYWNjMjMwNjU5ZGM5N2ExNWMzYzU2MWM0ODM1NWJlYTk3
ZDcwLi4wMzUwMjg5OWZkZTViY2NjZTBkY2E0NDAwN2I3NDNmOTViNzVhNmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYldo
ZWVsRXZlbnRDb2FsZXNjZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9BcHBIaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcElt
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgpAQCAtNjY4NSwx
MSArNjY4NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Y29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0FkZEhpZ2hsaWdodFRvTmV3R3JvdXApIHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMpOworICAgICAgICBj
cmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQ6Olllcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0u
YWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50R3JvdXAp
IHsKLSAgICAgICAgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0
ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC05ODM5LDExICs5ODQwLDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgT3B0aW9uYWw8CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLXZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFnZShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcmVBcHBIaWdobGln
aHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0gICAgTUVTU0FH
RV9DSEVDSyhtX3Byb2Nlc3MsIGRhdGEuYnVmZmVyKCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCAhaGlnaGxpZ2h0LmhpZ2hsaWdodC0+aXNFbXB0eSgpKTsKKworICAgIHBhZ2VDbGll
bnQoKS5zdG9yZUFwcEhpZ2hsaWdodChoaWdobGlnaHQpOwogCi0gICAgcGFnZUNsaWVudCgpLnVw
ZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCpkYXRhLmJ1ZmZlcigpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGY0YzM5ZWI4ZTU0Mzg2ZTQ4
YjhlMmM4MWVjOTkwNmVlNDQ4YjE3MTcuLmViNmY2MWYzMjMxNzBiYzI4NTM4MjNjYTVmY2EyYmQx
MGJlN2YzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0
cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHRE
YXRhLmgiCi0jaW5jbHVkZSAiQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRy
YWdDb250cm9sbGVyQWN0aW9uLmgiCkBAIC0yMzUsNiArMjM0LDcgQEAgY2xhc3MgVGV4dEluZGlj
YXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CiAKIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVu
dCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9v
bDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIEV2ZW50TWFrZXNHYW1lcGFkc1Zpc2libGUgOiBib29sOwogZW51bSBjbGFzcyBMb2NrQmFj
a0ZvcndhcmRMaXN0IDogYm9vbDsKQEAgLTI0Nyw2ICsyNDcsNyBAQCBlbnVtIGNsYXNzIFNob3Vs
ZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6
IGJvb2w7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1aW50OF90OwogCitzdHJ1Y3Qg
QXBwSGlnaGxpZ2h0Owogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CiBzdHJ1Y3QgQXR0cmli
dXRlZFN0cmluZzsKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwpAQCAtMzc0LDcg
KzM3NSw2IEBAIHN0cnVjdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTsKIHN0cnVjdCBVUkxTY2hl
bWVUYXNrUGFyYW1ldGVyczsKIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAotZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2w7CiBlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdh
Y3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDog
Ym9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CkBAIC0xODI2LDkgKzE4MjYsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jSWZNb2NrRGV2aWNlc0VuYWJsZWRDaGFuZ2VkKCk7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJ
blNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOwotICAgIHZvaWQgdXBk
YXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik7Ci0g
ICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEpOworICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNv
cmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKKyAgICB2b2lkIHN0b3JlQXBwSGlnaGxp
Z2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhp
Z2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGln
aHRzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0OTE5YmM5ODhl
OWM1ZmNhNzJmZmM4YzIxYTNmYzE0MzBiMjhjMDVhLi44MjhjYTQ0YzE4OTkwY2NmNjk5MTViMDA0
NTE1NWYxYzZjZWQ2Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzUsNyArNTM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIFVwZGF0
ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQorICAgIFN0
b3JlQXBwSGlnaGxpZ2h0KHN0cnVjdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQgaW5mbykKICNlbmRp
ZgogCiAgICAgU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgU3RyaW5nIGNoYWxsZW5nZVN0cmluZywgVVJMIHVybCkgLT4gKFN0cmluZyByZXN1
bHQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWM4N2M1OGYwMTFjYTdkYTQ5OTNj
ZjE1M2MxZDZmZTcyNDVhNGI4Li4yMTc3NzQ2ZWU1ZDkxYjI4ODc5ZDhkMjdmMGE3MTI4Y2FhMjE1
MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQVBJVUlD
bGllbnQuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKLSNpbXBv
cnQgIkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW1wb3J0ICJEb2N1bWVudEVkaXRp
bmdDb250ZXh0LmgiCiAjaW1wb3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIgogI2ltcG9y
dCAiSW5zZXJ0VGV4dE9wdGlvbnMuaCIKQEAgLTg5NzUsMTIgKzg5NzQsMTIgQEAgLSAodm9pZClz
ZXRVcEFwcEhpZ2hsaWdodE1lbnVzCiAKIC0gKHZvaWQpY3JlYXRlSGlnaGxpZ2h0SW5DdXJyZW50
R3JvdXBXaXRoUmFuZ2U6KGlkKXNlbmRlcgogewotICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGln
aHRJblNlbGVjdGVkUmFuZ2UoV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6Tm8p
OworICAgIF9wYWdlLT5jcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Ok5vKTsKIH0KIAogLSAodm9pZCljcmVhdGVIaWdo
bGlnaHRJbk5ld0dyb3VwV2l0aFJhbmdlOihpZClzZW5kZXIKIHsKLSAgICBfcGFnZS0+Y3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQ6Olllcyk7CisgICAgX3BhZ2UtPmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5n
ZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzKTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxZTZlYjA4YTljZGIzZDAwMDA2MDEzZGI1ODY1MjkyYWVjZTUyNmNhLi4wYjNlNDg3NDljZTk3
YWQwNTFhOWFjNzdiY2I2NTg5ZjVhZTI3MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTIwLDEyICsxMTkyMCw2IEBACiAJCQkJ
Q0RBQzIwQjQyM0ZCNThGMjAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQUMyMENBMjNGQzJGNzUwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQUMyMEM5MjNGQzJGNzUwMDIxREVF
MyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQkxRDQ3NjVBMTI1Q0Y1NzQwMDA3QUYzMTIgLyogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUQ0NzY1OUMyNUNFNzRBRDAwN0FGMzEyIC8qIFJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MUQ0NzY1OUQyNUNFNzRBRDAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTg2MjVDQ0E0MTYwMDdB
RjMxMiAvKiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MUQ0NzY1OTMyNUNDQ0U5MzAwN0FGMzEyIC8qIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFENDc2NTk0MjVDQ0NFOTMwMDdBRjMxMiAvKiBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFF
QTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGMwOWEyN2I3ZTdmNTNmYjQ0MjQ0NDcxYTZk
NmI3NGZjZTA1ZDQzYTAuLmZhODRlZmFkM2MzMzBmYjFkMWJiMTc5NDkwYTNlYmVkNzljZjFiYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU2VhcmNoUG9wdXBNZW51LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9B
cHBIaWdobGlnaHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvckNob29zZXIuaD4KQEAgLTEyNDQsMTAgKzEyNDUsOSBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwg
VmVjdG9yPAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6dXBkYXRlQXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYgaGlnaGxpZ2h0KSBjb25zdAogewot
ICAgIGF1dG8gYnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGRhdGEpOwotICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdl
KGJ1ZmZlcikpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3Jl
QXBwSGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCAwMTRiZGNmMzkzNjVmYmI3YWQ3MDkzZWNjODRjMDlkYzI3MGQwYjRmLi42YTMzMzE1YTYz
ZDM1ZGI3YTY3MjRiMzcxZWEzNzdjYzZmNjdhZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0z
NDcsNyArMzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZlbnQoV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFn
cz4pIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIHZvaWQgdXBkYXRl
QXBwSGlnaGxpZ2h0c1N0b3JhZ2UoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHQmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc2M2Jj
YWI4Njk2MmM3OWI2NzJmYzMzMzEyM2M3MTRlYzJjZTEzNjYuLjE0ZDUzZDRmNDQ1YWI1NzMzZTQw
YTFiY2YwMGI3MjZkNzM0OWIxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC03MjUwLDcgKzcyNTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJldm9r
ZVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+JiBzYW5k
Ym94RQogfQogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotYm9vbCBXZWJQYWdlOjpjcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
Y3JlYXRlTmV3R3JvdXApCitib29sIFdlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0
ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91
cCkKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCkBAIC03MjYzLDE2ICs3
MjYzLDIxIEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdl
KENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdodChT
dGF0aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpKTsKLSAgICBkb2N1bWVu
dC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKCk7Cisg
ICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5zdG9yZUFwcEhpZ2hsaWdodChTdGF0
aWNSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLnZhbHVlKCkpLCBjcmVhdGVOZXdHcm91cCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxp
Z2h0cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiBt
ZW1vcnlIYW5kbGVzKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CiAKLSAg
ICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBcHBIaWdobGlnaHRzKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgaXBjSGFuZGxlIDogbWVtb3J5SGFuZGxlcykgeworICAgICAgICBhdXRvIHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3Rv
cmFnZSgpLnJlc3RvcmVBcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXpl
KCkpKTsKKyAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGViNTI0ODkwMjgxNTAyNmE0N2JhOWQ4YzUwYzdjOGZjYjQ1ZTE5
ZTAuLjQ2YzAzYWY2NzYwNTk4NDVhYzUzNTlmNjUxZWQzNGM1MTUzODBiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAi
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgotI2luY2x1ZGUgIkNyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKQEAgLTIwNCw2
ICsyMDMsNyBAQCBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwogCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKK2VudW0gY2xhc3MgQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vz
c1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgOiB1
aW50OF90OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90OwpAQCAtMTM5
Niw4ICsxMzk2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCi0gICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQpOwotICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVj
dGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOworICAgIHZvaWQg
cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
PiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xs
aW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDhjZmNjNDljZjZmMzgwNzZhZjljMzIzMTkzYWQzNzUzNDhhNDQ4ZjAu
LjgyNzMxMTZlODMzMTc4MjcyMGFiZDFlZDY1N2FhZjIyMzJlN2JmM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
NjI0LDggKzYyNCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU2V0Q2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoYm9vbCBjYW5Vc2UpCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
Ci0gICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJLaXQ6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQotICAgIFJlc3RvcmVB
cHBIaWdobGlnaHRzKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIENy
ZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCisgICAgUmVzdG9yZUFwcEhpZ2hs
aWdodHMoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRs
ZXMpCiAjZW5kaWYKIAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2Vi
S2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCAxYTY2Y2U5ZGZmODFhYjkyZTJlN2E4ZWJmNWFjODA5YTliZDlkMmQyLi4y
OWNlYzNmYjMzZjUxNjdlMGUzMWM0YzdhN2Q4ZWEzODIyY2JjOTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBf
SElHSExJR0hUUykKLSAgICB2b2lkIHVwZGF0ZUFwcEhpZ2hsaWdodHNTdG9yYWdlKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcmVBcHBIaWdo
bGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JikgY29uc3QgZmluYWw7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggODZhZmEw
ZTlkMzdhY2ZlM2VkMzRjYzA0YzJmMDA0ZjFlNWRlY2VkNS4uMTUxMTEzMmI1MzRkYWVlNTE4YjAy
YzZjNmU2YzczZmQxMWQ1ZDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtNzQ1LDcgKzc0NSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGltZUNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVUaW1lCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVBcHBIaWdobGlnaHRzU3RvcmFn
ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBjb25zdAordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpIGNvbnN0
CiB7CiB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>