<?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>232737</bug_id>
          
          <creation_ts>2021-11-04 17:08:52 -0700</creation_ts>
          <short_desc>Add basic support for launching CaptivePortalMode WebProcesses</short_desc>
          <delta_ts>2021-11-11 14:40: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>WebKit2</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>
          <dependson>233016</dependson>
          <blocked>232958</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</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>1812019</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-04 17:09:05 -0700</bug_when>
    <thetext>&lt;rdar://84473037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812020</commentid>
    <comment_count>2</comment_count>
      <attachid>443357</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-04 17:13:09 -0700</bug_when>
    <thetext>Created attachment 443357
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812115</commentid>
    <comment_count>3</comment_count>
      <attachid>443392</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 07:57:30 -0700</bug_when>
    <thetext>Created attachment 443392
WIP Patch (with API test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812139</commentid>
    <comment_count>4</comment_count>
      <attachid>443401</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 09:13:18 -0700</bug_when>
    <thetext>Created attachment 443401
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812147</commentid>
    <comment_count>5</comment_count>
      <attachid>443406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 09:29:41 -0700</bug_when>
    <thetext>Created attachment 443406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812152</commentid>
    <comment_count>6</comment_count>
      <attachid>443406</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-11-05 09:46:35 -0700</bug_when>
    <thetext>Comment on attachment 443406
Patch

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

&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:95
&gt; +            JSC::Options::Options::useJIT() = false;

I think for miniMode we also want:

JSC::Options::Options::useGenerationalGC() = false;
JSC::Options::Options::useConcurrentGC() = false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812155</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-11-05 09:48:39 -0700</bug_when>
    <thetext>The content of attachment 443357 has been deleted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812156</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-11-05 09:48:48 -0700</bug_when>
    <thetext>The content of attachment 443392 has been deleted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812157</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-11-05 09:48:58 -0700</bug_when>
    <thetext>The content of attachment 443401 has been deleted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812160</commentid>
    <comment_count>10</comment_count>
      <attachid>443412</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 09:57:25 -0700</bug_when>
    <thetext>Created attachment 443412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812184</commentid>
    <comment_count>11</comment_count>
      <attachid>443412</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-11-05 10:57:05 -0700</bug_when>
    <thetext>Comment on attachment 443412
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3439
&gt; +    auto shouldEnableMiniMode = (policies ? policies-&gt;miniModeEnabled() : isMiniModeEnabledGlobally()) ? WebProcessProxy::IsMiniModeEnabled::Yes : WebProcessProxy::IsMiniModeEnabled::No;

If the global switch is not &quot;force enable mini mode&quot; but instead a /fallback/, why not just use the normal bit on defaultWebpagePreferences in WKWebViewConfiguration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812186</commentid>
    <comment_count>12</comment_count>
      <attachid>443418</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 11:01:53 -0700</bug_when>
    <thetext>Created attachment 443418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812190</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 11:10:14 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #11)
&gt; Comment on attachment 443412 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443412&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3439
&gt; &gt; +    auto shouldEnableMiniMode = (policies ? policies-&gt;miniModeEnabled() : isMiniModeEnabledGlobally()) ? WebProcessProxy::IsMiniModeEnabled::Yes : WebProcessProxy::IsMiniModeEnabled::No;
&gt; 
&gt; If the global switch is not &quot;force enable mini mode&quot; but instead a
&gt; /fallback/, why not just use the normal bit on defaultWebpagePreferences in
&gt; WKWebViewConfiguration?

Captive portal mode can be enabled / disabled system wide. Then it can be overridden by browsers per-site via WKWebpagePreferences.

The issue with WKWebViewConfiguration.defaultWebpagePreferences.captivePortalModeEnabled is that it only applies to WebViews using this configuration, it is not app-global.

Also, when the client is setting captivePortalModeEnabled on a WKWebpagePreferences object, how do I know if I am supposed to set the global NSUserDefault or not? How do I differentiate the case where the client wants to set it globally vs the client wants to set it by default for all views using this WKWebViewConfiguration (or only for this navigation)?

This is why I introduced a WKWebpagePreferences._captivePortalModeEnabled class property (readwrite), so that the client can set or query the global state of the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812192</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 11:34:32 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; (In reply to Tim Horton from comment #11)
&gt; &gt; Comment on attachment 443412 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=443412&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3439
&gt; &gt; &gt; +    auto shouldEnableMiniMode = (policies ? policies-&gt;miniModeEnabled() : isMiniModeEnabledGlobally()) ? WebProcessProxy::IsMiniModeEnabled::Yes : WebProcessProxy::IsMiniModeEnabled::No;
&gt; &gt; 
&gt; &gt; If the global switch is not &quot;force enable mini mode&quot; but instead a
&gt; &gt; /fallback/, why not just use the normal bit on defaultWebpagePreferences in
&gt; &gt; WKWebViewConfiguration?
&gt; 
&gt; Captive portal mode can be enabled / disabled system wide. Then it can be
&gt; overridden by browsers per-site via WKWebpagePreferences.
&gt; 
&gt; The issue with
&gt; WKWebViewConfiguration.defaultWebpagePreferences.captivePortalModeEnabled is
&gt; that it only applies to WebViews using this configuration, it is not
&gt; app-global.
&gt; 
&gt; Also, when the client is setting captivePortalModeEnabled on a
&gt; WKWebpagePreferences object, how do I know if I am supposed to set the
&gt; global NSUserDefault or not? How do I differentiate the case where the
&gt; client wants to set it globally vs the client wants to set it by default for
&gt; all views using this WKWebViewConfiguration (or only for this navigation)?
&gt; 
&gt; This is why I introduced a WKWebpagePreferences._captivePortalModeEnabled
&gt; class property (readwrite), so that the client can set or query the global
&gt; state of the feature.

After discussing with Tim and Wenson offline, I think we have a simpler proposal. Reworking the patch now..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812227</commentid>
    <comment_count>15</comment_count>
      <attachid>443431</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 13:30:55 -0700</bug_when>
    <thetext>Created attachment 443431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812234</commentid>
    <comment_count>16</comment_count>
      <attachid>443431</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-11-05 13:46:29 -0700</bug_when>
    <thetext>Comment on attachment 443431
Patch

Not sure about all of the &quot;is&quot; prefixes (also you have both &quot;shouldUse&quot; and &quot;shouldEnable&quot; and I think they have the same meaning?), but this seems better to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812240</commentid>
    <comment_count>17</comment_count>
      <attachid>443435</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-05 14:08:11 -0700</bug_when>
    <thetext>Created attachment 443435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812929</commentid>
    <comment_count>18</comment_count>
      <attachid>443435</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-08 16:59:12 -0800</bug_when>
    <thetext>Comment on attachment 443435
Patch

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

&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:100
&gt;              JSC::ExecutableAllocator::setJITEnabled(false);

This does some stronger things that we may want to do in captive portal mode.
We should also audit the users of disable-jit and see if they can migrate to this as a replacement.

&gt; Source/WebKit/UIProcess/API/APIWebsitePolicies.h:163
&gt; +    std::optional&lt;bool&gt; m_captivePortalModeEnabled;

This can just be a bool that defaults to WebKit::captivePortalModeEnabledBySystem(), right?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:7630
&gt; +// On iOS, the captive portal mode API requires a browser entitlement.

Why don&apos;t we give TestWebKitAPI this entitlement to test what happens when you have it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812933</commentid>
    <comment_count>19</comment_count>
      <attachid>443435</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 17:14:16 -0800</bug_when>
    <thetext>Comment on attachment 443435
Patch

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

&gt;&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:100
&gt;&gt;              JSC::ExecutableAllocator::setJITEnabled(false);
&gt; 
&gt; This does some stronger things that we may want to do in captive portal mode.
&gt; We should also audit the users of disable-jit and see if they can migrate to this as a replacement.

&gt; This does some stronger things that we may want to do in captive portal mode.
I don&apos;t understand this comment. Also, why are you commenting on the pre-existing disable-jit flag. I am not relying on this pre-existing disable-jit flag because we turn off more JSC features in captive portal mode. Also, in a follow-up patch, it will also impact WebCore settings, not just JSC options.

&gt;&gt; Source/WebKit/UIProcess/API/APIWebsitePolicies.h:163
&gt;&gt; +    std::optional&lt;bool&gt; m_captivePortalModeEnabled;
&gt; 
&gt; This can just be a bool that defaults to WebKit::captivePortalModeEnabledBySystem(), right?

The reason I used an std::optional&lt;bool&gt; is that the system setting may change during the lifetime of the APIWebsitePolicies object. If I use a bool and set the value at construction time, then we won&apos;t update it if the system setting changes.
This is especially problematic for WKWebViewConfiguration.defaultWebpagePreferences which has a long lifetime.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:7630
&gt;&gt; +// On iOS, the captive portal mode API requires a browser entitlement.
&gt; 
&gt; Why don&apos;t we give TestWebKitAPI this entitlement to test what happens when you have it?

It would be nice, yes. I don&apos;t know how to do that yet but I will look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812935</commentid>
    <comment_count>20</comment_count>
      <attachid>443435</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-08 17:16:05 -0800</bug_when>
    <thetext>Comment on attachment 443435
Patch

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

&gt;&gt;&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:100
&gt;&gt;&gt;              JSC::ExecutableAllocator::setJITEnabled(false);
&gt;&gt; 
&gt;&gt; This does some stronger things that we may want to do in captive portal mode.
&gt;&gt; We should also audit the users of disable-jit and see if they can migrate to this as a replacement.
&gt; 
&gt; 

I may be wrong, but I think ExecutableAllocator::setJITEnabled makes it so the process is unable to allocate executable memory even if compromised, whereas JSC::Options::useJIT() = false; just makes it so it doesn&apos;t try to under normal circumstances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812936</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 17:18:00 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #20)
&gt; Comment on attachment 443435 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443435&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:100
&gt; &gt;&gt;&gt;              JSC::ExecutableAllocator::setJITEnabled(false);
&gt; &gt;&gt; 
&gt; &gt;&gt; This does some stronger things that we may want to do in captive portal mode.
&gt; &gt;&gt; We should also audit the users of disable-jit and see if they can migrate to this as a replacement.
&gt; &gt; 
&gt; &gt; 
&gt; 
&gt; I may be wrong, but I think ExecutableAllocator::setJITEnabled makes it so
&gt; the process is unable to allocate executable memory even if compromised,
&gt; whereas JSC::Options::useJIT() = false; just makes it so it doesn&apos;t try to
&gt; under normal circumstances.

Oh I see. I didn&apos;t understand that initially. ExecutableAllocator::setJITEnabled() may be more suitable then, I&apos;ll look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812937</commentid>
    <comment_count>22</comment_count>
      <attachid>443435</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 17:19:37 -0800</bug_when>
    <thetext>Comment on attachment 443435
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:100
&gt;&gt;&gt;&gt;&gt;              JSC::ExecutableAllocator::setJITEnabled(false);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; This does some stronger things that we may want to do in captive portal mode.
&gt;&gt;&gt;&gt; We should also audit the users of disable-jit and see if they can migrate to this as a replacement.
&gt;&gt;&gt; 
&gt;&gt;&gt; 
&gt;&gt; 
&gt;&gt; I may be wrong, but I think ExecutableAllocator::setJITEnabled makes it so the process is unable to allocate executable memory even if compromised, whereas JSC::Options::useJIT() = false; just makes it so it doesn&apos;t try to under normal circumstances.
&gt; 
&gt; Oh I see. I didn&apos;t understand that initially. ExecutableAllocator::setJITEnabled() may be more suitable then, I&apos;ll look into it.

If I remember correctly, the reason I used `JSC::Options::useJIT() = false` is that `[webView _isJITEnabled:(void(^)(BOOL))completionHandler]` was returning NO when using `JSC::ExecutableAllocator::setJITEnabled(false)`. This may be an issue with _isJITEnabled not properly detecting that JIT is disable though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812954</commentid>
    <comment_count>23</comment_count>
      <attachid>443642</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 17:52:51 -0800</bug_when>
    <thetext>Created attachment 443642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812962</commentid>
    <comment_count>24</comment_count>
      <attachid>443646</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 18:37:12 -0800</bug_when>
    <thetext>Created attachment 443646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812963</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-08 18:38:36 -0800</bug_when>
    <thetext>Per Alex&apos;s feedback:
- Now using `ExecutableAllocator::setJITEnabled(false)` instead of `JSC::Options::Options::useJIT() = false;`.
- Also giving the browser entitlement to TestWebKitAPI on iOS so I can enable the API tests on iOS as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813658</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-10 09:49:24 -0800</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813711</commentid>
    <comment_count>27</comment_count>
      <attachid>443646</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-11-10 11:10:17 -0800</bug_when>
    <thetext>Comment on attachment 443646
Patch

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

r=me

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.h:74
&gt; +/*! @abstract A boolean indicating whether captive portal mode is enabled.

nit: Captive Portal ?

&gt; Tools/TestWebKitAPI/Configurations/TestWebKitAPI-iOS.entitlements:14
&gt; +        &lt;true/&gt;

Nit: Weird whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813713</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-10 11:14:37 -0800</bug_when>
    <thetext>Committed r285594 (244102@main): &lt;https://commits.webkit.org/244102@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>443357</attachid>
            <date>2021-11-04 17:13:09 -0700</date>
            <delta_ts>2021-11-05 09:50:01 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>MiniMode_API_wip.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>443392</attachid>
            <date>2021-11-05 07:57:30 -0700</date>
            <delta_ts>2021-11-05 09:49:45 -0700</delta_ts>
            <desc>WIP Patch (with API test)</desc>
            <filename>MiniMode_API_wip.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>443401</attachid>
            <date>2021-11-05 09:13:18 -0700</date>
            <delta_ts>2021-11-05 09:29:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>MiniMode_API_wip.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443406</attachid>
            <date>2021-11-05 09:29:41 -0700</date>
            <delta_ts>2021-11-05 09:57:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211105092940.patch</filename>
            <type>text/plain</type>
            <size>54450</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjllNTY0OGU3Nzg3OTZm
NTY3NTMzNWU4MDllNDQ0ZmQ4NTlmMDMuLjRlNzM0N2Q3ZTVmNWJiM2M2ZDJkNzZhMTAwNTQ1MTg0
YmI4ZWJkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIE1pbmktbW9kZSBXZWJQcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjczNworICAgICAgICA8cmRhcjovLzg0NDczMDM3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgYFdLV2VicGFnZVByZWZlcmVuY2VzLm1pbmlNb2RlRW5hYmxlZGAgQVBJIHRvIGFsbG93IGNs
aWVudHMgYXBwcyB0byBvcHQgaW4gb3IKKyAgICAgICAgb3V0IG9mIG1pbmktbW9kZSBmb3IgZWFj
aCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJlbmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2
aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNpb24pLgorCisgICAgICAgIEFsc28gYWRkIGEg
YFdLV2VicGFnZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseWAgU1BJIChyZWFk
d3JpdGUgY2xhc3MgcHJvcGVydHkpCisgICAgICAgIHRvIHF1ZXJ5IG9yIHRvZ2dsZSBtaW5pLW1v
ZGUgYXBwLXdpZGUuIFRoaXMgaXMgY3VycmVudGx5IGJhY2tlZCBieSBhIE5TVXNlckRlZmF1bHRz
IGJ1dAorICAgICAgICB3ZSB3aWxsIG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRvIHNvbWV0aGlu
ZyBlbHNlIChtYXliZSBUQ0M/KS4KKworICAgICAgICBOb3RlIHRoYXQgYm90aCB0aGVzZSBwcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIHNldCBieSBhcHBzIHdpdGggdGhlIGJyb3dzZXIgZW50aXRsZW1l
bnQgb24KKyAgICAgICAgaU9TIChubyByZXN0cmljdGlvbiBvbiBtYWNPUykuCisKKyAgICAgICAg
V2hlbmV2ZXIgdHJhbnNpc2l0aW9uaW5nIGluIG9yIG91dCBvZiBtaW5pLW1vZGUsIHdlIHByb2Nl
c3Mtc3dhcCBvbiBuYXZpZ2F0aW9uIHBvbGljeQorICAgICAgICBkZWNpc2lvbi4gV2hlbmV2ZXIg
bWluaS1tb2RlIGlzIGVuYWJsZWQsIHdlIHR1cm4gb24gSlNDJ3MgVk0gbWluaSBtb2RlIGFuZCBk
aXNhYmxlIEpJVAorICAgICAgICBpbiB0aGUgV2ViUHJvY2VzcywgYXMgc29vbiBhcyBpdCBpcyBs
YXVuY2hlZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAg
KiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAo
QVBJOjpXZWJzaXRlUG9saWNpZXM6OmNvcHkgY29uc3QpOgorICAgICAgICAoQVBJOjpXZWJzaXRl
UG9saWNpZXM6Om1pbmlNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlUG9saWNpZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2VicGFnZVByZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgX21p
bmlNb2RlRW5hYmxlZEdsb2JhbGx5XSk6CisgICAgICAgICgrW1dLV2VicGFnZVByZWZlcmVuY2Vz
IF9zZXRNaW5pTW9kZUVuYWJsZWRHbG9iYWxseTpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgc2V0TWluaU1vZGVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBtaW5pTW9kZUVuYWJsZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojppc01pbmlNb2RlRW5h
YmxlZEdsb2JhbGx5KToKKyAgICAgICAgKFdlYktpdDo6c2V0SXNNaW5pTW9kZUVuYWJsZWRHbG9i
YWxseSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6c2hvdWxkRW5hYmxlTWlu
aU1vZGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBh
Z2VQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyaWdnZXJCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaEZv
ck5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5l
d1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVBy
ZXdhcm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0Zvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OmlzTWluaU1vZGVFbmFi
bGVkR2xvYmFsbHkpOgorICAgICAgICAoV2ViS2l0OjpzZXRJc01pbmlNb2RlRW5hYmxlZEdsb2Jh
bGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZUZvclNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpX
ZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc01pbmlNb2RlRW5hYmxlZCBjb25z
dCk6CisKIDIwMjEtMTEtMDQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBIYXZlIFJlbW90ZU1lZGlhUmVzb3VyY2UgdXNlIFNoYXJlZE1lbW9yeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaApp
bmRleCBmZjdhNDRjNWJhMzZmYzliY2ZiZGMzMTJiOTNkMzNiYjk1ZGE2NzJiLi41OWE5M2IyNjQ0
N2RkZjc2ZWY0ZGM2MTgzNzk5YTcxZWM2N2ZkODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaApAQCAtODksNiArODksMTIg
QEAgdm9pZCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25f
dD4gY29ubmVjdGlvbiwgeHBjX29iamVjdF8KICAgICBpZiAoaW5pdGlhbGl6ZXJNZXNzYWdlKSB7
CiAgICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChpbml0aWFsaXplck1lc3NhZ2Us
ICJjb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCiAgICAgICAgICAgICBKU0M6OkNvbmZpZzo6
Y29uZmlndXJlRm9yVGVzdGluZygpOworICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X2Jv
b2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZW5hYmxlLW1pbmktbW9kZSIpKSB7CisgICAgICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUoKTsKKyAgICAgICAgICAgIEpTQzo6T3B0aW9uczo6
QWxsb3dVbmZpbmFsaXplZEFjY2Vzc1Njb3BlIHNjb3BlOworICAgICAgICAgICAgSlNDOjpPcHRp
b25zOjpPcHRpb25zOjp1c2VKSVQoKSA9IGZhbHNlOworICAgICAgICAgICAgSlNDOjpPcHRpb25z
Ojpmb3JjZU1pbmlWTU1vZGUoKSA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKHhwY19k
aWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVyTWVzc2FnZSwgImRpc2FibGUtaml0IikpCiAg
ICAgICAgICAgICBKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQoZmFsc2Up
OwogICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdl
LCAiZW5hYmxlLXNoYXJlZC1hcnJheS1idWZmZXIiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAppbmRleCAzZWE0YjFiOTFkOTlm
MzRlZGExOGZlMTJiMTI1ZDM3OTg5NGExMzY2Li5lYWEyNGZlM2Q3OTgyNjAzMWU4NzViZDhiODU5
ZjZjMmEzOTQ4MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Bvb2wuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRh
LmgiCkBAIC03Miw2ICs3Myw3IEBAIFJlZjxXZWJzaXRlUG9saWNpZXM+IFdlYnNpdGVQb2xpY2ll
czo6Y29weSgpIGNvbnN0CiAgICAgcG9saWNpZXMtPnNldEFsbG93U2l0ZVNwZWNpZmljUXVpcmtz
VG9PdmVycmlkZUNvbnRlbnRNb2RlKG1fYWxsb3dTaXRlU3BlY2lmaWNRdWlya3NUb092ZXJyaWRl
Q29udGVudE1vZGUpOwogICAgIHBvbGljaWVzLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9w
VXNlckFnZW50KG1fYXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCk7CiAgICAgcG9s
aWNpZXMtPnNldEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0KG1fYWxsb3dzQ29udGVudEphdmFTY3Jp
cHQpOworICAgIHBvbGljaWVzLT5zZXRNaW5pTW9kZUVuYWJsZWQobV9taW5pTW9kZUVuYWJsZWQp
OwogICAgIHBvbGljaWVzLT5zZXRNb3VzZUV2ZW50UG9saWN5KG1fbW91c2VFdmVudFBvbGljeSk7
CiAgICAgcmV0dXJuIHBvbGljaWVzOwogfQpAQCAtMTIzLDUgKzEyNSwxMCBAQCBXZWJLaXQ6Oldl
YnNpdGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzOjpkYXRhKCkKICAgICB9OwogfQogCiti
b29sIFdlYnNpdGVQb2xpY2llczo6bWluaU1vZGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9taW5pTW9kZUVuYWJsZWQgPyAqbV9taW5pTW9kZUVuYWJsZWQgOiBXZWJLaXQ6OmlzTWlu
aU1vZGVFbmFibGVkR2xvYmFsbHkoKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKaW5kZXggY2RlMDc1M2ZkMWM0Mzk2NDEx
ZGMwYjRlMzQ4YTkzMWY1MWIxNzBmZC4uMGRhOWUyODAzOWE0YWU1YmNjMzMyZGZjZjRhNGI1Nzk3
NzBjNzhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuaApAQCAtMTI1LDYgKzEyNSw5IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpBbGxv
d3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHQ7IH0KICAgICB2b2lkIHNldEFsbG93c0NvbnRl
bnRKYXZhU2NyaXB0KFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93cykgeyBt
X2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0ID0gYWxsb3dzOyB9CiAKKyAgICBib29sIG1pbmlNb2Rl
RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0TWluaU1vZGVFbmFibGVkKHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbWluaU1vZGVFbmFibGVkKSB7IG1fbWluaU1vZGVFbmFibGVkID0gbWluaU1vZGVF
bmFibGVkOyB9CisKICAgICBXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IG1vdXNlRXZlbnRQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX21vdXNlRXZlbnRQb2xpY3k7IH0KICAgICB2b2lkIHNldE1v
dXNlRXZlbnRQb2xpY3koV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSBwb2xpY3kpIHsgbV9tb3Vz
ZUV2ZW50UG9saWN5ID0gcG9saWN5OyB9CiAKQEAgLTE1Nyw2ICsxNjAsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IG1fYWxsb3dzQ29udGVudEphdmFT
Y3JpcHQgeyBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVzIH07CiAgICAgV2Vi
Q29yZTo6TW91c2VFdmVudFBvbGljeSBtX21vdXNlRXZlbnRQb2xpY3kgeyBXZWJDb3JlOjpNb3Vz
ZUV2ZW50UG9saWN5OjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2lkZW1wb3RlbnRNb2RlQXV0b3Np
emluZ09ubHlIb25vcnNQZXJjZW50YWdlcyB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBtX21pbmlNb2RlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVu
Y2VzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVy
ZW5jZXMuaAppbmRleCA0YTIzNmRhN2Q3NThhYjk2ZDZiNzU2ZDc1ZmNhZDJhMWMzYjczZDBhLi5h
ZjNiNDZlZDgzODY2MWUyODM0NjJmZWRjN2Q4N2RhYTdjMTZhOGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMu
aApAQCAtNzEsNCArNzEsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpCiAqLwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzQ29udGVudEphdmFT
Y3JpcHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIAorLyohIEBh
YnN0cmFjdCBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIEpTQyB2bSBtaW5pLW1vZGUgaXMg
ZW5hYmxlZC4KKyBAZGlzY3Vzc2lvbiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBOTywgdW5sZXNzIGVu
YWJsZWQgc3lzdGVtLXdpZGUuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIG1pbmlN
b2RlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0KaW5kZXggNWViMTIwMThkOWE0N2UzNGI2
NmVkZDdlZTA4NTgzZTE3ODc0ZjMxYS4uMDQ2YTUyMmUyNDMxMjVjODhiMTU1YWRiZmRjMDFhM2Fk
NTFmNGYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2VicGFnZVByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQpAQCAtMzEsMTEgKzMxLDE2IEBACiAjaW1wb3J0
ICJXS1dlYnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRh
U3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ29udGVudE1vZGUuaCIKKyNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5o
IgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC0zNjcsNiArMzcyLDIwIEBAIC0gKHZvaWQpX3NldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dFdpdGhNb2Rlcm5Db21wYXRpYmlsaXR5OihOU1N0cmluZyAqKWFwcGxpCiAgICAgX3dlYnNpdGVQ
b2xpY2llcy0+c2V0QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChhcHBsaWNhdGlv
bk5hbWUpOwogfQogCisrIChCT09MKV9taW5pTW9kZUVuYWJsZWRHbG9iYWxseQoreworICAgIHJl
dHVybiBXZWJLaXQ6OmlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKTsKK30KKworKyAodm9pZClf
c2V0TWluaU1vZGVFbmFibGVkR2xvYmFsbHk6KEJPT0wpdmFsdWUKK3sKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBs
ZS5kZXZlbG9wZXIud2ViLWJyb3dzZXIiKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAg
V2ViS2l0OjpzZXRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KCEhdmFsdWUpOworfQorCiAtIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewogICAgIHJldHVybiAqX3dlYnNpdGVQb2xpY2llczsK
QEAgLTM4Nyw2ICs0MDYsMjAgQEAgLSAoQk9PTClhbGxvd3NDb250ZW50SmF2YVNjcmlwdAogICAg
IH0KIH0KIAorLSAodm9pZClzZXRNaW5pTW9kZUVuYWJsZWQ6KEJPT0wpaXNNaW5pTW9kZUVuYWJs
ZWQKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghV1RGOjpwcm9jZXNzSGFz
RW50aXRsZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXIiKSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0TWluaU1vZGVFbmFibGVk
KCEhaXNNaW5pTW9kZUVuYWJsZWQpOworfQorCistIChCT09MKW1pbmlNb2RlRW5hYmxlZAorewor
ICAgIHJldHVybiBfd2Vic2l0ZVBvbGljaWVzLT5taW5pTW9kZUVuYWJsZWQoKTsKK30KKwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKHZvaWQpc2V0UHJlZmVycmVkQ29udGVudE1vZGU6
KFdLQ29udGVudE1vZGUpY29udGVudE1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaApp
bmRleCA0NzdmZGMxMWYzMmY5ZGZiOWViMGQxOGI5M2Y0YjI0NzBkNDdiNDQ5Li4wZDE2NmYyMmUy
MDM5MjA1NDEwZjM5MTUyNmZlMjUxMDJiYWQ4NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzUHJp
dmF0ZS5oCkBAIC04NSw0ICs4NSw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tXZWJzaXRlTW91c2VFdmVudFBvbGljeSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRNb3VzZUV2ZW50UG9saWN5OikgX1dLV2Vic2l0ZU1vdXNlRXZlbnRQb2xpY3kgX21v
dXNlRXZlbnRQb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsK
IAorQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCBzZXR0ZXI9X3NldE1pbmlNb2RlRW5hYmxl
ZEdsb2JhbGx5OikgQk9PTCBfbWluaU1vZGVFbmFibGVkR2xvYmFsbHkgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5k
ZXggMTFmMDUzZjFiNTM3ZWE2NGZjMjQxZTYwYTNkZTk3MDYxOWMwMWQ4Zi4uMWE2MmZlYjY2OTVm
MDJlN2RiNTI4NjU2NDZmN2RlYjcxODNkZTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC05ODgsNiArOTg4LDI1
IEBAIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpCiAgICAgcmV0dXJuIHFvczsKIH0KIAor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2FjaGVkSXNNaW5pTW9kZUVuYWJsZWRHbG9iYWxs
eTsKKworYm9vbCBpc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KCkKK3sKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGludmFsaWRhdGUgdGhlIGNhY2hlZCB2YWx1ZSB3aGVuIHRoZSBOU1VzZXJEZWZh
dWx0IGNoYW5nZXMuCisgICAgaWYgKCFjYWNoZWRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KSB7
CisgICAgICAgIC8vIEZJWE1FOiBVc2luZyBOU1VzZXJEZWZhdWx0cyBpcyBhIHRlbXBvcmFyeSB3
b3JrYXJvdW5kLiBUaGlzIHNldHRpbmcgc2hvdWxkIGJlIHN0b3JlZCBlbHNld2hlcmUgKFRDQz8p
LgorICAgICAgICBjYWNoZWRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5ID0gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdElzTWluaU1vZGVF
bmFibGVkIl07CisgICAgfQorICAgIHJldHVybiAqY2FjaGVkSXNNaW5pTW9kZUVuYWJsZWRHbG9i
YWxseTsKK30KKwordm9pZCBzZXRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KGJvb2wgaXNNaW5p
TW9kZUVuYWJsZWQpCit7CisgICAgLy8gRklYTUU6IFVzaW5nIE5TVXNlckRlZmF1bHRzIGlzIGEg
dGVtcG9yYXJ5IHdvcmthcm91bmQuIFRoaXMgc2V0dGluZyBzaG91bGQgYmUgc3RvcmVkIGVsc2V3
aGVyZSAoVENDPykuCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
c2V0Qm9vbDppc01pbmlNb2RlRW5hYmxlZCBmb3JLZXk6QCJXZWJLaXRJc01pbmlNb2RlRW5hYmxl
ZCJdOworICAgIGNhY2hlZElzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkgPSBpc01pbmlNb2RlRW5h
YmxlZDsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjphcHBsaWNhdGlvbklzQWJvdXRUb1N1c3BlbmQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA3NTY2YzRlNjQ3NzM5
YmJiMWIwZjMxYTM3NTc3Yjc2MmM2OGExNGVmLi5jY2Q1ZWU3MGZmMTc5ZjNlMjhhMDQ1MTYyNjlm
MWU5NmJhZDgzMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZVNoYXJlZEFycmF5
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZEVuYWJsZU1pbmlNb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVu
dEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVy
TWFjLm1tCmluZGV4IGUyODhlMzA4NGIwZDEyZGQzZGQ4MzFlYjZmMjYzYjQ0ZjdhZmU5NmIuLjli
YjQ1NzliODU3YTc0ZmNlNTVmNzA1OTI3ZmRiYTIyODZjMmI5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbQpAQCAtMjAzLDYgKzIwMyw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9j
ZXNzKCkKICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKGJvb3RzdHJhcE1lc3Nh
Z2UuZ2V0KCksICJkaXNhYmxlLWppdCIsIHRydWUpOwogICAgICAgICBpZiAobV9jbGllbnQtPnNo
b3VsZEVuYWJsZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAgICB4cGNfZGljdGlvbmFy
eV9zZXRfYm9vbChib290c3RyYXBNZXNzYWdlLmdldCgpLCAiZW5hYmxlLXNoYXJlZC1hcnJheS1i
dWZmZXIiLCB0cnVlKTsKKyAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRFbmFibGVNaW5pTW9k
ZSgpKQorICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVzc2Fn
ZS5nZXQoKSwgImVuYWJsZS1taW5pLW1vZGUiLCB0cnVlKTsKICAgICB9CiAKICAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfc3RyaW5nKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUi
LCAiYm9vdHN0cmFwIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcAppbmRleCA3MmY1NThmN2YwNjc1MTE1NjRiZWIxYmE1ZGJmNWZhZmJmZWJjY2U1
Li4xNTI0Y2M4YjY1M2E5ZTQ2ZDNjYzAxOTgxZDI2ZmI0MzllZDZkYjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTM0LDcgKzM0LDYg
QEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTUwLDExICs0OSwx
MSBAQCBzdGF0aWMgSGFzaFNldDxTdXNwZW5kZWRQYWdlUHJveHkqPiYgYWxsU3VzcGVuZGVkUGFn
ZXMoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLVJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFN1c3Bl
bmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK1JlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3Mo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1By
b3h5OjpJc01pbmlNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVNaW5pTW9kZSkKIHsKICAgICBmb3Ig
KGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBhbGxTdXNwZW5kZWRQYWdlcygpKSB7CiAgICAgICAgIGF1
dG8mIHByb2Nlc3MgPSBzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7Ci0gICAgICAgIGlmICgmcHJv
Y2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxl
RG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nlc3Mud2Vic2l0ZURhdGFTdG9y
ZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09y
aWdpbk1vZGU6Oklzb2xhdGVkKQorICAgICAgICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9
PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJh
YmxlRG9tYWluICYmICZwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlICYm
IHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkgIT0gQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCAm
JiBwcm9jZXNzLmlzTWluaU1vZGVFbmFibGVkKCkgPT0gc2hvdWxkRW5hYmxlTWluaU1vZGUpCiAg
ICAgICAgICAgICByZXR1cm4gJnByb2Nlc3M7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBmNDRh
YjNhZjU4OTcwOGNkYjlmMjQ5ZWRiNWI0MWM0ZmJkMDE3NjUyLi41MGYxNGQ1MDVjNThmMTY4YjRh
NDdlMWE2YzBlYzYzMmU2Njc0ZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00Myw3ICs0NCw2IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotY2xhc3MgV2ViUHJvY2Vzc1Byb3h5
OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgU3VzcGVuZGVkUGFnZVBy
b3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBtYWluRnJhbWVJRCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVy
Rmx1c2gpOwogICAgIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8
V2ViUHJvY2Vzc1Byb3h5PiBmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBmaW5kUmV1c2FibGVT
dXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94eTo6SXNNaW5p
TW9kZUVuYWJsZWQgc2hvdWxkRW5hYmxlTWluaU1vZGUpOwogCiAgICAgV2ViUGFnZVByb3h5JiBw
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQ5YTgyOTgyNDI5ZTRhYzZlM2U2NzA2
N2E3NzI2MmQ4ZWFmM2U1ZmMuLjY2ZmViODJkZDZkMmMyYjlkYWRmY2EwYjNmZGQxMjMxZWE3Mjc1
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzQzNiw3
ICszNDM2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAq
bmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWVJbmZvLCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBvbGljeUFjdGlvbiwgbmF2
aWdhdGlvbiA9IFJlZiB7ICpuYXZpZ2F0aW9uIH0sIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVm
KCksCisgICAgYXV0byBzaG91bGRFbmFibGVNaW5pTW9kZSA9IChwb2xpY2llcyA/IHBvbGljaWVz
LT5taW5pTW9kZUVuYWJsZWQoKSA6IGlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKSkgPyBXZWJQ
cm9jZXNzUHJveHk6OklzTWluaU1vZGVFbmFibGVkOjpZZXMgOiBXZWJQcm9jZXNzUHJveHk6Oklz
TWluaU1vZGVFbmFibGVkOjpObzsKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNz
Rm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigp
LCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHNob3VsZEVuYWJsZU1p
bmlNb2RlLCBmcmFtZUluZm8sIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0gUmVm
IHsgKm5hdmlnYXRpb24gfSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAgICAgICAg
cG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhl
IG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4K
ICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRp
b24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CkBAIC01NjE5LDkgKzU2MjAsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9yTmF2
aWdhdGlvbih1aW50NjRfdCBuYXZpZwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJv
Y2Vzc0Zvck5hdmlnYXRpb247CiAgICAgaWYgKGJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRGVj
aXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNvbGF0ZWRH
cm91cCkKLSAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNz
UHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCk7CisgICAg
ICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0
ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1By
ZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQsIG1fcHJvY2Vzcy0+aXNNaW5p
TW9kZUVuYWJsZWQoKSk7CiAgICAgZWxzZQotICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vi
c2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7CisgICAgICAgIHByb2Nlc3NG
b3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdpc3Ry
YWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluLCBtX3By
b2Nlc3MtPmlzTWluaU1vZGVFbmFibGVkKCkpOwogCiAgICAgY29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi5yZWxl
YXNlTm9uTnVsbCgpLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIG51bGxw
dHIsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc0NhY2hlLmNwcAppbmRleCA3MzhkMTk4Yjg5NmZiOTI4OTM0YzI1ZDJhZmViNjU1M2E1MGQ4
ZTA2Li40NGRlOThmNzEzNjc3Y2QxMjU3NGY0ZjAxYjE1ZGFkYWU3MGJkNTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCkBAIC0xNDgsNyArMTQ3LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3Mo
c3RkOjp1bmlxdWVfcHRyPENhY2hlZFByb2Nlc3M+JiYgY2FjaGVkUHJvY2VzcykKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0
YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK1JlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IFdlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQgc2hvdWxkRW5hYmxlTWluaU1vZGUp
CiB7CiAgICAgYXV0byBpdCA9IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZmluZChy
ZWdpc3RyYWJsZURvbWFpbik7CiAgICAgaWYgKGl0ID09IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFi
bGVEb21haW4uZW5kKCkpCkBAIC0xNTcsNiArMTU2LDkgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZUQKICAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSAhPSAm
ZGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGlmIChpdC0+dmFsdWUt
PnByb2Nlc3MoKS5pc01pbmlNb2RlRW5hYmxlZCgpICE9IHNob3VsZEVuYWJsZU1pbmlNb2RlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGF1dG8gcHJvY2VzcyA9IGl0LT52YWx1ZS0+
dGFrZVByb2Nlc3MoKTsKICAgICBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92
ZShpdCk7CiAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJ0YWtlUHJvY2VzczogVGFr
aW5nIHByb2Nlc3MgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIChzaXplPSV1LCBjYXBhY2l0eT0ldSki
LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKCksIGNhcGFjaXR5KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaAppbmRleCAyNDliYjdmNjZlY2Ri
MDAxY2YzMTM1MmYyYTU5NmRjOTNmY2RlY2Q2Li45ODUwNDE0YWE4NGFkODM5ZDNhYzg4NGFmNmEw
ZTk4MmI3NWQ1NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
aApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM1LDcg
KzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLWNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIFdl
YlByb2Nlc3NDYWNoZSB7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBX
ZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmKTsKIAogICAgIGJvb2wgYWRkUHJvY2Vzc0lm
UG9zc2libGUoUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7Ci0gICAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gdGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJz
aXRlRGF0YVN0b3JlJik7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3Mo
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2Vi
UHJvY2Vzc1Byb3h5OjpJc01pbmlNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVNaW5pTW9kZSk7CiAK
ICAgICB2b2lkIHVwZGF0ZUNhcGFjaXR5KFdlYlByb2Nlc3NQb29sJik7CiAgICAgdW5zaWduZWQg
Y2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNDkyMGU2YzZhYWM3YzQ1YTJkOWRmNDNk
YTQ4ZTIzMTgxMTk2MmZhYy4uOTUzMDhiOWZkN2M3Y2NiZDZkY2EwZjk0ZTllYTZhYTJjZTFmOTJm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA4
LDcgKzYwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hF
eHRlbnNpb25zKCkKICAgICBwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25z
KCk7CiB9CiAKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQ
cm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdp
bk1vZGUpCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJv
eHk6OklzUHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5N
b2RlLCBzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQ+IGlz
TWluaU1vZGVFbmFibGVkKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fdGNjUHJlZmVy
ZW5jZUVuYWJsZWQgPSBkb2VzQXBwSGF2ZUlUUEVuYWJsZWQoKTsKQEAgLTYxNiwxNCArNjE2LDE1
IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUtPnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fdGNjUHJlZmVyZW5jZUVuYWJsZWQpOwog
I2VuZGlmCiAKLSAgICBhdXRvIHByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
KCp0aGlzLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlKTsK
KyAgICBhdXRvIHJlc29sdmVkSXNNaW5pTW9kZUVuYWJsZWQgPSBpc01pbmlNb2RlRW5hYmxlZCA/
ICppc01pbmlNb2RlRW5hYmxlZCA6IChpc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KCkgPyBXZWJQ
cm9jZXNzUHJveHk6OklzTWluaU1vZGVFbmFibGVkOjpZZXMgOiBXZWJQcm9jZXNzUHJveHk6Oklz
TWluaU1vZGVFbmFibGVkOjpObyk7CisgICAgYXV0byBwcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZSgqdGhpcywgd2Vic2l0ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQsIGNyb3Nz
T3JpZ2luTW9kZSwgcmVzb2x2ZWRJc01pbmlNb2RlRW5hYmxlZCk7CiAgICAgaW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MocHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCk7
CiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3NQcm94eS5jb3B5UmVmKCkpOwogCiAgICAg
cmV0dXJuIHByb2Nlc3NQcm94eTsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNp
dGVEYXRhU3RvcmUpCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6dHJ5
VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwg
V2ViUHJvY2Vzc1Byb3h5OjpJc01pbmlNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVNaW5pTW9kZSkK
IHsKICAgICBpZiAoIW1fcHJld2FybWVkUHJvY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC02MzYsNiArNjM3LDkgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bv
b2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKG1fcHJld2FybWVkUHJvY2Vzcy0+aXNNaW5p
TW9kZUVuYWJsZWQoKSAhPSBzaG91bGRFbmFibGVNaW5pTW9kZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAvLyBJbiBw
bGF0Zm9ybXMgdXNpbmcgQnViYmxld3JhcCBmb3Igc2FuZGJveGluZywgcHJld2FybWVkIHByb2Nl
c3MgaXMgbGF1bmNoZWQgdXNpbmcgdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgV2Vic2l0ZURh
dGFTdG9yZSwKICAgICAvLyBzbyB3ZSBkb24ndCB1c2UgaXQgaW4gY2FzZSBvZiB1c2luZyBhIGRp
ZmZlcmVudCBXZWJzaXRlRGF0YVN0b3JlLgpAQCAtOTg0LDIzICs5ODgsMjQgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQog
ICAgIHJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVTZXQocHJvY2Vzcyk7CiB9CiAKLVJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4oV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBwYWdl
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCitSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdl
YnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQ+IGlzTWluaU1vZGVFbmFibGVkKQogewor
ICAgIGF1dG8gc2hvdWxkRW5hYmxlTWluaU1vZGUgPSBpc01pbmlNb2RlRW5hYmxlZCA/ICppc01p
bmlNb2RlRW5hYmxlZCA6IChpc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KCkgPyBXZWJQcm9jZXNz
UHJveHk6OklzTWluaU1vZGVFbmFibGVkOjpZZXMgOiBXZWJQcm9jZXNzUHJveHk6OklzTWluaU1v
ZGVFbmFibGVkOjpObyk7CiAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpIHsK
LSAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNz
KHJlZ2lzdHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlKSkgeworICAgICAgICBpZiAoYXV0
byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3MocmVnaXN0cmFibGVEb21h
aW4sIHdlYnNpdGVEYXRhU3RvcmUsIHNob3VsZEVuYWJsZU1pbmlNb2RlKSkgewogICAgICAgICAg
ICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCpwcm9jZXNzKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
Q2hlY2sgaWYgd2UgaGF2ZSBhIHN1c3BlbmRlZCBwYWdlIGZvciB0aGUgZ2l2ZW4gcmVnaXN0cmFi
bGUgZG9tYWluIGFuZCB1c2UgaXRzIHByb2Nlc3MgaWYgd2UgZG8sIGZvciBwZXJmb3JtYW5jZSBy
ZWFzb25zLgotICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gU3VzcGVuZGVkUGFnZVByb3h5Ojpm
aW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcygqdGhpcywgcmVnaXN0cmFibGVEb21haW4s
IHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBTdXNwZW5k
ZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKCp0aGlzLCByZWdp
c3RyYWJsZURvbWFpbiwgd2Vic2l0ZURhdGFTdG9yZSwgc2hvdWxkRW5hYmxlTWluaU1vZGUpKSB7
CiAgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcs
ICJwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW46IFVzaW5nIFdlYlByb2Nlc3MgZnJvbSBhIFN1
c3BlbmRlZFBhZ2UgKHByb2Nlc3M9JXAsIFBJRD0laSkiLCBwcm9jZXNzLmdldCgpLCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5j
b250YWlucygqcHJvY2VzcykpOwogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChhdXRvIHByb2Nlc3MgPSB0cnlU
YWtlUHJld2FybWVkUHJvY2Vzcyh3ZWJzaXRlRGF0YVN0b3JlKSkgeworICAgIGlmIChhdXRvIHBy
b2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJvY2Vzcyh3ZWJzaXRlRGF0YVN0b3JlLCBzaG91bGRF
bmFibGVNaW5pTW9kZSkpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluOiBVc2luZyBwcmV3YXJt
ZWQgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVpKSIsIHByb2Nlc3MuZ2V0KCksIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oKnBy
b2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluKTsKQEAgLTEwMjcsNyArMTAzMiw3IEBAIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
V2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAgICByZXR1cm4gcHJvY2VzczsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSk7
CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUsIFdlYlBy
b2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgaXNN
aW5pTW9kZUVuYWJsZWQpOwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMTA2
OSw3ICsxMDc0LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICAgICAgLy8gSW4gdGhl
IGNvbW1vbiBjYXNlLCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5jaCB1bnRpbCBzb21ldGhpbmcgaXMg
YWN0dWFsbHkgbG9hZGVkIGluIHRoZSBwYWdlLgogICAgICAgICBwcm9jZXNzID0gZHVtbXlQcm9j
ZXNzUHJveHkocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklE
KCkpOwogICAgICAgICBpZiAoIXByb2Nlc3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MgPSBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRh
U3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9k
ZTo6U2hhcmVkLCBXZWJQcm9jZXNzUHJveHk6OlNob3VsZExhdW5jaFByb2Nlc3M6Ok5vKTsKKyAg
ICAgICAgICAgIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgcGFnZUNv
bmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdh
cm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBXZWJQcm9jZXNzUHJveHk6OklzTWlu
aU1vZGVFbmFibGVkOjpObywgV2ViUHJvY2Vzc1Byb3h5OjpTaG91bGRMYXVuY2hQcm9jZXNzOjpO
byk7CiAgICAgICAgICAgICBtX2R1bW15UHJvY2Vzc1Byb3hpZXMuYWRkKHBhZ2VDb25maWd1cmF0
aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPnNlc3Npb25JRCgpLCAqcHJvY2Vzcyk7CiAgICAgICAg
ICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoKnByb2Nlc3MpOwogICAgICAgICB9CkBAIC0xNzkzLDkg
KzE3OTgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVQcm9jZXNzRnJvbU9yaWdpbkNh
Y2hlU2V0KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICAgICAgbV9zd2FwcGVkUHJvY2Vz
c2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYgZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiBkYXRhU3RvcmUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3Vy
Y2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6OklzTWlu
aU1vZGVFbmFibGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlLCBjb25zdCBGcmFtZUluZm9EYXRhJiBm
cmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwcm9jZXNzRm9yTmF2
aWdhdGlvbkludGVybmFsKHBhZ2UsIG5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigp
LCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lSW5mbywgV1RG
TW92ZShkYXRhU3RvcmUpLCBbdGhpcywgcGFnZSA9IFJlZiB7IHBhZ2UgfSwgbmF2aWdhdGlvbiA9
IFJlZiB7IG5hdmlnYXRpb24gfSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJl
ZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikgbXV0YWJsZSB7CisgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChw
YWdlLCBuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBzaG91bGRFbmFibGVNaW5pTW9kZSwgZnJhbWVJbmZv
LCBXVEZNb3ZlKGRhdGFTdG9yZSksIFt0aGlzLCBwYWdlID0gUmVmIHsgcGFnZSB9LCBuYXZpZ2F0
aW9uID0gUmVmIHsgbmF2aWdhdGlvbiB9LCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5j
b3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UsIGNvbnN0
IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gV2UgYXJlIHByb2Nlc3Mtc3dh
cHBpbmcgc28gYXV0b21hdGljIHByb2Nlc3MgcHJld2FybWluZyB3b3VsZCBiZSBiZW5lZmljaWFs
IGlmIHRoZSBjbGllbnQgaGFzIG5vdCBleHBsaWNpdGx5IGVuYWJsZWQgLyBkaXNhYmxlZCBpdC4K
ICAgICAgICAgYm9vbCBkb2luZ0FuQXV0b21hdGljUHJvY2Vzc1N3YXAgPSBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vICYmIHBy
b2Nlc3MucHRyKCkgIT0gc291cmNlUHJvY2Vzcy5wdHIoKTsKICAgICAgICAgaWYgKGRvaW5nQW5B
dXRvbWF0aWNQcm9jZXNzU3dhcCAmJiAhY29uZmlndXJhdGlvbigpLndhc0F1dG9tYXRpY1Byb2Nl
c3NXYXJtaW5nU2V0QnlDbGllbnQoKSAmJiAhY29uZmlndXJhdGlvbigpLmNsaWVudFdvdWxkQmVu
ZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZygpKSB7CkBAIC0xODE4LDE4ICsxODIz
LDIxIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdl
LCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBwYWdlU291cmNlVVJMLCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmIGZyYW1lSW5mbywgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBh
Z2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBh
Z2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHBhZ2VTb3VyY2VVUkwsIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5OjpJc01pbmlNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVNaW5pTW9kZSwgY29uc3QgRnJh
bWVJbmZvRGF0YSYgZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiBkYXRhU3RvcmUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVk
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byYgdGFyZ2V0VVJMID0gbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLnVybCgpOwogICAg
IGF1dG8gdGFyZ2V0UmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IHRhcmdldFVSTCB9OwogCi0gICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYWdlID0gUmVmIHsgcGFnZSB9LCB0YXJnZXRS
ZWdpc3RyYWJsZURvbWFpbiwgZGF0YVN0b3JlXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7
Ci0gICAgICAgIHJldHVybiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oZGF0YVN0b3JlLCBw
YWdlLnB0cigpLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbik7CisgICAgYXV0byBjcmVhdGVOZXdQ
cm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYWdlID0gUmVm
IHsgcGFnZSB9LCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgZGF0YVN0b3JlLCBzaG91bGRFbmFi
bGVNaW5pTW9kZV0gKCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94eT4geworICAgICAgICByZXR1cm4g
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGRhdGFTdG9yZSwgcGFnZS5wdHIoKSwgdGFyZ2V0
UmVnaXN0cmFibGVEb21haW4sIHNob3VsZEVuYWJsZU1pbmlNb2RlKTsKICAgICB9OwogCiAgICAg
aWYgKHVzZXNTaW5nbGVXZWJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHNvdXJjZVByb2Nlc3MpLCBudWxscHRyLCAiU2luZ2xlIFdlYlByb2Nlc3Mg
bW9kZSBpcyBlbmFibGVkIl9zKTsKIAorICAgIGlmIChzb3VyY2VQcm9jZXNzLT5pc01pbmlNb2Rl
RW5hYmxlZCgpICE9IHNob3VsZEVuYWJsZU1pbmlNb2RlKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCAiUHJvY2VzcyBzd2FwIGR1
ZSB0byB2bSBtaW5pLW1vZGUgc3RhdGUgY2hhbmdlIl9zKTsKKwogICAgIGlmIChwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6OlllcykK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1Byb2Nlc3MoKSwgbnVs
bHB0ciwgIlByb2Nlc3Mgc3dhcCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQiX3MpOwogCkBA
IC0yMDk3LDQgKzIxMDUsMTUgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCitib29sIGlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBzZXRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KGJv
b2wpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4YWI5OTY1M2NmODc2NWRiZmQzYmI4YTEw
ODc5YjU0Y2I1MWEwZGI3Li40ZWQxMWUyZTgyOGFjNTZjMjAyMTlkMGYyOTRkNWRhOTFjNTFiZWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTExOSw2ICsx
MTksOCBAQCBpbnQgbmV0d29ya1Byb2Nlc3NUaHJvdWdocHV0UU9TKCk7CiBpbnQgd2ViUHJvY2Vz
c0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogI2VuZGlmCiti
b29sIGlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKTsKK3ZvaWQgc2V0SXNNaW5pTW9kZUVuYWJs
ZWRHbG9iYWxseShib29sKTsKIAogZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJv
b2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwpAQCAt
MzAzLDcgKzMwNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRp
bWUoU2Vjb25kcyBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVN0YXRlKTsKIAotICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0
b3JlJiwgV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsg
Ly8gV2lsbCByZXR1cm4gYW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldCBvciBkdWUgdG8g
Y2FjaGluZy4KKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yUmVnaXN0cmFibGVE
b21haW4oV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJQcm9jZXNzUHJveHk6OklzTWluaU1v
ZGVFbmFibGVkPiA9IHN0ZDo6bnVsbG9wdCk7IC8vIFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9u
ZSBpZiBsaW1pdCBpcyBtZXQgb3IgZHVlIHRvIGNhY2hpbmcuCiAKICAgICB2b2lkIHByZXdhcm1Q
cm9jZXNzKCk7CiAKQEAgLTQzOCw3ICs0NDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGb3Jl
Z3JvdW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kV2ViUHJvY2Vz
c0NvdW50ZXIudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzQmFja2dyb3VuZFdlYlByb2Nlc3Nlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCk7IH0K
IAotICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJ
OjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25z
dCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJh
bWVJbmZvRGF0YSYsIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYpPiYmKTsKKyAgICB2b2lkIHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYs
IGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJv
Y2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQgc2hvdWxkRW5hYmxlTWluaU1vZGUs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmKT4mJik7CiAKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdh
cm0oKTsKIApAQCAtNTA3LDcgKzUwOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGNv
bnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeSgpOwogI2VuZGlmCiAKLSAgICBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqLCBXZWJQcm9jZXNz
UHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIFdl
YkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVk
KTsKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVE
YXRhU3RvcmUqLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1Byb3h5
OjpJc1ByZXdhcm1lZDo6Tm8sIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNy
b3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NQcm94eTo6SXNN
aW5pTW9kZUVuYWJsZWQ+ID0gc3RkOjpudWxsb3B0KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtNTE1LDkgKzUxNyw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYsIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0
ZUNvbnRleHQoKTsKIAotICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQ
YWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVk
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmln
YXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6OklzTWluaU1vZGVF
bmFibGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdl
YnNpdGVEYXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOwogCi0gICAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSYpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHRyeVRha2VQcmV3YXJtZWRQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUHJveHk6OklzTWluaU1vZGVFbmFi
bGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld1dlYlBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiwgV2Vic2l0ZURhdGFTdG9yZSosIFdlYlByb2Nlc3NQcm94
eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk0ODE3NjA4
YzgwOGE2YmUwOWNlYzQ0ZWMwY2EwODk1NWY2MDk1MzUuLjVkN2IwMzM3ZTMzYjA5ZjRlMTVlMWE1
ZWYxN2VlMzYzYWQ2ODI2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTY0LDkgKzE2NCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpmb3JX
ZWJQYWdlc1dpdGhPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZWN1CiAg
ICAgfQogfQogCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUsIElzUHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmln
aW5Nb2RlLCBTaG91bGRMYXVuY2hQcm9jZXNzIHNob3VsZExhdW5jaFByb2Nlc3MpCitSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVk
IGlzUHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBJc01pbmlNb2Rl
RW5hYmxlZCBpc01pbmlNb2RlRW5hYmxlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyBzaG91bGRMYXVu
Y2hQcm9jZXNzKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQ
cm94eShwcm9jZXNzUG9vbCwgd2Vic2l0ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQsIGNyb3NzT3Jp
Z2luTW9kZSkpOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94
eShwcm9jZXNzUG9vbCwgd2Vic2l0ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQsIGNyb3NzT3JpZ2lu
TW9kZSwgaXNNaW5pTW9kZUVuYWJsZWQpKTsKICAgICBpZiAoc2hvdWxkTGF1bmNoUHJvY2VzcyA9
PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpIHsKICAgICAgICAgaWYgKGxpdmVQcm9jZXNzZXNM
UlUoKS5zaXplKCkgPj0gc19tYXhQcm9jZXNzQ291bnQpIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCkBAIC0x
ODQsNyArMTg0LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZv
clNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFT
dG9yZSkKIHsKLSAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHko
cHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3Jp
Z2luTW9kZTo6U2hhcmVkKSk7CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJv
Y2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5v
LCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgSXNNaW5pTW9kZUVuYWJsZWQ6Ok5vKSk7CiAgICAg
cHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsK
ICAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25u
ZWN0KCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotV2ViUHJv
Y2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1l
ZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSkKK1dlYlByb2Nlc3NQcm94eTo6V2Vi
UHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2lu
TW9kZSBjcm9zc09yaWdpbk1vZGUsIElzTWluaU1vZGVFbmFibGVkIGlzTWluaU1vZGVFbmFibGVk
KQogICAgIDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJh
Y2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1l
cigqdGhpcykKICAgICAsIG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wsIGlzUHJld2FybWVkID09
IElzUHJld2FybWVkOjpZZXMgPyBJc1dlYWs6OlllcyA6IElzV2Vhazo6Tm8pCkBAIC0yMzcsNiAr
MjM3LDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogICAgICwgbV91c2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4obWFr
ZVVuaXF1ZVJlZjxVSVByb3h5Rm9yQ2FwdHVyZT4oKnRoaXMpKSkKICNlbmRpZgogICAgICwgbV9p
c1ByZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQorICAgICwgbV9pc01p
bmlNb2RlRW5hYmxlZChpc01pbmlNb2RlRW5hYmxlZCkKICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2Rl
KGNyb3NzT3JpZ2luTW9kZSkKICAgICAsIG1fc2h1dGRvd25QcmV2ZW50aW5nU2NvcGVDb3VudGVy
KFt0aGlzXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsgaWYgKGV2ZW50ID09IFJlZkNvdW50ZXJF
dmVudDo6RGVjcmVtZW50KSBtYXliZVNodXREb3duKCk7IH0pCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDE5NDAwNTg3ODA2NmEzMDhkMzBiYTVjOTA5
YjU1ODk1M2Q5YTQ2NzMuLmQ1MTRlNTUwYTYzZThkYzQ1ZmZlMjgwYTgwMWVhYTIxYjdkZTFiOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xMzQsOCAr
MTM0LDkgQEAgcHVibGljOgogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExhdW5jaFBy
b2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgSXNNaW5pTW9kZUVuYWJs
ZWQgOiBib29sIHsgTm8sIFllcyB9OwogCi0gICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+
IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCwg
V2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFy
ZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOworICAg
IHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJz
aXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdl
YkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBJc01pbmlNb2RlRW5hYmxlZCA9IElzTWlu
aU1vZGVFbmFibGVkOjpObywgU2hvdWxkTGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nl
c3M6Olllcyk7CiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZp
Y2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
V2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwpAQCAtNDI3LDkg
KzQyOCwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9k
ZSBjcm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQor
ICAgIElzTWluaU1vZGVFbmFibGVkIGlzTWluaU1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc01pbmlNb2RlRW5hYmxlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViUHJvY2Vzc1Byb3h5
KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3Jl
OjpDcm9zc09yaWdpbk1vZGUpOworICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYs
IFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2Rl
LCBJc01pbmlNb2RlRW5hYmxlZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKICAg
ICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29u
dGVudCJfczsgfQpAQCAtNDQwLDE2ICs0NDIsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJv
Y2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICBib29sIHNo
b3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYpIGZpbmFsOwogICAg
IAotICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ci0gICAgdm9pZCBkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVy
cmlkZTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgY2FjaGVNZWRpYU1JTUVUeXBl
c0ludGVybmFsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorICAgIC8vIFByb2Nl
c3NMYXVuY2hlcjo6Q2xpZW50CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xh
dW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICBib29s
IHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
SklURW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5hYmxlU2hhcmVkQXJy
YXlCdWZmZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZSA9PSBXZWJD
b3JlOjpDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkOyB9CisgICAgYm9vbCBzaG91bGRFbmFibGVN
aW5pTW9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNNaW5pTW9kZUVuYWJsZWQgPT0gSXNN
aW5pTW9kZUVuYWJsZWQ6OlllczsgfQogCiAgICAgdm9pZCB2YWxpZGF0ZUZyZWV6ZXJTdGF0dXMo
KTsKIApAQCAtNjIyLDYgKzYyNCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faGFzQ29tbWl0
dGVkQW55UHJvdmlzaW9uYWxMb2FkcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJld2FybWVk
OworICAgIElzTWluaU1vZGVFbmFibGVkIG1faXNNaW5pTW9kZUVuYWJsZWQgeyBJc01pbmlNb2Rl
RW5hYmxlZDo6Tm8gfTsKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgbV9jcm9zc09yaWdp
bk1vZGUgeyBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCB9OwogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYm9vbCBtX2hhc0lzc3VlZEF0dGFjaG1lbnRFbGVtZW50
UmVsYXRlZFNhbmRib3hFeHRlbnNpb25zIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NjhkMDMyYjYyYWFhZmM4MWQ1M2IxOWEx
NmZjOTM4M2VmYWMzZjUxLi41NzZjMTUxM2VlZDk0NDBjMDA4NzZiZjU0YWM1M2UzYzVhNjU1YzA1
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgbGF1bmNoaW5nIE1pbmktbW9kZSBXZWJQ
cm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjczNworICAgICAgICA8cmRhcjovLzg0NDczMDM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW06CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIEVtYmVkZGVkIG9iamVjdHMgYXJlIG5v
dCBjb3JyZWN0bHkgaGFuZGxlZCBieSB0ZXh0IGludGVyZmFjZSB3aXRoIEFUU1BJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCA2NjFiY2M2YTA1MTdkYWZhNDRiZmNiMmE2ODlh
NGM5YjNkNmRiMGM0Li44ZmRmNjgxMTcwMzcyMTA0MmY3NjUwN2FkYWYyMTY0OTIxY2IzYmMzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJw
YWdlUHJlZmVyZW5jZXMuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnBhZ2VQcmVmZXJlbmNlc1By
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViS2l0Lmg+CkBAIC03NjI2LDMgKzc2MjcsMTk4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmln
YXRpbmdDcm9zc09yaWdpbkZyb21DT09QU2FtZU9yaWdpbkFsbG93UG9wdXA0KQogewogICAgIHJ1
bkNPT1BQcm9jZXNzU3dhcFRlc3QoInNhbWUtb3JpZ2luLWFsbG93LXBvcHVwIiwgInVuc2FmZS1u
b25lIiwgInVuc2FmZS1ub25lIiwgInVuc2FmZS1ub25lIiwgSXNTYW1lT3JpZ2luOjpObywgRG9T
ZXJ2ZXJTaWRlUmVkaXJlY3Q6Ok5vLCBFeHBlY3RTd2FwOjpObyk7CiB9CisKKy8vIE9uIGlPUywg
dGhlIG1pbmktbW9kZSBBUEkgcmVxdWlyZXMgYSBicm93c2VyIGVudGl0bGVtZW50LgorI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQorCitzdGF0aWMgYm9vbCBpc0pJVEVuYWJsZWQoV0tXZWJWaWV3
ICp3ZWJWaWV3KQoreworICAgIF9fYmxvY2sgYm9vbCBnb3RSZXNwb25zZSA9IGZhbHNlOworICAg
IF9fYmxvY2sgYm9vbCBpc0pJVEVuYWJsZWRSZXN1bHQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBf
aXNKSVRFbmFibGVkOl4oQk9PTCBpc0pJVEVuYWJsZWQpIHsKKyAgICAgICAgaXNKSVRFbmFibGVk
UmVzdWx0ID0gaXNKSVRFbmFibGVkOworICAgICAgICBnb3RSZXNwb25zZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RSZXNwb25zZSk7CisgICAgcmV0
dXJuIGlzSklURW5hYmxlZFJlc3VsdDsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGlu
Z1RvTWluaU1vZGUpCit7CisgICAgRVhQRUNUX0ZBTFNFKFdLV2VicGFnZVByZWZlcmVuY2VzLl9t
aW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZE5hdmlnYXRpb24gPSBm
YWxzZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gdHJ1
ZTsKKyAgICB9OworCisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgcGlkX3QgcGlkMSA9IFt3ZWJWaWV3
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKHBpZDEsIDApOworCisgICAg
RVhQRUNUX1RSVUUoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIGRlbGVnYXRl
LmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBe
KFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVy
ZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UocHJlZmVy
ZW5jZXMubWluaU1vZGVFbmFibGVkKTsKKyAgICAgICAgcHJlZmVyZW5jZXMubWluaU1vZGVFbmFi
bGVkID0gWUVTOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgIH07CisKKyAgICBmaW5pc2hlZE5hdmlnYXRp
b24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBwcm9jZXNzLXN3
YXAgZm9yIHRyYW5zaXRpb25pbmcgdG8gbWluaS1tb2RlLgorICAgIEVYUEVDVF9ORShwaWQxLCBb
d2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRF
bmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIEVYUEVDVF9GQUxTRShXS1dlYnBhZ2VQcmVm
ZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkpOworfQorCitURVNUKFByb2Nlc3NTd2Fw
LCBNaW5pTW9kZUVuYWJsZWRCeURlZmF1bHRMb2NhbGx5VGhlbk9wdE91dCkKK3sKKyAgICBFWFBF
Q1RfRkFMU0UoV0tXZWJwYWdlUHJlZmVyZW5jZXMuX21pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KTsK
KworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIG5ld10pOworICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5n
ZXQoKS5kZWZhdWx0V2VicGFnZVByZWZlcmVuY2VzLm1pbmlNb2RlRW5hYmxlZCk7CisgICAgd2Vi
Vmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkuZGVmYXVsdFdlYnBhZ2VQcmVmZXJlbmNlcy5taW5pTW9k
ZUVuYWJsZWQgPSBZRVM7CisgICAgRVhQRUNUX0ZBTFNFKFdLV2VicGFnZVByZWZlcmVuY2VzLl9t
aW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgX19ibG9j
ayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIGRlbGVnYXRlLmdldCgpLmRp
ZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgeworICAg
ICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOworICAgIH07CisKKyAgICBkZWxlZ2F0ZS5n
ZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2VzID0gXihX
S05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwg
V0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocHJlZmVyZW5j
ZXMubWluaU1vZGVFbmFibGVkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgTlNVUkwg
KnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRp
b24pOworCisgICAgcGlkX3QgcGlkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07
CisgICAgRVhQRUNUX05FKHBpZDEsIDApOworICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQo
d2ViVmlldy5nZXQoKSkpOworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAg
dXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRp
b24pOworCisgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmll
cl0pOyAvLyBTaG91bGRuJ3QgaGF2ZSBwcm9jZXNzLXN3YXBwZWQgc2luY2Ugd2UncmUgc3RheWlu
ZyBpbiBtaW5pLW1vZGUuCisgICAgRVhQRUNUX0ZBTFNFKGlzSklURW5hYmxlZCh3ZWJWaWV3Lmdl
dCgpKSk7CisKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uV2l0aFByZWZlcmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocHJlZmVyZW5jZXMubWluaU1vZGVFbmFibGVkKTsKKyAgICAgICAgcHJl
ZmVyZW5jZXMubWluaU1vZGVFbmFibGVkID0gTk87IC8vIE9wdCBvdXQgb2YgbWluaS1tb2RlIGZv
ciB0aGlzIGxvYWQuCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdh
dGlvbiA9IGZhbHNlOworICAgIHVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJzaW1wbGUzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZmluaXNoZWROYXZpZ2F0aW9uKTsKKworICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mt
c3dhcHBlZCB0byBnZXQgb3V0IG9mIG1pbmktbW9kZS4KKyAgICBFWFBFQ1RfTkUocGlkMSwgW3dl
YlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgRVhQRUNUX1RSVUUoaXNKSVRFbmFi
bGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIG1pbmktbW9kZSBzaG91bGQgYmUgZGlzYWJs
ZWQgaW4gbmV3IFdlYlZpZXdzIHNpbmNlIGl0IGlzIG5vdCBlbmFibGVkIGdsb2JhbGx5LgorICAg
IGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcy
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBkZWxlZ2F0ZS5n
ZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2VzID0gbmls
OworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZp
ZXcyIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworICAgIEVYUEVD
VF9UUlVFKGlzSklURW5hYmxlZCh3ZWJWaWV3Mi5nZXQoKSkpOworCisgICAgRVhQRUNUX0ZBTFNF
KFdLV2VicGFnZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7Cit9CisKK1RF
U1QoUHJvY2Vzc1N3YXAsIE1pbmlNb2RlRW5hYmxlZEdsb2JhbGx5VGhlbk9wdE91dCkKK3sKKyAg
ICBFWFBFQ1RfRkFMU0UoV0tXZWJwYWdlUHJlZmVyZW5jZXMuX21pbmlNb2RlRW5hYmxlZEdsb2Jh
bGx5KTsKKyAgICBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkg
PSBZRVM7IC8vIEVuYWJsZSBtaW5pLW1vZGUgZ2xvYmFsbHkKKyAgICBFWFBFQ1RfVFJVRShXS1dl
YnBhZ2VQcmVmZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkpOworCisgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3
XSk7CisgICAgRVhQRUNUX1RSVUUod2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkuZGVmYXVsdFdl
YnBhZ2VQcmVmZXJlbmNlcy5taW5pTW9kZUVuYWJsZWQpOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBfX2Jsb2NrIGJvb2wgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgZGVsZWdhdGUu
Z2V0KCkuZGlkRmluaXNoTmF2aWdhdGlvbiA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAq
KSB7CisgICAgICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IHRydWU7CisgICAgfTsKKworICAgIGRl
bGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5j
ZXMgPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICBFWFBFQ1RfVFJVRShw
cmVmZXJlbmNlcy5taW5pTW9kZUVuYWJsZWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgIH07CisKKyAg
ICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVk
TmF2aWdhdGlvbik7CisKKyAgICBwaWRfdCBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVu
dGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkMSwgMCk7CisgICAgRVhQRUNUX0ZBTFNFKGlzSklU
RW5hYmxlZCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxz
ZTsKKyAgICB1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2lt
cGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVk
TmF2aWdhdGlvbik7CisKKyAgICBFWFBFQ1RfRVEocGlkMSwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyXSk7IC8vIFNob3VsZG4ndCBoYXZlIHByb2Nlc3Mtc3dhcHBlZCBzaW5jZSB3ZSdy
ZSBzdGF5aW5nIGluIG1pbmktbW9kZS4KKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdl
YlZpZXcuZ2V0KCkpKTsKKworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9u
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkg
eworICAgICAgICBFWFBFQ1RfVFJVRShwcmVmZXJlbmNlcy5taW5pTW9kZUVuYWJsZWQpOworICAg
ICAgICBwcmVmZXJlbmNlcy5taW5pTW9kZUVuYWJsZWQgPSBOTzsgLy8gT3B0IG91dCBvZiBtaW5p
LW1vZGUgZm9yIHRoaXMgbG9hZC4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgZmluaXNo
ZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZTMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUg
cHJvY2Vzcy1zd2FwcGVkIHRvIGdldCBvdXQgb2YgbWluaS1tb2RlLgorICAgIEVYUEVDVF9ORShw
aWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfVFJVRShp
c0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgLy8gbWluaS1tb2RlIHNob3VsZCBi
ZSBlbmFibGVkIGluIG5ldyBXZWJWaWV3cyBzaW5jZSBpdCBpcyBlbmFibGVkIGdsb2JhbGx5Lgor
ICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZp
ZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUu
Z2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IG5p
bDsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVybCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJW
aWV3MiBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9uKTsKKyAgICBFWFBF
Q1RfRkFMU0UoaXNKSVRFbmFibGVkKHdlYlZpZXcyLmdldCgpKSk7CisKKyAgICBFWFBFQ1RfVFJV
RShXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkpOworICAgIFdL
V2VicGFnZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSA9IE5POworICAgIEVY
UEVDVF9GQUxTRShXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkp
OworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443412</attachid>
            <date>2021-11-05 09:57:25 -0700</date>
            <delta_ts>2021-11-05 11:01:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211105095725.patch</filename>
            <type>text/plain</type>
            <size>54497</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjllNTY0OGU3Nzg3OTZm
NTY3NTMzNWU4MDllNDQ0ZmQ4NTlmMDMuLjI5Y2QyMDFiZmU0MWUxMWVkNGRlYmRiNmJmOWE0ODYx
OGI0YTNjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIE1pbmktbW9kZSBXZWJQcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjczNworICAgICAgICA8cmRhcjovLzg0NDczMDM3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBu
ZXcgYFdLV2VicGFnZVByZWZlcmVuY2VzLm1pbmlNb2RlRW5hYmxlZGAgQVBJIHRvIGFsbG93IGNs
aWVudHMgYXBwcyB0byBvcHQgaW4gb3IKKyAgICAgICAgb3V0IG9mIG1pbmktbW9kZSBmb3IgZWFj
aCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJlbmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2
aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNpb24pLgorCisgICAgICAgIEFsc28gYWRkIGEg
YFdLV2VicGFnZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseWAgU1BJIChyZWFk
d3JpdGUgY2xhc3MgcHJvcGVydHkpCisgICAgICAgIHRvIHF1ZXJ5IG9yIHRvZ2dsZSBtaW5pLW1v
ZGUgYXBwLXdpZGUuIFRoaXMgaXMgY3VycmVudGx5IGJhY2tlZCBieSBhIE5TVXNlckRlZmF1bHRz
IGJ1dAorICAgICAgICB3ZSB3aWxsIG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRvIHNvbWV0aGlu
ZyBlbHNlIChtYXliZSBUQ0M/KS4KKworICAgICAgICBOb3RlIHRoYXQgYm90aCB0aGVzZSBwcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIHNldCBieSBhcHBzIHdpdGggdGhlIGJyb3dzZXIgZW50aXRsZW1l
bnQgb24KKyAgICAgICAgaU9TIChubyByZXN0cmljdGlvbiBvbiBtYWNPUykuCisKKyAgICAgICAg
V2hlbmV2ZXIgdHJhbnNpc2l0aW9uaW5nIGluIG9yIG91dCBvZiBtaW5pLW1vZGUsIHdlIHByb2Nl
c3Mtc3dhcCBvbiBuYXZpZ2F0aW9uIHBvbGljeQorICAgICAgICBkZWNpc2lvbi4gV2hlbmV2ZXIg
bWluaS1tb2RlIGlzIGVuYWJsZWQsIHdlIHR1cm4gb2ZmIEpJVCwgZ2VuZXJhdGlvbmFsIGFuZCBj
b25jdXJyZW50IEdDCisgICAgICAgIGluIHRoZSBXZWJQcm9jZXNzLCBhcyBzb29uIGFzIGl0IGxh
dW5jaGVzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAq
IFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQuaDoKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHA6CisgICAgICAgIChB
UEk6OldlYnNpdGVQb2xpY2llczo6Y29weSBjb25zdCk6CisgICAgICAgIChBUEk6OldlYnNpdGVQ
b2xpY2llczo6bWluaU1vZGVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVQb2xpY2llcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJwYWdlUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
cGFnZVByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXS1dlYnBhZ2VQcmVmZXJlbmNlcyBfbWlu
aU1vZGVFbmFibGVkR2xvYmFsbHldKToKKyAgICAgICAgKCtbV0tXZWJwYWdlUHJlZmVyZW5jZXMg
X3NldE1pbmlNb2RlRW5hYmxlZEdsb2JhbGx5Ol0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVm
ZXJlbmNlcyBzZXRNaW5pTW9kZUVuYWJsZWQ6XSk6CisgICAgICAgICgtW1dLV2VicGFnZVByZWZl
cmVuY2VzIG1pbmlNb2RlRW5hYmxlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmlzTWluaU1vZGVFbmFi
bGVkR2xvYmFsbHkpOgorICAgICAgICAoV2ViS2l0OjpzZXRJc01pbmlNb2RlRW5hYmxlZEdsb2Jh
bGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50OjpzaG91bGRFbmFibGVNaW5p
TW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1
bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFn
ZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoRm9y
TmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJl
d2FybWVkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6aXNNaW5pTW9kZUVuYWJs
ZWRHbG9iYWxseSk6CisgICAgICAgIChXZWJLaXQ6OnNldElzTWluaU1vZGVFbmFibGVkR2xvYmFs
bHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yU2VydmljZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Oldl
YlByb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzTWluaU1vZGVFbmFibGVkIGNvbnN0
KToKKwogMjAyMS0xMS0wNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhdmUgUmVtb3RlTWVkaWFSZXNvdXJjZSB1c2UgU2hhcmVkTWVtb3J5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCmlu
ZGV4IGZmN2E0NGM1YmEzNmZjOWJjZmJkYzMxMmI5M2QzM2JiOTVkYTY3MmIuLjEwZDI3MzQ4NDA2
Mzk4N2JkOTBmZDI0NTRkNzdhNjFjOGM3MDAzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50
cnlQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCkBAIC04OSw2ICs4OSwxMyBA
QCB2b2lkIFhQQ1NlcnZpY2VJbml0aWFsaXplcihPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
PiBjb25uZWN0aW9uLCB4cGNfb2JqZWN0XwogICAgIGlmIChpbml0aWFsaXplck1lc3NhZ2UpIHsK
ICAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVyTWVzc2FnZSwg
ImNvbmZpZ3VyZS1qc2MtZm9yLXRlc3RpbmciKSkKICAgICAgICAgICAgIEpTQzo6Q29uZmlnOjpj
b25maWd1cmVGb3JUZXN0aW5nKCk7CisgICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9v
bChpbml0aWFsaXplck1lc3NhZ2UsICJlbmFibGUtbWluaS1tb2RlIikpIHsKKyAgICAgICAgICAg
IEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSgpOworICAgICAgICAgICAgSlNDOjpPcHRpb25zOjpB
bGxvd1VuZmluYWxpemVkQWNjZXNzU2NvcGUgc2NvcGU7CisgICAgICAgICAgICBKU0M6Ok9wdGlv
bnM6OnVzZUpJVCgpID0gZmFsc2U7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6OnVzZUdlbmVy
YXRpb25hbEdDKCkgPSBmYWxzZTsKKyAgICAgICAgICAgIEpTQzo6T3B0aW9uczo6dXNlQ29uY3Vy
cmVudEdDKCkgPSBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlf
Z2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZGlzYWJsZS1qaXQiKSkKICAgICAgICAgICAg
IEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZChmYWxzZSk7CiAgICAgICAg
IGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChpbml0aWFsaXplck1lc3NhZ2UsICJlbmFibGUt
c2hhcmVkLWFycmF5LWJ1ZmZlciIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCmluZGV4IDNlYTRiMWI5MWQ5OWYzNGVkYTE4ZmUx
MmIxMjVkMzc5ODk0YTEzNjYuLmVhYTI0ZmUzZDc5ODI2MDMxZTg3NWJkOGI4NTlmNmMyYTM5NDgx
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9s
aWNpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9s
aWNpZXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgog
I2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKQEAgLTcy
LDYgKzczLDcgQEAgUmVmPFdlYnNpdGVQb2xpY2llcz4gV2Vic2l0ZVBvbGljaWVzOjpjb3B5KCkg
Y29uc3QKICAgICBwb2xpY2llcy0+c2V0QWxsb3dTaXRlU3BlY2lmaWNRdWlya3NUb092ZXJyaWRl
Q29udGVudE1vZGUobV9hbGxvd1NpdGVTcGVjaWZpY1F1aXJrc1RvT3ZlcnJpZGVDb250ZW50TW9k
ZSk7CiAgICAgcG9saWNpZXMtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQo
bV9hcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KTsKICAgICBwb2xpY2llcy0+c2V0
QWxsb3dzQ29udGVudEphdmFTY3JpcHQobV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdCk7CisgICAg
cG9saWNpZXMtPnNldE1pbmlNb2RlRW5hYmxlZChtX21pbmlNb2RlRW5hYmxlZCk7CiAgICAgcG9s
aWNpZXMtPnNldE1vdXNlRXZlbnRQb2xpY3kobV9tb3VzZUV2ZW50UG9saWN5KTsKICAgICByZXR1
cm4gcG9saWNpZXM7CiB9CkBAIC0xMjMsNSArMTI1LDEwIEBAIFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzRGF0YSBXZWJzaXRlUG9saWNpZXM6OmRhdGEoKQogICAgIH07CiB9CiAKK2Jvb2wgV2Vic2l0
ZVBvbGljaWVzOjptaW5pTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX21pbmlN
b2RlRW5hYmxlZCA/ICptX21pbmlNb2RlRW5hYmxlZCA6IFdlYktpdDo6aXNNaW5pTW9kZUVuYWJs
ZWRHbG9iYWxseSgpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlUG9saWNpZXMuaAppbmRleCBjZGUwNzUzZmQxYzQzOTY0MTFkYzBiNGUzNDhh
OTMxZjUxYjE3MGZkLi4wZGE5ZTI4MDM5YTRhZTViY2MzMzJkZmNmNGE0YjU3OTc3MGM3OGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5o
CkBAIC0xMjUsNiArMTI1LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9hbGxv
d3NDb250ZW50SmF2YVNjcmlwdDsgfQogICAgIHZvaWQgc2V0QWxsb3dzQ29udGVudEphdmFTY3Jp
cHQoV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzKSB7IG1fYWxsb3dzQ29u
dGVudEphdmFTY3JpcHQgPSBhbGxvd3M7IH0KIAorICAgIGJvb2wgbWluaU1vZGVFbmFibGVkKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRNaW5pTW9kZUVuYWJsZWQoc3RkOjpvcHRpb25hbDxib29sPiBt
aW5pTW9kZUVuYWJsZWQpIHsgbV9taW5pTW9kZUVuYWJsZWQgPSBtaW5pTW9kZUVuYWJsZWQ7IH0K
KwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW91c2VFdmVudFBvbGljeTsgfQogICAgIHZvaWQgc2V0TW91c2VFdmVudFBv
bGljeShXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IHBvbGljeSkgeyBtX21vdXNlRXZlbnRQb2xp
Y3kgPSBwb2xpY3k7IH0KIApAQCAtMTU3LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdCB7IFdl
YkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMgfTsKICAgICBXZWJDb3JlOjpNb3Vz
ZUV2ZW50UG9saWN5IG1fbW91c2VFdmVudFBvbGljeSB7IFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xp
Y3k6OkRlZmF1bHQgfTsKICAgICBib29sIG1faWRlbXBvdGVudE1vZGVBdXRvc2l6aW5nT25seUhv
bm9yc1BlcmNlbnRhZ2VzIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fbWlu
aU1vZGVFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oCmlu
ZGV4IDRhMjM2ZGE3ZDc1OGFiOTZkNmI3NTZkNzVmY2FkMmExYzNiNzNkMGEuLmFmM2I0NmVkODM4
NjYxZTI4MzQ2MmZlZGM3ZDg3ZGFhN2MxNmE4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oCkBAIC03MSw0
ICs3MSw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSkKICov
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogCisvKiEgQGFic3RyYWN0IEEg
Ym9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgSlNDIHZtIG1pbmktbW9kZSBpcyBlbmFibGVkLgor
IEBkaXNjdXNzaW9uIFRoZSBkZWZhdWx0IHZhbHVlIGlzIE5PLCB1bmxlc3MgZW5hYmxlZCBzeXN0
ZW0td2lkZS4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgbWluaU1vZGVFbmFibGVk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQppbmRleCA1ZWIxMjAxOGQ5YTQ3ZTM0YjY2ZWRkN2VlMDg1
ODNlMTc4NzRmMzFhLi4wNDZhNTIyZTI0MzEyNWM4OGIxNTVhZGJmZGMwMWEzYWQ1MWY0ZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJl
ZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
cGFnZVByZWZlcmVuY2VzLm1tCkBAIC0zMSwxMSArMzEsMTYgQEAKICNpbXBvcnQgIldLV2VicGFn
ZVByZWZlcmVuY2VzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVy
bmFsLmgiCiAjaW1wb3J0ICJXZWJDb250ZW50TW9kZS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpD
RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM2Nyw2ICsz
NzIsMjAgQEAgLSAodm9pZClfc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50V2l0aE1vZGVy
bkNvbXBhdGliaWxpdHk6KE5TU3RyaW5nICopYXBwbGkKICAgICBfd2Vic2l0ZVBvbGljaWVzLT5z
ZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZSk7CiB9
CiAKKysgKEJPT0wpX21pbmlNb2RlRW5hYmxlZEdsb2JhbGx5Cit7CisgICAgcmV0dXJuIFdlYktp
dDo6aXNNaW5pTW9kZUVuYWJsZWRHbG9iYWxseSgpOworfQorCisrICh2b2lkKV9zZXRNaW5pTW9k
ZUVuYWJsZWRHbG9iYWxseTooQk9PTCl2YWx1ZQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgaWYgKCFXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLmRldmVsb3Bl
ci53ZWItYnJvd3NlciIpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICBXZWJLaXQ6OnNl
dElzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoISF2YWx1ZSk7Cit9CisKIC0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0CiB7CiAgICAgcmV0dXJuICpfd2Vic2l0ZVBvbGljaWVzOwpAQCAtMzg3LDYg
KzQwNiwyMCBAQCAtIChCT09MKWFsbG93c0NvbnRlbnRKYXZhU2NyaXB0CiAgICAgfQogfQogCist
ICh2b2lkKXNldE1pbmlNb2RlRW5hYmxlZDooQk9PTClpc01pbmlNb2RlRW5hYmxlZAoreworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCFXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVu
dCgiY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlciIpKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKyAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRNaW5pTW9kZUVuYWJsZWQoISFpc01pbmlN
b2RlRW5hYmxlZCk7Cit9CisKKy0gKEJPT0wpbWluaU1vZGVFbmFibGVkCit7CisgICAgcmV0dXJu
IF93ZWJzaXRlUG9saWNpZXMtPm1pbmlNb2RlRW5hYmxlZCgpOworfQorCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogLSAodm9pZClzZXRQcmVmZXJyZWRDb250ZW50TW9kZTooV0tDb250ZW50
TW9kZSljb250ZW50TW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDQ3N2Zk
YzExZjMyZjlkZmI5ZWIwZDE4YjkzZjRiMjQ3MGQ0N2I0NDkuLjBkMTY2ZjIyZTIwMzkyMDU0MTBm
MzkxNTI2ZmUyNTEwMmJhZDg1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAg
LTg1LDQgKzg1LDYgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVN
b3VzZUV2ZW50UG9saWN5KSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1v
dXNlRXZlbnRQb2xpY3k6KSBfV0tXZWJzaXRlTW91c2VFdmVudFBvbGljeSBfbW91c2VFdmVudFBv
bGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogCitAcHJvcGVy
dHkgKGNsYXNzLCBub25hdG9taWMsIHNldHRlcj1fc2V0TWluaU1vZGVFbmFibGVkR2xvYmFsbHk6
KSBCT09MIF9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAxMWYwNTNm
MWI1MzdlYTY0ZmMyNDFlNjBhM2RlOTcwNjE5YzAxZDhmLi4xYTYyZmViNjY5NWYwMmU3ZGI1Mjg2
NTY0NmY3ZGViNzE4M2RlNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTk4OCw2ICs5ODgsMjUgQEAgaW50IHdl
YlByb2Nlc3NUaHJvdWdocHV0UU9TKCkKICAgICByZXR1cm4gcW9zOwogfQogCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxib29sPiBjYWNoZWRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5OworCitib29s
IGlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aW52YWxpZGF0ZSB0aGUgY2FjaGVkIHZhbHVlIHdoZW4gdGhlIE5TVXNlckRlZmF1bHQgY2hhbmdl
cy4KKyAgICBpZiAoIWNhY2hlZElzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IFVzaW5nIE5TVXNlckRlZmF1bHRzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQu
IFRoaXMgc2V0dGluZyBzaG91bGQgYmUgc3RvcmVkIGVsc2V3aGVyZSAoVENDPykuCisgICAgICAg
IGNhY2hlZElzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0SXNNaW5pTW9kZUVuYWJsZWQiXTsK
KyAgICB9CisgICAgcmV0dXJuICpjYWNoZWRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5OworfQor
Cit2b2lkIHNldElzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoYm9vbCBpc01pbmlNb2RlRW5hYmxl
ZCkKK3sKKyAgICAvLyBGSVhNRTogVXNpbmcgTlNVc2VyRGVmYXVsdHMgaXMgYSB0ZW1wb3Jhcnkg
d29ya2Fyb3VuZC4gVGhpcyBzZXR0aW5nIHNob3VsZCBiZSBzdG9yZWQgZWxzZXdoZXJlIChUQ0M/
KS4KKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOmlz
TWluaU1vZGVFbmFibGVkIGZvcktleTpAIldlYktpdElzTWluaU1vZGVFbmFibGVkIl07CisgICAg
Y2FjaGVkSXNNaW5pTW9kZUVuYWJsZWRHbG9iYWxseSA9IGlzTWluaU1vZGVFbmFibGVkOworfQor
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFwcGxpY2F0
aW9uSXNBYm91dFRvU3VzcGVuZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDc1NjZjNGU2NDc3MzliYmIxYjBmMzFh
Mzc1NzdiNzYyYzY4YTE0ZWYuLmNjZDVlZTcwZmYxNzlmM2UyOGEwNDUxNjI2OWYxZTk2YmFkODMx
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5hYmxlU2hhcmVkQXJyYXlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5hYmxl
TWluaU1vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICB2aXJ0dWFsIFJlZlB0cjxYUENFdmVudEhhbmRsZXI+IHhwY0V2ZW50SGFuZGxlcigp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KaW5k
ZXggZTI4OGUzMDg0YjBkMTJkZDNkZDgzMWViNmYyNjNiNDRmN2FmZTk2Yi4uOWJiNDU3OWI4NTdh
NzRmY2U1NWY3MDU5MjdmZGJhMjI4NmMyYjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCkBAIC0y
MDMsNiArMjAzLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAg
ICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwg
ImRpc2FibGUtaml0IiwgdHJ1ZSk7CiAgICAgICAgIGlmIChtX2NsaWVudC0+c2hvdWxkRW5hYmxl
U2hhcmVkQXJyYXlCdWZmZXIoKSkKICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29s
KGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJlbmFibGUtc2hhcmVkLWFycmF5LWJ1ZmZlciIsIHRy
dWUpOworICAgICAgICBpZiAobV9jbGllbnQtPnNob3VsZEVuYWJsZU1pbmlNb2RlKCkpCisgICAg
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfYm9vbChib290c3RyYXBNZXNzYWdlLmdldCgpLCAi
ZW5hYmxlLW1pbmktbW9kZSIsIHRydWUpOwogICAgIH0KIAogICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9zdHJpbmcoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgIm1lc3NhZ2UtbmFtZSIsICJib290c3Ry
YXAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
CmluZGV4IDcyZjU1OGY3ZjA2NzUxMTU2NGJlYjFiYTVkYmY1ZmFmYmZlYmNjZTUuLjE1MjRjYzhi
NjUzYTllNDZkM2NjMDE5ODFkMjZmYjQzOWVkNmRiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvSGV4
TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNTAsMTEgKzQ5LDExIEBAIHN0YXRp
YyBIYXNoU2V0PFN1c3BlbmRlZFBhZ2VQcm94eSo+JiBhbGxTdXNwZW5kZWRQYWdlcygpCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVBy
b3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVu
ZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJveHk6OklzTWlu
aU1vZGVFbmFibGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlKQogewogICAgIGZvciAoYXV0byogc3Vz
cGVuZGVkUGFnZSA6IGFsbFN1c3BlbmRlZFBhZ2VzKCkpIHsKICAgICAgICAgYXV0byYgcHJvY2Vz
cyA9IHN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsKLSAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nl
c3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9
PSByZWdpc3RyYWJsZURvbWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRh
dGFTdG9yZSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6
SXNvbGF0ZWQpCisgICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNz
UG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4g
JiYgJnByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5j
cm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3Mu
aXNNaW5pTW9kZUVuYWJsZWQoKSA9PSBzaG91bGRFbmFibGVNaW5pTW9kZSkKICAgICAgICAgICAg
IHJldHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IGY0NGFiM2FmNTg5NzA4
Y2RiOWYyNDllZGI1YjQxYzRmYmQwMTc2NTIuLjUwZjE0ZDUwNWM1OGYxNjhiNGE0N2UxYTZjMGVj
NjMyZTY2NzRmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwogY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci1jbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcp
CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFn
ZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAg
ICAgflN1c3BlbmRlZFBhZ2VQcm94eSgpOwogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBh
Z2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc01pbmlNb2RlRW5hYmxl
ZCBzaG91bGRFbmFibGVNaW5pTW9kZSk7CiAKICAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2U7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQoKSBjb25zdCB7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDlhODI5ODI0MjllNGFjNmUzZTY3MDY3YTc3MjYyZDhl
YWYzZTVmYy4uNjZmZWI4MmRkNmQyYzJiOWRhZGZjYTBiM2ZkZDEyMzFlYTcyNzVhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNDM2LDcgKzM0MzYsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9u
LCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBmcmFtZUluZm8sIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0g
UmVmIHsgKm5hdmlnYXRpb24gfSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKKyAgICBh
dXRvIHNob3VsZEVuYWJsZU1pbmlNb2RlID0gKHBvbGljaWVzID8gcG9saWNpZXMtPm1pbmlNb2Rl
RW5hYmxlZCgpIDogaXNNaW5pTW9kZUVuYWJsZWRHbG9iYWxseSgpKSA/IFdlYlByb2Nlc3NQcm94
eTo6SXNNaW5pTW9kZUVuYWJsZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVu
YWJsZWQ6Ok5vOworICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0
aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVS
TCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgc2hvdWxkRW5hYmxlTWluaU1vZGUsIGZy
YW1lSW5mbywgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBSZWYgeyAqbmF2aWdh
dGlvbiB9LCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgc291
cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAogICAgICAgICBwb2xpY2llcyA9
IFdURk1vdmUocG9saWNpZXMpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnRdIChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3NGb3JOYXZp
Z2F0aW9uLCBTdXNwZW5kZWRQYWdlUHJveHkqIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgewogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlv
biBoYXMgYmVlbiBkZXN0cm95ZWQsIHRoZW4gbm8gbmVlZCB0byBwcm9jZWVkLgogICAgICAgICBp
ZiAoaXNDbG9zZWQoKSB8fCAhbmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSkpIHsKQEAgLTU2MTksOSArNTYyMCw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKHVp
bnQ2NF90IG5hdmlnCiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yTmF2
aWdhdGlvbjsKICAgICBpZiAoYnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJc29sYXRlZEdyb3VwKQotICAg
ICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVh
dGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKCksIFdlYlByb2Nlc3NQcm94eTo6SXNQ
cmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkKTsKKyAgICAgICAgcHJvY2Vz
c0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJv
Y2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpO
bywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCwgbV9wcm9jZXNzLT5pc01pbmlNb2RlRW5hYmxl
ZCgpKTsKICAgICBlbHNlCi0gICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNz
LT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0
b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsKKyAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRp
b24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4sIG1fcHJvY2Vzcy0+aXNN
aW5pTW9kZUVuYWJsZWQoKSk7CiAKICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3Mo
Km5hdmlnYXRpb24sIG51bGxwdHIsIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnJlbGVhc2VOb25OdWxs
KCksIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Olllc0FmdGVyUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgbnVsbHB0ciwgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKICAgICBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
Y3BwCmluZGV4IDczOGQxOThiODk2ZmI5Mjg5MzRjMjVkMmFmZWI2NTUzYTUwZDhlMDYuLjQ0ZGU5
OGY3MTM2NzdjZDEyNTc0ZjRmMDFiMTVkYWRhZTcwYmQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE0
OCw3ICsxNDcsNyBAQCBib29sIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2VzcyhzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkUHJvY2Vzcz4mJiBjYWNoZWRQcm9jZXNzKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNz
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vz
c1Byb3h5OjpJc01pbmlNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVNaW5pTW9kZSkKIHsKICAgICBh
dXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJlZ2lzdHJhYmxl
RG9tYWluKTsKICAgICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5l
bmQoKSkKQEAgLTE1Nyw2ICsxNTYsOSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlm
ICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZkYXRhU3RvcmUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2Vzcygp
LmlzTWluaU1vZGVFbmFibGVkKCkgIT0gc2hvdWxkRW5hYmxlTWluaU1vZGUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCiAgICAgYXV0byBwcm9jZXNzID0gaXQtPnZhbHVlLT50YWtlUHJvY2Vz
cygpOwogICAgIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGl0KTsKICAg
ICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coInRha2VQcm9jZXNzOiBUYWtpbmcgcHJvY2Vz
cyBmcm9tIFdlYlByb2Nlc3MgY2FjaGUgKHNpemU9JXUsIGNhcGFjaXR5PSV1KSIsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgY2FwYWNpdHkoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCmluZGV4IDI0OWJiN2Y2NmVjZGIwMDFjZjMxMzUy
ZjJhNTk2ZGM5M2ZjZGVjZDYuLjk4NTA0MTRhYTg0YWQ4MzlkM2FjODg0YWY2YTBlOTgyYjc1ZDU0
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzUsNyArMzYsNiBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgV2ViUHJvY2Vzc0Nh
Y2hlIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2Nlc3ND
YWNoZShXZWJQcm9jZXNzUG9vbCYpOwogCiAgICAgYm9vbCBhZGRQcm9jZXNzSWZQb3NzaWJsZShS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0YWtl
UHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3Rv
cmUmKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0YWtlUHJvY2Vzcyhjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUHJv
eHk6OklzTWluaU1vZGVFbmFibGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlKTsKIAogICAgIHZvaWQg
dXBkYXRlQ2FwYWNpdHkoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB1bnNpZ25lZCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FwYWNpdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAppbmRleCA0OTIwZTZjNmFhYzdjNDVhMmQ5ZGY0M2RhNDhlMjMxODEx
OTYyZmFjLi45NTMwOGI5ZmQ3YzdjY2JkNmRjYTBmOTRlOWVhNmFhMmNlMWY5MmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02MDgsNyArNjA4LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMo
KQogICAgIHBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKTsKIH0KIAot
UmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1By
ZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSkKK1Jl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdl
YnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3
YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIHN0ZDo6
b3B0aW9uYWw8V2ViUHJvY2Vzc1Byb3h5OjpJc01pbmlNb2RlRW5hYmxlZD4gaXNNaW5pTW9kZUVu
YWJsZWQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV90Y2NQcmVmZXJlbmNlRW5hYmxl
ZCA9IGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwpAQCAtNjE2LDE0ICs2MTYsMTUgQEAgUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2Vic2kKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQobV90Y2NQcmVmZXJlbmNlRW5hYmxlZCk7CiAjZW5kaWYKIAot
ICAgIGF1dG8gcHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHdl
YnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkLCBjcm9zc09yaWdpbk1vZGUpOworICAgIGF1dG8g
cmVzb2x2ZWRJc01pbmlNb2RlRW5hYmxlZCA9IGlzTWluaU1vZGVFbmFibGVkID8gKmlzTWluaU1v
ZGVFbmFibGVkIDogKGlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKSA/IFdlYlByb2Nlc3NQcm94
eTo6SXNNaW5pTW9kZUVuYWJsZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVu
YWJsZWQ6Ok5vKTsKKyAgICBhdXRvIHByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlKCp0aGlzLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2Rl
LCByZXNvbHZlZElzTWluaU1vZGVFbmFibGVkKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2Vz
cyhwcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkKTsKICAgICBtX3By
b2Nlc3Nlcy5hcHBlbmQocHJvY2Vzc1Byb3h5LmNvcHlSZWYoKSk7CiAKICAgICByZXR1cm4gcHJv
Y2Vzc1Byb3h5OwogfQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6
dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKK1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2Fy
bWVkUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNz
UHJveHk6OklzTWluaU1vZGVFbmFibGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlKQogewogICAgIGlm
ICghbV9wcmV3YXJtZWRQcm9jZXNzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYzNiw2
ICs2MzcsOSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6dHJ5VGFr
ZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKKyAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzLT5pc01pbmlNb2RlRW5hYmxl
ZCgpICE9IHNob3VsZEVuYWJsZU1pbmlNb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwog
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1
c2luZyBCdWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVu
Y2hlZCB1c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAog
ICAgIC8vIHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdl
YnNpdGVEYXRhU3RvcmUuCkBAIC05ODQsMjMgKzk4OCwyNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgcmVtb3Zl
UHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldChwcm9jZXNzKTsKIH0KIAotUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK1JlZjxXZWJQcm9jZXNzUHJveHk+
IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFT
dG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc1By
b3h5OjpJc01pbmlNb2RlRW5hYmxlZD4gaXNNaW5pTW9kZUVuYWJsZWQpCiB7CisgICAgYXV0byBz
aG91bGRFbmFibGVNaW5pTW9kZSA9IGlzTWluaU1vZGVFbmFibGVkID8gKmlzTWluaU1vZGVFbmFi
bGVkIDogKGlzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoKSA/IFdlYlByb2Nlc3NQcm94eTo6SXNN
aW5pTW9kZUVuYWJsZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQ6
Ok5vKTsKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkgewotICAgICAgICBp
ZiAoYXV0byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3MocmVnaXN0cmFi
bGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3Mg
PSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwgd2Vic2l0
ZURhdGFTdG9yZSwgc2hvdWxkRW5hYmxlTWluaU1vZGUpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9wcm9jZXNzZXMuY29udGFpbnMoKnByb2Nlc3MpKTsKICAgICAgICAgICAgIHJldHVybiBwcm9j
ZXNzLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaGVjayBpZiB3
ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJsZSBkb21haW4g
YW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCi0g
ICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJs
ZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwgd2Vic2l0ZURh
dGFTdG9yZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IFN1c3BlbmRlZFBhZ2VQcm94
eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoKnRoaXMsIHJlZ2lzdHJhYmxlRG9t
YWluLCB3ZWJzaXRlRGF0YVN0b3JlLCBzaG91bGRFbmFibGVNaW5pTW9kZSkpIHsKICAgICAgICAg
ICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbjogVXNpbmcgV2ViUHJvY2VzcyBmcm9tIGEgU3VzcGVuZGVkUGFn
ZSAocHJvY2Vzcz0lcCwgUElEPSVpKSIsIHByb2Nlc3MuZ2V0KCksIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCpw
cm9jZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRy
eVRha2VQcmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUsIHNob3VsZEVuYWJsZU1pbmlN
b2RlKSkgewogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW46IFVzaW5nIHByZXdhcm1lZCBwcm9jZXNz
IChwcm9jZXNzPSVwLCBQSUQ9JWkpIiwgcHJvY2Vzcy5nZXQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQog
ICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbigqcHJvY2VzcywgcmVn
aXN0cmFibGVEb21haW4pOwpAQCAtMTAyNyw3ICsxMDMyLDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0
YVN0b3IKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9CiAgICAgfQotICAg
IHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICByZXR1
cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5
OjpJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBpc01pbmlNb2RlRW5h
YmxlZCk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMDY5LDcgKzEwNzQs
NyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBJbiB0aGUgY29tbW9uIGNh
c2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0aGluZyBpcyBhY3R1YWxseSBs
b2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAgIHByb2Nlc3MgPSBkdW1teVByb2Nlc3NQcm94eShw
YWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAg
ICAgIGlmICghcHJvY2VzcykgewotICAgICAgICAgICAgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBX
ZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQs
IFdlYlByb2Nlc3NQcm94eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOworICAgICAgICAgICAg
cHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJhdGlv
bi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywg
Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJs
ZWQ6Ok5vLCBXZWJQcm9jZXNzUHJveHk6OlNob3VsZExhdW5jaFByb2Nlc3M6Ok5vKTsKICAgICAg
ICAgICAgIG1fZHVtbXlQcm9jZXNzUHJveGllcy5hZGQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklEKCksICpwcm9jZXNzKTsKICAgICAgICAgICAgIG1fcHJv
Y2Vzc2VzLmFwcGVuZCgqcHJvY2Vzcyk7CiAgICAgICAgIH0KQEAgLTE3OTMsOSArMTc5OCw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVTZXQoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgICAgICBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdp
c3RyYWJsZURvbWFpbi5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3Vy
Y2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiBm
cmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3Ms
IGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJs
ZWQgc2hvdWxkRW5hYmxlTWluaU1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50
ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVS
TCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWVJbmZvLCBXVEZNb3ZlKGRhdGFT
dG9yZSksIFt0aGlzLCBwYWdlID0gUmVmIHsgcGFnZSB9LCBuYXZpZ2F0aW9uID0gUmVmIHsgbmF2
aWdhdGlvbiB9LCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJj
ZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29u
KSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKHBhZ2UsIG5hdmln
YXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIHNob3VsZEVuYWJsZU1pbmlNb2RlLCBmcmFtZUluZm8sIFdURk1vdmUo
ZGF0YVN0b3JlKSwgW3RoaXMsIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIG5hdmlnYXRpb24gPSBSZWYg
eyBuYXZpZ2F0aW9uIH0sIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwg
c291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pIG11dGFibGUgewogICAgICAgICAvLyBXZSBhcmUgcHJvY2Vzcy1zd2FwcGluZyBzbyBh
dXRvbWF0aWMgcHJvY2VzcyBwcmV3YXJtaW5nIHdvdWxkIGJlIGJlbmVmaWNpYWwgaWYgdGhlIGNs
aWVudCBoYXMgbm90IGV4cGxpY2l0bHkgZW5hYmxlZCAvIGRpc2FibGVkIGl0LgogICAgICAgICBi
b29sIGRvaW5nQW5BdXRvbWF0aWNQcm9jZXNzU3dhcCA9IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8gJiYgcHJvY2Vzcy5wdHIo
KSAhPSBzb3VyY2VQcm9jZXNzLnB0cigpOwogICAgICAgICBpZiAoZG9pbmdBbkF1dG9tYXRpY1By
b2Nlc3NTd2FwICYmICFjb25maWd1cmF0aW9uKCkud2FzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdT
ZXRCeUNsaWVudCgpICYmICFjb25maWd1cmF0aW9uKCkuY2xpZW50V291bGRCZW5lZml0RnJvbUF1
dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nKCkpIHsKQEAgLTE4MTgsMTggKzE4MjMsMjEgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBjb25zdCBBUEk6Ok5hdmlnYXQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQ
cm9jZXNzLCBjb25zdCBVUkwmIHBhZ2VTb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJbmZvRGF0YSYg
ZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiBkYXRhU3RvcmUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5Kiwg
Y29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3Qg
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJj
ZVByb2Nlc3MsIGNvbnN0IFVSTCYgcGFnZVNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6Oklz
TWluaU1vZGVFbmFibGVkIHNob3VsZEVuYWJsZU1pbmlNb2RlLCBjb25zdCBGcmFtZUluZm9EYXRh
JiBmcmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiB0YXJn
ZXRVUkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB0YXJn
ZXRSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdGFyZ2V0
VVJMIH07CiAKLSAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIHRhcmdldFJlZ2lzdHJhYmxl
RG9tYWluLCBkYXRhU3RvcmVdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAg
cmV0dXJuIHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihkYXRhU3RvcmUsIHBhZ2UucHRyKCks
IHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2UgPSBSZWYgeyBwYWdlIH0s
IHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRhU3RvcmUsIHNob3VsZEVuYWJsZU1pbmlNb2Rl
XSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7CisgICAgICAgIHJldHVybiBwcm9jZXNzRm9y
UmVnaXN0cmFibGVEb21haW4oZGF0YVN0b3JlLCBwYWdlLnB0cigpLCB0YXJnZXRSZWdpc3RyYWJs
ZURvbWFpbiwgc2hvdWxkRW5hYmxlTWluaU1vZGUpOwogICAgIH07CiAKICAgICBpZiAodXNlc1Np
bmdsZVdlYlByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc291cmNlUHJvY2VzcyksIG51bGxwdHIsICJTaW5nbGUgV2ViUHJvY2VzcyBtb2RlIGlzIGVu
YWJsZWQiX3MpOwogCisgICAgaWYgKHNvdXJjZVByb2Nlc3MtPmlzTWluaU1vZGVFbmFibGVkKCkg
IT0gc2hvdWxkRW5hYmxlTWluaU1vZGUpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsICJQcm9jZXNzIHN3YXAgZHVlIHRvIHZtIG1p
bmktbW9kZSBzdGF0ZSBjaGFuZ2UiX3MpOworCiAgICAgaWYgKHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCAiUHJv
Y2VzcyBzd2FwIHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCJfcyk7CiAKQEAgLTIwOTcsNCAr
MjEwNSwxNSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShD
T0NPQSkKK2Jvb2wgaXNNaW5pTW9kZUVuYWJsZWRHbG9iYWxseSgpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIHNldElzTWluaU1vZGVFbmFibGVkR2xvYmFsbHkoYm9vbCkKK3sKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDhhYjk5NjUzY2Y4NzY1ZGJmZDNiYjhhMTA4NzliNTRjYjUx
YTBkYjcuLjRlZDExZTJlODI4YWM1NmMyMDIxOWQwZjI5NGQ1ZGE5MWM1MWJlYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTE5LDYgKzExOSw4IEBAIGlu
dCBuZXR3b3JrUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFP
UygpOwogaW50IHdlYlByb2Nlc3NUaHJvdWdocHV0UU9TKCk7CiAjZW5kaWYKK2Jvb2wgaXNNaW5p
TW9kZUVuYWJsZWRHbG9iYWxseSgpOwordm9pZCBzZXRJc01pbmlNb2RlRW5hYmxlZEdsb2JhbGx5
KGJvb2wpOwogCiBlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0g
Y2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CkBAIC0zMDMsNyArMzA1
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRz
IGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5U3RhdGUpOwogCi0gICAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQ
YWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOyAvLyBXaWxsIHJl
dHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGltaXQgaXMgbWV0IG9yIGR1ZSB0byBjYWNoaW5nLgor
ICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJz
aXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQ+
ID0gc3RkOjpudWxsb3B0KTsgLy8gV2lsbCByZXR1cm4gYW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0
IGlzIG1ldCBvciBkdWUgdG8gY2FjaGluZy4KIAogICAgIHZvaWQgcHJld2FybVByb2Nlc3MoKTsK
IApAQCAtNDM4LDcgKzQ0MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0ZvcmVncm91bmRXZWJQ
cm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlci52
YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNCYWNrZ3JvdW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKTsgfQogCi0gICAgdm9p
ZCBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRp
b24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291
cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRh
JiwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYp
OworICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJ
OjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25z
dCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5OjpJc01pbmlNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVNaW5pTW9kZSwgY29uc3QgRnJh
bWVJbmZvRGF0YSYsIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYpPiYmKTsKIAogICAgIHZvaWQgZGlkUmVhY2hHb29kVGltZVRvUHJld2FybSgpOwogCkBA
IC01MDcsNyArNTA5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY29udGFpbmVyVGVt
cG9yYXJ5RGlyZWN0b3J5KCk7CiAjZW5kaWYKIAotICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNy
ZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSosIFdlYlByb2Nlc3NQcm94eTo6SXNQ
cmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQpOworICAgIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSos
IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2Fy
bWVkOjpObywgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQsIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc1Byb3h5OjpJc01pbmlNb2RlRW5h
YmxlZD4gPSBzdGQ6Om51bGxvcHQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CkBAIC01MTUsOSArNTE3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgp
OwogCi0gICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYs
IGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJv
Y2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVy
bmFsKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQgc2hv
dWxkRW5hYmxlTWluaU1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBT
dXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJik7CiAKLSAgICBSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiB0cnlUYWtlUHJld2FybWVkUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vi
c2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94eTo6SXNNaW5pTW9kZUVuYWJsZWQgc2hvdWxk
RW5hYmxlTWluaU1vZGUpOwogCiAgICAgdm9pZCBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0b3JlKiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdh
cm1lZCA9IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOTQ4MTc2MDhjODA4YTZiZTA5
Y2VjNDRlYzBjYTA4OTU1ZjYwOTUzNS4uNWQ3YjAzMzdlMzNiMDlmNGUxNWUxYTVlZjE3ZWUzNjNh
ZDY4MjY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xNjQsOSArMTY0LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZvcldlYlBhZ2VzV2l0
aE9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3UKICAgICB9CiB9CiAK
LVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQ
cmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIFNo
b3VsZExhdW5jaFByb2Nlc3Mgc2hvdWxkTGF1bmNoUHJvY2VzcykKK1JlZjxXZWJQcm9jZXNzUHJv
eHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQgaXNQcmV3YXJt
ZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIElzTWluaU1vZGVFbmFibGVkIGlz
TWluaU1vZGVFbmFibGVkLCBTaG91bGRMYXVuY2hQcm9jZXNzIHNob3VsZExhdW5jaFByb2Nlc3Mp
CiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nl
c3NQb29sLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlKSk7
CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQ
b29sLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlLCBpc01p
bmlNb2RlRW5hYmxlZCkpOwogICAgIGlmIChzaG91bGRMYXVuY2hQcm9jZXNzID09IFNob3VsZExh
dW5jaFByb2Nlc3M6OlllcykgewogICAgICAgICBpZiAobGl2ZVByb2Nlc3Nlc0xSVSgpLnNpemUo
KSA+PSBzX21heFByb2Nlc3NDb3VudCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKQEAgLTE4NCw3ICsxODQs
NyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdv
cmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQogewot
ICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9v
bCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpT
aGFyZWQpKTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHko
cHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3Jp
Z2luTW9kZTo6U2hhcmVkLCBJc01pbmlNb2RlRW5hYmxlZDo6Tm8pKTsKICAgICBwcm94eS0+bV9y
ZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwogICAgIHByb3h5
LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKQEAg
LTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1XZWJQcm9jZXNzUHJveHk6
OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRh
U3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09y
aWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKQorV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRl
RGF0YVN0b3JlLCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3Nz
T3JpZ2luTW9kZSwgSXNNaW5pTW9kZUVuYWJsZWQgaXNNaW5pTW9kZUVuYWJsZWQpCiAgICAgOiBB
dXhpbGlhcnlQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wuYWx3YXlzUnVuc0F0QmFja2dyb3VuZFBy
aW9yaXR5KCkpCiAgICAgLCBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCp0aGlzKQog
ICAgICwgbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCwgaXNQcmV3YXJtZWQgPT0gSXNQcmV3YXJt
ZWQ6OlllcyA/IElzV2Vhazo6WWVzIDogSXNXZWFrOjpObykKQEAgLTIzNyw2ICsyMzcsNyBAQCBX
ZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PihtYWtlVW5pcXVlUmVm
PFVJUHJveHlGb3JDYXB0dXJlPigqdGhpcykpKQogI2VuZGlmCiAgICAgLCBtX2lzUHJld2FybWVk
KGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCisgICAgLCBtX2lzTWluaU1vZGVFbmFi
bGVkKGlzTWluaU1vZGVFbmFibGVkKQogICAgICwgbV9jcm9zc09yaWdpbk1vZGUoY3Jvc3NPcmln
aW5Nb2RlKQogICAgICwgbV9zaHV0ZG93blByZXZlbnRpbmdTY29wZUNvdW50ZXIoW3RoaXNdKFJl
ZkNvdW50ZXJFdmVudCBldmVudCkgeyBpZiAoZXZlbnQgPT0gUmVmQ291bnRlckV2ZW50OjpEZWNy
ZW1lbnQpIG1heWJlU2h1dERvd24oKTsgfSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggMTk0MDA1ODc4MDY2YTMwOGQzMGJhNWM5MDliNTU4OTUzZDlh
NDY3My4uZDUxNGU1NTBhNjNlOGRjNDVmZmUyODBhODAxZWFhMjFiN2RlMWI5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNCw4ICsxMzQsOSBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNoUHJvY2VzcyA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBJc01pbmlNb2RlRW5hYmxlZCA6IGJvb2wg
eyBObywgWWVzIH07CiAKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdl
YlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpD
cm9zc09yaWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxk
TGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7CisgICAgc3RhdGljIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3Rv
cmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5Nb2RlOjpTaGFyZWQsIElzTWluaU1vZGVFbmFibGVkID0gSXNNaW5pTW9kZUVuYWJs
ZWQ6Ok5vLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsK
ICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yU2VydmljZVdvcmtlcnMo
V2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0
YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CkBAIC00MjcsOSArNDI4LDEwIEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3Jp
Z2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9CisgICAgSXNNaW5p
TW9kZUVuYWJsZWQgaXNNaW5pTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWluaU1v
ZGVFbmFibGVkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3Jp
Z2luTW9kZSk7CisgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURh
dGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUsIElzTWluaU1v
ZGVFbmFibGVkKTsKIAogICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQogICAgIEFTQ0lJTGl0
ZXJhbCBwcm9jZXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJDb250ZW50Il9zOyB9
CkBAIC00NDAsMTYgKzQ0MiwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcm9jZXNzV2lsbFNo
dXREb3duKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkU2VuZFBl
bmRpbmdNZXNzYWdlKGNvbnN0IFBlbmRpbmdNZXNzYWdlJikgZmluYWw7CiAgICAgCi0gICAgLy8g
UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKLSAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwotCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBjYWNoZU1lZGlhTUlNRVR5cGVzSW50ZXJuYWwo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogCisgICAgLy8gUHJvY2Vzc0xhdW5jaGVy
OjpDbGllbnQKKyAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNKSVRFbmFibGVk
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzaG91bGRFbmFibGVTaGFyZWRBcnJheUJ1ZmZlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlID09IFdlYkNvcmU6OkNyb3Nz
T3JpZ2luTW9kZTo6SXNvbGF0ZWQ7IH0KKyAgICBib29sIHNob3VsZEVuYWJsZU1pbmlNb2RlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc01pbmlNb2RlRW5hYmxlZCA9PSBJc01pbmlNb2RlRW5h
YmxlZDo6WWVzOyB9CiAKICAgICB2b2lkIHZhbGlkYXRlRnJlZXplclN0YXR1cygpOwogCkBAIC02
MjIsNiArNjI0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92
aXNpb25hbExvYWRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcmV3YXJtZWQ7CisgICAgSXNN
aW5pTW9kZUVuYWJsZWQgbV9pc01pbmlNb2RlRW5hYmxlZCB7IElzTWluaU1vZGVFbmFibGVkOjpO
byB9OwogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBtX2Nyb3NzT3JpZ2luTW9kZSB7IFdl
YkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkIH07CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBib29sIG1faGFzSXNzdWVkQXR0YWNobWVudEVsZW1lbnRSZWxhdGVkU2Fu
ZGJveEV4dGVuc2lvbnMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2OGQwMzJiNjJhYWFmYzgxZDUzYjE5YTE2ZmM5MzgzZWZh
YzNmNTEuLjU3NmMxNTEzZWVkOTQ0MGMwMDg3NmJmNTRhYzUzZTNjNWE2NTVjMDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0xMS0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBiYXNpYyBzdXBwb3J0IGZvciBsYXVuY2hpbmcgTWluaS1tb2RlIFdlYlByb2Nlc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3Cisg
ICAgICAgIDxyZGFyOi8vODQ0NzMwMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToK
KwogMjAyMS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS11bYTExeV0gRW1iZWRkZWQgb2JqZWN0cyBhcmUgbm90IGNvcnJlY3Rs
eSBoYW5kbGVkIGJ5IHRleHQgaW50ZXJmYWNlIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCmluZGV4IDY2MWJjYzZhMDUxN2RhZmE0NGJmY2IyYTY4OWE0YzliM2Q2ZGIw
YzQuLjhmZGY2ODExNzAzNzIxMDQyZjc2NTA3YWRhZjIxNjQ5MjFjYjNiYzMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNDQsNiArNDQsNyBAQAogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnBhZ2VQcmVmZXJl
bmNlcy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
QEAgLTc2MjYsMyArNzYyNywxOTggQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGluZ0Nyb3Nz
T3JpZ2luRnJvbUNPT1BTYW1lT3JpZ2luQWxsb3dQb3B1cDQpCiB7CiAgICAgcnVuQ09PUFByb2Nl
c3NTd2FwVGVzdCgic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXAiLCAidW5zYWZlLW5vbmUiLCAidW5z
YWZlLW5vbmUiLCAidW5zYWZlLW5vbmUiLCBJc1NhbWVPcmlnaW46Ok5vLCBEb1NlcnZlclNpZGVS
ZWRpcmVjdDo6Tm8sIEV4cGVjdFN3YXA6Ok5vKTsKIH0KKworLy8gT24gaU9TLCB0aGUgbWluaS1t
b2RlIEFQSSByZXF1aXJlcyBhIGJyb3dzZXIgZW50aXRsZW1lbnQuCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisKK3N0YXRpYyBib29sIGlzSklURW5hYmxlZChXS1dlYlZpZXcgKndlYlZpZXcp
Cit7CisgICAgX19ibG9jayBib29sIGdvdFJlc3BvbnNlID0gZmFsc2U7CisgICAgX19ibG9jayBi
b29sIGlzSklURW5hYmxlZFJlc3VsdCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0pJVEVuYWJs
ZWQ6XihCT09MIGlzSklURW5hYmxlZCkgeworICAgICAgICBpc0pJVEVuYWJsZWRSZXN1bHQgPSBp
c0pJVEVuYWJsZWQ7CisgICAgICAgIGdvdFJlc3BvbnNlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdFJlc3BvbnNlKTsKKyAgICByZXR1cm4gaXNKSVRF
bmFibGVkUmVzdWx0OworfQorCitURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0aW5nVG9NaW5pTW9k
ZSkKK3sKKyAgICBFWFBFQ1RfRkFMU0UoV0tXZWJwYWdlUHJlZmVyZW5jZXMuX21pbmlNb2RlRW5h
YmxlZEdsb2JhbGx5KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOworICAgIH07
CisKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZp
bmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICBwaWRfdCBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkMSwgMCk7CisKKyAgICBFWFBFQ1RfVFJV
RShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0
aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFn
ZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShwcmVmZXJlbmNlcy5taW5p
TW9kZUVuYWJsZWQpOworICAgICAgICBwcmVmZXJlbmNlcy5taW5pTW9kZUVuYWJsZWQgPSBZRVM7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCBwcmVmZXJlbmNlcyk7CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNl
OworICAgIHVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWRO
YXZpZ2F0aW9uKTsKKworICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mtc3dhcCBmb3IgdHJh
bnNpdGlvbmluZyB0byBtaW5pLW1vZGUuCisgICAgRVhQRUNUX05FKHBpZDEsIFt3ZWJWaWV3IF93
ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQod2Vi
Vmlldy5nZXQoKSkpOworCisgICAgRVhQRUNUX0ZBTFNFKFdLV2VicGFnZVByZWZlcmVuY2VzLl9t
aW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7Cit9CisKK1RFU1QoUHJvY2Vzc1N3YXAsIE1pbmlNb2Rl
RW5hYmxlZEJ5RGVmYXVsdExvY2FsbHlUaGVuT3B0T3V0KQoreworICAgIEVYUEVDVF9GQUxTRShX
S1dlYnBhZ2VQcmVmZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkpOworCisgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
bmV3XSk7CisgICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLmRlZmF1
bHRXZWJwYWdlUHJlZmVyZW5jZXMubWluaU1vZGVFbmFibGVkKTsKKyAgICB3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKS5kZWZhdWx0V2VicGFnZVByZWZlcmVuY2VzLm1pbmlNb2RlRW5hYmxlZCA9
IFlFUzsKKyAgICBFWFBFQ1RfRkFMU0UoV0tXZWJwYWdlUHJlZmVyZW5jZXMuX21pbmlNb2RlRW5h
YmxlZEdsb2JhbGx5KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZmlu
aXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkRmluaXNoTmF2
aWdhdGlvbiA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqKSB7CisgICAgICAgIGZpbmlz
aGVkTmF2aWdhdGlvbiA9IHRydWU7CisgICAgfTsKKworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBeKFdLTmF2aWdhdGlv
bkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcyAqKSkgeworICAgICAgICBFWFBFQ1RfVFJVRShwcmVmZXJlbmNlcy5taW5pTW9k
ZUVuYWJsZWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgIH07CisKKyAgICBOU1VSTCAqdXJsID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAg
ICBwaWRfdCBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBF
Q1RfTkUocGlkMSwgMCk7CisgICAgRVhQRUNUX0ZBTFNFKGlzSklURW5hYmxlZCh3ZWJWaWV3Lmdl
dCgpKSk7CisKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAg
ICBFWFBFQ1RfRVEocGlkMSwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7IC8vIFNo
b3VsZG4ndCBoYXZlIHByb2Nlc3Mtc3dhcHBlZCBzaW5jZSB3ZSdyZSBzdGF5aW5nIGluIG1pbmkt
bW9kZS4KKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKwor
ICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJl
ZmVyZW5jZXMgPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJl
bmNlcyAqcHJlZmVyZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICBFWFBFQ1Rf
VFJVRShwcmVmZXJlbmNlcy5taW5pTW9kZUVuYWJsZWQpOworICAgICAgICBwcmVmZXJlbmNlcy5t
aW5pTW9kZUVuYWJsZWQgPSBOTzsgLy8gT3B0IG91dCBvZiBtaW5pLW1vZGUgZm9yIHRoaXMgbG9h
ZC4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFs
c2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNp
bXBsZTMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hl
ZE5hdmlnYXRpb24pOworCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgcHJvY2Vzcy1zd2FwcGVkIHRv
IGdldCBvdXQgb2YgbWluaS1tb2RlLgorICAgIEVYUEVDVF9ORShwaWQxLCBbd2ViVmlldyBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfVFJVRShpc0pJVEVuYWJsZWQod2ViVmll
dy5nZXQoKSkpOworCisgICAgLy8gbWluaS1tb2RlIHNob3VsZCBiZSBkaXNhYmxlZCBpbiBuZXcg
V2ViVmlld3Mgc2luY2UgaXQgaXMgbm90IGVuYWJsZWQgZ2xvYmFsbHkuCisgICAgYXV0byB3ZWJW
aWV3MiA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldzIgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBuaWw7CisKKyAgICBm
aW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldzIgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisgICAgRVhQRUNUX1RSVUUoaXNK
SVRFbmFibGVkKHdlYlZpZXcyLmdldCgpKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoV0tXZWJwYWdl
UHJlZmVyZW5jZXMuX21pbmlNb2RlRW5hYmxlZEdsb2JhbGx5KTsKK30KKworVEVTVChQcm9jZXNz
U3dhcCwgTWluaU1vZGVFbmFibGVkR2xvYmFsbHlUaGVuT3B0T3V0KQoreworICAgIEVYUEVDVF9G
QUxTRShXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fbWluaU1vZGVFbmFibGVkR2xvYmFsbHkpOworICAg
IFdLV2VicGFnZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSA9IFlFUzsgLy8g
RW5hYmxlIG1pbmktbW9kZSBnbG9iYWxseQorICAgIEVYUEVDVF9UUlVFKFdLV2VicGFnZVByZWZl
cmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBF
WFBFQ1RfVFJVRSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5kZWZhdWx0V2VicGFnZVByZWZl
cmVuY2VzLm1pbmlNb2RlRW5hYmxlZCk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIF9fYmxvY2sg
Ym9vbCBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRG
aW5pc2hOYXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsKKyAgICAg
ICAgZmluaXNoZWROYXZpZ2F0aW9uID0gdHJ1ZTsKKyAgICB9OworCisgICAgZGVsZWdhdGUuZ2V0
KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tO
YXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdL
V2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHByZWZlcmVuY2Vz
Lm1pbmlNb2RlRW5hYmxlZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7CisgICAgfTsKKworICAgIE5TVVJMICp1
cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIHBpZF90IHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwor
ICAgIEVYUEVDVF9ORShwaWQxLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdl
YlZpZXcuZ2V0KCkpKTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIEVYUEVDVF9FUShwaWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJd
KTsgLy8gU2hvdWxkbid0IGhhdmUgcHJvY2Vzcy1zd2FwcGVkIHNpbmNlIHdlJ3JlIHN0YXlpbmcg
aW4gbWluaS1tb2RlLgorICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQo
KSkpOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFn
ZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKHByZWZlcmVuY2VzLm1pbmlNb2RlRW5hYmxlZCk7CisgICAgICAgIHByZWZl
cmVuY2VzLm1pbmlNb2RlRW5hYmxlZCA9IE5POyAvLyBPcHQgb3V0IG9mIG1pbmktbW9kZSBmb3Ig
dGhpcyBsb2FkLgorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgIH07CisKKyAgICBmaW5pc2hlZE5hdmlnYXRp
b24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlMyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBwcm9jZXNzLXN3
YXBwZWQgdG8gZ2V0IG91dCBvZiBtaW5pLW1vZGUuCisgICAgRVhQRUNUX05FKHBpZDEsIFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVYUEVDVF9UUlVFKGlzSklURW5hYmxl
ZCh3ZWJWaWV3LmdldCgpKSk7CisKKyAgICAvLyBtaW5pLW1vZGUgc2hvdWxkIGJlIGVuYWJsZWQg
aW4gbmV3IFdlYlZpZXdzIHNpbmNlIGl0IGlzIGVuYWJsZWQgZ2xvYmFsbHkuCisgICAgYXV0byB3
ZWJWaWV3MiA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldzIgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2VzID0gbmlsOworCisgICAg
ZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcyIGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworICAgIEVYUEVDVF9GQUxTRShp
c0pJVEVuYWJsZWQod2ViVmlldzIuZ2V0KCkpKTsKKworICAgIEVYUEVDVF9UUlVFKFdLV2VicGFn
ZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7CisgICAgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMuX21pbmlNb2RlRW5hYmxlZEdsb2JhbGx5ID0gTk87CisgICAgRVhQRUNUX0ZBTFNF
KFdLV2VicGFnZVByZWZlcmVuY2VzLl9taW5pTW9kZUVuYWJsZWRHbG9iYWxseSk7Cit9CisKKyNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443418</attachid>
            <date>2021-11-05 11:01:53 -0700</date>
            <delta_ts>2021-11-05 13:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211105110152.patch</filename>
            <type>text/plain</type>
            <size>56121</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjllNTY0OGU3Nzg3OTZm
NTY3NTMzNWU4MDllNDQ0ZmQ4NTlmMDMuLmVkZjA5YzJlMDU0Y2FjZjg3MjA2YTJjNTlkOTI5ODU2
YmZkZTViNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIENhcHRpdmVQb3J0YWxNb2RlIFdlYlByb2Nlc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3CisgICAgICAgIDxyZGFyOi8v
ODQ0NzMwMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBgV0tXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
YCBBUEkgdG8gYWxsb3cgY2xpZW50cyBhcHBzIHRvIG9wdCBpbiBvcgorICAgICAgICBvdXQgb2Yg
Y2FwdGl2ZSBwb3J0YWwgbW9kZSBmb3IgZWFjaCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNp
b24pLgorCisgICAgICAgIEFsc28gYWRkIGEgYFdLV2VicGFnZVByZWZlcmVuY2VzLl9jYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseWAgU1BJIChyZWFkd3JpdGUgY2xhc3MgcHJvcGVydHkp
CisgICAgICAgIHRvIHF1ZXJ5IG9yIHRvZ2dsZSBjYXB0aXZlIHBvcnRhbCBtb2RlIGFwcC13aWRl
LiBUaGlzIGlzIGN1cnJlbnRseSBiYWNrZWQgYnkgYSBOU1VzZXJEZWZhdWx0cyBidXQKKyAgICAg
ICAgd2Ugd2lsbCBuZWVkIHRvIGV2ZW50dWFsbHkgbW92ZSB0byBzb21ldGhpbmcgZWxzZSAobWF5
YmUgVENDPykuCisKKyAgICAgICAgTm90ZSB0aGF0IGJvdGggdGhlc2UgcHJvcGVydGllcyBjYW4g
b25seSBiZSBzZXQgYnkgYXBwcyB3aXRoIHRoZSBicm93c2VyIGVudGl0bGVtZW50IG9uIGlPUyAo
bm8KKyAgICAgICAgcmVzdHJpY3Rpb24gb24gbWFjT1MpLgorCisgICAgICAgIFdoZW5ldmVyIHRy
YW5zaXRpb25pbmcgaW4gb3Igb3V0IG9mIGNhcHRpdmUgcG9ydGFsIG1vZGUsIHdlIHByb2Nlc3Mt
c3dhcCBvbiBuYXZpZ2F0aW9uIHBvbGljeQorICAgICAgICBkZWNpc2lvbi4gV2hlbmV2ZXIgY2Fw
dGl2ZSBwb3J0YWwgbW9kZSBpcyBlbmFibGVkLCB3ZSB0dXJuIG9mZiBKSVQsIGdlbmVyYXRpb25h
bCBhbmQgY29uY3VycmVudCBHQworICAgICAgICBpbiB0aGUgV2ViUHJvY2VzcywgYXMgc29vbiBh
cyBpdCBsYXVuY2hlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VFbnRyeVBvaW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXpl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwOgorICAg
ICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmNvcHkgY29uc3QpOgorICAgICAgICAoQVBJOjpX
ZWJzaXRlUG9saWNpZXM6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV0tXZWJwYWdl
UHJlZmVyZW5jZXMgX2NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5XSk6CisgICAgICAg
ICgrW1dLV2VicGFnZVByZWZlcmVuY2VzIF9zZXRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9i
YWxseTpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5jZXMgc2V0Q2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYnBhZ2VQcmVmZXJlbmNlcyBjYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
cGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojppc0NhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZEdsb2JhbGx5KToKKyAgICAgICAgKFdlYktpdDo6c2V0SXNDYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWRHbG9iYWxseSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NM
YXVuY2hlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OkNsaWVudDo6c2hv
dWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZp
bmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRyaWdnZXJCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnRh
a2VQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAgICAgIChX
ZWJLaXQ6OmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkpOgorICAgICAgICAoV2Vi
S2l0OjpzZXRJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojppc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisKIDIw
MjEtMTEtMDQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBI
YXZlIFJlbW90ZU1lZGlhUmVzb3VyY2UgdXNlIFNoYXJlZE1lbW9yeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VFbnRyeVBvaW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaAppbmRleCBmZjdh
NDRjNWJhMzZmYzliY2ZiZGMzMTJiOTNkMzNiYjk1ZGE2NzJiLi4xYzVkYTFiZTk5YTViZGE4YzRi
ZTBhNTNlMzkxOTdmNzgxMzA5YjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaApAQCAtODksNiArODksMTMgQEAgdm9pZCBY
UENTZXJ2aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVj
dGlvbiwgeHBjX29iamVjdF8KICAgICBpZiAoaW5pdGlhbGl6ZXJNZXNzYWdlKSB7CiAgICAgICAg
IGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChpbml0aWFsaXplck1lc3NhZ2UsICJjb25maWd1
cmUtanNjLWZvci10ZXN0aW5nIikpCiAgICAgICAgICAgICBKU0M6OkNvbmZpZzo6Y29uZmlndXJl
Rm9yVGVzdGluZygpOworICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlh
bGl6ZXJNZXNzYWdlLCAiZW5hYmxlLWNhcHRpdmUtcG9ydGFsLW1vZGUiKSkgeworICAgICAgICAg
ICAgSlNDOjpPcHRpb25zOjppbml0aWFsaXplKCk7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6
OkFsbG93VW5maW5hbGl6ZWRBY2Nlc3NTY29wZSBzY29wZTsKKyAgICAgICAgICAgIEpTQzo6T3B0
aW9uczo6dXNlSklUKCkgPSBmYWxzZTsKKyAgICAgICAgICAgIEpTQzo6T3B0aW9uczo6dXNlR2Vu
ZXJhdGlvbmFsR0MoKSA9IGZhbHNlOworICAgICAgICAgICAgSlNDOjpPcHRpb25zOjp1c2VDb25j
dXJyZW50R0MoKSA9IGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlmICh4cGNfZGljdGlvbmFy
eV9nZXRfYm9vbChpbml0aWFsaXplck1lc3NhZ2UsICJkaXNhYmxlLWppdCIpKQogICAgICAgICAg
ICAgSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKGZhbHNlKTsKICAgICAg
ICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVyTWVzc2FnZSwgImVuYWJs
ZS1zaGFyZWQtYXJyYXktYnVmZmVyIikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKaW5kZXggM2VhNGIxYjkxZDk5ZjM0ZWRhMThm
ZTEyYjEyNWQzNzk4OTRhMTM2Ni4uNWJjMTQ3MjYzODc4MmNkYTNlODIxNzQyOTMwZmVkNDUxMGQy
YTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQ
b2xpY2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQ
b2xpY2llcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKIAorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
CiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAt
NzIsNiArNzMsNyBAQCBSZWY8V2Vic2l0ZVBvbGljaWVzPiBXZWJzaXRlUG9saWNpZXM6OmNvcHko
KSBjb25zdAogICAgIHBvbGljaWVzLT5zZXRBbGxvd1NpdGVTcGVjaWZpY1F1aXJrc1RvT3ZlcnJp
ZGVDb250ZW50TW9kZShtX2FsbG93U2l0ZVNwZWNpZmljUXVpcmtzVG9PdmVycmlkZUNvbnRlbnRN
b2RlKTsKICAgICBwb2xpY2llcy0+c2V0QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2Vu
dChtX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogICAgIHBvbGljaWVzLT5z
ZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdChtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0KTsKKyAg
ICBwb2xpY2llcy0+c2V0Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKG1fY2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkKTsKICAgICBwb2xpY2llcy0+c2V0TW91c2VFdmVudFBvbGljeShtX21vdXNlRXZl
bnRQb2xpY3kpOwogICAgIHJldHVybiBwb2xpY2llczsKIH0KQEAgLTEyMyw1ICsxMjUsMTAgQEAg
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIFdlYnNpdGVQb2xpY2llczo6ZGF0YSgpCiAgICAg
fTsKIH0KIAorYm9vbCBXZWJzaXRlUG9saWNpZXM6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID8gKm1fY2Fw
dGl2ZVBvcnRhbE1vZGVFbmFibGVkIDogV2ViS2l0Ojppc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZEdsb2JhbGx5KCk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVQb2xpY2llcy5oCmluZGV4IGNkZTA3NTNmZDFjNDM5NjQxMWRjMGI0ZTM0OGE5
MzFmNTFiMTcwZmQuLjY4NjdhYWMyYjdkZjJjOGQxYTE5NWU2NzcwNTkwZTA1ZmExMDhhYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgK
QEAgLTEyNSw2ICsxMjUsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93
c0NvbnRlbnRKYXZhU2NyaXB0OyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlw
dChXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250
ZW50SmF2YVNjcmlwdCA9IGFsbG93czsgfQogCisgICAgYm9vbCBjYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZChzdGQ6
Om9wdGlvbmFsPGJvb2w+IGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkgeyBtX2NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCA9IGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsgfQorCiAgICAgV2ViQ29y
ZTo6TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9t
b3VzZUV2ZW50UG9saWN5OyB9CiAgICAgdm9pZCBzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNvcmU6
Ok1vdXNlRXZlbnRQb2xpY3kgcG9saWN5KSB7IG1fbW91c2VFdmVudFBvbGljeSA9IHBvbGljeTsg
fQogCkBAIC0xNTcsNiArMTYwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpBbGxvd3NDb250
ZW50SmF2YVNjcmlwdCBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0IHsgV2ViQ29yZTo6QWxsb3dz
Q29udGVudEphdmFTY3JpcHQ6OlllcyB9OwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kg
bV9tb3VzZUV2ZW50UG9saWN5IHsgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeTo6RGVmYXVsdCB9
OwogICAgIGJvb2wgbV9pZGVtcG90ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFn
ZXMgeyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKaW5kZXgg
NGEyMzZkYTdkNzU4YWI5NmQ2Yjc1NmQ3NWZjYWQyYTFjM2I3M2QwYS4uMjE5MjVhM2UzNWY0NzZl
ZjMzZmQ4M2YyNGE5ODk3MDhhY2U1N2VjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKQEAgLTcxLDQgKzcx
LDkgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogKi8KIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKKy8qISBAYWJzdHJhY3QgQSBib29s
ZWFuIGluZGljYXRpbmcgd2hldGhlciBjYXB0aXZlIHBvcnRhbCBtb2RlIGlzIGVuYWJsZWQuCisg
QGRpc2N1c3Npb24gVGhlIGRlZmF1bHQgdmFsdWUgaXMgTk8sIHVubGVzcyBlbmFibGVkIHN5c3Rl
bS13aWRlLgorICovCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCmluZGV4IDVlYjEyMDE4ZDlhNDdlMzRiNjZl
ZGQ3ZWUwODU4M2UxNzg3NGYzMWEuLjM5ZTI5MzlhNDYxNGRiMDdiMzUxYTkyM2Q2ZThhZDhkMzY2
N2Q2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0KQEAgLTMxLDExICszMSwxNiBAQAogI2ltcG9ydCAi
V0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0
b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNvbnRlbnRNb2RlLmgiCisjaW1wb3J0ICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAt
MzY3LDYgKzM3MiwyMCBAQCAtICh2b2lkKV9zZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnRX
aXRoTW9kZXJuQ29tcGF0aWJpbGl0eTooTlNTdHJpbmcgKilhcHBsaQogICAgIF93ZWJzaXRlUG9s
aWNpZXMtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQoYXBwbGljYXRpb25O
YW1lKTsKIH0KIAorKyAoQk9PTClfY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkKK3sK
KyAgICByZXR1cm4gV2ViS2l0Ojppc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5KCk7
Cit9CisKKysgKHZvaWQpX3NldENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5OihCT09M
KXZhbHVlCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIVdURjo6cHJvY2Vz
c0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyIikpCisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgorICAgIFdlYktpdDo6c2V0SXNDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWRHbG9iYWxseSghIXZhbHVlKTsKK30KKwogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
IHsKICAgICByZXR1cm4gKl93ZWJzaXRlUG9saWNpZXM7CkBAIC0zODcsNiArNDA2LDIwIEBAIC0g
KEJPT0wpYWxsb3dzQ29udGVudEphdmFTY3JpcHQKICAgICB9CiB9CiAKKy0gKHZvaWQpc2V0Q2Fw
dGl2ZVBvcnRhbE1vZGVFbmFibGVkOihCT09MKWlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIVdURjo6cHJvY2Vzc0hhc0VudGl0
bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93c2VyIikpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldENhcHRpdmVQb3J0YWxNb2RlRW5h
YmxlZCghIWlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKK30KKworLSAoQk9PTCljYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQKK3sKKyAgICByZXR1cm4gX3dlYnNpdGVQb2xpY2llcy0+Y2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAt
ICh2b2lkKXNldFByZWZlcnJlZENvbnRlbnRNb2RlOihXS0NvbnRlbnRNb2RlKWNvbnRlbnRNb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdl
UHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNDc3ZmRjMTFmMzJmOWRmYjllYjBk
MThiOTNmNGIyNDcwZDQ3YjQ0OS4uMjNkNDVmZjQ3OTE4NTlhYzAzMDIzOTJlZmQ2MGRmNGRhNDFi
NzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
cGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtODUsNCArODUsNiBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZU1vdXNlRXZlbnRQb2xpY3kp
IHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TW91c2VFdmVudFBvbGljeTop
IF9XS1dlYnNpdGVNb3VzZUV2ZW50UG9saWN5IF9tb3VzZUV2ZW50UG9saWN5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKK0Bwcm9wZXJ0eSAoY2xhc3MsIG5vbmF0
b21pYywgc2V0dGVyPV9zZXRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseTopIEJPT0wg
X2NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDExZjA1
M2YxYjUzN2VhNjRmYzI0MWU2MGEzZGU5NzA2MTljMDFkOGYuLjA3NTJmM2YwZTQ1YzE5ZTVlYTgy
ZDdjYjcwNjY3ZjA1MjQ5YzI3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtOTg4LDYgKzk4OCwyNSBAQCBpbnQg
d2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKQogICAgIHJldHVybiBxb3M7CiB9CiAKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGNhY2hlZElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFs
bHk7CisKK2Jvb2wgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSgpCit7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBjYWNoZWQgdmFsdWUgd2hlbiB0aGUg
TlNVc2VyRGVmYXVsdCBjaGFuZ2VzLgorICAgIGlmICghY2FjaGVkSXNDYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWRHbG9iYWxseSkgeworICAgICAgICAvLyBGSVhNRTogVXNpbmcgTlNVc2VyRGVmYXVs
dHMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4gVGhpcyBzZXR0aW5nIHNob3VsZCBiZSBzdG9y
ZWQgZWxzZXdoZXJlIChUQ0M/KS4KKyAgICAgICAgY2FjaGVkSXNDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWRHbG9iYWxseSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJv
b2xGb3JLZXk6QCJXZWJLaXRJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCJdOworICAgIH0KKyAg
ICByZXR1cm4gKmNhY2hlZElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHk7Cit9CisK
K3ZvaWQgc2V0SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseShib29sIGlzQ2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKQoreworICAgIC8vIEZJWE1FOiBVc2luZyBOU1VzZXJEZWZhdWx0
cyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLiBUaGlzIHNldHRpbmcgc2hvdWxkIGJlIHN0b3Jl
ZCBlbHNld2hlcmUgKFRDQz8pLgorICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldEJvb2w6aXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgZm9yS2V5OkAiV2ViS2l0
SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQiXTsKKyAgICBjYWNoZWRJc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEdsb2JhbGx5ID0gaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7Cit9CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YXBwbGljYXRpb25J
c0Fib3V0VG9TdXNwZW5kKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggNzU2NmM0ZTY0NzczOWJiYjFiMGYzMWEzNzU3
N2I3NjJjNjhhMTRlZi4uNmRkNmUyNDJiODViNjY5NzdmZmNkYTBkNTAzNjllMDM1NzkxOTk1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5j
aGVyLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVTaGFyZWRBcnJheUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVDYXB0
aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5k
bGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bQppbmRleCBlMjg4ZTMwODRiMGQxMmRkM2RkODMxZWI2ZjI2M2I0NGY3YWZlOTZiLi4yNzJjYzkx
NGY5NWM2NjMyYmEzNmNhZDkwODFmNDJlNDk3YTEyOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0K
QEAgLTIwMyw2ICsyMDMsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfYm9vbChib290c3RyYXBNZXNzYWdlLmdl
dCgpLCAiZGlzYWJsZS1qaXQiLCB0cnVlKTsKICAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRF
bmFibGVTaGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X2Jvb2woYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgImVuYWJsZS1zaGFyZWQtYXJyYXktYnVmZmVy
IiwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2NsaWVudC0+c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRh
bE1vZGUoKSkKKyAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKGJvb3RzdHJhcE1l
c3NhZ2UuZ2V0KCksICJlbmFibGUtY2FwdGl2ZS1wb3J0YWwtbW9kZSIsIHRydWUpOwogICAgIH0K
IAogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwg
Im1lc3NhZ2UtbmFtZSIsICJib290c3RyYXAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDcyZjU1OGY3ZjA2NzUxMTU2NGJlYjFiYTVk
YmY1ZmFmYmZlYmNjZTUuLjBhMGViMWQ1MDZiMjMxNzBjMzgyMGFjNjEzZmFlNTU2ZjgxMmFjZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
LSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpA
QCAtNTAsMTEgKzQ5LDExIEBAIHN0YXRpYyBIYXNoU2V0PFN1c3BlbmRlZFBhZ2VQcm94eSo+JiBh
bGxTdXNwZW5kZWRQYWdlcygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotUmVmUHRyPFdlYlByb2Nl
c3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJv
Y2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5k
ZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHNob3VsZEVuYWJs
ZUNhcHRpdmVQb3J0YWxNb2RlKQogewogICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFnZSA6IGFs
bFN1c3BlbmRlZFBhZ2VzKCkpIHsKICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHN1c3BlbmRlZFBh
Z2UtPnByb2Nlc3MoKTsKLSAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnBy
b2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURv
bWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSAmJiBwcm9j
ZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQpCisgICAg
ICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNz
LnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nlc3Mud2Vi
c2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUo
KSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuaXNDYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQoKSA9PSBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSkKICAgICAgICAg
ICAgIHJldHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IGY0NGFiM2FmNTg5
NzA4Y2RiOWYyNDllZGI1YjQxYzRmYmQwMTc2NTIuLmFlNmQyNWVhYjJmMWIxOTAzYmZlOGIzNzU2
MTVjMTQyMDAyNDhmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwogY2xhc3MgV2ViUGFnZVBy
b3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci1jbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJ
RVcpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBTdXNwZW5kZWRQYWdlUHJveHkoV2Vi
UGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7
CiAgICAgflN1c3BlbmRlZFBhZ2VQcm94eSgpOwogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9j
ZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29s
JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7
CisgICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRl
ZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSk7CiAKICAgICBXZWJQ
YWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KICAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDlhODI5ODI0Mjll
NGFjNmUzZTY3MDY3YTc3MjYyZDhlYWYzZTVmYy4uODVhOGQwYjcwMWZlYTYyZGUwNjNkZDU0NDJi
ZjY2MjkzMWUyMDk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zNDM2LDcgKzM0MzYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICB9
CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRp
b24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJM
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZUluZm8sIFdURk1vdmUod2Vic2l0
ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcG9saWN5
QWN0aW9uLCBuYXZpZ2F0aW9uID0gUmVmIHsgKm5hdmlnYXRpb24gfSwgbmF2aWdhdGlvbkFjdGlv
biA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9j
ZXNzLmNvcHlSZWYoKSwKKyAgICBhdXRvIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlID0g
KHBvbGljaWVzID8gcG9saWNpZXMtPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpIDogaXNDYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSgpKSA/IFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQ6Ok5vOworICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NG
b3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCks
IHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgc2hvdWxkRW5hYmxlQ2Fw
dGl2ZVBvcnRhbE1vZGUsIGZyYW1lSW5mbywgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24gPSBSZWYgeyAqbmF2aWdhdGlvbiB9LCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAog
ICAgICAgICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMpLCBzZW5kZXIgPSBXVEZNb3ZlKHNl
bmRlciksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRdIChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQYWdlUHJveHkqIGRlc3RpbmF0aW9u
U3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgewogICAgICAgICAv
LyBJZiB0aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQsIHRoZW4gbm8gbmVlZCB0byBw
cm9jZWVkLgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAhbmF2aWdhdGlvblN0YXRlKCkuaGFz
TmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSkpIHsKQEAgLTU2MTksOSArNTYy
MCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0cmlnZ2VyQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2hGb3JOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnCiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbjsKICAgICBpZiAoYnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uOjpOZXdJ
c29sYXRlZEdyb3VwKQotICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKCksIFdl
YlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVk
KTsKKyAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJv
eHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCwgbV9wcm9jZXNz
LT5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpKTsKICAgICBlbHNlCi0gICAgICAgIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdp
c3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsK
KyAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVz
cG9uc2VEb21haW4sIG1fcHJvY2Vzcy0+aXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7CiAK
ICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIs
IHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnJlbGVhc2VOb25OdWxsKCksIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCmluZGV4IDczOGQxOThiODk2
ZmI5Mjg5MzRjMjVkMmFmZWI2NTUzYTUwZDhlMDYuLmQwOWYxZTAyNTU0NmYwYWE2YjNiZjJkOGU2
MDk3OTZkNzg5NjBiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0Nh
Y2hlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0j
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE0OCw3ICsxNDcsNyBAQCBib29sIFdl
YlByb2Nlc3NDYWNoZTo6YWRkUHJvY2VzcyhzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUHJvY2Vzcz4m
JiBjYWNoZWRQcm9jZXNzKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vz
cyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdl
YnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSkKIHsKICAgICBhdXRv
IGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJlZ2lzdHJhYmxlRG9t
YWluKTsKICAgICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQo
KSkKQEAgLTE1Nyw2ICsxNTYsOSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
Q2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlmICgm
aXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZkYXRhU3RvcmUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2VzcygpLmlz
Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgIT0gc2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1v
ZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgYXV0byBwcm9jZXNzID0gaXQtPnZh
bHVlLT50YWtlUHJvY2VzcygpOwogICAgIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4u
cmVtb3ZlKGl0KTsKICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coInRha2VQcm9jZXNz
OiBUYWtpbmcgcHJvY2VzcyBmcm9tIFdlYlByb2Nlc3MgY2FjaGUgKHNpemU9JXUsIGNhcGFjaXR5
PSV1KSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgY2FwYWNpdHkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCmluZGV4IDI0OWJiN2Y2
NmVjZGIwMDFjZjMxMzUyZjJhNTk2ZGM5M2ZjZGVjZDYuLjZiNzk2NDgxZTI4MGNhMzFiNDJkMDk2
YzY3MTMwNTU0OTdlN2Y2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
MzUsNyArMzYsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29s
OwotY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xh
c3MgV2ViUHJvY2Vzc0NhY2hlIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFdlYlByb2Nlc3NDYWNoZShXZWJQcm9jZXNzUG9vbCYpOwogCiAgICAgYm9vbCBhZGRQcm9j
ZXNzSWZQb3NzaWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICBSZWZQdHI8V2ViUHJv
Y2Vzc1Byb3h5PiB0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0YWtlUHJv
Y2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUm
LCBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHNob3VsZEVuYWJs
ZUNhcHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIHZvaWQgdXBkYXRlQ2FwYWNpdHkoV2ViUHJvY2Vz
c1Bvb2wmKTsKICAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWNp
dHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA0
OTIwZTZjNmFhYzdjNDVhMmQ5ZGY0M2RhNDhlMjMxODExOTYyZmFjLi5hYjNmZGMwNWQ5ZWU1OGYw
YjkzMWNhNGYzYzlkODJhY2IyNGQ3ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogICAgIHBsYXRmb3JtUmVzb2x2ZVBh
dGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKTsKIH0KIAotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0
ZURhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jv
c3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlBy
b2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVE
YXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3Nz
T3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc1Byb3h5
OjpJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZD4gaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQp
CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV90Y2NQcmVmZXJlbmNlRW5hYmxlZCA9IGRv
ZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwpAQCAtNjE2LDE0ICs2MTYsMTUgQEAgUmVmPFdlYlByb2Nl
c3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFT
dG9yZSogd2Vic2kKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQobV90Y2NQcmVmZXJlbmNlRW5hYmxlZCk7CiAjZW5kaWYKIAotICAgIGF1
dG8gcHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHdlYnNpdGVE
YXRhU3RvcmUsIGlzUHJld2FybWVkLCBjcm9zc09yaWdpbk1vZGUpOworICAgIGF1dG8gcmVzb2x2
ZWRJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
ID8gKmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIDogKGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkR2xvYmFsbHkoKSA/IFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Ok5v
KTsKKyAgICBhdXRvIHByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlz
LCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlLCByZXNvbHZl
ZElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2Vz
cyhwcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkKTsKICAgICBtX3By
b2Nlc3Nlcy5hcHBlbmQocHJvY2Vzc1Byb3h5LmNvcHlSZWYoKSk7CiAKICAgICByZXR1cm4gcHJv
Y2Vzc1Byb3h5OwogfQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6
dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSkKK1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2Fy
bWVkUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNz
UHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0
YWxNb2RlKQogewogICAgIGlmICghbV9wcmV3YXJtZWRQcm9jZXNzKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTYzNiw2ICs2MzcsOSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQ
cm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNz
LT5pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpICE9IHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0
YWxNb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJibGV3cmFwIGZvciBz
YW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2luZyB0aGUgV2ViUHJv
Y2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNvIHdlIGRvbid0IHVz
ZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRhU3RvcmUuCkBAIC05
ODQsMjMgKzk4OCwyNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgcmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNo
ZVNldChwcm9jZXNzKTsKIH0KIAotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0
YVN0b3JlLCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSwgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViUHJvY2Vzc1Byb3h5OjpJc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZD4gaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpCiB7CisgICAgYXV0byBzaG91
bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSA9IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID8g
KmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIDogKGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
R2xvYmFsbHkoKSA/IFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6
OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Ok5vKTsK
ICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0
byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3MocmVnaXN0cmFibGVEb21h
aW4sIHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSB3ZWJQ
cm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwgd2Vic2l0ZURhdGFT
dG9yZSwgc2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUpKSB7CiAgICAgICAgICAgICBBU1NF
UlQobV9wcm9jZXNzZXMuY29udGFpbnMoKnByb2Nlc3MpKTsKICAgICAgICAgICAgIHJldHVybiBw
cm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaGVjayBp
ZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJsZSBkb21h
aW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMu
Ci0gICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVz
YWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwgd2Vic2l0
ZURhdGFTdG9yZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IFN1c3BlbmRlZFBhZ2VQ
cm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoKnRoaXMsIHJlZ2lzdHJhYmxl
RG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlLCBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSkp
IHsKICAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGlu
ZywgInByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbjogVXNpbmcgV2ViUHJvY2VzcyBmcm9tIGEg
U3VzcGVuZGVkUGFnZSAocHJvY2Vzcz0lcCwgUElEPSVpKSIsIHByb2Nlc3MuZ2V0KCksIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzc2Vz
LmNvbnRhaW5zKCpwcm9jZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNl
Tm9uTnVsbCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRy
eVRha2VQcmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgaWYgKGF1dG8g
cHJvY2VzcyA9IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUsIHNob3Vs
ZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlKSkgewogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxF
QVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW46IFVz
aW5nIHByZXdhcm1lZCBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWkpIiwgcHJvY2Vzcy5nZXQo
KSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghcmVnaXN0cmFi
bGVEb21haW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZv
cm1hdGlvbigqcHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4pOwpAQCAtMTAyNyw3ICsxMDMyLDcg
QEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzOwog
ICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRl
RGF0YVN0b3JlKTsKKyAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFT
dG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6
U2hhcmVkLCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCkBAIC0xMDY5LDcgKzEwNzQsNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJ
OgogICAgICAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNo
IHVudGlsIHNvbWV0aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAg
IHByb2Nlc3MgPSBkdW1teVByb2Nlc3NQcm94eShwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgICAgIGlmICghcHJvY2VzcykgewotICAgICAg
ICAgICAgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmln
dXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVk
OjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFdlYlByb2Nlc3NQcm94eTo6U2hvdWxkTGF1
bmNoUHJvY2Vzczo6Tm8pOworICAgICAgICAgICAgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQ
cm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFdl
YlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Ok5vLCBXZWJQcm9jZXNz
UHJveHk6OlNob3VsZExhdW5jaFByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgIG1fZHVtbXlQcm9j
ZXNzUHJveGllcy5hZGQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+c2Vz
c2lvbklEKCksICpwcm9jZXNzKTsKICAgICAgICAgICAgIG1fcHJvY2Vzc2VzLmFwcGVuZCgqcHJv
Y2Vzcyk7CiAgICAgICAgIH0KQEAgLTE3OTMsOSArMTc5OCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVTZXQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzKQogICAgICAgICBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1v
dmUocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNl
VVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgc2hvdWxk
RW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50
ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVS
TCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWVJbmZvLCBXVEZNb3ZlKGRhdGFT
dG9yZSksIFt0aGlzLCBwYWdlID0gUmVmIHsgcGFnZSB9LCBuYXZpZ2F0aW9uID0gUmVmIHsgbmF2
aWdhdGlvbiB9LCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJj
ZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29u
KSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKHBhZ2UsIG5hdmln
YXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlLCBmcmFtZUluZm8s
IFdURk1vdmUoZGF0YVN0b3JlKSwgW3RoaXMsIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIG5hdmlnYXRp
b24gPSBSZWYgeyBuYXZpZ2F0aW9uIH0sIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNv
cHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pIG11dGFibGUgewogICAgICAgICAvLyBXZSBhcmUgcHJvY2Vzcy1zd2Fw
cGluZyBzbyBhdXRvbWF0aWMgcHJvY2VzcyBwcmV3YXJtaW5nIHdvdWxkIGJlIGJlbmVmaWNpYWwg
aWYgdGhlIGNsaWVudCBoYXMgbm90IGV4cGxpY2l0bHkgZW5hYmxlZCAvIGRpc2FibGVkIGl0Lgog
ICAgICAgICBib29sIGRvaW5nQW5BdXRvbWF0aWNQcm9jZXNzU3dhcCA9IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8gJiYgcHJv
Y2Vzcy5wdHIoKSAhPSBzb3VyY2VQcm9jZXNzLnB0cigpOwogICAgICAgICBpZiAoZG9pbmdBbkF1
dG9tYXRpY1Byb2Nlc3NTd2FwICYmICFjb25maWd1cmF0aW9uKCkud2FzQXV0b21hdGljUHJvY2Vz
c1dhcm1pbmdTZXRCeUNsaWVudCgpICYmICFjb25maWd1cmF0aW9uKCkuY2xpZW50V291bGRCZW5l
Zml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nKCkpIHsKQEAgLTE4MTgsMTggKzE4MjMs
MjEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHBhZ2VTb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYgZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiBkYXRhU3RvcmUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgcGFnZVNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNz
UHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0
YWxNb2RlLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0
b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvJiB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCk7CiAgICAgYXV0byB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHsgdGFyZ2V0VVJMIH07CiAKLSAgICBhdXRvIGNyZWF0ZU5ld1By
b2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2UgPSBSZWYg
eyBwYWdlIH0sIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRhU3RvcmVdICgpIC0+IFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAgcmV0dXJuIHByb2Nlc3NGb3JSZWdpc3RyYWJsZURv
bWFpbihkYXRhU3RvcmUsIHBhZ2UucHRyKCksIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRh
U3RvcmUsIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlXSAoKSAtPiBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiB7CisgICAgICAgIHJldHVybiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oZGF0
YVN0b3JlLCBwYWdlLnB0cigpLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgc2hvdWxkRW5hYmxl
Q2FwdGl2ZVBvcnRhbE1vZGUpOwogICAgIH07CiAKICAgICBpZiAodXNlc1NpbmdsZVdlYlByb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc291cmNlUHJv
Y2VzcyksIG51bGxwdHIsICJTaW5nbGUgV2ViUHJvY2VzcyBtb2RlIGlzIGVuYWJsZWQiX3MpOwog
CisgICAgaWYgKHNvdXJjZVByb2Nlc3MtPmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgIT0g
c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsICJQcm9jZXNzIHN3YXAgZHVlIHRv
IGNhcHRpdmUgcG9ydGFsIG1vZGUgY2hhbmdlIl9zKTsKKwogICAgIGlmIChwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6OlllcykKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1Byb2Nlc3MoKSwgbnVsbHB0
ciwgIlByb2Nlc3Mgc3dhcCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQiX3MpOwogCkBAIC0y
MDk3LDQgKzIxMDUsMTUgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckJh
Y2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitib29sIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkoKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBzZXRJc0NhcHRpdmVQb3J0YWxNb2RlRW5h
YmxlZEdsb2JhbGx5KGJvb2wpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4YWI5OTY1M2Nm
ODc2NWRiZmQzYmI4YTEwODc5YjU0Y2I1MWEwZGI3Li5hZWNkNDhiMjAwNWVhYTQxZDhiNzYxYmY5
YzEwMjEzYjdlNzU2Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTExOSw2ICsxMTksOCBAQCBpbnQgbmV0d29ya1Byb2Nlc3NUaHJvdWdocHV0UU9TKCk7
CiBpbnQgd2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFP
UygpOwogI2VuZGlmCitib29sIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkoKTsK
K3ZvaWQgc2V0SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseShib29sKTsKIAogZW51
bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwpAQCAtMzAzLDcgKzMwNSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRpbWUoU2Vjb25kcyBjcHVUaW1lLCB1aW50
NjRfdCBhY3Rpdml0eVN0YXRlKTsKIAotICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsgLy8gV2lsbCByZXR1cm4gYW4gZXhpc3Rp
bmcgb25lIGlmIGxpbWl0IGlzIG1ldCBvciBkdWUgdG8gY2FjaGluZy4KKyAgICBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYs
IFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpv
cHRpb25hbDxXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkPiA9IHN0
ZDo6bnVsbG9wdCk7IC8vIFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBt
ZXQgb3IgZHVlIHRvIGNhY2hpbmcuCiAKICAgICB2b2lkIHByZXdhcm1Qcm9jZXNzKCk7CiAKQEAg
LTQzOCw3ICs0NDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGb3JlZ3JvdW5kV2ViUHJvY2Vz
c2VzKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUo
KTsgfQogICAgIGJvb2wgaGFzQmFja2dyb3VuZFdlYlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCk7IH0KIAotICAgIHZvaWQgcHJv
Y2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwg
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVS
TCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKKyAg
ICB2b2lkIHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEFQSTo6TmF2
aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJM
JiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94
eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgc2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1v
ZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmKT4mJik7CiAKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1By
ZXdhcm0oKTsKIApAQCAtNTA3LDcgKzUwOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IGNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeSgpOwogI2VuZGlmCiAKLSAgICBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqLCBXZWJQcm9j
ZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8s
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hh
cmVkKTsKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2ViUHJvY2Vzc1By
b3h5OjpJc1ByZXdhcm1lZDo6Tm8sIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6
OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBzdGQ6Om9wdGlvbmFsPFdlYlByb2Nlc3NQcm94eTo6
SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ+ID0gc3RkOjpudWxsb3B0KTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtNTE1LDkgKzUxNyw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYsIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHBsYXRm
b3JtSW52YWxpZGF0ZUNvbnRleHQoKTsKIAotICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb25J
bnRlcm5hbChXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgcHJv
Y2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmln
YXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYg
c291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6
OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2Rl
LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJik+JiYpOwogCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdHJ5
VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIFJlZlB0cjxXZWJQ
cm9jZXNzUHJveHk+IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmLCBX
ZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHNob3VsZEVuYWJsZUNh
cHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiwgV2Vic2l0ZURhdGFTdG9yZSosIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3
YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk0ODE3NjA4YzgwOGE2YmUw
OWNlYzQ0ZWMwY2EwODk1NWY2MDk1MzUuLjViZTk5NmEwYmExZmJhMTk3OGQxMWM0NDE4ZTA2OGRl
YjAwMTZhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMTY0LDkgKzE2NCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpmb3JXZWJQYWdlc1dp
dGhPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZWN1CiAgICAgfQogfQog
Ci1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElz
UHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBT
aG91bGRMYXVuY2hQcm9jZXNzIHNob3VsZExhdW5jaFByb2Nlc3MpCitSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2Fy
bWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBJc0NhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyBz
aG91bGRMYXVuY2hQcm9jZXNzKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdl
YlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgd2Vic2l0ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQs
IGNyb3NzT3JpZ2luTW9kZSkpOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlBy
b2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgd2Vic2l0ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQsIGNy
b3NzT3JpZ2luTW9kZSwgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpKTsKICAgICBpZiAoc2hv
dWxkTGF1bmNoUHJvY2VzcyA9PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpIHsKICAgICAgICAg
aWYgKGxpdmVQcm9jZXNzZXNMUlUoKS5zaXplKCkgPj0gc19tYXhQcm9jZXNzQ291bnQpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJv
Y2Vzc1Bvb2xzKCkpCkBAIC0xODQsNyArMTg0LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFT
dG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5l
dyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdh
cm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkKSk7CisgICAgYXV0byBwcm94eSA9IGFk
b3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9y
ZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgSXNDYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQ6Ok5vKSk7CiAgICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtl
cnMocHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VX
b3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgcHJp
dmF0ZToKIH07CiAjZW5kaWYKIAotV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlLCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2lu
TW9kZSkKK1dlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJt
ZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIElzQ2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKQogICAgIDogQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eSgpKQogICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhpcykKICAg
ICAsIG1fcHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wsIGlzUHJld2FybWVkID09IElzUHJld2FybWVk
OjpZZXMgPyBJc1dlYWs6OlllcyA6IElzV2Vhazo6Tm8pCkBAIC0yMzcsNiArMjM3LDcgQEAgV2Vi
UHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
LCBXZWJzaXRlRGF0YVN0b3JlKgogICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4obWFrZVVuaXF1ZVJlZjxV
SVByb3h5Rm9yQ2FwdHVyZT4oKnRoaXMpKSkKICNlbmRpZgogICAgICwgbV9pc1ByZXdhcm1lZChp
c1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQorICAgICwgbV9pc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZChpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKICAgICAsIG1fY3Jvc3NPcmln
aW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKICAgICAsIG1fc2h1dGRvd25QcmV2ZW50aW5nU2NvcGVD
b3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsgaWYgKGV2ZW50ID09IFJlZkNv
dW50ZXJFdmVudDo6RGVjcmVtZW50KSBtYXliZVNodXREb3duKCk7IH0pCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDE5NDAwNTg3ODA2NmEzMDhkMzBi
YTVjOTA5YjU1ODk1M2Q5YTQ2NzMuLjJiMWVkYTg5Y2ZiMjVhZDdhYTkzM2M0NDJmOWFiMzc1N2Rk
YmUzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0x
MzQsOCArMTM0LDkgQEAgcHVibGljOgogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZExh
dW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgSXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQgOiBib29sIHsgTm8sIFllcyB9OwogCi0gICAgc3RhdGljIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUq
LCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NP
cmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9j
ZXNzOjpZZXMpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3Nz
T3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBJc0NhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZCA9IElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkOjpObywgU2hvdWxk
TGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7CiAgICAgc3RhdGljIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29s
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAg
ICAgfldlYlByb2Nlc3NQcm94eSgpOwpAQCAtNDI3LDkgKzQyOCwxMCBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQorICAgIElzQ2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViUHJvY2Vzc1By
b3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJD
b3JlOjpDcm9zc09yaWdpbk1vZGUpOworICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9v
bCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlLCBJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9j
ZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiV2ViQ29udGVudCJfczsgfQpAQCAtNDQwLDE2ICs0NDIsMTYgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgcHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYp
IGZpbmFsOwogICAgIAotICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ci0gICAgdm9pZCBk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyKSBvdmVycmlkZTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgY2FjaGVN
ZWRpYU1JTUVUeXBlc0ludGVybmFsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAor
ICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlk
ZTsKICAgICBib29sIHNob3VsZENvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5h
YmxlU2hhcmVkQXJyYXlCdWZmZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nyb3NzT3JpZ2lu
TW9kZSA9PSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkOyB9CisgICAgYm9vbCBz
aG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXND
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPT0gSXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Olll
czsgfQogCiAgICAgdm9pZCB2YWxpZGF0ZUZyZWV6ZXJTdGF0dXMoKTsKIApAQCAtNjIyLDYgKzYy
NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxM
b2FkcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJld2FybWVkOworICAgIElzQ2FwdGl2ZVBv
cnRhbE1vZGVFbmFibGVkIG1faXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgeyBJc0NhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZDo6Tm8gfTsKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgbV9j
cm9zc09yaWdpbk1vZGUgeyBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCB9OwogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYm9vbCBtX2hhc0lzc3VlZEF0dGFjaG1l
bnRFbGVtZW50UmVsYXRlZFNhbmRib3hFeHRlbnNpb25zIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNThjYTlmZWVmNmEzNzRm
NGQ2OTk5Zjc4NTg1NjYyNmMwYjdhZThhLi5iOGFkNzE1MWI3ODBmYjYxNzQ0ZWNmYzc1NWE3OTcw
NjExM2E0ZDI2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgbGF1bmNoaW5nIENhcHRp
dmVQb3J0YWxNb2RlIFdlYlByb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3CisgICAgICAgIDxyZGFyOi8vODQ0NzMwMzc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0
IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKwogMjAyMS0xMS0wNSAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2ljLXN0YXRzLnB5XSBDaGFuZ2Ugc2hl
YmFuZyB0byBQeXRob24gMwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggNjYx
YmNjNmEwNTE3ZGFmYTQ0YmZjYjJhNjg5YTRjOWIzZDZkYjBjNC4uN2I4NWNjNTcxMDM2NGI1ZTA2
NDg0NjFmZjdmYzQ0NjU0NjkwN2U3NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
CkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVuY2VzLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgpAQCAtNzYyNiwzICs3NjI3LDE5OCBA
QCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0aW5nQ3Jvc3NPcmlnaW5Gcm9tQ09PUFNhbWVPcmln
aW5BbGxvd1BvcHVwNCkKIHsKICAgICBydW5DT09QUHJvY2Vzc1N3YXBUZXN0KCJzYW1lLW9yaWdp
bi1hbGxvdy1wb3B1cCIsICJ1bnNhZmUtbm9uZSIsICJ1bnNhZmUtbm9uZSIsICJ1bnNhZmUtbm9u
ZSIsIElzU2FtZU9yaWdpbjo6Tm8sIERvU2VydmVyU2lkZVJlZGlyZWN0OjpObywgRXhwZWN0U3dh
cDo6Tm8pOwogfQorCisvLyBPbiBpT1MsIHRoZSBjYXB0aXZlIHBvcnRhbCBtb2RlIEFQSSByZXF1
aXJlcyBhIGJyb3dzZXIgZW50aXRsZW1lbnQuCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisK
K3N0YXRpYyBib29sIGlzSklURW5hYmxlZChXS1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgX19i
bG9jayBib29sIGdvdFJlc3BvbnNlID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlzSklURW5h
YmxlZFJlc3VsdCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XihCT09MIGlz
SklURW5hYmxlZCkgeworICAgICAgICBpc0pJVEVuYWJsZWRSZXN1bHQgPSBpc0pJVEVuYWJsZWQ7
CisgICAgICAgIGdvdFJlc3BvbnNlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdFJlc3BvbnNlKTsKKyAgICByZXR1cm4gaXNKSVRFbmFibGVkUmVzdWx0
OworfQorCitURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0aW5nVG9DYXB0aXZlUG9ydGFsTW9kZSkK
K3sKKyAgICBFWFBFQ1RfRkFMU0UoV0tXZWJwYWdlUHJlZmVyZW5jZXMuX2NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEdsb2JhbGx5KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOwor
ICAgIH07CisKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICBwaWRfdCBwaWQxID0gW3dlYlZpZXcgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkMSwgMCk7CisKKyAgICBFWFBF
Q1RfVFJVRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVsZWdhdGUuZ2V0
KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tO
YXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdL
V2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShwcmVmZXJlbmNl
cy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOworICAgICAgICBwcmVmZXJlbmNlcy5jYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQgPSBZRVM7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7CisgICAgfTsKKworICAgIGZp
bmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9uKTsKKworICAgIC8vIFdlIHNob3VsZCBo
YXZlIHByb2Nlc3Mtc3dhcCBmb3IgdHJhbnNpdGlvbmluZyB0byBjYXB0aXZlIHBvcnRhbCBtb2Rl
LgorICAgIEVYUEVDVF9ORShwaWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIEVY
UEVDVF9GQUxTRShXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
R2xvYmFsbHkpOworfQorCitURVNUKFByb2Nlc3NTd2FwLCBDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWRCeURlZmF1bHRMb2NhbGx5VGhlbk9wdE91dCkKK3sKKyAgICBFWFBFQ1RfRkFMU0UoV0tXZWJw
YWdlUHJlZmVyZW5jZXMuX2NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5KTsKKworICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10pOworICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5k
ZWZhdWx0V2VicGFnZVByZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CisgICAg
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkuZGVmYXVsdFdlYnBhZ2VQcmVmZXJlbmNlcy5jYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSBZRVM7CisgICAgRVhQRUNUX0ZBTFNFKFdLV2VicGFnZVBy
ZWZlcmVuY2VzLl9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSk7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOworICAg
IH07CisKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
V2l0aFByZWZlcmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJwYWdl
UHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUocHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZl
cmVuY2VzKTsKKyAgICB9OworCisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgcGlkX3QgcGlkMSA9IFt3
ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKHBpZDEsIDApOwor
ICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZmlu
aXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgRVhQRUNUX0VRKHBpZDEs
IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOyAvLyBTaG91bGRuJ3QgaGF2ZSBwcm9j
ZXNzLXN3YXBwZWQgc2luY2Ugd2UncmUgc3RheWluZyBpbiBjYXB0aXZlIHBvcnRhbCBtb2RlLgor
ICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVs
ZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNl
cyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpw
cmVmZXJlbmNlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHBy
ZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CisgICAgICAgIHByZWZlcmVuY2Vz
LmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IE5POyAvLyBPcHQgb3V0IG9mIGNhcHRpdmUgcG9y
dGFsIG1vZGUgZm9yIHRoaXMgbG9hZC4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgZmlu
aXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgLy8gV2Ugc2hvdWxkIGhh
dmUgcHJvY2Vzcy1zd2FwcGVkIHRvIGdldCBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKyAg
ICBFWFBFQ1RfTkUocGlkMSwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAg
RVhQRUNUX1RSVUUoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIGNhcHRp
dmUgcG9ydGFsIG1vZGUgc2hvdWxkIGJlIGRpc2FibGVkIGluIG5ldyBXZWJWaWV3cyBzaW5jZSBp
dCBpcyBub3QgZW5hYmxlZCBnbG9iYWxseS4KKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3MiBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IG5pbDsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlv
biA9IGZhbHNlOworICAgIHVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWROYXZpZ2F0aW9uKTsKKyAgICBFWFBFQ1RfVFJVRShpc0pJVEVuYWJsZWQod2ViVmll
dzIuZ2V0KCkpKTsKKworICAgIEVYUEVDVF9GQUxTRShXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fY2Fw
dGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkpOworfQorCitURVNUKFByb2Nlc3NTd2FwLCBD
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseVRoZW5PcHRPdXQpCit7CisgICAgRVhQRUNU
X0ZBTFNFKFdLV2VicGFnZVByZWZlcmVuY2VzLl9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9i
YWxseSk7CisgICAgV0tXZWJwYWdlUHJlZmVyZW5jZXMuX2NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZEdsb2JhbGx5ID0gWUVTOyAvLyBFbmFibGUgY2FwdGl2ZSBwb3J0YWwgbW9kZSBnbG9iYWxseQor
ICAgIEVYUEVDVF9UUlVFKFdLV2VicGFnZVByZWZlcmVuY2VzLl9jYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWRHbG9iYWxseSk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3
Q29uZmlndXJhdGlvbi5nZXQoKS5kZWZhdWx0V2VicGFnZVByZWZlcmVuY2VzLmNhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIF9fYmxvY2sgYm9vbCBmaW5p
c2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGaW5pc2hOYXZp
Z2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgZmluaXNo
ZWROYXZpZ2F0aW9uID0gdHJ1ZTsKKyAgICB9OworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9u
QWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHByZWZlcmVuY2VzLmNhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7CisgICAgfTsKKworICAgIE5TVVJMICp1
cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIHBpZF90IHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwor
ICAgIEVYUEVDVF9ORShwaWQxLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdl
YlZpZXcuZ2V0KCkpKTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIEVYUEVDVF9FUShwaWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJd
KTsgLy8gU2hvdWxkbid0IGhhdmUgcHJvY2Vzcy1zd2FwcGVkIHNpbmNlIHdlJ3JlIHN0YXlpbmcg
aW4gY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdl
YlZpZXcuZ2V0KCkpKTsKKworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9u
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkg
eworICAgICAgICBFWFBFQ1RfVFJVRShwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQpOworICAgICAgICBwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSBOTzsg
Ly8gT3B0IG91dCBvZiBjYXB0aXZlIHBvcnRhbCBtb2RlIGZvciB0aGlzIGxvYWQuCisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJl
bmNlcyk7CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUzIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mtc3dhcHBlZCB0byBnZXQgb3V0IG9m
IGNhcHRpdmUgcG9ydGFsIG1vZGUuCisgICAgRVhQRUNUX05FKHBpZDEsIFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVYUEVDVF9UUlVFKGlzSklURW5hYmxlZCh3ZWJWaWV3
LmdldCgpKSk7CisKKyAgICAvLyBjYXB0aXZlIHBvcnRhbCBtb2RlIHNob3VsZCBiZSBlbmFibGVk
IGluIG5ldyBXZWJWaWV3cyBzaW5jZSBpdCBpcyBlbmFibGVkIGdsb2JhbGx5LgorICAgIGF1dG8g
d2ViVmlldzIgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcyIHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IG5pbDsKKworICAg
IGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3MiBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9uKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
aXNKSVRFbmFibGVkKHdlYlZpZXcyLmdldCgpKSk7CisKKyAgICBFWFBFQ1RfVFJVRShXS1dlYnBh
Z2VQcmVmZXJlbmNlcy5fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkpOworICAgIFdL
V2VicGFnZVByZWZlcmVuY2VzLl9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSA9IE5P
OworICAgIEVYUEVDVF9GQUxTRShXS1dlYnBhZ2VQcmVmZXJlbmNlcy5fY2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkR2xvYmFsbHkpOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443431</attachid>
            <date>2021-11-05 13:30:55 -0700</date>
            <delta_ts>2021-11-05 14:08:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211105133054.patch</filename>
            <type>text/plain</type>
            <size>54331</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjllNTY0OGU3Nzg3OTZm
NTY3NTMzNWU4MDllNDQ0ZmQ4NTlmMDMuLjRlNjQ2ZDc4MTUwMWRkZGVhZTI0MjEwOTlmMTVmOWQ1
MjFlMmNlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIENhcHRpdmVQb3J0YWxNb2RlIFdlYlByb2Nlc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3CisgICAgICAgIDxyZGFyOi8v
ODQ0NzMwMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBgV0tXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
YCBBUEkgdG8gYWxsb3cgY2xpZW50cyBhcHBzIHRvIG9wdCBpbiBvcgorICAgICAgICBvdXQgb2Yg
Y2FwdGl2ZSBwb3J0YWwgbW9kZSBmb3IgZWFjaCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNp
b24pLiBGb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGlzIHNldHRpbmcsIHRoZSBj
bGllbnQgY2FuIHNldAorICAgICAgICBgV2ViV2ViVmlld0NvbmZpZ3VyYXRpb24uZGVmYXVsdFdl
YnBhZ2VQcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRgICh3aWxsIGltcGFjdCBh
bGwgdmlld3MKKyAgICAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uKS4KKworICAgICAgICBO
b3RlIHRoYXQgYm90aCB0aGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBieSBhcHBzIHdpdGgg
dGhlIGJyb3dzZXIgZW50aXRsZW1lbnQgb24gaU9TIChubworICAgICAgICByZXN0cmljdGlvbiBv
biBtYWNPUykuIE9uIGlPUywgdGhlIGRlZmF1bHQgdmFsdWUgb2YgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCisgICAgICAgIGRlcGVuZHMgb24gdGhlIGNvcnJl
c3BvbmRpbmcgc3lzdGVtIHNldHRpbmcuIEZvciBub3csIHRoaXMgaXMgc2ltdWxhdGVkIGJ5IGEg
TlNVc2VyRGVmYXVsdCBidXQgaXQKKyAgICAgICAgd2lsbCBldmVudHVhbGx5IGNvbWUgZnJvbSBz
b21ld2hlcmUgZWxzZSAoVENDPykuCisKKyAgICAgICAgV2hlbmV2ZXIgdHJhbnNpdGlvbmluZyBp
biBvciBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZSwgd2UgcHJvY2Vzcy1zd2FwIG9uIG5hdmln
YXRpb24gcG9saWN5CisgICAgICAgIGRlY2lzaW9uLiBXaGVuZXZlciBjYXB0aXZlIHBvcnRhbCBt
b2RlIGlzIGVuYWJsZWQsIHdlIHR1cm4gb2ZmIEpJVCwgZ2VuZXJhdGlvbmFsIGFuZCBjb25jdXJy
ZW50IEdDCisgICAgICAgIGluIHRoZSBXZWJQcm9jZXNzLCBhcyBzb29uIGFzIGl0IGxhdW5jaGVz
LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpj
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJw
YWdlUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIHNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmlzQ2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkQnlTeXN0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9j
ZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQ6
OnNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0cmlnZ2VyQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojppc0pJVEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3Vs
ZFVzZUNhcHRpdmVQb3J0YWxNb2RlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2Fy
bWVkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcmV3YXJtUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0
cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdh
dGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6aXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWRCeVN5c3RlbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNDYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQgY29uc3QpOgorCiAyMDIxLTExLTA0ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBSZW1vdGVNZWRpYVJlc291cmNlIHVzZSBTaGFy
ZWRNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VFbnRyeVBvaW50LmgKaW5kZXggZmY3YTQ0YzViYTM2ZmM5YmNmYmRjMzEyYjkzZDMzYmI5NWRh
NjcyYi4uMWM1ZGExYmU5OWE1YmRhOGM0YmUwYTUzZTM5MTk3Zjc4MTMwOWI2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgK
QEAgLTg5LDYgKzg5LDEzIEBAIHZvaWQgWFBDU2VydmljZUluaXRpYWxpemVyKE9TT2JqZWN0UHRy
PHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfCiAgICAgaWYgKGluaXRp
YWxpemVyTWVzc2FnZSkgewogICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5p
dGlhbGl6ZXJNZXNzYWdlLCAiY29uZmlndXJlLWpzYy1mb3ItdGVzdGluZyIpKQogICAgICAgICAg
ICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZvclRlc3RpbmcoKTsKKyAgICAgICAgaWYgKHhwY19k
aWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVyTWVzc2FnZSwgImVuYWJsZS1jYXB0aXZlLXBv
cnRhbC1tb2RlIikpIHsKKyAgICAgICAgICAgIEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSgpOwor
ICAgICAgICAgICAgSlNDOjpPcHRpb25zOjpBbGxvd1VuZmluYWxpemVkQWNjZXNzU2NvcGUgc2Nv
cGU7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6OnVzZUpJVCgpID0gZmFsc2U7CisgICAgICAg
ICAgICBKU0M6Ok9wdGlvbnM6OnVzZUdlbmVyYXRpb25hbEdDKCkgPSBmYWxzZTsKKyAgICAgICAg
ICAgIEpTQzo6T3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkgPSBmYWxzZTsKKyAgICAgICAgfQog
ICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAi
ZGlzYWJsZS1qaXQiKSkKICAgICAgICAgICAgIEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0
SklURW5hYmxlZChmYWxzZSk7CiAgICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChp
bml0aWFsaXplck1lc3NhZ2UsICJlbmFibGUtc2hhcmVkLWFycmF5LWJ1ZmZlciIpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAppbmRleCA1ZjlmMWNhMTA3ZGRmMWE1ZjBjZjNkYmEyMzAwMTMzZDllMjY1MTc2Li5kY2VhNjRm
ODk4ZWQwNDc4YWEyODI2ZTViNzE3ZTkxM2U0ZjgyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTE5Nyw2ICsx
OTcsMTMgQEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VVJMU2NoZW1lSGFuZGxlckZvclVS
TFNjaGVtZShSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWUKICAgICBtX3VybFNjaGVtZUhhbmRsZXJz
LnNldChzY2hlbWUsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCitib29sIFBhZ2VDb25maWd1cmF0
aW9uOjpjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAgIGlmIChtX2RlZmF1
bHRXZWJzaXRlUG9saWNpZXMpCisgICAgICAgIHJldHVybiBtX2RlZmF1bHRXZWJzaXRlUG9saWNp
ZXMtPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOworICAgIHJldHVybiBpc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZEJ5U3lzdGVtKCk7Cit9CisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCiBBcHBsaWNhdGlvbk1hbmlmZXN0KiBQYWdlQ29uZmlndXJhdGlvbjo6YXBwbGljYXRp
b25NYW5pZmVzdCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDNkNDc3NDE2NGI3ZGNiOGE5YzYyNzUzNjFm
MTIxMjZhMmQzMjBlZGIuLjI1NzYxNWFjNGNkNTI4OWFiYmJhM2EwZjQ3Y2RlOGM4NzBlMTA4ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCkBAIC0xODksNiArMTg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVxdWlyZXNV
c2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcihib29sIHZhbHVlKSB7IG1fcmVxdWly
ZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlciA9IHZhbHVlOyB9CiAjZW5kaWYK
IAorICAgIGJvb2wgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgY29uc3Q7CisKIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAK
aW5kZXggM2VhNGIxYjkxZDk5ZjM0ZWRhMThmZTEyYjEyNWQzNzk4OTRhMTM2Ni4uNjcyOWRlNTMw
MjU1NTEwZmI4ZTA2ZTA0NzBmMDVmNDg1MzI2Y2UyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKIAor
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZVBvbGljaWVzRGF0YS5oIgpAQCAtNzIsNiArNzMsNyBAQCBSZWY8V2Vic2l0ZVBvbGlj
aWVzPiBXZWJzaXRlUG9saWNpZXM6OmNvcHkoKSBjb25zdAogICAgIHBvbGljaWVzLT5zZXRBbGxv
d1NpdGVTcGVjaWZpY1F1aXJrc1RvT3ZlcnJpZGVDb250ZW50TW9kZShtX2FsbG93U2l0ZVNwZWNp
ZmljUXVpcmtzVG9PdmVycmlkZUNvbnRlbnRNb2RlKTsKICAgICBwb2xpY2llcy0+c2V0QXBwbGlj
YXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChtX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BV
c2VyQWdlbnQpOwogICAgIHBvbGljaWVzLT5zZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdChtX2Fs
bG93c0NvbnRlbnRKYXZhU2NyaXB0KTsKKyAgICBwb2xpY2llcy0+c2V0Q2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkKG1fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKICAgICBwb2xpY2llcy0+c2V0
TW91c2VFdmVudFBvbGljeShtX21vdXNlRXZlbnRQb2xpY3kpOwogICAgIHJldHVybiBwb2xpY2ll
czsKIH0KQEAgLTEyMyw1ICsxMjUsMTAgQEAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIFdl
YnNpdGVQb2xpY2llczo6ZGF0YSgpCiAgICAgfTsKIH0KIAorYm9vbCBXZWJzaXRlUG9saWNpZXM6
OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkID8gKm1fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIDogV2ViS2l0
Ojppc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEJ5U3lzdGVtKCk7Cit9CisKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCmluZGV4IGNk
ZTA3NTNmZDFjNDM5NjQxMWRjMGI0ZTM0OGE5MzFmNTFiMTcwZmQuLjY4NjdhYWMyYjdkZjJjOGQx
YTE5NWU2NzcwNTkwZTA1ZmExMDhhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKQEAgLTEyNSw2ICsxMjUsOSBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0OyB9CiAgICAgdm9p
ZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdChXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNj
cmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdCA9IGFsbG93czsgfQogCisg
ICAgYm9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZChzdGQ6Om9wdGlvbmFsPGJvb2w+IGNhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCkgeyBtX2NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IGNhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZDsgfQorCiAgICAgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSBtb3VzZUV2ZW50
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUV2ZW50UG9saWN5OyB9CiAgICAgdm9pZCBz
ZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgcG9saWN5KSB7IG1f
bW91c2VFdmVudFBvbGljeSA9IHBvbGljeTsgfQogCkBAIC0xNTcsNiArMTYwLDcgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBtX2FsbG93c0NvbnRlbnRK
YXZhU2NyaXB0IHsgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllcyB9OwogICAg
IFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbV9tb3VzZUV2ZW50UG9saWN5IHsgV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeTo6RGVmYXVsdCB9OwogICAgIGJvb2wgbV9pZGVtcG90ZW50TW9kZUF1
dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXMgeyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2VicGFnZVByZWZlcmVuY2VzLmgKaW5kZXggNGEyMzZkYTdkNzU4YWI5NmQ2Yjc1NmQ3NWZjYWQy
YTFjM2I3M2QwYS4uMmQ1YjVhODJhZDViNGM3YWE1YzVhYWM0MTU0OGQ3NWFkNGZiMDU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZl
cmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFn
ZVByZWZlcmVuY2VzLmgKQEAgLTcxLDQgKzcxLDkgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KDEwLjE1KSwgaW9zKDEzLjApKQogKi8KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4w
KSk7CiAKKy8qISBAYWJzdHJhY3QgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBjYXB0aXZl
IHBvcnRhbCBtb2RlIGlzIGVuYWJsZWQuCisgQGRpc2N1c3Npb24gVGhlIGRlZmF1bHQgdmFsdWUg
aXMgTk8gb24gbWFjT1MuIE9uIGlPUywgdGhlIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUg
c3lzdGVtIHNldHRpbmcuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0KaW5kZXggNWViMTIwMThkOWE0
N2UzNGI2NmVkZDdlZTA4NTgzZTE3ODc0ZjMxYS4uMGU2ZjFlZjY5ZWZhNjNkMzlhOGY2M2EwZGM4
ODBhZjc2N2MyZjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQpAQCAtMzYsNiArMzYsMTAgQEAKICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDx3dGYvY29jb2EvRW50
aXRsZW1lbnRzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtMzg3LDYgKzM5MSwyMCBAQCAtIChCT09MKWFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0CiAgICAgfQogfQogCistICh2b2lkKXNldENhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZDooQk9PTClpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZAoreworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgaWYgKCFXVEY6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLmRl
dmVsb3Blci53ZWItYnJvd3NlciIpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICBfd2Vi
c2l0ZVBvbGljaWVzLT5zZXRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoISFpc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCk7Cit9CisKKy0gKEJPT0wpY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCit7
CisgICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgp
OworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClzZXRQcmVmZXJyZWRD
b250ZW50TW9kZTooV0tDb250ZW50TW9kZSljb250ZW50TW9kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMTFmMDUz
ZjFiNTM3ZWE2NGZjMjQxZTYwYTNkZTk3MDYxOWMwMWQ4Zi4uMTdlNmNjMjMwMjJhODc3ZTkwOGIz
MGRjZTM3YjJmZjAwZWJhMGNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC05ODksNiArOTg5LDE4IEBAIGludCB3
ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpCiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
Citib29sIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0ZW0oKQoreworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNhY2hlZElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xv
YmFsbHk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBjYWNoZWQgdmFs
dWUgd2hlbiB0aGUgTlNVc2VyRGVmYXVsdCBjaGFuZ2VzLgorICAgIGlmICghY2FjaGVkSXNDYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSkgeworICAgICAgICAvLyBGSVhNRTogVXNpbmcg
TlNVc2VyRGVmYXVsdHMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4gVGhpcyBzZXR0aW5nIHNo
b3VsZCBiZSBzdG9yZWQgZWxzZXdoZXJlIChUQ0M/KS4KKyAgICAgICAgY2FjaGVkSXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCJd
OworICAgIH0KKyAgICByZXR1cm4gKmNhY2hlZElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xv
YmFsbHk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFwcGxpY2F0aW9uSXNBYm91dFRvU3Vz
cGVuZCgpCiB7CiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICJhcHBsaWNhdGlvbklzQWJvdXRUb1N1c3BlbmQ6IFRlcm1pbmF0aW5nIG5vbi1jcml0aWNh
bCBwcm9jZXNzZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggNzU2NmM0ZTY0NzczOWJiYjFiMGYzMWEzNzU3N2I3NjJj
NjhhMTRlZi4uNmRkNmUyNDJiODViNjY5NzdmZmNkYTBkNTAzNjllMDM1NzkxOTk1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgK
QEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVTaGFyZWRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVDYXB0aXZlUG9y
dGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQppbmRl
eCBlMjg4ZTMwODRiMGQxMmRkM2RkODMxZWI2ZjI2M2I0NGY3YWZlOTZiLi4yNzJjYzkxNGY5NWM2
NjMyYmEzNmNhZDkwODFmNDJlNDk3YTEyOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTIw
Myw2ICsyMDMsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAg
ICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfYm9vbChib290c3RyYXBNZXNzYWdlLmdldCgpLCAi
ZGlzYWJsZS1qaXQiLCB0cnVlKTsKICAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRFbmFibGVT
aGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2wo
Ym9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgImVuYWJsZS1zaGFyZWQtYXJyYXktYnVmZmVyIiwgdHJ1
ZSk7CisgICAgICAgIGlmIChtX2NsaWVudC0+c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUo
KSkKKyAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKGJvb3RzdHJhcE1lc3NhZ2Uu
Z2V0KCksICJlbmFibGUtY2FwdGl2ZS1wb3J0YWwtbW9kZSIsIHRydWUpOwogICAgIH0KIAogICAg
IHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgIm1lc3Nh
Z2UtbmFtZSIsICJib290c3RyYXAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDcyZjU1OGY3ZjA2NzUxMTU2NGJlYjFiYTVkYmY1ZmFm
YmZlYmNjZTUuLjllNzcyZWVlZjNkZjgzYjI5YzZmNzhhMmYyNTA5MWNkMzQ4OTIwZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMzQs
NyArMzQsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4K
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNTAs
MTEgKzQ5LDExIEBAIHN0YXRpYyBIYXNoU2V0PFN1c3BlbmRlZFBhZ2VQcm94eSo+JiBhbGxTdXNw
ZW5kZWRQYWdlcygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorUmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdl
UHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQ
cm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIGlzQ2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkKQogewogICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFnZSA6IGFsbFN1c3BlbmRl
ZFBhZ2VzKCkpIHsKICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHN1c3BlbmRlZFBhZ2UtPnByb2Nl
c3MoKTsKLSAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29s
ICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiAm
cHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSAmJiBwcm9jZXNzLmNyb3Nz
T3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQpCisgICAgICAgIGlmICgm
cHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJh
YmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nlc3Mud2Vic2l0ZURhdGFT
dG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUoKSAhPSBDcm9z
c09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQoKSA9PSBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiAm
cHJvY2VzczsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IGY0NGFiM2FmNTg5NzA4Y2RiOWYyNDll
ZGI1YjQxYzRmYmQwMTc2NTIuLjRmZGNiNzEwOGU4NzVmMTUwZjZhM2MwOTcxMmI1NzQzZjYwZjM3
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViUHJvY2Vzc1Bvb2w7Ci1jbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJzaXRlRGF0
YVN0b3JlOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKICAgICBTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5Jiwg
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFt
ZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAgICAgflN1c3Bl
bmRlZFBhZ2VQcm94eSgpOwogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZp
bmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGlj
IFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNz
KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJz
aXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZCk7CiAKICAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0K
ICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3dlYlBhZ2VJRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZDlhODI5ODI0MjllNGFjNmUzZTY3MDY3YTc3MjYyZDhlYWYzZTVmYy4uNTA2MDcwZjIxODA3
NmY2OGQ0YTM3YTNlMzI3MDExMDAxYmY5ODA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxh
dW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
cm8KICAgICBpZiAocmVsYXRlZFBhZ2UgJiYgIXJlbGF0ZWRQYWdlLT5pc0Nsb3NlZCgpKQogICAg
ICAgICBtX3Byb2Nlc3MgPSByZWxhdGVkUGFnZS0+ZW5zdXJlUnVubmluZ1Byb2Nlc3MoKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fcHJvY2VzcyA9IHByb2Nlc3NQb29sLnByb2Nlc3NGb3JSZWdpc3Ry
YWJsZURvbWFpbihtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCksIHRoaXMsIHJlZ2lzdHJhYmxlRG9t
YWluKTsKKyAgICAgICAgbV9wcm9jZXNzID0gcHJvY2Vzc1Bvb2wucHJvY2Vzc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSwgcmVnaXN0cmFibGVEb21haW4sIHNo
b3VsZFVzZUNhcHRpdmVQb3J0YWxNb2RlKCkgPyBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBv
cnRhbE1vZGVFbmFibGVkOjpZZXMgOiBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkOjpObyk7CiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAgICBt
X3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdp
bnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTM0MzYsNyArMzQzNiw4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bv
b2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nl
c3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZy
YW1lSW5mbywgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBSZWYgeyAqbmF2aWdh
dGlvbiB9LCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgc291
cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAorICAgIGF1dG8gaXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQgPSAocG9saWNpZXMgPyBwb2xpY2llcy0+Y2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkKCkgOiBzaG91bGRVc2VDYXB0aXZlUG9ydGFsTW9kZSgpKSA/IFdlYlByb2Nlc3NQ
cm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6
SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Ok5vOworICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vz
cy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgaXND
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQsIGZyYW1lSW5mbywgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0
b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24s
IG5hdmlnYXRpb24gPSBSZWYgeyAqbmF2aWdhdGlvbiB9LCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29w
eVJlZigpLAogICAgICAgICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMpLCBzZW5kZXIgPSBX
VEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRdIChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQYWdlUHJveHkqIGRl
c3RpbmF0aW9uU3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgewog
ICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQsIHRoZW4gbm8g
bmVlZCB0byBwcm9jZWVkLgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAhbmF2aWdhdGlvblN0
YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSkpIHsKQEAgLTU2
MTksOSArNTYyMCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0cmlnZ2VyQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hGb3JOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnCiAKICAgICBSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yTmF2aWdhdGlvbjsKICAgICBpZiAoYnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbiA9PSBCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lz
aW9uOjpOZXdJc29sYXRlZEdyb3VwKQotICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0
b3JlKCksIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6
Oklzb2xhdGVkKTsKKyAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBtX3By
b2Nlc3MtPmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCksIFdlYlByb2Nlc3NQcm94eTo6SXNQ
cmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkKTsKICAgICBlbHNlCi0gICAg
ICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNl
RG9tYWluKTsKKyAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwg
cmVzcG9uc2VEb21haW4sIG1fcHJvY2Vzcy0+aXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSk7
CiAKICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxw
dHIsIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLnJlbGVhc2VOb25OdWxsKCksIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVy
UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKQEAg
LTgzMDIsNiArODMwMyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5
OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojppc0pJVEVuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKKyAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7
CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJc0pJVEVuYWJs
ZWQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwogfQogCkBAIC0xMDg0Myw2ICsx
MDg0NSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xsVG9SZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgbwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjcm9sbFRvUmVjdCh0YXJnZXRSZWN0LCBvcmlnaW4pKTsKIH0KIAorYm9vbCBXZWJQ
YWdlUHJveHk6OnNob3VsZFVzZUNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb25maWd1cmF0aW9uLT5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKTsKK30KKwogI2lm
IFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlUHJveHk6OmFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCA0OGYxOWI2ZmQ1NDU2ZmYxNTRlNTA5YTc2ZWQ1NGI2MjM3MmZj
OWI0Li42MTQxMjZhNjczMjI0ZGZkZDNiNGYyYmUzMzljODU1MGJhMTE1MzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDkzLDYgKzQ5Myw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkUHJldmlvdXNseVZpc2l0ZWRQYXRoKGNvbnN0IFN0cmluZyYpOwogCisg
ICAgYm9vbCBzaG91bGRVc2VDYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0OworCiAjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQogICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyBy
ZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQogICAgIHZvaWQgZGV0ZWN0RGF0
YUluQWxsRnJhbWVzKE9wdGlvblNldDxXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggNzM4ZDE5OGI4OTZm
YjkyODkzNGMyNWQyYWZlYjY1NTNhNTBkOGUwNi4uNTY4NTg1M2Q0M2YyYTkwZGFkNmYyZjkwN2Iy
MTlhYzhjZDU1MGE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTGVnYWN5R2xvYmFsU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTQ4LDcgKzE0Nyw3IEBAIGJvb2wgV2Vi
UHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzKHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQcm9jZXNzPiYm
IGNhY2hlZFByb2Nlc3MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUpCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNz
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKQogewogICAgIGF1dG8gaXQg
PSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmZpbmQocmVnaXN0cmFibGVEb21haW4p
OwogICAgIGlmIChpdCA9PSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQpA
QCAtMTU3LDYgKzE1Niw5IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNo
ZTo6dGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVECiAgICAgaWYgKCZpdC0+
dmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJmRhdGFTdG9yZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCkuaXNDYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSAhPSBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBhdXRvIHByb2Nlc3MgPSBpdC0+dmFsdWUtPnRh
a2VQcm9jZXNzKCk7CiAgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUo
aXQpOwogICAgIFdFQlBST0NFU1NDQUNIRV9SRUxFQVNFX0xPRygidGFrZVByb2Nlc3M6IFRha2lu
ZyBwcm9jZXNzIGZyb20gV2ViUHJvY2VzcyBjYWNoZSAoc2l6ZT0ldSwgY2FwYWNpdHk9JXUpIiwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgc2l6ZSgpLCBjYXBhY2l0eSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmgKaW5kZXggMjQ5YmI3ZjY2ZWNkYjAw
MWNmMzEzNTJmMmE1OTZkYzkzZmNkZWNkNi4uMjBmZDg4Y2Q5YTZmMzI1Zjc4YmEyNTQ2NjdjZmE3
MmFjNzIyYTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmgK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNSw3ICsz
Niw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci1jbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBjbGFzcyBXZWJQ
cm9jZXNzQ2FjaGUgewpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
UHJvY2Vzc0NhY2hlKFdlYlByb2Nlc3NQb29sJik7CiAKICAgICBib29sIGFkZFByb2Nlc3NJZlBv
c3NpYmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOwotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IHRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0
ZURhdGFTdG9yZSYpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHRha2VQcm9jZXNzKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBy
b2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOwogCiAgICAgdm9pZCB1cGRh
dGVDYXBhY2l0eShXZWJQcm9jZXNzUG9vbCYpOwogICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IDQ5MjBlNmM2YWFjN2M0NWEyZDlkZjQzZGE0OGUyMzE4MTE5NjJm
YWMuLjIwZGE2YTg5NWM5MjFlNTUwYTYyMTg5NjZjOGQ3YjM3ODE1YjM3YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiAg
ICAgcGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpOwogfQogCi1SZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2Fy
bWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKQorUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc0NhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCwgV2ViUHJvY2Vzc1By
b3h5OjpJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2lu
TW9kZSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX3RjY1ByZWZlcmVuY2VFbmFibGVk
ID0gZG9lc0FwcEhhdmVJVFBFbmFibGVkKCk7CkBAIC02MTYsMTQgKzYxNiwxNCBAQCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRl
RGF0YVN0b3JlKiB3ZWJzaQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChtX3RjY1ByZWZlcmVuY2VFbmFibGVkKTsKICNlbmRpZgogCi0g
ICAgYXV0byBwcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgd2Vi
c2l0ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQsIGNyb3NzT3JpZ2luTW9kZSk7CisgICAgYXV0byBw
cm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgd2Vic2l0ZURhdGFT
dG9yZSwgaXNQcmV3YXJtZWQsIGNyb3NzT3JpZ2luTW9kZSwgaXNDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWQpOwogICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHByb2Nlc3NQcm94eSwgd2Vic2l0
ZURhdGFTdG9yZSwgaXNQcmV3YXJtZWQpOwogICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNz
UHJveHkuY29weVJlZigpKTsKIAogICAgIHJldHVybiBwcm9jZXNzUHJveHk7CiB9CiAKLVJlZlB0
cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2FybWVkUHJvY2Vz
cyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpCiB7CiAgICAgaWYgKCFtX3By
ZXdhcm1lZFByb2Nlc3MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjM2LDYgKzYzNiw5
IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2Fy
bWVkUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAorICAgIGlmIChtX3ByZXdhcm1lZFByb2Nlc3MtPmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkKCkgIT0gaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgLy8gSW4gcGxh
dGZvcm1zIHVzaW5nIEJ1YmJsZXdyYXAgZm9yIHNhbmRib3hpbmcsIHByZXdhcm1lZCBwcm9jZXNz
IGlzIGxhdW5jaGVkIHVzaW5nIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IFdlYnNpdGVEYXRh
U3RvcmUsCiAgICAgLy8gc28gd2UgZG9uJ3QgdXNlIGl0IGluIGNhc2Ugb2YgdXNpbmcgYSBkaWZm
ZXJlbnQgV2Vic2l0ZURhdGFTdG9yZS4KQEAgLTg4NCw3ICs4ODcsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cHJld2FybVByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAKICAgICBXRUJQUk9D
RVNTUE9PTF9SRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICJwcmV3YXJtUHJvY2Vzczog
UHJld2FybWluZyBhIFdlYlByb2Nlc3MgZm9yIHBlcmZvcm1hbmNlIik7Ci0gICAgY3JlYXRlTmV3
V2ViUHJvY2VzcyhudWxscHRyLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpZZXMpOwor
CisgICAgYXV0byBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IFdlYlByb2Nlc3NQcm94eTo6
SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Ok5vOworICAgIGlmICghbV9wcm9jZXNzZXMuaXNF
bXB0eSgpKQorICAgICAgICBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IG1fcHJvY2Vzc2Vz
Lmxhc3QoKS0+aXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKTsKKworICAgIGNyZWF0ZU5ld1dl
YlByb2Nlc3MobnVsbHB0ciwgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQsIFdlYlByb2Nlc3NQ
cm94eTo6SXNQcmV3YXJtZWQ6Olllcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuYWJs
ZVByb2Nlc3NUZXJtaW5hdGlvbigpCkBAIC05ODQsMjMgKzk5MiwyMyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAg
cmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldChwcm9jZXNzKTsKIH0KIAotUmVmPFdlYlBy
b2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK1JlZjxXZWJQcm9jZXNz
UHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0
ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKQogewogICAgIGlmICghcmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSB3ZWJQcm9jZXNz
Q2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwgd2Vic2l0ZURhdGFTdG9yZSkp
IHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9j
ZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCkpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucygq
cHJvY2VzcykpOwogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFn
ZSBmb3IgdGhlIGdpdmVuIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlm
IHdlIGRvLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KLSAgICAgICAgaWYgKGF1dG8gcHJvY2Vz
cyA9IFN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3Mo
KnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlKSkgeworICAgICAgICBp
ZiAoYXV0byBwcm9jZXNzID0gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5k
ZWRQYWdlUHJvY2VzcygqdGhpcywgcmVnaXN0cmFibGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUs
IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKSkgewogICAgICAgICAgICAgV0VCUFJPQ0VTU1BP
T0xfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9t
YWluOiBVc2luZyBXZWJQcm9jZXNzIGZyb20gYSBTdXNwZW5kZWRQYWdlIChwcm9jZXNzPSVwLCBQ
SUQ9JWkpIiwgcHJvY2Vzcy5nZXQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoKnByb2Nlc3MpKTsKICAgICAg
ICAgICAgIHJldHVybiBwcm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoYXV0byBwcm9jZXNzID0gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3Mod2Vic2l0
ZURhdGFTdG9yZSkpIHsKKyAgICBpZiAoYXV0byBwcm9jZXNzID0gdHJ5VGFrZVByZXdhcm1lZFBy
b2Nlc3Mod2Vic2l0ZURhdGFTdG9yZSwgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpKSB7CiAg
ICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbjogVXNpbmcgcHJld2FybWVkIHByb2Nlc3MgKHByb2Nlc3M9
JXAsIFBJRD0laSkiLCBwcm9jZXNzLmdldCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKICAgICAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKCpwcm9jZXNzLCByZWdpc3RyYWJsZURv
bWFpbik7CkBAIC0xMDI3LDcgKzEwMzUsNyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3M7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUpOworICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlLCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZCk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMDU4LDYgKzEwNjYsNyBA
QCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIH0KIAogICAgIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IHByb2Nlc3M7CisgICAgYXV0byBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IHBh
Z2VDb25maWd1cmF0aW9uLT5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSA/IFdlYlByb2Nlc3NQ
cm94eTo6SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6OlllcyA6IFdlYlByb2Nlc3NQcm94eTo6
SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6Ok5vOwogICAgIGF1dG8qIHJlbGF0ZWRQYWdlID0g
cGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCk7CiAgICAgaWYgKHJlbGF0ZWRQYWdlICYm
ICFyZWxhdGVkUGFnZS0+aXNDbG9zZWQoKSkgewogICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3Nl
cywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgpAQCAtMTA2
OSwxMiArMTA3OCwxMiBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBJbiB0
aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0aGluZyBp
cyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAgIHByb2Nlc3MgPSBkdW1teVBy
b2Nlc3NQcm94eShwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9u
SUQoKSk7CiAgICAgICAgIGlmICghcHJvY2VzcykgewotICAgICAgICAgICAgcHJvY2VzcyA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQsIFdlYlByb2Nlc3NQcm94eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOwor
ICAgICAgICAgICAgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBwYWdl
Q29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJl
d2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIGlzQ2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkLCBXZWJQcm9jZXNzUHJveHk6OlNob3VsZExhdW5jaFByb2Nlc3M6Ok5vKTsKICAgICAg
ICAgICAgIG1fZHVtbXlQcm9jZXNzUHJveGllcy5hZGQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklEKCksICpwcm9jZXNzKTsKICAgICAgICAgICAgIG1fcHJv
Y2Vzc2VzLmFwcGVuZCgqcHJvY2Vzcyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAg
cHJvY2VzcyA9IHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9IHBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRh
U3RvcmUoKSwgeyB9LCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CiAKICAgICBSZWZQdHI8
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IHBh
Z2VDb25maWd1cmF0aW9uLT51c2VyQ29udGVudENvbnRyb2xsZXIoKTsKICAgICAKQEAgLTE3OTMs
OSArMTgwMiw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZVByb2Nlc3NGcm9tT3JpZ2lu
Q2FjaGVTZXQoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgICAgICBtX3N3YXBwZWRQcm9j
ZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkm
IHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFt
ZUluZm9EYXRhJiBmcmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQ
YWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNv
dXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6SXND
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQsIGNvbnN0
IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYgZGF0YVN0
b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3Bl
bmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNl
UHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgZnJhbWVJbmZvLCBXVEZNb3ZlKGRhdGFTdG9yZSksIFt0aGlzLCBwYWdlID0gUmVmIHsgcGFn
ZSB9LCBuYXZpZ2F0aW9uID0gUmVmIHsgbmF2aWdhdGlvbiB9LCBzb3VyY2VQcm9jZXNzID0gc291
cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRl
ZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzRm9yTmF2
aWdhdGlvbkludGVybmFsKHBhZ2UsIG5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigp
LCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGlzQ2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkLCBmcmFtZUluZm8sIFdURk1vdmUoZGF0YVN0b3JlKSwgW3RoaXMsIHBhZ2Ug
PSBSZWYgeyBwYWdlIH0sIG5hdmlnYXRpb24gPSBSZWYgeyBuYXZpZ2F0aW9uIH0sIHNvdXJjZVBy
b2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFN1c3BlbmRlZFBhZ2VQcm94
eSogc3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgewogICAgICAg
ICAvLyBXZSBhcmUgcHJvY2Vzcy1zd2FwcGluZyBzbyBhdXRvbWF0aWMgcHJvY2VzcyBwcmV3YXJt
aW5nIHdvdWxkIGJlIGJlbmVmaWNpYWwgaWYgdGhlIGNsaWVudCBoYXMgbm90IGV4cGxpY2l0bHkg
ZW5hYmxlZCAvIGRpc2FibGVkIGl0LgogICAgICAgICBib29sIGRvaW5nQW5BdXRvbWF0aWNQcm9j
ZXNzU3dhcCA9IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudDo6Tm8gJiYgcHJvY2Vzcy5wdHIoKSAhPSBzb3VyY2VQcm9jZXNzLnB0cigp
OwogICAgICAgICBpZiAoZG9pbmdBbkF1dG9tYXRpY1Byb2Nlc3NTd2FwICYmICFjb25maWd1cmF0
aW9uKCkud2FzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdTZXRCeUNsaWVudCgpICYmICFjb25maWd1
cmF0aW9uKCkuY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5n
KCkpIHsKQEAgLTE4MTgsMTggKzE4MjcsMjEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXQKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRl
cm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHBhZ2VT
b3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURh
dGFTdG9yZT4mJiBkYXRhU3RvcmUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbklu
dGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgcGFn
ZVNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
IGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUlu
Zm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiB0YXJnZXRVUkwgPSBu
YXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB0YXJnZXRSZWdpc3Ry
YWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdGFyZ2V0VVJMIH07CiAK
LSAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBk
YXRhU3RvcmVdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAgcmV0dXJuIHBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihkYXRhU3RvcmUsIHBhZ2UucHRyKCksIHRhcmdldFJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRh
U3RvcmUsIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1By
b3h5PiB7CisgICAgICAgIHJldHVybiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oZGF0YVN0
b3JlLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQp
OwogICAgIH07CiAKICAgICBpZiAodXNlc1NpbmdsZVdlYlByb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc291cmNlUHJvY2VzcyksIG51bGxwdHIsICJT
aW5nbGUgV2ViUHJvY2VzcyBtb2RlIGlzIGVuYWJsZWQiX3MpOwogCisgICAgaWYgKHNvdXJjZVBy
b2Nlc3MtPmlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgIT0gaXNDYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWQpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9j
ZXNzKCksIG51bGxwdHIsICJQcm9jZXNzIHN3YXAgZHVlIHRvIGNhcHRpdmUgcG9ydGFsIG1vZGUg
Y2hhbmdlIl9zKTsKKwogICAgIGlmIChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6OlllcykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKGNyZWF0ZU5ld1Byb2Nlc3MoKSwgbnVsbHB0ciwgIlByb2Nlc3Mgc3dhcCB3YXMg
cmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQiX3MpOwogCkBAIC0yMDk3LDQgKzIxMDksMTEgQEAgYm9v
bCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKK2Jv
b2wgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRCeVN5c3RlbSgpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOGFiOTk2NTNjZjg3NjVkYmZkM2JiOGExMDg3
OWI1NGNiNTFhMGRiNy4uZWNiY2U1YzFlNmRjNTM4MzJkMWNmOGM3Y2NkMjc2ZWJmZTczZmM5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTksNiArMTE5
LDcgQEAgaW50IG5ldHdvcmtQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogaW50IHdlYlByb2Nlc3NM
YXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgorYm9v
bCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEJ5U3lzdGVtKCk7CiAKIGVudW0gY2xhc3MgQ2Fs
bERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50IDogYm9vbDsKQEAgLTMwMyw3ICszMDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlcG9ydFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZp
dHlTdGF0ZSk7CiAKLSAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJik7IC8vIFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBs
aW1pdCBpcyBtZXQgb3IgZHVlIHRvIGNhY2hpbmcuCisgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4g
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlByb2Nlc3NQcm94eTo6SXNDYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQpOyAvLyBXaWxsIHJldHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGltaXQgaXMg
bWV0IG9yIGR1ZSB0byBjYWNoaW5nLgogCiAgICAgdm9pZCBwcmV3YXJtUHJvY2VzcygpOwogCkBA
IC00MzgsNyArNDM5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRm9yZWdyb3VuZFdlYlByb2Nl
c3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVl
KCk7IH0KICAgICBib29sIGhhc0JhY2tncm91bmRXZWJQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpOyB9CiAKLSAgICB2b2lkIHBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYs
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VV
UkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBS
ZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJik7Cisg
ICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5h
dmlnYXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJv
eHk6OklzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVm
PFdlYnNpdGVEYXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOwogCiAg
ICAgdm9pZCBkaWRSZWFjaEdvb2RUaW1lVG9QcmV3YXJtKCk7CiAKQEAgLTUwNyw3ICs1MDgsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjb250YWluZXJUZW1wb3JhcnlEaXJlY3Rvcnko
KTsKICNlbmRpZgogCi0gICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlTmV3V2ViUHJvY2Vz
cyhXZWJzaXRlRGF0YVN0b3JlKiwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCA9IFdlYlBy
b2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgPSBX
ZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCk7CisgICAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gY3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiwgV2ViUHJvY2Vzc1Byb3h5
OjpJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1l
ZCA9IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTUxNSw5ICs1MTYsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNz
UHJveHkmLCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBwbGF0Zm9y
bUludmFsaWRhdGVDb250ZXh0KCk7CiAKLSAgICB2b2lkIHByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50
ZXJuYWwoV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0
aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNv
dXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5OjpJ
c0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKIAotICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRh
U3RvcmUmKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0cnlUYWtlUHJld2FybWVkUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpJc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUqLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVk
ID0gV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5NDgxNzYwOGM4MDhhNmJlMDljZWM0
NGVjMGNhMDg5NTVmNjA5NTM1Li41YmU5OTZhMGJhMWZiYTE5NzhkMTFjNDQxOGUwNjhkZWIwMDE2
YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAg
LTE2NCw5ICsxNjQsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Zm9yV2ViUGFnZXNXaXRoT3Jp
Z2luKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VjdQogICAgIH0KIH0KIAotUmVm
PFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdh
cm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSwgU2hvdWxk
TGF1bmNoUHJvY2VzcyBzaG91bGRMYXVuY2hQcm9jZXNzKQorUmVmPFdlYlByb2Nlc3NQcm94eT4g
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJz
aXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwg
Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSwgSXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQgaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQsIFNob3VsZExhdW5jaFByb2Nlc3Mgc2hvdWxk
TGF1bmNoUHJvY2VzcykKIHsKLSAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9j
ZXNzUHJveHkocHJvY2Vzc1Bvb2wsIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkLCBjcm9z
c09yaWdpbk1vZGUpKTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNz
UHJveHkocHJvY2Vzc1Bvb2wsIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkLCBjcm9zc09y
aWdpbk1vZGUsIGlzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKSk7CiAgICAgaWYgKHNob3VsZExh
dW5jaFByb2Nlc3MgPT0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKSB7CiAgICAgICAgIGlmIChs
aXZlUHJvY2Vzc2VzTFJVKCkuc2l6ZSgpID49IHNfbWF4UHJvY2Vzc0NvdW50KSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQ
b29scygpKQpAQCAtMTg0LDcgKzE4NCw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUm
IHdlYnNpdGVEYXRhU3RvcmUpCiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2Vi
UHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6
Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCkpOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJl
ZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElz
UHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIElzQ2FwdGl2ZVBvcnRhbE1v
ZGVFbmFibGVkOjpObykpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgcHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKHBy
b2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JTZXJ2aWNlV29ya2Vy
cygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHByaXZhdGU6
CiB9OwogI2VuZGlmCiAKLVdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nl
c3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwg
SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUp
CitXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlz
UHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBJc0NhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkKICAgICA6IEF1eGlsaWFy
eVByb2Nlc3NQcm94eShwcm9jZXNzUG9vbC5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHko
KSkKICAgICAsIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKnRoaXMpCiAgICAgLCBt
X3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sLCBpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVz
ID8gSXNXZWFrOjpZZXMgOiBJc1dlYWs6Ok5vKQpAQCAtMjM3LDYgKzIzNyw3IEBAIFdlYlByb2Nl
c3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vi
c2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtl
VW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KG1ha2VVbmlxdWVSZWY8VUlQcm94
eUZvckNhcHR1cmU+KCp0aGlzKSkpCiAjZW5kaWYKICAgICAsIG1faXNQcmV3YXJtZWQoaXNQcmV3
YXJtZWQgPT0gSXNQcmV3YXJtZWQ6OlllcykKKyAgICAsIG1faXNDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWQoaXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpCiAgICAgLCBtX2Nyb3NzT3JpZ2luTW9k
ZShjcm9zc09yaWdpbk1vZGUpCiAgICAgLCBtX3NodXRkb3duUHJldmVudGluZ1Njb3BlQ291bnRl
cihbdGhpc10oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7IGlmIChldmVudCA9PSBSZWZDb3VudGVy
RXZlbnQ6OkRlY3JlbWVudCkgbWF5YmVTaHV0RG93bigpOyB9KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAxOTQwMDU4NzgwNjZhMzA4ZDMwYmE1Yzkw
OWI1NTg5NTNkOWE0NjczLi4yYjFlZGE4OWNmYjI1YWQ3YWE5MzNjNDQyZjlhYjM3NTdkZGJlM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTM0LDgg
KzEzNCw5IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQ
cm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBlbnVtIGNsYXNzIElzQ2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKIAotICAgIHN0YXRpYyBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQ
cmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2lu
TW9kZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6
WWVzKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQ
b29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgSXNDYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQgPSBJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDo6Tm8sIFNob3VsZExhdW5j
aFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwogICAgIHN0YXRpYyBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5X
ZWJQcm9jZXNzUHJveHkoKTsKQEAgLTQyNyw5ICs0MjgsMTAgQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KKyAgICBJc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZCBpc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYXB0aXZl
UG9ydGFsTW9kZUVuYWJsZWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYlByb2Nlc3NQcm94eShX
ZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5Nb2RlKTsKKyAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSwg
SXNDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5CiAgICAgQVNDSUlMaXRlcmFsIHByb2Nlc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IldlYkNvbnRlbnQiX3M7IH0KQEAgLTQ0MCwxNiArNDQyLDE2IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmKSBmaW5h
bDsKICAgICAKLSAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAotICAgIHZvaWQgZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cikgb3ZlcnJpZGU7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGNhY2hlTWVkaWFN
SU1FVHlwZXNJbnRlcm5hbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAKKyAgICAv
LyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAorICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFBy
b2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNob3VsZEVuYWJsZVNo
YXJlZEFycmF5QnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGUg
PT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZDsgfQorICAgIGJvb2wgc2hvdWxk
RW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQ2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkID09IElzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkOjpZZXM7IH0K
IAogICAgIHZvaWQgdmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7CiAKQEAgLTYyMiw2ICs2MjQsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1ByZXdhcm1lZDsKKyAgICBJc0NhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCBtX2lzQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIHsgSXNDYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQ6Ok5vIH07CiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIG1fY3Jvc3NP
cmlnaW5Nb2RlIHsgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQgfTsKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGJvb2wgbV9oYXNJc3N1ZWRBdHRhY2htZW50RWxl
bWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDU4Y2E5ZmVlZjZhMzc0ZjRkNjk5
OWY3ODU4NTY2MjZjMGI3YWU4YS4uYjhhZDcxNTFiNzgwZmI2MTc0NGVjZmM3NTVhNzk3MDYxMTNh
NGQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIxLTExLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBDYXB0aXZlUG9y
dGFsTW9kZSBXZWJQcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjczNworICAgICAgICA8cmRhcjovLzg0NDczMDM3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMjEtMTEtMDUgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpYy1zdGF0cy5weV0gQ2hhbmdlIHNoZWJhbmcg
dG8gUHl0aG9uIDMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDY2MWJjYzZh
MDUxN2RhZmE0NGJmY2IyYTY4OWE0YzliM2Q2ZGIwYzQuLmEwNjMwOWVjZmU2ZTlkNjZiZjMxODlk
NjQ5YTllMTRiMjYwNjA5NTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAt
NzYyNiwzICs3NjI2LDEyOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0aW5nQ3Jvc3NPcmln
aW5Gcm9tQ09PUFNhbWVPcmlnaW5BbGxvd1BvcHVwNCkKIHsKICAgICBydW5DT09QUHJvY2Vzc1N3
YXBUZXN0KCJzYW1lLW9yaWdpbi1hbGxvdy1wb3B1cCIsICJ1bnNhZmUtbm9uZSIsICJ1bnNhZmUt
bm9uZSIsICJ1bnNhZmUtbm9uZSIsIElzU2FtZU9yaWdpbjo6Tm8sIERvU2VydmVyU2lkZVJlZGly
ZWN0OjpObywgRXhwZWN0U3dhcDo6Tm8pOwogfQorCisvLyBPbiBpT1MsIHRoZSBjYXB0aXZlIHBv
cnRhbCBtb2RlIEFQSSByZXF1aXJlcyBhIGJyb3dzZXIgZW50aXRsZW1lbnQuCisjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisKK3N0YXRpYyBib29sIGlzSklURW5hYmxlZChXS1dlYlZpZXcgKndl
YlZpZXcpCit7CisgICAgX19ibG9jayBib29sIGdvdFJlc3BvbnNlID0gZmFsc2U7CisgICAgX19i
bG9jayBib29sIGlzSklURW5hYmxlZFJlc3VsdCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0pJ
VEVuYWJsZWQ6XihCT09MIGlzSklURW5hYmxlZCkgeworICAgICAgICBpc0pJVEVuYWJsZWRSZXN1
bHQgPSBpc0pJVEVuYWJsZWQ7CisgICAgICAgIGdvdFJlc3BvbnNlID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdFJlc3BvbnNlKTsKKyAgICBFWFBFQ1Rf
TkUoW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgcmV0dXJuIGlzSklU
RW5hYmxlZFJlc3VsdDsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGluZ1RvQ2FwdGl2
ZVBvcnRhbE1vZGUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBFWFBFQ1RfVFJVRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIGRlbGVnYXRl
LmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24g
KikgeworICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOworICAgIH07CisKKyAgICBO
U1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2
aWdhdGlvbik7CisKKyAgICBwaWRfdCBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlm
aWVyXTsKKyAgICBFWFBFQ1RfTkUocGlkMSwgMCk7CisKKyAgICBFWFBFQ1RfVFJVRShpc0pJVEVu
YWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9u
ICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFs
TW9kZUVuYWJsZWQpOworICAgICAgICBwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQgPSBZRVM7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93LCBwcmVmZXJlbmNlcyk7CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlv
biA9IGZhbHNlOworICAgIHVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWROYXZpZ2F0aW9uKTsKKworICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mtc3dh
cCBmb3IgdHJhbnNpdGlvbmluZyB0byBjYXB0aXZlIHBvcnRhbCBtb2RlLgorICAgIEVYUEVDVF9O
RShwaWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKK30KKworVEVTVChQcm9jZXNzU3dhcCwg
Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlEZWZhdWx0VGhlbk9wdE91dCkKK3sKKyAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkuZGVmYXVs
dFdlYnBhZ2VQcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOworICAgIHdlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpLmRlZmF1bHRXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBv
cnRhbE1vZGVFbmFibGVkID0gWUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEVYUEVDVF9G
QUxTRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworICAgIHBpZF90IHBpZDEgPSBbd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVk
TmF2aWdhdGlvbiA9IGZhbHNlOworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRp
b24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5h
dmlnYXRpb24gPSB0cnVlOworICAgIH07CisKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rp
b24gKmFjdGlvbiwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgKikpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgTlNVUkwgKnVybCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJs
XV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOwor
CisgICAgRVhQRUNUX0ZBTFNFKGlzSklURW5hYmxlZCh3ZWJWaWV3LmdldCgpKSk7CisgICAgRVhQ
RUNUX0VRKHBpZDEsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgZmlu
aXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgRVhQRUNUX0VRKHBpZDEs
IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOyAvLyBTaG91bGRuJ3QgaGF2ZSBwcm9j
ZXNzLXN3YXBwZWQgc2luY2Ugd2UncmUgc3RheWluZyBpbiBjYXB0aXZlIHBvcnRhbCBtb2RlLgor
ICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVs
ZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNl
cyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpw
cmVmZXJlbmNlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHBy
ZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CisgICAgICAgIHByZWZlcmVuY2Vz
LmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IE5POyAvLyBPcHQgb3V0IG9mIGNhcHRpdmUgcG9y
dGFsIG1vZGUgZm9yIHRoaXMgbG9hZC4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgZmlu
aXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgLy8gV2Ugc2hvdWxkIGhh
dmUgcHJvY2Vzcy1zd2FwcGVkIHRvIGdldCBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKyAg
ICBFWFBFQ1RfTkUocGlkMSwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAg
RVhQRUNUX1RSVUUoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIGNhcHRp
dmUgcG9ydGFsIG1vZGUgc2hvdWxkIGJlIGRpc2FibGVkIGluIG5ldyBXZWJWaWV3cyBzaW5jZSBp
dCBpcyBub3QgZW5hYmxlZCBnbG9iYWxseS4KKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3MiBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworICAgIEVYUEVDVF9UUlVFKGlzSklURW5hYmxlZCh3ZWJWaWV3Mi5nZXQo
KSkpOworICAgIHBpZF90IHBpZDIgPSBbd2ViVmlldzIgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsK
KworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRo
UHJlZmVyZW5jZXMgPSBuaWw7CisKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAg
ICB1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDp1cmxdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdh
dGlvbik7CisgICAgRVhQRUNUX1RSVUUoaXNKSVRFbmFibGVkKHdlYlZpZXcyLmdldCgpKSk7Cisg
ICAgRVhQRUNUX0VRKHBpZDIsIFt3ZWJWaWV3MiBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30K
KworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443435</attachid>
            <date>2021-11-05 14:08:11 -0700</date>
            <delta_ts>2021-11-08 17:52:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211105140810.patch</filename>
            <type>text/plain</type>
            <size>53672</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFhMjllNTY0OGU3Nzg3OTZm
NTY3NTMzNWU4MDllNDQ0ZmQ4NTlmMDMuLjZmYmQ1NWQ4ZmViMmFmYTY4NDM3NmY0M2NmOWNkMDQ1
MTczNmU1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIENhcHRpdmVQb3J0YWxNb2RlIFdlYlByb2Nlc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3CisgICAgICAgIDxyZGFyOi8v
ODQ0NzMwMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBgV0tXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
YCBBUEkgdG8gYWxsb3cgY2xpZW50cyBhcHBzIHRvIG9wdCBpbiBvcgorICAgICAgICBvdXQgb2Yg
Y2FwdGl2ZSBwb3J0YWwgbW9kZSBmb3IgZWFjaCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNp
b24pLiBGb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGlzIHNldHRpbmcsIHRoZSBj
bGllbnQgY2FuIHNldAorICAgICAgICBgV2ViV2ViVmlld0NvbmZpZ3VyYXRpb24uZGVmYXVsdFdl
YnBhZ2VQcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRgICh3aWxsIGltcGFjdCBh
bGwgdmlld3MKKyAgICAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uKS4KKworICAgICAgICBO
b3RlIHRoYXQgYm90aCB0aGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBieSBhcHBzIHdpdGgg
dGhlIGJyb3dzZXIgZW50aXRsZW1lbnQgb24gaU9TIChubworICAgICAgICByZXN0cmljdGlvbiBv
biBtYWNPUykuIE9uIGlPUywgdGhlIGRlZmF1bHQgdmFsdWUgb2YgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCisgICAgICAgIGRlcGVuZHMgb24gdGhlIGNvcnJl
c3BvbmRpbmcgc3lzdGVtIHNldHRpbmcuIEZvciBub3csIHRoaXMgaXMgc2ltdWxhdGVkIGJ5IGEg
TlNVc2VyRGVmYXVsdCBidXQgaXQKKyAgICAgICAgd2lsbCBldmVudHVhbGx5IGNvbWUgZnJvbSBz
b21ld2hlcmUgZWxzZSAoVENDPykuCisKKyAgICAgICAgV2hlbmV2ZXIgdHJhbnNpdGlvbmluZyBp
biBvciBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZSwgd2UgcHJvY2Vzcy1zd2FwIG9uIG5hdmln
YXRpb24gcG9saWN5CisgICAgICAgIGRlY2lzaW9uLiBXaGVuZXZlciBjYXB0aXZlIHBvcnRhbCBt
b2RlIGlzIGVuYWJsZWQsIHdlIHR1cm4gb2ZmIEpJVCwgZ2VuZXJhdGlvbmFsIGFuZCBjb25jdXJy
ZW50IEdDCisgICAgICAgIGluIHRoZSBXZWJQcm9jZXNzLCBhcyBzb29uIGFzIGl0IGxhdW5jaGVz
LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpj
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJw
YWdlUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIHNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEJ5U3lzdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vz
c0xhdW5jaGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojpz
aG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6
ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNKSVRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG91bGRF
bmFibGVDYXB0aXZlUG9ydGFsTW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdh
cm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJld2FybVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmln
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmln
YXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZEJ5U3lzdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYXB0aXZlUG9ydGFsTW9k
ZSBjb25zdCk6CisKIDIwMjEtMTEtMDQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBIYXZlIFJlbW90ZU1lZGlhUmVzb3VyY2UgdXNlIFNoYXJlZE1lbW9yeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaAppbmRleCBmZjdhNDRjNWJhMzZmYzliY2ZiZGMzMTJiOTNkMzNiYjk1ZGE2NzJiLi4xYzVk
YTFiZTk5YTViZGE4YzRiZTBhNTNlMzkxOTdmNzgxMzA5YjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZUVudHJ5UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaApAQCAtODksNiAr
ODksMTMgQEAgdm9pZCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eHBjX2Nvbm5l
Y3Rpb25fdD4gY29ubmVjdGlvbiwgeHBjX29iamVjdF8KICAgICBpZiAoaW5pdGlhbGl6ZXJNZXNz
YWdlKSB7CiAgICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChpbml0aWFsaXplck1l
c3NhZ2UsICJjb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCiAgICAgICAgICAgICBKU0M6OkNv
bmZpZzo6Y29uZmlndXJlRm9yVGVzdGluZygpOworICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlf
Z2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZW5hYmxlLWNhcHRpdmUtcG9ydGFsLW1vZGUi
KSkgeworICAgICAgICAgICAgSlNDOjpPcHRpb25zOjppbml0aWFsaXplKCk7CisgICAgICAgICAg
ICBKU0M6Ok9wdGlvbnM6OkFsbG93VW5maW5hbGl6ZWRBY2Nlc3NTY29wZSBzY29wZTsKKyAgICAg
ICAgICAgIEpTQzo6T3B0aW9uczo6dXNlSklUKCkgPSBmYWxzZTsKKyAgICAgICAgICAgIEpTQzo6
T3B0aW9uczo6dXNlR2VuZXJhdGlvbmFsR0MoKSA9IGZhbHNlOworICAgICAgICAgICAgSlNDOjpP
cHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSA9IGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlm
ICh4cGNfZGljdGlvbmFyeV9nZXRfYm9vbChpbml0aWFsaXplck1lc3NhZ2UsICJkaXNhYmxlLWpp
dCIpKQogICAgICAgICAgICAgSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVk
KGZhbHNlKTsKICAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVy
TWVzc2FnZSwgImVuYWJsZS1zaGFyZWQtYXJyYXktYnVmZmVyIikpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDVm
OWYxY2ExMDdkZGYxYTVmMGNmM2RiYTIzMDAxMzNkOWUyNjUxNzYuLjBmZjdlNDBhZTZkYjQ5Njdk
M2RkZGI2NmI2NGM3YWUyMDRhYTIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtMTk3LDYgKzE5NywxMyBAQCB2
b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lKFJl
ZjxXZWJLaXQ6OldlYlVSTFNjaGVtZQogICAgIG1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVt
ZSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKK2Jvb2wgUGFnZUNvbmZpZ3VyYXRpb246OmNhcHRp
dmVQb3J0YWxNb2RlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZGVmYXVsdFdlYnNpdGVQ
b2xpY2llcykKKyAgICAgICAgcmV0dXJuIG1fZGVmYXVsdFdlYnNpdGVQb2xpY2llcy0+Y2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKCk7CisgICAgcmV0dXJuIGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZEJ5U3lzdGVtKCk7Cit9CisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiBBcHBs
aWNhdGlvbk1hbmlmZXN0KiBQYWdlQ29uZmlndXJhdGlvbjo6YXBwbGljYXRpb25NYW5pZmVzdCgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5oCmluZGV4IDNkNDc3NDE2NGI3ZGNiOGE5YzYyNzUzNjFmMTIxMjZhMmQzMjBl
ZGIuLjI1NzYxNWFjNGNkNTI4OWFiYmJhM2EwZjQ3Y2RlOGM4NzBlMTA4ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0x
ODksNiArMTg5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9y
RWRpdGluZ0NvbnRyb2xzTWFuYWdlcihib29sIHZhbHVlKSB7IG1fcmVxdWlyZXNVc2VyQWN0aW9u
Rm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlciA9IHZhbHVlOyB9CiAjZW5kaWYKIAorICAgIGJvb2wg
Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgY29uc3Q7CisKIHByaXZhdGU6CiAKICAgICBSZWZQ
dHI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKaW5kZXggM2VhNGIx
YjkxZDk5ZjM0ZWRhMThmZTEyYjEyNWQzNzk4OTRhMTM2Ni4uMzAzMTA1YTMyNTRkYzkzYmMyMmZl
MDZkMTk1MDUyOGNkOThiZjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKIAorI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGlj
aWVzRGF0YS5oIgpAQCAtNzIsNiArNzMsNyBAQCBSZWY8V2Vic2l0ZVBvbGljaWVzPiBXZWJzaXRl
UG9saWNpZXM6OmNvcHkoKSBjb25zdAogICAgIHBvbGljaWVzLT5zZXRBbGxvd1NpdGVTcGVjaWZp
Y1F1aXJrc1RvT3ZlcnJpZGVDb250ZW50TW9kZShtX2FsbG93U2l0ZVNwZWNpZmljUXVpcmtzVG9P
dmVycmlkZUNvbnRlbnRNb2RlKTsKICAgICBwb2xpY2llcy0+c2V0QXBwbGljYXRpb25OYW1lRm9y
RGVza3RvcFVzZXJBZ2VudChtX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwog
ICAgIHBvbGljaWVzLT5zZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdChtX2FsbG93c0NvbnRlbnRK
YXZhU2NyaXB0KTsKKyAgICBwb2xpY2llcy0+c2V0Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKG1f
Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKICAgICBwb2xpY2llcy0+c2V0TW91c2VFdmVudFBv
bGljeShtX21vdXNlRXZlbnRQb2xpY3kpOwogICAgIHJldHVybiBwb2xpY2llczsKIH0KQEAgLTEy
Myw1ICsxMjUsMTAgQEAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIFdlYnNpdGVQb2xpY2ll
czo6ZGF0YSgpCiAgICAgfTsKIH0KIAorYm9vbCBXZWJzaXRlUG9saWNpZXM6OmNhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkID8gKm1fY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIDogV2ViS2l0OjpjYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWRCeVN5c3RlbSgpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAppbmRleCBjZGUwNzUzZmQxYzQzOTY0
MTFkYzBiNGUzNDhhOTMxZjUxYjE3MGZkLi42ODY3YWFjMmI3ZGYyYzhkMWExOTVlNjc3MDU5MGUw
NWZhMTA4YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5oCkBAIC0xMjUsNiArMTI1LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkFs
bG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0KCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdDsgfQogICAgIHZvaWQgc2V0QWxsb3dzQ29u
dGVudEphdmFTY3JpcHQoV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzKSB7
IG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHQgPSBhbGxvd3M7IH0KIAorICAgIGJvb2wgY2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDYXB0aXZlUG9ydGFsTW9k
ZUVuYWJsZWQoc3RkOjpvcHRpb25hbDxib29sPiBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpIHsg
bV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7IH0K
KwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbW91c2VFdmVudFBvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW91c2VFdmVudFBvbGljeTsgfQogICAgIHZvaWQgc2V0TW91c2VFdmVudFBv
bGljeShXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IHBvbGljeSkgeyBtX21vdXNlRXZlbnRQb2xp
Y3kgPSBwb2xpY3k7IH0KIApAQCAtMTU3LDYgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdCB7IFdl
YkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMgfTsKICAgICBXZWJDb3JlOjpNb3Vz
ZUV2ZW50UG9saWN5IG1fbW91c2VFdmVudFBvbGljeSB7IFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xp
Y3k6OkRlZmF1bHQgfTsKICAgICBib29sIG1faWRlbXBvdGVudE1vZGVBdXRvc2l6aW5nT25seUhv
bm9yc1BlcmNlbnRhZ2VzIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY2Fw
dGl2ZVBvcnRhbE1vZGVFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5j
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJl
bmNlcy5oCmluZGV4IDRhMjM2ZGE3ZDc1OGFiOTZkNmI3NTZkNzVmY2FkMmExYzNiNzNkMGEuLjJk
NWI1YTgyYWQ1YjRjN2FhNWM1YWFjNDE1NDhkNzVhZDRmYjA1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5o
CkBAIC03MSw0ICs3MSw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSkKICovCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd3NDb250ZW50SmF2YVNj
cmlwdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogCisvKiEgQGFi
c3RyYWN0IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgY2FwdGl2ZSBwb3J0YWwgbW9kZSBp
cyBlbmFibGVkLgorIEBkaXNjdXNzaW9uIFRoZSBkZWZhdWx0IHZhbHVlIGlzIE5PIG9uIG1hY09T
LiBPbiBpT1MsIHRoZSBkZWZhdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIHN5c3RlbSBzZXR0aW5n
LgorICovCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2VicGFnZVByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCmluZGV4IDVlYjEyMDE4ZDlhNDdlMzRiNjZlZGQ3ZWUw
ODU4M2UxNzg3NGYzMWEuLjE3ZGI5ZWNmZWIyNTMyZDEzMjM3ZjBmNmQxODEwM2QwMTAyZDVhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQ
cmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJwYWdlUHJlZmVyZW5jZXMubW0KQEAgLTM2LDYgKzM2LDEwIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
QEAgLTM4Nyw2ICszOTEsMjAgQEAgLSAoQk9PTClhbGxvd3NDb250ZW50SmF2YVNjcmlwdAogICAg
IH0KIH0KIAorLSAodm9pZClzZXRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ6KEJPT0wpY2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAo
IVdURjo6cHJvY2Vzc0hhc0VudGl0bGVtZW50KCJjb20uYXBwbGUuZGV2ZWxvcGVyLndlYi1icm93
c2VyIikpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIF93ZWJzaXRlUG9saWNpZXMtPnNl
dENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCghIWNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7Cit9
CisKKy0gKEJPT0wpY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCit7CisgICAgcmV0dXJuIF93ZWJz
aXRlUG9saWNpZXMtPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOworfQorCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClzZXRQcmVmZXJyZWRDb250ZW50TW9kZTooV0tDb250
ZW50TW9kZSljb250ZW50TW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMTFmMDUzZjFiNTM3ZWE2NGZjMjQxZTYw
YTNkZTk3MDYxOWMwMWQ4Zi4uZGFhZmEyMzVmYTA2NmEwYjk2ODY3MjM0ZTZkMzEyZjdiNWJhZmIx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCkBAIC05ODksNiArOTg5LDE4IEBAIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1
dFFPUygpCiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitib29sIGNhcHRpdmVQb3J0
YWxNb2RlRW5hYmxlZEJ5U3lzdGVtKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29s
PiBjYWNoZWRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseTsKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGludmFsaWRhdGUgdGhlIGNhY2hlZCB2YWx1ZSB3aGVuIHRoZSBOU1VzZXJEZWZh
dWx0IGNoYW5nZXMuCisgICAgaWYgKCFjYWNoZWRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9i
YWxseSkgeworICAgICAgICAvLyBGSVhNRTogVXNpbmcgTlNVc2VyRGVmYXVsdHMgaXMgYSB0ZW1w
b3Jhcnkgd29ya2Fyb3VuZC4gVGhpcyBzZXR0aW5nIHNob3VsZCBiZSBzdG9yZWQgZWxzZXdoZXJl
IChUQ0M/KS4KKyAgICAgICAgY2FjaGVkQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHkg
PSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2Vi
S2l0Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkIl07CisgICAgfQorICAgIHJldHVybiAqY2FjaGVk
Q2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkR2xvYmFsbHk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmFwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZCgpCiB7CiAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJhcHBsaWNhdGlvbklzQWJvdXRUb1N1c3Bl
bmQ6IFRlcm1pbmF0aW5nIG5vbi1jcml0aWNhbCBwcm9jZXNzZXMiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggNzU2NmM0
ZTY0NzczOWJiYjFiMGYzMWEzNzU3N2I3NjJjNjhhMTRlZi4uNmRkNmUyNDJiODViNjY5NzdmZmNk
YTBkNTAzNjllMDM1NzkxOTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29uZmlndXJlSlNDRm9yVGVzdGluZygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVTaGFy
ZWRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHZpcnR1YWwgUmVmUHRyPFhQQ0V2ZW50
SGFuZGxlcj4geHBjRXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJv
Y2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFj
L1Byb2Nlc3NMYXVuY2hlck1hYy5tbQppbmRleCBlMjg4ZTMwODRiMGQxMmRkM2RkODMxZWI2ZjI2
M2I0NGY3YWZlOTZiLi4yNzJjYzkxNGY5NWM2NjMyYmEzNmNhZDkwODFmNDJlNDk3YTEyOTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Q
cm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTIwMyw2ICsyMDMsOCBAQCB2b2lkIFByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfYm9v
bChib290c3RyYXBNZXNzYWdlLmdldCgpLCAiZGlzYWJsZS1qaXQiLCB0cnVlKTsKICAgICAgICAg
aWYgKG1fY2xpZW50LT5zaG91bGRFbmFibGVTaGFyZWRBcnJheUJ1ZmZlcigpKQogICAgICAgICAg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgImVuYWJs
ZS1zaGFyZWQtYXJyYXktYnVmZmVyIiwgdHJ1ZSk7CisgICAgICAgIGlmIChtX2NsaWVudC0+c2hv
dWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSkKKyAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9ib29sKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJlbmFibGUtY2FwdGl2ZS1wb3J0YWwt
bW9kZSIsIHRydWUpOwogICAgIH0KIAogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9v
dHN0cmFwTWVzc2FnZS5nZXQoKSwgIm1lc3NhZ2UtbmFtZSIsICJib290c3RyYXAiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDcyZjU1
OGY3ZjA2NzUxMTU2NGJlYjFiYTVkYmY1ZmFmYmZlYmNjZTUuLmNjYmQ2MTI4Nzg1MGU3MzE2OTFh
MzMwYzRlMzBhZDNhMzZlMWYwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlIDx3dGYvRGVidWdVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNTAsMTEgKzQ5LDExIEBAIHN0YXRpYyBIYXNoU2V0PFN1
c3BlbmRlZFBhZ2VQcm94eSo+JiBhbGxTdXNwZW5kZWRQYWdlcygpCiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1
c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5
OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2Rl
IGNhcHRpdmVQb3J0YWxNb2RlKQogewogICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFnZSA6IGFs
bFN1c3BlbmRlZFBhZ2VzKCkpIHsKICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHN1c3BlbmRlZFBh
Z2UtPnByb2Nlc3MoKTsKLSAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnBy
b2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURv
bWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSAmJiBwcm9j
ZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQpCisgICAg
ICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNz
LnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nlc3Mud2Vi
c2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUo
KSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuY2FwdGl2ZVBvcnRhbE1v
ZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJldHVybiAmcHJvY2VzczsK
ICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IGY0NGFiM2FmNTg5NzA4Y2RiOWYyNDllZGI1YjQxYzRm
YmQwMTc2NTIuLmI2YTRhMzlhMTIyNTQ4NDQzYWY0NjcwNWNiODQ5YjNmMjkyZWZlMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KQEAgLTQzLDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJCYWNrRm9yd2FyZENhY2hlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7Ci1jbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwog
CiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCkBAIC01OCw3ICs1OCw3IEBA
IHB1YmxpYzoKICAgICBTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAgICAgflN1c3BlbmRlZFBhZ2VQ
cm94eSgpOwogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJs
ZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0
b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSk7CiAKICAgICBXZWJQYWdl
UHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZDlhODI5ODI0MjllNGFj
NmUzZTY3MDY3YTc3MjYyZDhlYWYzZTVmYy4uYTE2MzJjNjg4YTc5ZGUxOTI1ZGExYTFhMDE3ZjFh
MmUxMjk3MmQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQcm8KICAgICBpZiAocmVsYXRl
ZFBhZ2UgJiYgIXJlbGF0ZWRQYWdlLT5pc0Nsb3NlZCgpKQogICAgICAgICBtX3Byb2Nlc3MgPSBy
ZWxhdGVkUGFnZS0+ZW5zdXJlUnVubmluZ1Byb2Nlc3MoKTsKICAgICBlbHNlCi0gICAgICAgIG1f
cHJvY2VzcyA9IHByb2Nlc3NQb29sLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihtX3dlYnNp
dGVEYXRhU3RvcmUuZ2V0KCksIHRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgbV9w
cm9jZXNzID0gcHJvY2Vzc1Bvb2wucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKG1fd2Vic2l0
ZURhdGFTdG9yZS5nZXQoKSwgcmVnaXN0cmFibGVEb21haW4sIHNob3VsZEVuYWJsZUNhcHRpdmVQ
b3J0YWxNb2RlKCkgPyBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlOjpFbmFibGVk
IDogV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpOwogICAgIG1f
aGFzUnVubmluZ1Byb2Nlc3MgPSB0cnVlOwogCiAgICAgbV9wcm9jZXNzLT5hZGRFeGlzdGluZ1dl
YlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6QmVnaW5zVXNpbmdEYXRhU3RvcmU6Olllcyk7
CkBAIC0zNDM2LDcgKzM0MzYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICB9
CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRp
b24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJM
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZUluZm8sIFdURk1vdmUod2Vic2l0
ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcG9saWN5
QWN0aW9uLCBuYXZpZ2F0aW9uID0gUmVmIHsgKm5hdmlnYXRpb24gfSwgbmF2aWdhdGlvbkFjdGlv
biA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9j
ZXNzLmNvcHlSZWYoKSwKKyAgICBhdXRvIGNhcHRpdmVQb3J0YWxNb2RlID0gKHBvbGljaWVzID8g
cG9saWNpZXMtPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpIDogc2hvdWxkRW5hYmxlQ2FwdGl2
ZVBvcnRhbE1vZGUoKSkgPyBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlOjpFbmFi
bGVkIDogV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQ7CisgICAg
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZp
Z2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBjYXB0aXZlUG9ydGFsTW9kZSwgZnJhbWVJbmZvLCBXVEZNb3ZlKHdl
YnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IFJlZiB7ICpuYXZpZ2F0aW9uIH0sIG5hdmlnYXRpb25B
Y3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNl
UHJvY2Vzcy5jb3B5UmVmKCksCiAgICAgICAgIHBvbGljaWVzID0gV1RGTW92ZShwb2xpY2llcyks
IHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudF0g
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5hdmlnYXRpb24sIFN1c3BlbmRlZFBh
Z2VQcm94eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikg
bXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9uIGhhcyBiZWVuIGRlc3Ryb3ll
ZCwgdGhlbiBubyBuZWVkIHRvIHByb2NlZWQuCiAgICAgICAgIGlmIChpc0Nsb3NlZCgpIHx8ICFu
YXZpZ2F0aW9uU3RhdGUoKS5oYXNOYXZpZ2F0aW9uKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
KSkgewpAQCAtNTYxOSw5ICs1NjIwLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRyaWdnZXJCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaEZvck5hdmlnYXRpb24odWludDY0X3QgbmF2aWcKIAogICAg
IFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3NGb3JOYXZpZ2F0aW9uOwogICAgIGlmIChi
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaERlY2lzaW9uID09IEJyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoRGVjaXNpb246Ok5ld0lzb2xhdGVkR3JvdXApCi0gICAgICAgIHByb2Nlc3NGb3JOYXZp
Z2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZU5ld1dlYlByb2Nlc3MoJndl
YnNpdGVEYXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIENyb3Nz
T3JpZ2luTW9kZTo6SXNvbGF0ZWQpOworICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0
b3JlKCksIG1fcHJvY2Vzcy0+Y2FwdGl2ZVBvcnRhbE1vZGUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJ
c1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQpOwogICAgIGVsc2UKLSAg
ICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJv
Y2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9u
c2VEb21haW4pOworICAgICAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgp
LCByZXNwb25zZURvbWFpbiwgbV9wcm9jZXNzLT5jYXB0aXZlUG9ydGFsTW9kZSgpKTsKIAogICAg
IGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgcHJv
Y2Vzc0Zvck5hdmlnYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJQcm92aXNp
b25hbExvYWRTdGFydGVkLCBudWxscHRyLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyVG9SZXN1bWUpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwpAQCAtODMwMiw2
ICs4MzAzLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0
aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogeworICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OklzSklURW5hYmxlZCgpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiB9CiAKQEAgLTEwODQzLDYgKzEwODQ1LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JvbGxUb1JlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2Nyb2xsVG9SZWN0KHRhcmdldFJlY3QsIG9yaWdpbikpOwogfQogCitib29sIFdlYlBhZ2VQcm94
eTo6c2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X2NvbmZpZ3VyYXRpb24tPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCgpOworfQorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDQ4ZjE5YjZmZDU0NTZmZjE1NGU1MDlhNzZlZDU0YjYyMzcyZmM5YjQu
LjQ4ODJiZDE4NzBmYWNjYWM0MGUwMzU4YmViMTQ3MjliMWNhNzE2NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00OTMsNiArNDkzLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhZGRQcmV2aW91c2x5VmlzaXRlZFBhdGgoY29uc3QgU3RyaW5nJik7CiAKKyAgICBi
b29sIHNob3VsZEVuYWJsZUNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3Q7CisKICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCiAgICAgTlNBcnJheSAqZGF0YURldGVjdGlvblJlc3VsdHMoKSB7IHJl
dHVybiBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzLmdldCgpOyB9CiAgICAgdm9pZCBkZXRlY3REYXRh
SW5BbGxGcmFtZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGU+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA3MzhkMTk4Yjg5NmZi
OTI4OTM0YzI1ZDJhZmViNjU1M2E1MGQ4ZTA2Li5kYmU3MWVmZGMwOTdjMDQ4ZTAzNDk3YzU0NzBh
MGIwODczNTk0ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNo
ZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNDgsNyArMTQ3LDcgQEAgYm9vbCBXZWJQ
cm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3Moc3RkOjp1bmlxdWVfcHRyPENhY2hlZFByb2Nlc3M+JiYg
Y2FjaGVkUHJvY2VzcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkKK1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3Mo
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1v
ZGUgY2FwdGl2ZVBvcnRhbE1vZGUpCiB7CiAgICAgYXV0byBpdCA9IG1fcHJvY2Vzc2VzUGVyUmVn
aXN0cmFibGVEb21haW4uZmluZChyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgaWYgKGl0ID09IG1f
cHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZW5kKCkpCkBAIC0xNTcsNiArMTU2LDkgQEAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZUQKICAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndl
YnNpdGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAorICAgIGlmIChpdC0+dmFsdWUtPnByb2Nlc3MoKS5jYXB0aXZlUG9ydGFsTW9kZSgpICE9IGNh
cHRpdmVQb3J0YWxNb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGF1dG8gcHJv
Y2VzcyA9IGl0LT52YWx1ZS0+dGFrZVByb2Nlc3MoKTsKICAgICBtX3Byb2Nlc3Nlc1BlclJlZ2lz
dHJhYmxlRG9tYWluLnJlbW92ZShpdCk7CiAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9H
KCJ0YWtlUHJvY2VzczogVGFraW5nIHByb2Nlc3MgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIChzaXpl
PSV1LCBjYXBhY2l0eT0ldSkiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKCks
IGNhcGFjaXR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaApp
bmRleCAyNDliYjdmNjZlY2RiMDAxY2YzMTM1MmYyYTU5NmRjOTNmY2RlY2Q2Li41N2ZkOWIwYTEz
YTYzODljNDgyOGE3ODA2NWRmMDUyNzMxZGMxNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzQ2FjaGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFi
bGVEb21haW4uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTM1LDcgKzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKLWNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRh
U3RvcmU7CiAKIGNsYXNzIFdlYlByb2Nlc3NDYWNoZSB7CkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBXZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmKTsKIAogICAg
IGJvb2wgYWRkUHJvY2Vzc0lmUG9zc2libGUoUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7Ci0gICAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gdGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJz
aXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSk7CiAKICAg
ICB2b2lkIHVwZGF0ZUNhcGFjaXR5KFdlYlByb2Nlc3NQb29sJik7CiAgICAgdW5zaWduZWQgY2Fw
YWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNDkyMGU2YzZhYWM3YzQ1YTJkOWRmNDNkYTQ4
ZTIzMTgxMTk2MmZhYy4uZjcxYWM3ZWQzMjI0ZjUxMDU4NzQ5MDA0MTBhNDdjMjE5NWM5MTM0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjA4LDcg
KzYwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKCkKICAgICBwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCk7
CiB9CiAKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94
eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1v
ZGUpCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlLCBXZWJQcm9jZXNzUHJveHk6Oklz
UHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKQog
ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fdGNjUHJlZmVyZW5jZUVuYWJsZWQgPSBkb2Vz
QXBwSGF2ZUlUUEVuYWJsZWQoKTsKQEAgLTYxNiwxNCArNjE2LDE0IEBAIFJlZjxXZWJQcm9jZXNz
UHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKG1fdGNjUHJlZmVyZW5jZUVuYWJsZWQpOwogI2VuZGlmCiAKLSAgICBhdXRv
IHByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCB3ZWJzaXRlRGF0
YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlKTsKKyAgICBhdXRvIHByb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCB3ZWJzaXRlRGF0YVN0b3JlLCBj
YXB0aXZlUG9ydGFsTW9kZSwgaXNQcmV3YXJtZWQsIGNyb3NzT3JpZ2luTW9kZSk7CiAgICAgaW5p
dGlhbGl6ZU5ld1dlYlByb2Nlc3MocHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1By
ZXdhcm1lZCk7CiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3NQcm94eS5jb3B5UmVmKCkp
OwogCiAgICAgcmV0dXJuIHByb2Nlc3NQcm94eTsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURh
dGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFs
TW9kZSkKIHsKICAgICBpZiAoIW1fcHJld2FybWVkUHJvY2VzcykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC02MzYsNiArNjM2LDkgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKG1fcHJld2FybWVkUHJvY2Vzcy0+
Y2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZlUG9ydGFsTW9kZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAvLyBJ
biBwbGF0Zm9ybXMgdXNpbmcgQnViYmxld3JhcCBmb3Igc2FuZGJveGluZywgcHJld2FybWVkIHBy
b2Nlc3MgaXMgbGF1bmNoZWQgdXNpbmcgdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgV2Vic2l0
ZURhdGFTdG9yZSwKICAgICAvLyBzbyB3ZSBkb24ndCB1c2UgaXQgaW4gY2FzZSBvZiB1c2luZyBh
IGRpZmZlcmVudCBXZWJzaXRlRGF0YVN0b3JlLgpAQCAtODg0LDcgKzg4NywxMiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwcmV3YXJtUHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdF
QlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFBlcmZvcm1hbmNlTG9nZ2luZywgInByZXdhcm1Qcm9j
ZXNzOiBQcmV3YXJtaW5nIGEgV2ViUHJvY2VzcyBmb3IgcGVyZm9ybWFuY2UiKTsKLSAgICBjcmVh
dGVOZXdXZWJQcm9jZXNzKG51bGxwdHIsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Olll
cyk7CisKKyAgICBhdXRvIGNhcHRpdmVQb3J0YWxNb2RlID0gV2ViUHJvY2Vzc1Byb3h5OjpDYXB0
aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQ7CisgICAgaWYgKCFtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkp
CisgICAgICAgIGNhcHRpdmVQb3J0YWxNb2RlID0gbV9wcm9jZXNzZXMubGFzdCgpLT5jYXB0aXZl
UG9ydGFsTW9kZSgpOworCisgICAgY3JlYXRlTmV3V2ViUHJvY2VzcyhudWxscHRyLCBjYXB0aXZl
UG9ydGFsTW9kZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6WWVzKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZW5hYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKCkKQEAgLTk4NCwyMyAr
OTkyLDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcykKICAgICByZW1vdmVQcm9jZXNzRnJvbU9yaWdpbkNhY2hlU2V0KHBy
b2Nlc3MpOwogfQogCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUs
IFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQorUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JS
ZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlByb2Nlc3NQcm94eTo6
Q2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUpCiB7CiAgICAgaWYgKCFyZWdpc3Ry
YWJsZURvbWFpbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHdlYlBy
b2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0
b3JlKSkgeworICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFr
ZVByb2Nlc3MocmVnaXN0cmFibGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0
YWxNb2RlKSkgewogICAgICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCpwcm9j
ZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHN1c3BlbmRlZCBwYWdlIGZv
ciB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIGFuZCB1c2UgaXRzIHByb2Nlc3MgaWYgd2Ug
ZG8sIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0g
U3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcygqdGhp
cywgcmVnaXN0cmFibGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgICAgIGlmIChh
dXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBh
Z2VQcm9jZXNzKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwgd2Vic2l0ZURhdGFTdG9yZSwgY2Fw
dGl2ZVBvcnRhbE1vZGUpKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW46IFVzaW5nIFdl
YlByb2Nlc3MgZnJvbSBhIFN1c3BlbmRlZFBhZ2UgKHByb2Nlc3M9JXAsIFBJRD0laSkiLCBwcm9j
ZXNzLmdldCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIEFT
U0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucygqcHJvY2VzcykpOwogICAgICAgICAgICAgcmV0dXJu
IHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChh
dXRvIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJvY2Vzcyh3ZWJzaXRlRGF0YVN0b3JlKSkg
eworICAgIGlmIChhdXRvIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJvY2Vzcyh3ZWJzaXRl
RGF0YVN0b3JlLCBjYXB0aXZlUG9ydGFsTW9kZSkpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
OiBVc2luZyBwcmV3YXJtZWQgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVpKSIsIHByb2Nlc3Mu
Z2V0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICBpZiAoIXJlZ2lz
dHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRyeVByZXdhcm1XaXRoRG9tYWlu
SW5mb3JtYXRpb24oKnByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluKTsKQEAgLTEwMjcsNyArMTAz
NSw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vz
czsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vi
c2l0ZURhdGFTdG9yZSk7CisgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVE
YXRhU3RvcmUsIGNhcHRpdmVQb3J0YWxNb2RlKTsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKQEAgLTEwNTgsNiArMTA2Niw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAg
fQogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKKyAgICBhdXRvIGNhcHRp
dmVQb3J0YWxNb2RlID0gcGFnZUNvbmZpZ3VyYXRpb24tPmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZCgpID8gV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZTo6RW5hYmxlZCA6IFdlYlBy
b2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkOwogICAgIGF1dG8qIHJlbGF0
ZWRQYWdlID0gcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCk7CiAgICAgaWYgKHJlbGF0
ZWRQYWdlICYmICFyZWxhdGVkUGFnZS0+aXNDbG9zZWQoKSkgewogICAgICAgICAvLyBTaGFyaW5n
IHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3Blbigp
LgpAQCAtMTA2OSwxMiArMTA3OCwxMiBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAg
ICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNv
bWV0aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAgIHByb2Nlc3Mg
PSBkdW1teVByb2Nlc3NQcm94eShwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgp
LT5zZXNzaW9uSUQoKSk7CiAgICAgICAgIGlmICghcHJvY2VzcykgewotICAgICAgICAgICAgcHJv
Y2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jv
c3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFdlYlByb2Nlc3NQcm94eTo6U2hvdWxkTGF1bmNoUHJvY2Vz
czo6Tm8pOworICAgICAgICAgICAgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0
aGlzLCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBjYXB0aXZlUG9ydGFs
TW9kZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6
U2hhcmVkLCBXZWJQcm9jZXNzUHJveHk6OlNob3VsZExhdW5jaFByb2Nlc3M6Ok5vKTsKICAgICAg
ICAgICAgIG1fZHVtbXlQcm9jZXNzUHJveGllcy5hZGQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklEKCksICpwcm9jZXNzKTsKICAgICAgICAgICAgIG1fcHJv
Y2Vzc2VzLmFwcGVuZCgqcHJvY2Vzcyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAg
cHJvY2VzcyA9IHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9IHBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRh
U3RvcmUoKSwgeyB9LCBjYXB0aXZlUG9ydGFsTW9kZSk7CiAKICAgICBSZWZQdHI8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk+IHVzZXJDb250ZW50Q29udHJvbGxlciA9IHBhZ2VDb25maWd1
cmF0aW9uLT51c2VyQ29udGVudENvbnRyb2xsZXIoKTsKICAgICAKQEAgLTE3OTMsOSArMTgwMiw5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVTZXQo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgICAgICBtX3N3YXBwZWRQcm9jZXNzZXNQZXJS
ZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNv
bnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBz
b3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRh
JiBmcmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nl
c3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRh
bE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50
ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVS
TCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWVJbmZvLCBXVEZNb3ZlKGRhdGFT
dG9yZSksIFt0aGlzLCBwYWdlID0gUmVmIHsgcGFnZSB9LCBuYXZpZ2F0aW9uID0gUmVmIHsgbmF2
aWdhdGlvbiB9LCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJj
ZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBTdXNwZW5kZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29u
KSBtdXRhYmxlIHsKKyAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKHBhZ2UsIG5hdmln
YXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIGNhcHRpdmVQb3J0YWxNb2RlLCBmcmFtZUluZm8sIFdURk1vdmUoZGF0
YVN0b3JlKSwgW3RoaXMsIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIG5hdmlnYXRpb24gPSBSZWYgeyBu
YXZpZ2F0aW9uIH0sIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291
cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pIG11dGFibGUgewogICAgICAgICAvLyBXZSBhcmUgcHJvY2Vzcy1zd2FwcGluZyBzbyBhdXRv
bWF0aWMgcHJvY2VzcyBwcmV3YXJtaW5nIHdvdWxkIGJlIGJlbmVmaWNpYWwgaWYgdGhlIGNsaWVu
dCBoYXMgbm90IGV4cGxpY2l0bHkgZW5hYmxlZCAvIGRpc2FibGVkIGl0LgogICAgICAgICBib29s
IGRvaW5nQW5BdXRvbWF0aWNQcm9jZXNzU3dhcCA9IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8gJiYgcHJvY2Vzcy5wdHIoKSAh
PSBzb3VyY2VQcm9jZXNzLnB0cigpOwogICAgICAgICBpZiAoZG9pbmdBbkF1dG9tYXRpY1Byb2Nl
c3NTd2FwICYmICFjb25maWd1cmF0aW9uKCkud2FzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdTZXRC
eUNsaWVudCgpICYmICFjb25maWd1cmF0aW9uKCkuY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9t
YXRpY1Byb2Nlc3NQcmV3YXJtaW5nKCkpIHsKQEAgLTE4MTgsMTggKzE4MjcsMjEgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBj
b25zdCBBUEk6Ok5hdmlnYXQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJv
Y2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9j
ZXNzLCBjb25zdCBVUkwmIHBhZ2VTb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJh
bWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiBkYXRhU3RvcmUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVBy
b2Nlc3MsIGNvbnN0IFVSTCYgcGFnZVNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6OkNhcHRp
dmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFt
ZUluZm8sIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25z
dCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiB0YXJnZXRVUkwg
PSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0byB0YXJnZXRSZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdGFyZ2V0VVJMIH07
CiAKLSAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHBhZ2UgPSBSZWYgeyBwYWdlIH0sIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWlu
LCBkYXRhU3RvcmVdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAgcmV0dXJu
IHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihkYXRhU3RvcmUsIHBhZ2UucHRyKCksIHRhcmdl
dFJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBk
YXRhU3RvcmUsIGNhcHRpdmVQb3J0YWxNb2RlXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7
CisgICAgICAgIHJldHVybiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oZGF0YVN0b3JlLCB0
YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgY2FwdGl2ZVBvcnRhbE1vZGUpOwogICAgIH07CiAKICAg
ICBpZiAodXNlc1NpbmdsZVdlYlByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc291cmNlUHJvY2VzcyksIG51bGxwdHIsICJTaW5nbGUgV2ViUHJvY2Vz
cyBtb2RlIGlzIGVuYWJsZWQiX3MpOwogCisgICAgaWYgKHNvdXJjZVByb2Nlc3MtPmNhcHRpdmVQ
b3J0YWxNb2RlKCkgIT0gY2FwdGl2ZVBvcnRhbE1vZGUpCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsICJQcm9jZXNzIHN3YXAgZHVl
IHRvIGNhcHRpdmUgcG9ydGFsIG1vZGUgY2hhbmdlIl9zKTsKKwogICAgIGlmIChwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6OlllcykK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1Byb2Nlc3MoKSwgbnVs
bHB0ciwgIlByb2Nlc3Mgc3dhcCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQiX3MpOwogCkBA
IC0yMDk3LDQgKzIxMDksMTEgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKK2Jvb2wgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0
ZW0oKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDhhYjk5
NjUzY2Y4NzY1ZGJmZDNiYjhhMTA4NzliNTRjYjUxYTBkYjcuLjhlODBmZGMyOWNlNWNlYTA2ZDYz
YzI0ZmFjNmE0OGY0Mzg4ZGFkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtMTE5LDYgKzExOSw3IEBAIGludCBuZXR3b3JrUHJvY2Vzc1Rocm91Z2hwdXRR
T1MoKTsKIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHdlYlByb2Nlc3NUaHJvdWdo
cHV0UU9TKCk7CiAjZW5kaWYKK2Jvb2wgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0ZW0o
KTsKIAogZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNz
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwpAQCAtMzAzLDcgKzMwNCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0V2ViQ29udGVudENQVVRpbWUoU2Vjb25kcyBjcHVU
aW1lLCB1aW50NjRfdCBhY3Rpdml0eVN0YXRlKTsKIAotICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+
IHByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsgLy8gV2lsbCByZXR1cm4g
YW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldCBvciBkdWUgdG8gY2FjaGluZy4KKyAgICBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURh
dGFTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUHJvY2Vzc1By
b3h5OjpDYXB0aXZlUG9ydGFsTW9kZSk7IC8vIFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBp
ZiBsaW1pdCBpcyBtZXQgb3IgZHVlIHRvIGNhY2hpbmcuCiAKICAgICB2b2lkIHByZXdhcm1Qcm9j
ZXNzKCk7CiAKQEAgLTQzOCw3ICs0MzksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGb3JlZ3Jv
dW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0Nv
dW50ZXIudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzQmFja2dyb3VuZFdlYlByb2Nlc3NlcygpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCk7IH0KIAot
ICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpO
YXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBV
UkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYsIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYpPiYmKTsKKyAgICB2b2lkIHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNv
bnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2Vz
cywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdl
YlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBS
ZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJik7CiAK
ICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIApAQCAtNTA3LDcgKzUwOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9y
eSgpOwogI2VuZGlmCiAKLSAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2Vi
UHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkKTsKKyAgICBSZWY8V2ViUHJvY2Vzc1By
b3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqLCBXZWJQcm9jZXNzUHJv
eHk6OkNhcHRpdmVQb3J0YWxNb2RlLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkID0gV2Vi
UHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtNTE1LDkgKzUxNiw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYs
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKTsKIAotICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChX
ZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVu
ZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgcHJvY2Vzc0Zvck5h
dmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJM
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQ
b3J0YWxNb2RlLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVk
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOwogCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKFdlYnNpdGVEYXRh
U3RvcmUmLCBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIHZvaWQg
aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiwgV2Vic2l0ZURhdGFTdG9y
ZSosIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJl
d2FybWVkOjpObyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDk0ODE3NjA4YzgwOGE2YmUwOWNlYzQ0ZWMwY2EwODk1NWY2MDk1MzUuLjljMDBj
NDdiN2M1Y2QwMjY0ZjI3MDMwMmVhN2JmNjM1NDU4MGI3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDkgKzE2NCw5IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojpmb3JXZWJQYWdlc1dpdGhPcmlnaW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTZWN1CiAgICAgfQogfQogCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRh
U3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09y
aWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBTaG91bGRMYXVuY2hQcm9jZXNzIHNob3VsZExhdW5j
aFByb2Nlc3MpCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUsIENhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCBp
c1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSwgU2hvdWxkTGF1bmNo
UHJvY2VzcyBzaG91bGRMYXVuY2hQcm9jZXNzKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJl
ZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgd2Vic2l0ZURhdGFTdG9yZSwgaXNQ
cmV3YXJtZWQsIGNyb3NzT3JpZ2luTW9kZSkpOworICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigq
bmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgd2Vic2l0ZURhdGFTdG9yZSwgaXNQcmV3
YXJtZWQsIGNyb3NzT3JpZ2luTW9kZSwgY2FwdGl2ZVBvcnRhbE1vZGUpKTsKICAgICBpZiAoc2hv
dWxkTGF1bmNoUHJvY2VzcyA9PSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpIHsKICAgICAgICAg
aWYgKGxpdmVQcm9jZXNzZXNMUlUoKS5zaXplKCkgPj0gc19tYXhQcm9jZXNzQ291bnQpIHsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJv
Y2Vzc1Bvb2xzKCkpCkBAIC0xODQsNyArMTg0LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFT
dG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5l
dyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdh
cm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkKSk7CisgICAgYXV0byBwcm94eSA9IGFk
b3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9y
ZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRh
bE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMo
cHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclNlcnZpY2VXb3Jr
ZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgcHJpdmF0
ZToKIH07CiAjZW5kaWYKIAotV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3Jl
LCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9k
ZSkKK1dlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQg
aXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUsIENhcHRpdmVQb3J0
YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKQogICAgIDogQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KHBy
b2Nlc3NQb29sLmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9iYWNr
Z3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhpcykKICAgICAsIG1fcHJvY2Vzc1Bvb2wocHJv
Y2Vzc1Bvb2wsIGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMgPyBJc1dlYWs6OlllcyA6
IElzV2Vhazo6Tm8pCkBAIC0yMzcsNiArMjM3LDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgog
ICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eT4obWFrZVVuaXF1ZVJlZjxVSVByb3h5Rm9yQ2FwdHVyZT4oKnRo
aXMpKSkKICNlbmRpZgogICAgICwgbV9pc1ByZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdh
cm1lZDo6WWVzKQorICAgICwgbV9jYXB0aXZlUG9ydGFsTW9kZShjYXB0aXZlUG9ydGFsTW9kZSkK
ICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2luTW9kZSkKICAgICAsIG1fc2h1dGRv
d25QcmV2ZW50aW5nU2NvcGVDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsg
aWYgKGV2ZW50ID09IFJlZkNvdW50ZXJFdmVudDo6RGVjcmVtZW50KSBtYXliZVNodXREb3duKCk7
IH0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDE5
NDAwNTg3ODA2NmEzMDhkMzBiYTVjOTA5YjU1ODk1M2Q5YTQ2NzMuLjQyOWMzYzEwNjMxZjM0YmVh
YjU3Mjk3ZTY0Y2Y5MzkzYTgzZmRhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xMzQsOCArMTM0LDkgQEAgcHVibGljOgogICAgIH07CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OworICAgIGVu
dW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wm
LCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9k
ZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNz
ID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIENhcHRpdmVQ
b3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29y
ZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRM
YXVuY2hQcm9jZXNzOjpZZXMpOwogICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVh
dGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsK
QEAgLTQyNyw5ICs0MjgsMTAgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpDcm9z
c09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdp
bk1vZGU7IH0KKyAgICBDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1l
ZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlKTsKKyAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3Nz
T3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5CiAgICAgQVNDSUlMaXRlcmFsIHByb2Nlc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIldlYkNvbnRlbnQiX3M7IH0KQEAgLTQ0MCwxNiArNDQyLDE2IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01lc3NhZ2UmKSBm
aW5hbDsKICAgICAKLSAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAotICAgIHZvaWQgZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcikgb3ZlcnJpZGU7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGNhY2hlTWVk
aWFNSU1FVHlwZXNJbnRlcm5hbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAKKyAg
ICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAorICAgIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5n
KFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG91bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBpc0pJVEVuYWJsZWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNob3VsZEVuYWJs
ZVNoYXJlZEFycmF5QnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1v
ZGUgPT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZDsgfQorICAgIGJvb2wgc2hv
dWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NhcHRp
dmVQb3J0YWxNb2RlID09IENhcHRpdmVQb3J0YWxNb2RlOjpFbmFibGVkOyB9CiAKICAgICB2b2lk
IHZhbGlkYXRlRnJlZXplclN0YXR1cygpOwogCkBAIC02MjIsNiArNjI0LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNQcmV3YXJtZWQ7CisgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgbV9jYXB0aXZl
UG9ydGFsTW9kZSB7IENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCB9OwogICAgIFdlYkNvcmU6
OkNyb3NzT3JpZ2luTW9kZSBtX2Nyb3NzT3JpZ2luTW9kZSB7IFdlYkNvcmU6OkNyb3NzT3JpZ2lu
TW9kZTo6U2hhcmVkIH07CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBib29s
IG1faGFzSXNzdWVkQXR0YWNobWVudEVsZW1lbnRSZWxhdGVkU2FuZGJveEV4dGVuc2lvbnMgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDA1OGNhOWZlZWY2YTM3NGY0ZDY5OTlmNzg1ODU2NjI2YzBiN2FlOGEuLmI4YWQ3MTUxYjc4
MGZiNjE3NDRlY2ZjNzU1YTc5NzA2MTEzYTRkMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0
IGZvciBsYXVuY2hpbmcgQ2FwdGl2ZVBvcnRhbE1vZGUgV2ViUHJvY2Vzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MzcKKyAgICAgICAgPHJk
YXI6Ly84NDQ3MzAzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorCiAyMDIxLTEx
LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaWMt
c3RhdHMucHldIENoYW5nZSBzaGViYW5nIHRvIFB5dGhvbiAzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQppbmRleCA2NjFiY2M2YTA1MTdkYWZhNDRiZmNiMmE2ODlhNGM5YjNkNmRiMGM0
Li5hMDYzMDllY2ZlNmU5ZDY2YmYzMTg5ZDY0OWE5ZTE0YjI2MDYwOTU0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTc2MjYsMyArNzYyNiwxMjggQEAgVEVTVChQcm9jZXNz
U3dhcCwgTmF2aWdhdGluZ0Nyb3NzT3JpZ2luRnJvbUNPT1BTYW1lT3JpZ2luQWxsb3dQb3B1cDQp
CiB7CiAgICAgcnVuQ09PUFByb2Nlc3NTd2FwVGVzdCgic2FtZS1vcmlnaW4tYWxsb3ctcG9wdXAi
LCAidW5zYWZlLW5vbmUiLCAidW5zYWZlLW5vbmUiLCAidW5zYWZlLW5vbmUiLCBJc1NhbWVPcmln
aW46Ok5vLCBEb1NlcnZlclNpZGVSZWRpcmVjdDo6Tm8sIEV4cGVjdFN3YXA6Ok5vKTsKIH0KKwor
Ly8gT24gaU9TLCB0aGUgY2FwdGl2ZSBwb3J0YWwgbW9kZSBBUEkgcmVxdWlyZXMgYSBicm93c2Vy
IGVudGl0bGVtZW50LgorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorCitzdGF0aWMgYm9vbCBp
c0pJVEVuYWJsZWQoV0tXZWJWaWV3ICp3ZWJWaWV3KQoreworICAgIF9fYmxvY2sgYm9vbCBnb3RS
ZXNwb25zZSA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCBpc0pJVEVuYWJsZWRSZXN1bHQgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBfaXNKSVRFbmFibGVkOl4oQk9PTCBpc0pJVEVuYWJsZWQpIHsK
KyAgICAgICAgaXNKSVRFbmFibGVkUmVzdWx0ID0gaXNKSVRFbmFibGVkOworICAgICAgICBnb3RS
ZXNwb25zZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZn
b3RSZXNwb25zZSk7CisgICAgRVhQRUNUX05FKFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmll
cl0sIDApOworICAgIHJldHVybiBpc0pJVEVuYWJsZWRSZXN1bHQ7Cit9CisKK1RFU1QoUHJvY2Vz
c1N3YXAsIE5hdmlnYXRpbmdUb0NhcHRpdmVQb3J0YWxNb2RlKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgRVhQRUNUX1RSVUUoaXNKSVRFbmFi
bGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZE5hdmlnYXRp
b24gPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgZmluaXNoZWROYXZpZ2F0aW9u
ID0gdHJ1ZTsKKyAgICB9OworCisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgcGlkX3QgcGlkMSA9IFt3
ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKHBpZDEsIDApOwor
CisgICAgRVhQRUNUX1RSVUUoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIGRl
bGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5j
ZXMgPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkgeworICAgICAgICBFWFBFQ1RfRkFMU0Uo
cHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKKyAgICAgICAgcHJlZmVyZW5j
ZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID0gWUVTOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgcHJlZmVyZW5jZXMpOworICAgIH07
CisKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICAvLyBX
ZSBzaG91bGQgaGF2ZSBwcm9jZXNzLXN3YXAgZm9yIHRyYW5zaXRpb25pbmcgdG8gY2FwdGl2ZSBw
b3J0YWwgbW9kZS4KKyAgICBFWFBFQ1RfTkUocGlkMSwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVu
dGlmaWVyXSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzSklURW5hYmxlZCh3ZWJWaWV3LmdldCgpKSk7
Cit9CisKK1RFU1QoUHJvY2Vzc1N3YXAsIENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEJ5RGVmYXVs
dFRoZW5PcHRPdXQpCit7CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpLmRlZmF1bHRXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5kZWZhdWx0V2Vi
cGFnZVByZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCA9IFlFUzsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlv
bi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisKKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdlYlZpZXcuZ2V0KCkp
KTsKKyAgICBwaWRfdCBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBkZWxlZ2F0
ZS5nZXQoKS5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
ICopIHsKKyAgICAgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gdHJ1ZTsKKyAgICB9OworCisgICAg
ZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJl
bmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2Vz
ICpwcmVmZXJlbmNlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KHByZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7Cisg
ICAgfTsKKworICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZmluaXNoZWROYXZpZ2F0aW9uKTsKKworICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQo
d2ViVmlldy5nZXQoKSkpOworICAgIEVYUEVDVF9FUShwaWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdKTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIEVYUEVDVF9FUShwaWQxLCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJd
KTsgLy8gU2hvdWxkbid0IGhhdmUgcHJvY2Vzcy1zd2FwcGVkIHNpbmNlIHdlJ3JlIHN0YXlpbmcg
aW4gY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdl
YlZpZXcuZ2V0KCkpKTsKKworICAgIGRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9u
LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqKSkg
eworICAgICAgICBFWFBFQ1RfVFJVRShwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQpOworICAgICAgICBwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSBOTzsg
Ly8gT3B0IG91dCBvZiBjYXB0aXZlIHBvcnRhbCBtb2RlIGZvciB0aGlzIGxvYWQuCisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJl
bmNlcyk7CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUzIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mtc3dhcHBlZCB0byBnZXQgb3V0IG9m
IGNhcHRpdmUgcG9ydGFsIG1vZGUuCisgICAgRVhQRUNUX05FKHBpZDEsIFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVYUEVDVF9UUlVFKGlzSklURW5hYmxlZCh3ZWJWaWV3
LmdldCgpKSk7CisKKyAgICAvLyBjYXB0aXZlIHBvcnRhbCBtb2RlIHNob3VsZCBiZSBkaXNhYmxl
ZCBpbiBuZXcgV2ViVmlld3Mgc2luY2UgaXQgaXMgbm90IGVuYWJsZWQgZ2xvYmFsbHkuCisgICAg
YXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldzIg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBFWFBFQ1RfVFJVRShp
c0pJVEVuYWJsZWQod2ViVmlldzIuZ2V0KCkpKTsKKyAgICBwaWRfdCBwaWQyID0gW3dlYlZpZXcy
IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2VzID0gbmlsOworCisgICAgZmluaXNo
ZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworICAgIEVYUEVDVF9UUlVFKGlzSklURW5h
YmxlZCh3ZWJWaWV3Mi5nZXQoKSkpOworICAgIEVYUEVDVF9FUShwaWQyLCBbd2ViVmlldzIgX3dl
YlByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443642</attachid>
            <date>2021-11-08 17:52:51 -0800</date>
            <delta_ts>2021-11-08 18:37:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211108175250.patch</filename>
            <type>text/plain</type>
            <size>53737</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4YmVhOTNkM2U0NTVkM2Zj
ZWUyMzNhNmUyZThiZGVlYjUyMTlmM2EuLjI2MDI5MWY3MDU2NDY2OTQ3NjExNmZhMjU5Y2Y5OTU3
NzA1ODI3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIENhcHRpdmVQb3J0YWxNb2RlIFdlYlByb2Nlc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3CisgICAgICAgIDxyZGFyOi8v
ODQ0NzMwMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBgV0tXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
YCBBUEkgdG8gYWxsb3cgY2xpZW50cyBhcHBzIHRvIG9wdCBpbiBvcgorICAgICAgICBvdXQgb2Yg
Y2FwdGl2ZSBwb3J0YWwgbW9kZSBmb3IgZWFjaCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNp
b24pLiBGb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGlzIHNldHRpbmcsIHRoZSBj
bGllbnQgY2FuIHNldAorICAgICAgICBgV2ViV2ViVmlld0NvbmZpZ3VyYXRpb24uZGVmYXVsdFdl
YnBhZ2VQcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRgICh3aWxsIGltcGFjdCBh
bGwgdmlld3MKKyAgICAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uKS4KKworICAgICAgICBO
b3RlIHRoYXQgYm90aCB0aGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBieSBhcHBzIHdpdGgg
dGhlIGJyb3dzZXIgZW50aXRsZW1lbnQgb24gaU9TIChubworICAgICAgICByZXN0cmljdGlvbiBv
biBtYWNPUykuIE9uIGlPUywgdGhlIGRlZmF1bHQgdmFsdWUgb2YgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCisgICAgICAgIGRlcGVuZHMgb24gdGhlIGNvcnJl
c3BvbmRpbmcgc3lzdGVtIHNldHRpbmcuIEZvciBub3csIHRoaXMgaXMgc2ltdWxhdGVkIGJ5IGEg
TlNVc2VyRGVmYXVsdCBidXQgaXQKKyAgICAgICAgd2lsbCBldmVudHVhbGx5IGNvbWUgZnJvbSBz
b21ld2hlcmUgZWxzZSAoVENDPykuCisKKyAgICAgICAgV2hlbmV2ZXIgdHJhbnNpdGlvbmluZyBp
biBvciBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZSwgd2UgcHJvY2Vzcy1zd2FwIG9uIG5hdmln
YXRpb24gcG9saWN5CisgICAgICAgIGRlY2lzaW9uLiBXaGVuZXZlciBjYXB0aXZlIHBvcnRhbCBt
b2RlIGlzIGVuYWJsZWQsIHdlIHR1cm4gb2ZmIEpJVCwgZ2VuZXJhdGlvbmFsIGFuZCBjb25jdXJy
ZW50IEdDCisgICAgICAgIGluIHRoZSBXZWJQcm9jZXNzLCBhcyBzb29uIGFzIGl0IGxhdW5jaGVz
LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpj
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJw
YWdlUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIHNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEJ5U3lzdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vz
c0xhdW5jaGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojpz
aG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6
ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNKSVRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG91bGRF
bmFibGVDYXB0aXZlUG9ydGFsTW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdh
cm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJld2FybVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmln
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmln
YXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZEJ5U3lzdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYXB0aXZlUG9ydGFsTW9k
ZSBjb25zdCk6CisKIDIwMjEtMTEtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIEFkZCBhIG5ldyBwYXltZW50IG1ldGhvZCBm
b3Igc2hvd2luZyBBTVMgVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKaW5kZXggZmY3YTQ0YzViYTM2ZmM5YmNmYmRjMzEyYjkz
ZDMzYmI5NWRhNjcyYi4uZjFkYzdlNjlhOTY1ODA5MDViZmUyNmEwZTkyOTZhODQwZjc1ZWM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRy
eVBvaW50LmgKQEAgLTg5LDYgKzg5LDEzIEBAIHZvaWQgWFBDU2VydmljZUluaXRpYWxpemVyKE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfCiAgICAg
aWYgKGluaXRpYWxpemVyTWVzc2FnZSkgewogICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0
X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiY29uZmlndXJlLWpzYy1mb3ItdGVzdGluZyIpKQog
ICAgICAgICAgICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZvclRlc3RpbmcoKTsKKyAgICAgICAg
aWYgKHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVyTWVzc2FnZSwgImVuYWJsZS1j
YXB0aXZlLXBvcnRhbC1tb2RlIikpIHsKKyAgICAgICAgICAgIEpTQzo6RXhlY3V0YWJsZUFsbG9j
YXRvcjo6c2V0SklURW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6Omlu
aXRpYWxpemUoKTsKKyAgICAgICAgICAgIEpTQzo6T3B0aW9uczo6QWxsb3dVbmZpbmFsaXplZEFj
Y2Vzc1Njb3BlIHNjb3BlOworICAgICAgICAgICAgSlNDOjpPcHRpb25zOjp1c2VHZW5lcmF0aW9u
YWxHQygpID0gZmFsc2U7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6OnVzZUNvbmN1cnJlbnRH
QygpID0gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF9i
b29sKGluaXRpYWxpemVyTWVzc2FnZSwgImRpc2FibGUtaml0IikpCiAgICAgICAgICAgICBKU0M6
OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBpZiAo
eHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZW5hYmxlLXNoYXJl
ZC1hcnJheS1idWZmZXIiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWY5ZjFjYTEwN2RkZjFhNWYwY2YzZGJh
MjMwMDEzM2Q5ZTI2NTE3Ni4uMGZmN2U0MGFlNmRiNDk2N2QzZGRkYjY2YjY0YzdhZTIwNGFhMjFj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC0xOTcsNiArMTk3LDEzIEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWUoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1l
CiAgICAgbV91cmxTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
IH0KIAorYm9vbCBQYWdlQ29uZmlndXJhdGlvbjo6Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzKQorICAgICAgICByZXR1
cm4gbV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzLT5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKTsK
KyAgICByZXR1cm4gY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0ZW0oKTsKK30KKwogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIEFwcGxpY2F0aW9uTWFuaWZlc3QqIFBhZ2VD
b25maWd1cmF0aW9uOjphcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggM2Q0
Nzc0MTY0YjdkY2I4YTljNjI3NTM2MWYxMjEyNmEyZDMyMGVkYi4uMjU3NjE1YWM0Y2Q1Mjg5YWJi
YmEzYTBmNDdjZGU4Yzg3MGUxMDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTE4OSw2ICsxODksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2Vy
KGJvb2wgdmFsdWUpIHsgbV9yZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5h
Z2VyID0gdmFsdWU7IH0KICNlbmRpZgogCisgICAgYm9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sPiBtX3Byb2Nlc3NQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZVBvbGljaWVzLmNwcAppbmRleCAzZWE0YjFiOTFkOTlmMzRlZGExOGZlMTJiMTI1
ZDM3OTg5NGExMzY2Li4zMDMxMDVhMzI1NGRjOTNiYzIyZmUwNmQxOTUwNTI4Y2Q5OGJmNGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVQb2xpY2llcy5oIgogCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC03Miw2ICs3
Myw3IEBAIFJlZjxXZWJzaXRlUG9saWNpZXM+IFdlYnNpdGVQb2xpY2llczo6Y29weSgpIGNvbnN0
CiAgICAgcG9saWNpZXMtPnNldEFsbG93U2l0ZVNwZWNpZmljUXVpcmtzVG9PdmVycmlkZUNvbnRl
bnRNb2RlKG1fYWxsb3dTaXRlU3BlY2lmaWNRdWlya3NUb092ZXJyaWRlQ29udGVudE1vZGUpOwog
ICAgIHBvbGljaWVzLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KG1fYXBw
bGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCk7CiAgICAgcG9saWNpZXMtPnNldEFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0KG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHQpOworICAgIHBvbGlj
aWVzLT5zZXRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQobV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQpOwogICAgIHBvbGljaWVzLT5zZXRNb3VzZUV2ZW50UG9saWN5KG1fbW91c2VFdmVudFBvbGlj
eSk7CiAgICAgcmV0dXJuIHBvbGljaWVzOwogfQpAQCAtMTIzLDUgKzEyNSwxMCBAQCBXZWJLaXQ6
OldlYnNpdGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzOjpkYXRhKCkKICAgICB9OwogfQog
Citib29sIFdlYnNpdGVQb2xpY2llczo6Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPyAqbV9jYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQgOiBXZWJLaXQ6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEJ5U3lzdGVt
KCk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5oCmluZGV4IGNkZTA3NTNmZDFjNDM5NjQxMWRjMGI0ZTM0OGE5MzFmNTFiMTcw
ZmQuLjY4NjdhYWMyYjdkZjJjOGQxYTE5NWU2NzcwNTkwZTA1ZmExMDhhYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKQEAgLTEyNSw2
ICsxMjUsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQg
YWxsb3dzQ29udGVudEphdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRK
YXZhU2NyaXB0OyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdChXZWJDb3Jl
OjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNj
cmlwdCA9IGFsbG93czsgfQogCisgICAgYm9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSBj
b25zdDsKKyAgICB2b2lkIHNldENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZChzdGQ6Om9wdGlvbmFs
PGJvb2w+IGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkgeyBtX2NhcHRpdmVQb3J0YWxNb2RlRW5h
YmxlZCA9IGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsgfQorCiAgICAgV2ViQ29yZTo6TW91c2VF
dmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUV2ZW50
UG9saWN5OyB9CiAgICAgdm9pZCBzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNvcmU6Ok1vdXNlRXZl
bnRQb2xpY3kgcG9saWN5KSB7IG1fbW91c2VFdmVudFBvbGljeSA9IHBvbGljeTsgfQogCkBAIC0x
NTcsNiArMTYwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNj
cmlwdCBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0IHsgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQ6OlllcyB9OwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbV9tb3VzZUV2
ZW50UG9saWN5IHsgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeTo6RGVmYXVsdCB9OwogICAgIGJv
b2wgbV9pZGVtcG90ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXMgeyBmYWxz
ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKaW5kZXggNGEyMzZkYTdk
NzU4YWI5NmQ2Yjc1NmQ3NWZjYWQyYTFjM2I3M2QwYS4uMmQ1YjVhODJhZDViNGM3YWE1YzVhYWM0
MTU0OGQ3NWFkNGZiMDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKQEAgLTcxLDQgKzcxLDkgQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogKi8KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKKy8qISBAYWJzdHJhY3QgQSBib29sZWFuIGluZGlj
YXRpbmcgd2hldGhlciBjYXB0aXZlIHBvcnRhbCBtb2RlIGlzIGVuYWJsZWQuCisgQGRpc2N1c3Np
b24gVGhlIGRlZmF1bHQgdmFsdWUgaXMgTk8gb24gbWFjT1MuIE9uIGlPUywgdGhlIGRlZmF1bHQg
dmFsdWUgZGVwZW5kcyBvbiB0aGUgc3lzdGVtIHNldHRpbmcuCisgKi8KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMu
bW0KaW5kZXggNWViMTIwMThkOWE0N2UzNGI2NmVkZDdlZTA4NTgzZTE3ODc0ZjMxYS4uMTdkYjll
Y2ZlYjI1MzJkMTMyMzdmMGY2ZDE4MTAzZDAxMDJkNWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQpA
QCAtMzYsNiArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzg3LDYgKzM5MSwyMCBAQCAt
IChCT09MKWFsbG93c0NvbnRlbnRKYXZhU2NyaXB0CiAgICAgfQogfQogCistICh2b2lkKXNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDooQk9PTCljYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRs
ZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXIiKSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkKCEhY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKK30KKworLSAoQk9PTCljYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQKK3sKKyAgICByZXR1cm4gX3dlYnNpdGVQb2xpY2llcy0+Y2FwdGl2ZVBv
cnRhbE1vZGVFbmFibGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2
b2lkKXNldFByZWZlcnJlZENvbnRlbnRNb2RlOihXS0NvbnRlbnRNb2RlKWNvbnRlbnRNb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQppbmRleCA0YjA0MTRkNDNhODNmYWYzOTU2NzMxNTU4NTY5ZDQ3MTk5ZmIzZDkyLi40MThh
MDlkYWMzOGViOWJmZDUxODllNTc1ZmQwOGUwNTQ2NWU5MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTk2MSw2
ICs5NjEsMTggQEAgaW50IHdlYlByb2Nlc3NUaHJvdWdocHV0UU9TKCkKIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKK2Jvb2wgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0ZW0o
KQoreworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNhY2hlZENhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEdsb2JhbGx5OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW52YWxpZGF0ZSB0
aGUgY2FjaGVkIHZhbHVlIHdoZW4gdGhlIE5TVXNlckRlZmF1bHQgY2hhbmdlcy4KKyAgICBpZiAo
IWNhY2hlZENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5KSB7CisgICAgICAgIC8vIEZJ
WE1FOiBVc2luZyBOU1VzZXJEZWZhdWx0cyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLiBUaGlz
IHNldHRpbmcgc2hvdWxkIGJlIHN0b3JlZCBlbHNld2hlcmUgKFRDQz8pLgorICAgICAgICBjYWNo
ZWRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSA9IFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWQiXTsKKyAgICB9CisgICAgcmV0dXJuICpjYWNoZWRDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWRHbG9iYWxseTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YXBwbGljYXRpb25Jc0Fib3V0
VG9TdXNwZW5kKCkKIHsKICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgImFwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZDogVGVybWluYXRpbmcgbm9uLWNy
aXRpY2FsIHByb2Nlc3NlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA3NTY2YzRlNjQ3NzM5YmJiMWIwZjMxYTM3NTc3
Yjc2MmM2OGExNGVmLi42ZGQ2ZTI0MmI4NWI2Njk3N2ZmY2RhMGQ1MDM2OWUwMzU3OTE5OTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZVNoYXJlZEFycmF5QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZUNhcHRp
dmVQb3J0YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRs
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CmluZGV4IGUyODhlMzA4NGIwZDEyZGQzZGQ4MzFlYjZmMjYzYjQ0ZjdhZmU5NmIuLjI3MmNjOTE0
Zjk1YzY2MzJiYTM2Y2FkOTA4MWY0MmU0OTdhMTI5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpA
QCAtMjAzLDYgKzIwMyw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkK
ICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0
KCksICJkaXNhYmxlLWppdCIsIHRydWUpOwogICAgICAgICBpZiAobV9jbGllbnQtPnNob3VsZEVu
YWJsZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRf
Ym9vbChib290c3RyYXBNZXNzYWdlLmdldCgpLCAiZW5hYmxlLXNoYXJlZC1hcnJheS1idWZmZXIi
LCB0cnVlKTsKKyAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRFbmFibGVDYXB0aXZlUG9ydGFs
TW9kZSgpKQorICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVz
c2FnZS5nZXQoKSwgImVuYWJsZS1jYXB0aXZlLXBvcnRhbC1tb2RlIiwgdHJ1ZSk7CiAgICAgfQog
CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhib290c3RyYXBNZXNzYWdlLmdldCgpLCAi
bWVzc2FnZS1uYW1lIiwgImJvb3RzdHJhcCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggNzJmNTU4ZjdmMDY3NTExNTY0YmViMWJhNWRi
ZjVmYWZiZmViY2NlNS4uY2NiZDYxMjg3ODUwZTczMTY5MWEzMzBjNGUzMGFkM2EzNmUxZjA3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgot
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGll
cy5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBA
IC01MCwxMSArNDksMTEgQEAgc3RhdGljIEhhc2hTZXQ8U3VzcGVuZGVkUGFnZVByb3h5Kj4mIGFs
bFN1c3BlbmRlZFBhZ2VzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1SZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9j
ZXNzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCitSZWZQdHI8
V2ViUHJvY2Vzc1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRl
ZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUpCiB7
CiAgICAgZm9yIChhdXRvKiBzdXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFnZXMoKSkgewog
ICAgICAgICBhdXRvJiBwcm9jZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpOwotICAgICAg
ICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5y
ZWdpc3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9jZXNzLndlYnNp
dGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkg
IT0gQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCkKKyAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nl
c3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9
PSByZWdpc3RyYWJsZURvbWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRh
dGFTdG9yZSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6
SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQb3J0YWxN
b2RlKQogICAgICAgICAgICAgcmV0dXJuICZwcm9jZXNzOwogICAgIH0KICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5k
ZXggZjQ0YWIzYWY1ODk3MDhjZGI5ZjI0OWVkYjViNDFjNGZiZDAxNzY1Mi4uYjZhNGEzOWExMjI1
NDg0NDNhZjQ2NzA1Y2I4NDliM2YyOTJlZmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9j
ZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDMsNyAr
NDQsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLWNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFN1c3BlbmRl
ZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKTsKICAgICB+U3VzcGVuZGVkUGFnZVByb3h5KCk7CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3Mo
V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJl
dXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZTsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBhMzZiYzM1ZDg2YzZhOTUwNDRlOWYyZDE3MGJlYTE1ZTQzZDI4
ZGUzLi5kNzZjMTgwN2U2ZWQ3OTExOTMyMTAyYWQ2OTZkN2FlOTM5YTI0NTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIFBybwogICAgIGlmIChyZWxhdGVkUGFnZSAmJiAhcmVsYXRlZFBhZ2Ut
PmlzQ2xvc2VkKCkpCiAgICAgICAgIG1fcHJvY2VzcyA9IHJlbGF0ZWRQYWdlLT5lbnN1cmVSdW5u
aW5nUHJvY2VzcygpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm9jZXNzID0gcHJvY2Vzc1Bvb2wu
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSwgdGhp
cywgcmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBtX3Byb2Nlc3MgPSBwcm9jZXNzUG9vbC5w
cm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4obV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpLCByZWdp
c3RyYWJsZURvbWFpbiwgc2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSA/IFdlYlByb2Nl
c3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGU6OkVuYWJsZWQgOiBXZWJQcm9jZXNzUHJveHk6OkNh
cHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCk7CiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRy
dWU7CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vz
c1Byb3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTM0MzYsNyArMzQzNiw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24s
IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIGZyYW1lSW5mbywgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBS
ZWYgeyAqbmF2aWdhdGlvbiB9LCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAorICAgIGF1
dG8gY2FwdGl2ZVBvcnRhbE1vZGUgPSAocG9saWNpZXMgPyBwb2xpY2llcy0+Y2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkKCkgOiBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSgpKSA/IFdlYlBy
b2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGU6OkVuYWJsZWQgOiBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZDsKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3Mu
Y29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNhcHRp
dmVQb3J0YWxNb2RlLCBmcmFtZUluZm8sIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
ID0gUmVmIHsgKm5hdmlnYXRpb24gfSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAg
ICAgICAgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5k
ZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1
c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8g
SWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJv
Y2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05h
dmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CkBAIC01NjE5LDkgKzU2MjAs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
Rm9yTmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gcHJvY2Vzc0Zvck5hdmlnYXRpb247CiAgICAgaWYgKGJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNv
bGF0ZWRHcm91cCkKLSAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQ
cm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCk7
CisgICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LmNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUoKSwgbV9wcm9jZXNzLT5jYXB0
aXZlUG9ydGFsTW9kZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NP
cmlnaW5Nb2RlOjpJc29sYXRlZCk7CiAgICAgZWxzZQotICAgICAgICBwcm9jZXNzRm9yTmF2aWdh
dGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7CisgICAgICAgIHBy
b2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JS
ZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHJlc3BvbnNlRG9tYWluLCBtX3By
b2Nlc3MtPmNhcHRpdmVQb3J0YWxNb2RlKCkpOwogCiAgICAgY29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi5yZWxl
YXNlTm9uTnVsbCgpLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIG51bGxw
dHIsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CkBAIC04MzAyLDYgKzgzMDMsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNKSVRFbmFibGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUHJvY2Vzczo6SXNKSVRFbmFibGVkKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCAwKTsKIH0KIApAQCAtMTA4NTAsNiArMTA4NTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNjcm9sbFRvUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UG9p
bnQmIG8KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxUb1JlY3QodGFyZ2V0UmVj
dCwgb3JpZ2luKSk7CiB9CiAKK2Jvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRFbmFibGVDYXB0aXZl
UG9ydGFsTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+Y2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKCk7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2Vi
UGFnZVByb3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTUzNDUw
ZTY4YTk3ZjNkNGU5Y2EwNjViY2UyYjA3NzkwMTJiNDYzMi4uNmY1MTk2OTRmMDljNjMyOWQyOGJl
YTUyNTNlMDFhMWIyYzhhOGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTQ5NCw2ICs0OTQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFByZXZpb3VzbHlW
aXNpdGVkUGF0aChjb25zdCBTdHJpbmcmKTsKIAorICAgIGJvb2wgc2hvdWxkRW5hYmxlQ2FwdGl2
ZVBvcnRhbE1vZGUoKSBjb25zdDsKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBO
U0FycmF5ICpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpIHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJl
c3VsdHMuZ2V0KCk7IH0KICAgICB2b2lkIGRldGVjdERhdGFJbkFsbEZyYW1lcyhPcHRpb25TZXQ8
V2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RGF0YURldGVjdGlvblJlc3VsdCYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzQ2FjaGUuY3BwCmluZGV4IDczOGQxOThiODk2ZmI5Mjg5MzRjMjVkMmFmZWI2NTUzYTUw
ZDhlMDYuLmRiZTcxZWZkYzA5N2MwNDhlMDM0OTdjNTQ3MGEwYjA4NzM1OTRmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKQEAgLTE0OCw3ICsxNDcsNyBAQCBib29sIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vz
cyhzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUHJvY2Vzcz4mJiBjYWNoZWRQcm9jZXNzKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6
OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9kZSkK
IHsKICAgICBhdXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJl
Z2lzdHJhYmxlRG9tYWluKTsKICAgICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJs
ZURvbWFpbi5lbmQoKSkKQEAgLTE1Nyw2ICsxNTYsOSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RAogICAgIGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZk
YXRhU3RvcmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGl0LT52YWx1ZS0+
cHJvY2VzcygpLmNhcHRpdmVQb3J0YWxNb2RlKCkgIT0gY2FwdGl2ZVBvcnRhbE1vZGUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgYXV0byBwcm9jZXNzID0gaXQtPnZhbHVlLT50YWtl
UHJvY2VzcygpOwogICAgIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGl0
KTsKICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coInRha2VQcm9jZXNzOiBUYWtpbmcg
cHJvY2VzcyBmcm9tIFdlYlByb2Nlc3MgY2FjaGUgKHNpemU9JXUsIGNhcGFjaXR5PSV1KSIsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgY2FwYWNpdHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCmluZGV4IDI0OWJiN2Y2NmVjZGIwMDFj
ZjMxMzUyZjJhNTk2ZGM5M2ZjZGVjZDYuLjU3ZmQ5YjBhMTNhNjM4OWM0ODI4YTc4MDY1ZGYwNTI3
MzFkYzE1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzUsNyArMzYs
NiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgV2ViUHJv
Y2Vzc0NhY2hlIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlBy
b2Nlc3NDYWNoZShXZWJQcm9jZXNzUG9vbCYpOwogCiAgICAgYm9vbCBhZGRQcm9jZXNzSWZQb3Nz
aWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiB0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0YWtlUHJvY2Vzcyhjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9j
ZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIHZvaWQgdXBkYXRlQ2FwYWNpdHko
V2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FwYWNpdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBkOWEzMWI1YzFmZTcxZjI4MTgyNWJmYzk4NGVhMzYyYTJlMDFhMzZjLi45MDI3YWQy
YzkxNzc2YTllNzBiY2VjZjI5ZTlmMDczOGM3OWM0MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogICAgIHBsYXRmb3Jt
UmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKTsKIH0KIAotUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCBpc1ByZXdh
cm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSkKK1JlZjxXZWJQcm9jZXNzUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUgY2Fw
dGl2ZVBvcnRhbE1vZGUsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQs
IENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbV90Y2NQcmVmZXJlbmNlRW5hYmxlZCA9IGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwpA
QCAtNjE3LDE0ICs2MTcsMTQgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2Vic2kKICAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQobV90Y2NQcmVm
ZXJlbmNlRW5hYmxlZCk7CiAjZW5kaWYKIAotICAgIGF1dG8gcHJvY2Vzc1Byb3h5ID0gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkLCBj
cm9zc09yaWdpbk1vZGUpOworICAgIGF1dG8gcHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoKnRoaXMsIHdlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0YWxNb2RlLCBpc1By
ZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2Vzcyhw
cm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkKTsKICAgICBtX3Byb2Nl
c3Nlcy5hcHBlbmQocHJvY2Vzc1Byb3h5LmNvcHlSZWYoKSk7CiAKICAgICByZXR1cm4gcHJvY2Vz
c1Byb3h5OwogfQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6dHJ5
VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkK
K1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2FybWVk
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJv
eHk6OkNhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKQogewogICAgIGlmICghbV9w
cmV3YXJtZWRQcm9jZXNzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYzNyw2ICs2Mzcs
OSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdh
cm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzLT5jYXB0aXZlUG9ydGFsTW9kZSgpICE9
IGNhcHRpdmVQb3J0YWxNb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJi
bGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2lu
ZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNv
IHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRh
U3RvcmUuCkBAIC04ODUsNyArODg4LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByZXdhcm1Q
cm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9M
T0coUGVyZm9ybWFuY2VMb2dnaW5nLCAicHJld2FybVByb2Nlc3M6IFByZXdhcm1pbmcgYSBXZWJQ
cm9jZXNzIGZvciBwZXJmb3JtYW5jZSIpOwotICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MobnVsbHB0
ciwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6WWVzKTsKKworICAgIGF1dG8gY2FwdGl2
ZVBvcnRhbE1vZGUgPSBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxl
ZDsKKyAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgY2FwdGl2ZVBvcnRh
bE1vZGUgPSBtX3Byb2Nlc3Nlcy5sYXN0KCktPmNhcHRpdmVQb3J0YWxNb2RlKCk7CisKKyAgICBj
cmVhdGVOZXdXZWJQcm9jZXNzKG51bGxwdHIsIGNhcHRpdmVQb3J0YWxNb2RlLCBXZWJQcm9jZXNz
UHJveHk6OklzUHJld2FybWVkOjpZZXMpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjplbmFi
bGVQcm9jZXNzVGVybWluYXRpb24oKQpAQCAtOTg1LDIzICs5OTMsMjMgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAg
IHJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVTZXQocHJvY2Vzcyk7CiB9CiAKLVJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCitSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0
aXZlUG9ydGFsTW9kZSkKIHsKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nl
c3MocmVnaXN0cmFibGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgICAgIGlmIChh
dXRvIHByb2Nlc3MgPSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURv
bWFpbiwgd2Vic2l0ZURhdGFTdG9yZSwgY2FwdGl2ZVBvcnRhbE1vZGUpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoKnByb2Nlc3MpKTsKICAgICAgICAgICAgIHJl
dHVybiBwcm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBD
aGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJs
ZSBkb21haW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCi0gICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZp
bmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwg
d2Vic2l0ZURhdGFTdG9yZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoKnRoaXMsIHJlZ2lz
dHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlLCBjYXB0aXZlUG9ydGFsTW9kZSkpIHsKICAg
ICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbjogVXNpbmcgV2ViUHJvY2VzcyBmcm9tIGEgU3VzcGVu
ZGVkUGFnZSAocHJvY2Vzcz0lcCwgUElEPSVpKSIsIHByb2Nlc3MuZ2V0KCksIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRh
aW5zKCpwcm9jZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRyeVRha2VQ
cmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgaWYgKGF1dG8gcHJvY2Vz
cyA9IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0
YWxNb2RlKSkgewogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW46IFVzaW5nIHByZXdhcm1lZCBwcm9j
ZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWkpIiwgcHJvY2Vzcy5nZXQoKSwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgp
KQogICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbigqcHJvY2Vzcywg
cmVnaXN0cmFibGVEb21haW4pOwpAQCAtMTAyOCw3ICsxMDM2LDcgQEAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRl
RGF0YVN0b3IKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9CiAgICAgfQot
ICAgIHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBy
ZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSwgY2FwdGl2ZVBvcnRh
bE1vZGUpOwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMTA1OSw2ICsxMDY3
LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICB9CiAKICAgICBSZWZQdHI8V2ViUHJv
Y2Vzc1Byb3h5PiBwcm9jZXNzOworICAgIGF1dG8gY2FwdGl2ZVBvcnRhbE1vZGUgPSBwYWdlQ29u
ZmlndXJhdGlvbi0+Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgPyBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlOjpFbmFibGVkIDogV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9y
dGFsTW9kZTo6RGlzYWJsZWQ7CiAgICAgYXV0byogcmVsYXRlZFBhZ2UgPSBwYWdlQ29uZmlndXJh
dGlvbi0+cmVsYXRlZFBhZ2UoKTsKICAgICBpZiAocmVsYXRlZFBhZ2UgJiYgIXJlbGF0ZWRQYWdl
LT5pc0Nsb3NlZCgpKSB7CiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4g
Y3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCkBAIC0xMDcwLDEyICsxMDc5LDEy
IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2Fz
ZSwgd2UgZGVsYXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxv
YWRlZCBpbiB0aGUgcGFnZS4KICAgICAgICAgcHJvY2VzcyA9IGR1bW15UHJvY2Vzc1Byb3h5KHBh
Z2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPnNlc3Npb25JRCgpKTsKICAgICAg
ICAgaWYgKCFwcm9jZXNzKSB7Ci0gICAgICAgICAgICBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIFdl
YlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwg
V2ViUHJvY2Vzc1Byb3h5OjpTaG91bGRMYXVuY2hQcm9jZXNzOjpObyk7CisgICAgICAgICAgICBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9u
LT53ZWJzaXRlRGF0YVN0b3JlKCksIGNhcHRpdmVQb3J0YWxNb2RlLCBXZWJQcm9jZXNzUHJveHk6
OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFdlYlByb2Nlc3NQcm94
eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgbV9kdW1teVByb2Nlc3NQ
cm94aWVzLmFkZChwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9u
SUQoKSwgKnByb2Nlc3MpOwogICAgICAgICAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKCpwcm9jZXNz
KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBwcm9jZXNzID0gcHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBu
dWxscHRyLCB7IH0pOworICAgICAgICBwcm9jZXNzID0gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCB7IH0sIGNhcHRpdmVQ
b3J0YWxNb2RlKTsKIAogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4g
dXNlckNvbnRlbnRDb250cm9sbGVyID0gcGFnZUNvbmZpZ3VyYXRpb24tPnVzZXJDb250ZW50Q29u
dHJvbGxlcigpOwogICAgIApAQCAtMTc5NCw5ICsxODAzLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldChXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiAgICAgICAgIG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92
ZShyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NG
b3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VV
UkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9k
ZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4m
JiBkYXRhU3RvcmUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgcHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChwYWdlLCBuYXZpZ2F0aW9u
LCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBmcmFtZUluZm8sIFdURk1vdmUoZGF0YVN0b3JlKSwgW3RoaXMsIHBhZ2UgPSBS
ZWYgeyBwYWdlIH0sIG5hdmlnYXRpb24gPSBSZWYgeyBuYXZpZ2F0aW9uIH0sIHNvdXJjZVByb2Nl
c3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFN1c3BlbmRlZFBhZ2VQcm94eSog
c3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgeworICAgIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5j
b3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY2FwdGl2
ZVBvcnRhbE1vZGUsIGZyYW1lSW5mbywgV1RGTW92ZShkYXRhU3RvcmUpLCBbdGhpcywgcGFnZSA9
IFJlZiB7IHBhZ2UgfSwgbmF2aWdhdGlvbiA9IFJlZiB7IG5hdmlnYXRpb24gfSwgc291cmNlUHJv
Y2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgU3VzcGVuZGVkUGFnZVByb3h5
KiBzdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAg
IC8vIFdlIGFyZSBwcm9jZXNzLXN3YXBwaW5nIHNvIGF1dG9tYXRpYyBwcm9jZXNzIHByZXdhcm1p
bmcgd291bGQgYmUgYmVuZWZpY2lhbCBpZiB0aGUgY2xpZW50IGhhcyBub3QgZXhwbGljaXRseSBl
bmFibGVkIC8gZGlzYWJsZWQgaXQuCiAgICAgICAgIGJvb2wgZG9pbmdBbkF1dG9tYXRpY1Byb2Nl
c3NTd2FwID0gcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50OjpObyAmJiBwcm9jZXNzLnB0cigpICE9IHNvdXJjZVByb2Nlc3MucHRyKCk7
CiAgICAgICAgIGlmIChkb2luZ0FuQXV0b21hdGljUHJvY2Vzc1N3YXAgJiYgIWNvbmZpZ3VyYXRp
b24oKS53YXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ1NldEJ5Q2xpZW50KCkgJiYgIWNvbmZpZ3Vy
YXRpb24oKS5jbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmco
KSkgewpAQCAtMTgxOSwxOCArMTgyOCwyMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdAogICAg
IH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVy
bmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgcGFnZVNv
dXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50
ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBwYWdl
U291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBv
cnRhbE1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8mIHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJl
cXVlc3QoKS51cmwoKTsKICAgICBhdXRvIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB0YXJnZXRVUkwgfTsKIAotICAgIGF1dG8gY3JlYXRlTmV3
UHJvY2VzcyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGFnZSA9IFJl
ZiB7IHBhZ2UgfSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4sIGRhdGFTdG9yZV0gKCkgLT4gUmVm
PFdlYlByb2Nlc3NQcm94eT4gewotICAgICAgICByZXR1cm4gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGRhdGFTdG9yZSwgcGFnZS5wdHIoKSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4pOwor
ICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4sIGRhdGFTdG9yZSwgY2FwdGl2ZVBvcnRh
bE1vZGVdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKKyAgICAgICAgcmV0dXJuIHByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbihkYXRhU3RvcmUsIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWlu
LCBjYXB0aXZlUG9ydGFsTW9kZSk7CiAgICAgfTsKIAogICAgIGlmICh1c2VzU2luZ2xlV2ViUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzb3VyY2VQ
cm9jZXNzKSwgbnVsbHB0ciwgIlNpbmdsZSBXZWJQcm9jZXNzIG1vZGUgaXMgZW5hYmxlZCJfcyk7
CiAKKyAgICBpZiAoc291cmNlUHJvY2Vzcy0+Y2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZl
UG9ydGFsTW9kZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1By
b2Nlc3MoKSwgbnVsbHB0ciwgIlByb2Nlc3Mgc3dhcCBkdWUgdG8gY2FwdGl2ZSBwb3J0YWwgbW9k
ZSBjaGFuZ2UiX3MpOworCiAgICAgaWYgKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCAiUHJvY2VzcyBzd2FwIHdh
cyByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCJfcyk7CiAKQEAgLTIwOTgsNCArMjExMCwxMSBAQCBi
b29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQor
Ym9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRCeVN5c3RlbSgpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOGFiOTk2NTNjZjg3NjVkYmZkM2JiOGExMDg3
OWI1NGNiNTFhMGRiNy4uOGU4MGZkYzI5Y2U1Y2VhMDZkNjNjMjRmYWM2YTQ4ZjQzODhkYWRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTksNiArMTE5
LDcgQEAgaW50IG5ldHdvcmtQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogaW50IHdlYlByb2Nlc3NM
YXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgorYm9v
bCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRCeVN5c3RlbSgpOwogCiBlbnVtIGNsYXNzIENhbGxE
b3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCA6IGJvb2w7CkBAIC0zMDMsNyArMzA0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5
U3RhdGUpOwogCi0gICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpOyAvLyBXaWxsIHJldHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGlt
aXQgaXMgbWV0IG9yIGR1ZSB0byBjYWNoaW5nLgorICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2Rl
KTsgLy8gV2lsbCByZXR1cm4gYW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldCBvciBkdWUg
dG8gY2FjaGluZy4KIAogICAgIHZvaWQgcHJld2FybVByb2Nlc3MoKTsKIApAQCAtNDM4LDcgKzQz
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0ZvcmVncm91bmRXZWJQcm9jZXNzZXMoKSBjb25z
dCB7IHJldHVybiBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpOyB9CiAgICAg
Ym9vbCBoYXNCYWNrZ3JvdW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKTsgfQogCi0gICAgdm9pZCBwcm9jZXNzRm9yTmF2
aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgcHJv
Y2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwg
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVS
TCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZl
UG9ydGFsTW9kZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRl
ZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKIAogICAgIHZvaWQgZGlkUmVhY2hHb29k
VGltZVRvUHJld2FybSgpOwogCkBAIC01MDcsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CiAjZW5kaWYKIAotICAgIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSos
IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2Fy
bWVkOjpObywgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQpOworICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZU5ld1dlYlByb2Nl
c3MoV2Vic2l0ZURhdGFTdG9yZSosIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUs
IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2Fy
bWVkOjpObywgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CkBAIC01MTUsOSArNTE2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpOwogCi0gICAg
dm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEFQ
STo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNvbnN0IEZy
YW1lSW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBT
dHJpbmcmKT4mJik7CisgICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
c291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJp
bmcmKT4mJik7CiAKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0cnlUYWtlUHJld2FybWVk
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94
eTo6Q2FwdGl2ZVBvcnRhbE1vZGUpOwogCiAgICAgdm9pZCBpbml0aWFsaXplTmV3V2ViUHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0b3JlKiwgV2ViUHJvY2Vzc1Byb3h5OjpJ
c1ByZXdhcm1lZCA9IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOTQ4MTc2MDhjODA4
YTZiZTA5Y2VjNDRlYzBjYTA4OTU1ZjYwOTUzNS4uOWMwMGM0N2I3YzVjZDAyNjRmMjcwMzAyZWE3
YmY2MzU0NTgwYjdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjQsOSArMTY0LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZvcldlYlBh
Z2VzV2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3UKICAgICB9
CiB9CiAKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9y
ZSwgSXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1v
ZGUsIFNob3VsZExhdW5jaFByb2Nlc3Mgc2hvdWxkTGF1bmNoUHJvY2VzcykKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgQ2FwdGl2ZVBvcnRhbE1v
ZGUgY2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdp
bk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBTaG91bGRMYXVuY2hQcm9jZXNzIHNob3VsZExhdW5jaFBy
b2Nlc3MpCiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5
KHByb2Nlc3NQb29sLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5N
b2RlKSk7CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHBy
b2Nlc3NQb29sLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2Rl
LCBjYXB0aXZlUG9ydGFsTW9kZSkpOwogICAgIGlmIChzaG91bGRMYXVuY2hQcm9jZXNzID09IFNo
b3VsZExhdW5jaFByb2Nlc3M6OlllcykgewogICAgICAgICBpZiAobGl2ZVByb2Nlc3Nlc0xSVSgp
LnNpemUoKSA+PSBzX21heFByb2Nlc3NDb3VudCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKQEAgLTE4NCw3
ICsxODQsNyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2Vy
dmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3Jl
KQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9j
ZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQpKTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNz
UHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENy
b3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAg
ICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
OwogICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CiAgICAgcHJveHktPmNv
bm5lY3QoKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1XZWJQ
cm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2Fy
bWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKQorV2ViUHJvY2Vzc1Byb3h5OjpX
ZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmln
aW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1v
ZGUpCiAgICAgOiBBdXhpbGlhcnlQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wuYWx3YXlzUnVuc0F0
QmFja2dyb3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyKCp0aGlzKQogICAgICwgbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCwgaXNQcmV3YXJtZWQg
PT0gSXNQcmV3YXJtZWQ6OlllcyA/IElzV2Vhazo6WWVzIDogSXNXZWFrOjpObykKQEAgLTIzNyw2
ICsyMzcsNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Piht
YWtlVW5pcXVlUmVmPFVJUHJveHlGb3JDYXB0dXJlPigqdGhpcykpKQogI2VuZGlmCiAgICAgLCBt
X2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCisgICAgLCBtX2Nh
cHRpdmVQb3J0YWxNb2RlKGNhcHRpdmVQb3J0YWxNb2RlKQogICAgICwgbV9jcm9zc09yaWdpbk1v
ZGUoY3Jvc3NPcmlnaW5Nb2RlKQogICAgICwgbV9zaHV0ZG93blByZXZlbnRpbmdTY29wZUNvdW50
ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgeyBpZiAoZXZlbnQgPT0gUmVmQ291bnRl
ckV2ZW50OjpEZWNyZW1lbnQpIG1heWJlU2h1dERvd24oKTsgfSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWI4Yzk5NmVlZjQ4MDA1NWMyOGI2MDQ0
M2E0MDBjYmRhNGU4NDllZS4uZjE2YTU3ZWQ3ZDJiMGYyOTljZjg0MjNkZmExNmZmYTZkNDExZjhh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNCw4
ICsxMzQsOSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNo
UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBDYXB0aXZlUG9ydGFs
TW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OwogCi0gICAgc3RhdGljIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJ
c1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmln
aW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNz
OjpZZXMpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVk
LCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNo
YXJlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7CiAg
ICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdl
YlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwpAQCAtNDI1LDkgKzQyNiwxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdp
bk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQorICAgIENhcHRpdmVQ
b3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0aXZlUG9y
dGFsTW9kZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQ
b29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUpOworICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRh
U3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlLCBDYXB0aXZlUG9y
dGFsTW9kZSk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVy
YWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29udGVudCJfczsgfQpA
QCAtNDM4LDE2ICs0NDAsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJvY2Vzc1dpbGxTaHV0
RG93bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFNlbmRQZW5k
aW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYpIGZpbmFsOwogICAgIAotICAgIC8vIFBy
b2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ci0gICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vz
c0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKLQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgY2FjaGVNZWRpYU1JTUVUeXBlc0ludGVybmFsKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6
Q2xpZW50CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzSklURW5hYmxlZCgp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5hYmxlU2hhcmVkQXJyYXlCdWZmZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZSA9PSBXZWJDb3JlOjpDcm9zc09y
aWdpbk1vZGU6Oklzb2xhdGVkOyB9CisgICAgYm9vbCBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFs
TW9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGUgPT0gQ2FwdGl2
ZVBvcnRhbE1vZGU6OkVuYWJsZWQ7IH0KIAogICAgIHZvaWQgdmFsaWRhdGVGcmVlemVyU3RhdHVz
KCk7CiAKQEAgLTYyMCw2ICs2MjIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hhc0NvbW1p
dHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1ByZXdhcm1l
ZDsKKyAgICBDYXB0aXZlUG9ydGFsTW9kZSBtX2NhcHRpdmVQb3J0YWxNb2RlIHsgQ2FwdGl2ZVBv
cnRhbE1vZGU6OkRpc2FibGVkIH07CiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIG1fY3Jv
c3NPcmlnaW5Nb2RlIHsgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQgfTsKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGJvb2wgbV9oYXNJc3N1ZWRBdHRhY2htZW50
RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGIwYjIyODM0Y2EyMTRhMGYx
MjY1MzAwZDMwNmYzZjZiNzVjOTYyNS4uNTI1NzMxYTg5ZGUwMDhkZDExNWNjOWM0YTMzMDZjYjUx
ZjUzNTE3MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBDYXB0aXZl
UG9ydGFsTW9kZSBXZWJQcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMjczNworICAgICAgICA8cmRhcjovLzg0NDczMDM3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBj
b3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMjEtMTEtMDggIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJzZSByZWRpcmVjdCBhbmQg
bW9kaWZ5LWhlYWRlcnMgYWN0aW9ucyBmb3IgV0tDb250ZW50UnVsZUxpc3QKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDY2MWJjYzZhMDUxN2RhZmE0NGJmY2IyYTY4OWE0Yzli
M2Q2ZGIwYzQuLmEwNjMwOWVjZmU2ZTlkNjZiZjMxODlkNjQ5YTllMTRiMjYwNjA5NTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNzYyNiwzICs3NjI2LDEyOCBAQCBURVNU
KFByb2Nlc3NTd2FwLCBOYXZpZ2F0aW5nQ3Jvc3NPcmlnaW5Gcm9tQ09PUFNhbWVPcmlnaW5BbGxv
d1BvcHVwNCkKIHsKICAgICBydW5DT09QUHJvY2Vzc1N3YXBUZXN0KCJzYW1lLW9yaWdpbi1hbGxv
dy1wb3B1cCIsICJ1bnNhZmUtbm9uZSIsICJ1bnNhZmUtbm9uZSIsICJ1bnNhZmUtbm9uZSIsIElz
U2FtZU9yaWdpbjo6Tm8sIERvU2VydmVyU2lkZVJlZGlyZWN0OjpObywgRXhwZWN0U3dhcDo6Tm8p
OwogfQorCisvLyBPbiBpT1MsIHRoZSBjYXB0aXZlIHBvcnRhbCBtb2RlIEFQSSByZXF1aXJlcyBh
IGJyb3dzZXIgZW50aXRsZW1lbnQuCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisKK3N0YXRp
YyBib29sIGlzSklURW5hYmxlZChXS1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgX19ibG9jayBi
b29sIGdvdFJlc3BvbnNlID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlzSklURW5hYmxlZFJl
c3VsdCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XihCT09MIGlzSklURW5h
YmxlZCkgeworICAgICAgICBpc0pJVEVuYWJsZWRSZXN1bHQgPSBpc0pJVEVuYWJsZWQ7CisgICAg
ICAgIGdvdFJlc3BvbnNlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmdvdFJlc3BvbnNlKTsKKyAgICBFWFBFQ1RfTkUoW3dlYlZpZXcgX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyXSwgMCk7CisgICAgcmV0dXJuIGlzSklURW5hYmxlZFJlc3VsdDsKK30KKworVEVT
VChQcm9jZXNzU3dhcCwgTmF2aWdhdGluZ1RvQ2FwdGl2ZVBvcnRhbE1vZGUpCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBFWFBFQ1RfVFJVRShp
c0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVk
TmF2aWdhdGlvbiA9IGZhbHNlOworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRp
b24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5h
dmlnYXRpb24gPSB0cnVlOworICAgIH07CisKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICBwaWRfdCBw
aWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUocGlk
MSwgMCk7CisKKyAgICBFWFBFQ1RfVFJVRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOwor
CisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQ
cmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZl
cmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVD
VF9GQUxTRShwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOworICAgICAgICBw
cmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSBZRVM7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJlbmNlcyk7
CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVybCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9uKTsKKwor
ICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mtc3dhcCBmb3IgdHJhbnNpdGlvbmluZyB0byBj
YXB0aXZlIHBvcnRhbCBtb2RlLgorICAgIEVYUEVDVF9ORShwaWQxLCBbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdlYlZpZXcu
Z2V0KCkpKTsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgQ2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
QnlEZWZhdWx0VGhlbk9wdE91dCkKK3sKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkuZGVmYXVsdFdlYnBhZ2VQcmVmZXJlbmNlcy5jYXB0
aXZlUG9ydGFsTW9kZUVuYWJsZWQpOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLmRl
ZmF1bHRXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID0gWUVTOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKworICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQod2ViVmll
dy5nZXQoKSkpOworICAgIHBpZF90IHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZp
ZXJdOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOworICAgIH07
CisKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0
aFByZWZlcmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJwYWdlUHJl
ZmVyZW5jZXMgKnByZWZlcmVuY2VzLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUocHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHByZWZlcmVu
Y2VzKTsKKyAgICB9OworCisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgRVhQRUNUX0ZBTFNFKGlzSklU
RW5hYmxlZCh3ZWJWaWV3LmdldCgpKSk7CisgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3IF93
ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7
CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5h
dmlnYXRpb24pOworCisgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl0pOyAvLyBTaG91bGRuJ3QgaGF2ZSBwcm9jZXNzLXN3YXBwZWQgc2luY2Ugd2UncmUg
c3RheWluZyBpbiBjYXB0aXZlIHBvcnRhbCBtb2RlLgorICAgIEVYUEVDVF9GQUxTRShpc0pJVEVu
YWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9u
ICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVu
Y2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHByZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZCk7CisgICAgICAgIHByZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZCA9IE5POyAvLyBPcHQgb3V0IG9mIGNhcHRpdmUgcG9ydGFsIG1vZGUgZm9yIHRoaXMgbG9hZC4K
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7
CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZTMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5h
dmlnYXRpb24pOworCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgcHJvY2Vzcy1zd2FwcGVkIHRvIGdl
dCBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKyAgICBFWFBFQ1RfTkUocGlkMSwgW3dlYlZp
ZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgRVhQRUNUX1RSVUUoaXNKSVRFbmFibGVk
KHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIGNhcHRpdmUgcG9ydGFsIG1vZGUgc2hvdWxkIGJl
IGRpc2FibGVkIGluIG5ldyBXZWJWaWV3cyBzaW5jZSBpdCBpcyBub3QgZW5hYmxlZCBnbG9iYWxs
eS4KKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3
ZWJWaWV3MiBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIEVYUEVD
VF9UUlVFKGlzSklURW5hYmxlZCh3ZWJWaWV3Mi5nZXQoKSkpOworICAgIHBpZF90IHBpZDIgPSBb
d2ViVmlldzIgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIGRlbGVnYXRlLmdldCgpLmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBuaWw7CisKKyAg
ICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldzIgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisgICAgRVhQRUNUX1RSVUUo
aXNKSVRFbmFibGVkKHdlYlZpZXcyLmdldCgpKSk7CisgICAgRVhQRUNUX0VRKHBpZDIsIFt3ZWJW
aWV3MiBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443646</attachid>
            <date>2021-11-08 18:37:12 -0800</date>
            <delta_ts>2021-11-10 11:10:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232737-20211108183711.patch</filename>
            <type>text/plain</type>
            <size>54189</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4YmVhOTNkM2U0NTVkM2Zj
ZWUyMzNhNmUyZThiZGVlYjUyMTlmM2EuLjI2MDI5MWY3MDU2NDY2OTQ3NjExNmZhMjU5Y2Y5OTU3
NzA1ODI3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMTEtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3Ig
bGF1bmNoaW5nIENhcHRpdmVQb3J0YWxNb2RlIFdlYlByb2Nlc3NlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzM3CisgICAgICAgIDxyZGFyOi8v
ODQ0NzMwMzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBgV0tXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVk
YCBBUEkgdG8gYWxsb3cgY2xpZW50cyBhcHBzIHRvIG9wdCBpbiBvcgorICAgICAgICBvdXQgb2Yg
Y2FwdGl2ZSBwb3J0YWwgbW9kZSBmb3IgZWFjaCBuYXZpZ2F0aW9uIChXS1dlYnBhZ2VQcmVmZXJl
bmNlcyBpcyBwYXNzZWQgd2l0aCB0aGUgbmF2aWdhdGlvbgorICAgICAgICBwb2xpY3kgZGVjaXNp
b24pLiBGb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGlzIHNldHRpbmcsIHRoZSBj
bGllbnQgY2FuIHNldAorICAgICAgICBgV2ViV2ViVmlld0NvbmZpZ3VyYXRpb24uZGVmYXVsdFdl
YnBhZ2VQcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRgICh3aWxsIGltcGFjdCBh
bGwgdmlld3MKKyAgICAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uKS4KKworICAgICAgICBO
b3RlIHRoYXQgYm90aCB0aGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBieSBhcHBzIHdpdGgg
dGhlIGJyb3dzZXIgZW50aXRsZW1lbnQgb24gaU9TIChubworICAgICAgICByZXN0cmljdGlvbiBv
biBtYWNPUykuIE9uIGlPUywgdGhlIGRlZmF1bHQgdmFsdWUgb2YgV0tXZWJwYWdlUHJlZmVyZW5j
ZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkCisgICAgICAgIGRlcGVuZHMgb24gdGhlIGNvcnJl
c3BvbmRpbmcgc3lzdGVtIHNldHRpbmcuIEZvciBub3csIHRoaXMgaXMgc2ltdWxhdGVkIGJ5IGEg
TlNVc2VyRGVmYXVsdCBidXQgaXQKKyAgICAgICAgd2lsbCBldmVudHVhbGx5IGNvbWUgZnJvbSBz
b21ld2hlcmUgZWxzZSAoVENDPykuCisKKyAgICAgICAgV2hlbmV2ZXIgdHJhbnNpdGlvbmluZyBp
biBvciBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZSwgd2UgcHJvY2Vzcy1zd2FwIG9uIG5hdmln
YXRpb24gcG9saWN5CisgICAgICAgIGRlY2lzaW9uLiBXaGVuZXZlciBjYXB0aXZlIHBvcnRhbCBt
b2RlIGlzIGVuYWJsZWQsIHdlIHR1cm4gb2ZmIEpJVCwgZ2VuZXJhdGlvbmFsIGFuZCBjb25jdXJy
ZW50IEdDCisgICAgICAgIGluIHRoZSBXZWJQcm9jZXNzLCBhcyBzb29uIGFzIGl0IGxhdW5jaGVz
LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpj
YXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnBhZ2VQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJw
YWdlUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLV2VicGFnZVByZWZlcmVuY2VzIHNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV0tXZWJwYWdlUHJlZmVyZW5j
ZXMgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEJ5U3lzdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vz
c0xhdW5jaGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ojpz
aG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6
ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoRm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aXNKSVRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG91bGRF
bmFibGVDYXB0aXZlUG9ydGFsTW9kZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdh
cm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJld2FybVBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmln
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmln
YXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZEJ5U3lzdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYXB0aXZlUG9ydGFsTW9k
ZSBjb25zdCk6CisKIDIwMjEtMTEtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIEFkZCBhIG5ldyBwYXltZW50IG1ldGhvZCBm
b3Igc2hvd2luZyBBTVMgVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKaW5kZXggZmY3YTQ0YzViYTM2ZmM5YmNmYmRjMzEyYjkz
ZDMzYmI5NWRhNjcyYi4uZjFkYzdlNjlhOTY1ODA5MDViZmUyNmEwZTkyOTZhODQwZjc1ZWM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRy
eVBvaW50LmgKQEAgLTg5LDYgKzg5LDEzIEBAIHZvaWQgWFBDU2VydmljZUluaXRpYWxpemVyKE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfCiAgICAg
aWYgKGluaXRpYWxpemVyTWVzc2FnZSkgewogICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0
X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiY29uZmlndXJlLWpzYy1mb3ItdGVzdGluZyIpKQog
ICAgICAgICAgICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZvclRlc3RpbmcoKTsKKyAgICAgICAg
aWYgKHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVyTWVzc2FnZSwgImVuYWJsZS1j
YXB0aXZlLXBvcnRhbC1tb2RlIikpIHsKKyAgICAgICAgICAgIEpTQzo6RXhlY3V0YWJsZUFsbG9j
YXRvcjo6c2V0SklURW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6Omlu
aXRpYWxpemUoKTsKKyAgICAgICAgICAgIEpTQzo6T3B0aW9uczo6QWxsb3dVbmZpbmFsaXplZEFj
Y2Vzc1Njb3BlIHNjb3BlOworICAgICAgICAgICAgSlNDOjpPcHRpb25zOjp1c2VHZW5lcmF0aW9u
YWxHQygpID0gZmFsc2U7CisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6OnVzZUNvbmN1cnJlbnRH
QygpID0gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF9i
b29sKGluaXRpYWxpemVyTWVzc2FnZSwgImRpc2FibGUtaml0IikpCiAgICAgICAgICAgICBKU0M6
OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBpZiAo
eHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZW5hYmxlLXNoYXJl
ZC1hcnJheS1idWZmZXIiKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWY5ZjFjYTEwN2RkZjFhNWYwY2YzZGJh
MjMwMDEzM2Q5ZTI2NTE3Ni4uMGZmN2U0MGFlNmRiNDk2N2QzZGRkYjY2YjY0YzdhZTIwNGFhMjFj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC0xOTcsNiArMTk3LDEzIEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWUoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1l
CiAgICAgbV91cmxTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
IH0KIAorYm9vbCBQYWdlQ29uZmlndXJhdGlvbjo6Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzKQorICAgICAgICByZXR1
cm4gbV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzLT5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKTsK
KyAgICByZXR1cm4gY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0ZW0oKTsKK30KKwogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIEFwcGxpY2F0aW9uTWFuaWZlc3QqIFBhZ2VD
b25maWd1cmF0aW9uOjphcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggM2Q0
Nzc0MTY0YjdkY2I4YTljNjI3NTM2MWYxMjEyNmEyZDMyMGVkYi4uMjU3NjE1YWM0Y2Q1Mjg5YWJi
YmEzYTBmNDdjZGU4Yzg3MGUxMDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTE4OSw2ICsxODksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2Vy
KGJvb2wgdmFsdWUpIHsgbV9yZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5h
Z2VyID0gdmFsdWU7IH0KICNlbmRpZgogCisgICAgYm9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sPiBtX3Byb2Nlc3NQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZVBvbGljaWVzLmNwcAppbmRleCAzZWE0YjFiOTFkOTlmMzRlZGExOGZlMTJiMTI1
ZDM3OTg5NGExMzY2Li4zMDMxMDVhMzI1NGRjOTNiYzIyZmUwNmQxOTUwNTI4Y2Q5OGJmNGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVQb2xpY2llcy5oIgogCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC03Miw2ICs3
Myw3IEBAIFJlZjxXZWJzaXRlUG9saWNpZXM+IFdlYnNpdGVQb2xpY2llczo6Y29weSgpIGNvbnN0
CiAgICAgcG9saWNpZXMtPnNldEFsbG93U2l0ZVNwZWNpZmljUXVpcmtzVG9PdmVycmlkZUNvbnRl
bnRNb2RlKG1fYWxsb3dTaXRlU3BlY2lmaWNRdWlya3NUb092ZXJyaWRlQ29udGVudE1vZGUpOwog
ICAgIHBvbGljaWVzLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KG1fYXBw
bGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCk7CiAgICAgcG9saWNpZXMtPnNldEFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0KG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHQpOworICAgIHBvbGlj
aWVzLT5zZXRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQobV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWQpOwogICAgIHBvbGljaWVzLT5zZXRNb3VzZUV2ZW50UG9saWN5KG1fbW91c2VFdmVudFBvbGlj
eSk7CiAgICAgcmV0dXJuIHBvbGljaWVzOwogfQpAQCAtMTIzLDUgKzEyNSwxMCBAQCBXZWJLaXQ6
OldlYnNpdGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzOjpkYXRhKCkKICAgICB9OwogfQog
Citib29sIFdlYnNpdGVQb2xpY2llczo6Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPyAqbV9jYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQgOiBXZWJLaXQ6OmNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEJ5U3lzdGVt
KCk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnNpdGVQb2xpY2llcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5oCmluZGV4IGNkZTA3NTNmZDFjNDM5NjQxMWRjMGI0ZTM0OGE5MzFmNTFiMTcw
ZmQuLjY4NjdhYWMyYjdkZjJjOGQxYTE5NWU2NzcwNTkwZTA1ZmExMDhhYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKQEAgLTEyNSw2
ICsxMjUsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQg
YWxsb3dzQ29udGVudEphdmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRK
YXZhU2NyaXB0OyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdChXZWJDb3Jl
OjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNj
cmlwdCA9IGFsbG93czsgfQogCisgICAgYm9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQoKSBj
b25zdDsKKyAgICB2b2lkIHNldENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZChzdGQ6Om9wdGlvbmFs
PGJvb2w+IGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCkgeyBtX2NhcHRpdmVQb3J0YWxNb2RlRW5h
YmxlZCA9IGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZDsgfQorCiAgICAgV2ViQ29yZTo6TW91c2VF
dmVudFBvbGljeSBtb3VzZUV2ZW50UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUV2ZW50
UG9saWN5OyB9CiAgICAgdm9pZCBzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNvcmU6Ok1vdXNlRXZl
bnRQb2xpY3kgcG9saWN5KSB7IG1fbW91c2VFdmVudFBvbGljeSA9IHBvbGljeTsgfQogCkBAIC0x
NTcsNiArMTYwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNj
cmlwdCBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0IHsgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQ6OlllcyB9OwogICAgIFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3kgbV9tb3VzZUV2
ZW50UG9saWN5IHsgV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeTo6RGVmYXVsdCB9OwogICAgIGJv
b2wgbV9pZGVtcG90ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXMgeyBmYWxz
ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKaW5kZXggNGEyMzZkYTdk
NzU4YWI5NmQ2Yjc1NmQ3NWZjYWQyYTFjM2I3M2QwYS4uMmQ1YjVhODJhZDViNGM3YWE1YzVhYWM0
MTU0OGQ3NWFkNGZiMDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLmgKQEAgLTcxLDQgKzcxLDkgQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogKi8KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKKy8qISBAYWJzdHJhY3QgQSBib29sZWFuIGluZGlj
YXRpbmcgd2hldGhlciBjYXB0aXZlIHBvcnRhbCBtb2RlIGlzIGVuYWJsZWQuCisgQGRpc2N1c3Np
b24gVGhlIGRlZmF1bHQgdmFsdWUgaXMgTk8gb24gbWFjT1MuIE9uIGlPUywgdGhlIGRlZmF1bHQg
dmFsdWUgZGVwZW5kcyBvbiB0aGUgc3lzdGVtIHNldHRpbmcuCisgKi8KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIGNhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMu
bW0KaW5kZXggNWViMTIwMThkOWE0N2UzNGI2NmVkZDdlZTA4NTgzZTE3ODc0ZjMxYS4uMTdkYjll
Y2ZlYjI1MzJkMTMyMzdmMGY2ZDE4MTAzZDAxMDJkNWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQpA
QCAtMzYsNiArMzYsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzg3LDYgKzM5MSwyMCBAQCAt
IChCT09MKWFsbG93c0NvbnRlbnRKYXZhU2NyaXB0CiAgICAgfQogfQogCistICh2b2lkKXNldENh
cHRpdmVQb3J0YWxNb2RlRW5hYmxlZDooQk9PTCljYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICghV1RGOjpwcm9jZXNzSGFzRW50aXRs
ZW1lbnQoImNvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXIiKSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q2FwdGl2ZVBvcnRhbE1vZGVFbmFi
bGVkKCEhY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKK30KKworLSAoQk9PTCljYXB0aXZlUG9y
dGFsTW9kZUVuYWJsZWQKK3sKKyAgICByZXR1cm4gX3dlYnNpdGVQb2xpY2llcy0+Y2FwdGl2ZVBv
cnRhbE1vZGVFbmFibGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtICh2
b2lkKXNldFByZWZlcnJlZENvbnRlbnRNb2RlOihXS0NvbnRlbnRNb2RlKWNvbnRlbnRNb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQppbmRleCA0YjA0MTRkNDNhODNmYWYzOTU2NzMxNTU4NTY5ZDQ3MTk5ZmIzZDkyLi40MThh
MDlkYWMzOGViOWJmZDUxODllNTc1ZmQwOGUwNTQ2NWU5MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTk2MSw2
ICs5NjEsMTggQEAgaW50IHdlYlByb2Nlc3NUaHJvdWdocHV0UU9TKCkKIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKK2Jvb2wgY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkQnlTeXN0ZW0o
KQoreworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNhY2hlZENhcHRpdmVQb3J0YWxN
b2RlRW5hYmxlZEdsb2JhbGx5OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW52YWxpZGF0ZSB0
aGUgY2FjaGVkIHZhbHVlIHdoZW4gdGhlIE5TVXNlckRlZmF1bHQgY2hhbmdlcy4KKyAgICBpZiAo
IWNhY2hlZENhcHRpdmVQb3J0YWxNb2RlRW5hYmxlZEdsb2JhbGx5KSB7CisgICAgICAgIC8vIEZJ
WE1FOiBVc2luZyBOU1VzZXJEZWZhdWx0cyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLiBUaGlz
IHNldHRpbmcgc2hvdWxkIGJlIHN0b3JlZCBlbHNld2hlcmUgKFRDQz8pLgorICAgICAgICBjYWNo
ZWRDYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRHbG9iYWxseSA9IFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRDYXB0aXZlUG9ydGFsTW9kZUVu
YWJsZWQiXTsKKyAgICB9CisgICAgcmV0dXJuICpjYWNoZWRDYXB0aXZlUG9ydGFsTW9kZUVuYWJs
ZWRHbG9iYWxseTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YXBwbGljYXRpb25Jc0Fib3V0
VG9TdXNwZW5kKCkKIHsKICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgImFwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZDogVGVybWluYXRpbmcgbm9uLWNy
aXRpY2FsIHByb2Nlc3NlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA3NTY2YzRlNjQ3NzM5YmJiMWIwZjMxYTM3NTc3
Yjc2MmM2OGExNGVmLi42ZGQ2ZTI0MmI4NWI2Njk3N2ZmY2RhMGQ1MDM2OWUwMzU3OTE5OTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNo
ZXIuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDb25maWd1cmVKU0NGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZVNoYXJlZEFycmF5QnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZUNhcHRp
dmVQb3J0YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgdmlydHVhbCBSZWZQdHI8WFBDRXZlbnRIYW5kbGVyPiB4cGNFdmVudEhhbmRs
ZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
CmluZGV4IGUyODhlMzA4NGIwZDEyZGQzZGQ4MzFlYjZmMjYzYjQ0ZjdhZmU5NmIuLjI3MmNjOTE0
Zjk1YzY2MzJiYTM2Y2FkOTA4MWY0MmU0OTdhMTI5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpA
QCAtMjAzLDYgKzIwMyw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkK
ICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0
KCksICJkaXNhYmxlLWppdCIsIHRydWUpOwogICAgICAgICBpZiAobV9jbGllbnQtPnNob3VsZEVu
YWJsZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRf
Ym9vbChib290c3RyYXBNZXNzYWdlLmdldCgpLCAiZW5hYmxlLXNoYXJlZC1hcnJheS1idWZmZXIi
LCB0cnVlKTsKKyAgICAgICAgaWYgKG1fY2xpZW50LT5zaG91bGRFbmFibGVDYXB0aXZlUG9ydGFs
TW9kZSgpKQorICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVz
c2FnZS5nZXQoKSwgImVuYWJsZS1jYXB0aXZlLXBvcnRhbC1tb2RlIiwgdHJ1ZSk7CiAgICAgfQog
CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhib290c3RyYXBNZXNzYWdlLmdldCgpLCAi
bWVzc2FnZS1uYW1lIiwgImJvb3RzdHJhcCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggNzJmNTU4ZjdmMDY3NTExNTY0YmViMWJhNWRi
ZjVmYWZiZmViY2NlNS4uY2NiZDYxMjg3ODUwZTczMTY5MWEzMzBjNGUzMGFkM2EzNmUxZjA3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgot
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGll
cy5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBA
IC01MCwxMSArNDksMTEgQEAgc3RhdGljIEhhc2hTZXQ8U3VzcGVuZGVkUGFnZVByb3h5Kj4mIGFs
bFN1c3BlbmRlZFBhZ2VzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1SZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9j
ZXNzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCitSZWZQdHI8
V2ViUHJvY2Vzc1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRl
ZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUpCiB7
CiAgICAgZm9yIChhdXRvKiBzdXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFnZXMoKSkgewog
ICAgICAgICBhdXRvJiBwcm9jZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpOwotICAgICAg
ICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5y
ZWdpc3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9jZXNzLndlYnNp
dGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkg
IT0gQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCkKKyAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nl
c3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9
PSByZWdpc3RyYWJsZURvbWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRh
dGFTdG9yZSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6
SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQb3J0YWxN
b2RlKQogICAgICAgICAgICAgcmV0dXJuICZwcm9jZXNzOwogICAgIH0KICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5k
ZXggZjQ0YWIzYWY1ODk3MDhjZGI5ZjI0OWVkYjViNDFjNGZiZDAxNzY1Mi4uYjZhNGEzOWExMjI1
NDg0NDNhZjQ2NzA1Y2I4NDliM2YyOTJlZmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9j
ZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDMsNyAr
NDQsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkQ2FjaGU7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLWNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFN1c3BlbmRl
ZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKTsKICAgICB+U3VzcGVuZGVkUGFnZVByb3h5KCk7CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3Mo
V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJl
dXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZTsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBhMzZiYzM1ZDg2YzZhOTUwNDRlOWYyZDE3MGJlYTE1ZTQzZDI4
ZGUzLi5kNzZjMTgwN2U2ZWQ3OTExOTMyMTAyYWQ2OTZkN2FlOTM5YTI0NTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4sIFBybwogICAgIGlmIChyZWxhdGVkUGFnZSAmJiAhcmVsYXRlZFBhZ2Ut
PmlzQ2xvc2VkKCkpCiAgICAgICAgIG1fcHJvY2VzcyA9IHJlbGF0ZWRQYWdlLT5lbnN1cmVSdW5u
aW5nUHJvY2VzcygpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm9jZXNzID0gcHJvY2Vzc1Bvb2wu
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSwgdGhp
cywgcmVnaXN0cmFibGVEb21haW4pOworICAgICAgICBtX3Byb2Nlc3MgPSBwcm9jZXNzUG9vbC5w
cm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4obV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpLCByZWdp
c3RyYWJsZURvbWFpbiwgc2hvdWxkRW5hYmxlQ2FwdGl2ZVBvcnRhbE1vZGUoKSA/IFdlYlByb2Nl
c3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGU6OkVuYWJsZWQgOiBXZWJQcm9jZXNzUHJveHk6OkNh
cHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCk7CiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRy
dWU7CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vz
c1Byb3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTM0MzYsNyArMzQzNiw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24s
IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIGZyYW1lSW5mbywgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBS
ZWYgeyAqbmF2aWdhdGlvbiB9LCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAorICAgIGF1
dG8gY2FwdGl2ZVBvcnRhbE1vZGUgPSAocG9saWNpZXMgPyBwb2xpY2llcy0+Y2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkKCkgOiBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFsTW9kZSgpKSA/IFdlYlBy
b2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGU6OkVuYWJsZWQgOiBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZDsKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3Mu
Y29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNhcHRp
dmVQb3J0YWxNb2RlLCBmcmFtZUluZm8sIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
ID0gUmVmIHsgKm5hdmlnYXRpb24gfSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAg
ICAgICAgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5k
ZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1
c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8g
SWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJv
Y2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05h
dmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7CkBAIC01NjE5LDkgKzU2MjAs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dHJpZ2dlckJyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
Rm9yTmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gcHJvY2Vzc0Zvck5hdmlnYXRpb247CiAgICAgaWYgKGJyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoRGVjaXNpb24gPT0gQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2hEZWNpc2lvbjo6TmV3SXNv
bGF0ZWRHcm91cCkKLSAgICAgICAgcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkuY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSgpLCBXZWJQ
cm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCk7
CisgICAgICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LmNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUoKSwgbV9wcm9jZXNzLT5jYXB0
aXZlUG9ydGFsTW9kZSgpLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgQ3Jvc3NP
cmlnaW5Nb2RlOjpJc29sYXRlZCk7CiAgICAgZWxzZQotICAgICAgICBwcm9jZXNzRm9yTmF2aWdh
dGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7CisgICAgICAgIHBy
b2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JS
ZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHJlc3BvbnNlRG9tYWluLCBtX3By
b2Nlc3MtPmNhcHRpdmVQb3J0YWxNb2RlKCkpOwogCiAgICAgY29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi5yZWxl
YXNlTm9uTnVsbCgpLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIG51bGxw
dHIsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CkBAIC04MzAyLDYgKzgzMDMsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aXNKSVRFbmFibGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgbGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUHJvY2Vzczo6SXNKSVRFbmFibGVkKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCAwKTsKIH0KIApAQCAtMTA4NTAsNiArMTA4NTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNjcm9sbFRvUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UG9p
bnQmIG8KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxUb1JlY3QodGFyZ2V0UmVj
dCwgb3JpZ2luKSk7CiB9CiAKK2Jvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRFbmFibGVDYXB0aXZl
UG9ydGFsTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+Y2FwdGl2
ZVBvcnRhbE1vZGVFbmFibGVkKCk7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2Vi
UGFnZVByb3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTUzNDUw
ZTY4YTk3ZjNkNGU5Y2EwNjViY2UyYjA3NzkwMTJiNDYzMi4uNmY1MTk2OTRmMDljNjMyOWQyOGJl
YTUyNTNlMDFhMWIyYzhhOGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTQ5NCw2ICs0OTQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFByZXZpb3VzbHlW
aXNpdGVkUGF0aChjb25zdCBTdHJpbmcmKTsKIAorICAgIGJvb2wgc2hvdWxkRW5hYmxlQ2FwdGl2
ZVBvcnRhbE1vZGUoKSBjb25zdDsKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBO
U0FycmF5ICpkYXRhRGV0ZWN0aW9uUmVzdWx0cygpIHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJl
c3VsdHMuZ2V0KCk7IH0KICAgICB2b2lkIGRldGVjdERhdGFJbkFsbEZyYW1lcyhPcHRpb25TZXQ8
V2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RGF0YURldGVjdGlvblJlc3VsdCYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzQ2FjaGUuY3BwCmluZGV4IDczOGQxOThiODk2ZmI5Mjg5MzRjMjVkMmFmZWI2NTUzYTUw
ZDhlMDYuLmRiZTcxZWZkYzA5N2MwNDhlMDM0OTdjNTQ3MGEwYjA4NzM1OTRmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKQEAgLTE0OCw3ICsxNDcsNyBAQCBib29sIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vz
cyhzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUHJvY2Vzcz4mJiBjYWNoZWRQcm9jZXNzKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6
OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9kZSkK
IHsKICAgICBhdXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJl
Z2lzdHJhYmxlRG9tYWluKTsKICAgICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJs
ZURvbWFpbi5lbmQoKSkKQEAgLTE1Nyw2ICsxNTYsOSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RAogICAgIGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZk
YXRhU3RvcmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGl0LT52YWx1ZS0+
cHJvY2VzcygpLmNhcHRpdmVQb3J0YWxNb2RlKCkgIT0gY2FwdGl2ZVBvcnRhbE1vZGUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgYXV0byBwcm9jZXNzID0gaXQtPnZhbHVlLT50YWtl
UHJvY2VzcygpOwogICAgIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGl0
KTsKICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coInRha2VQcm9jZXNzOiBUYWtpbmcg
cHJvY2VzcyBmcm9tIFdlYlByb2Nlc3MgY2FjaGUgKHNpemU9JXUsIGNhcGFjaXR5PSV1KSIsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgY2FwYWNpdHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCmluZGV4IDI0OWJiN2Y2NmVjZGIwMDFj
ZjMxMzUyZjJhNTk2ZGM5M2ZjZGVjZDYuLjU3ZmQ5YjBhMTNhNjM4OWM0ODI4YTc4MDY1ZGYwNTI3
MzFkYzE1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzUsNyArMzYs
NiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgV2ViUHJv
Y2Vzc0NhY2hlIHsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlBy
b2Nlc3NDYWNoZShXZWJQcm9jZXNzUG9vbCYpOwogCiAgICAgYm9vbCBhZGRQcm9jZXNzSWZQb3Nz
aWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiB0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0YWtlUHJvY2Vzcyhjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQcm9j
ZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlKTsKIAogICAgIHZvaWQgdXBkYXRlQ2FwYWNpdHko
V2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB1bnNpZ25lZCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FwYWNpdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBkOWEzMWI1YzFmZTcxZjI4MTgyNWJmYzk4NGVhMzYyYTJlMDFhMzZjLi45MDI3YWQy
YzkxNzc2YTllNzBiY2VjZjI5ZTlmMDczOGM3OWM0MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQogICAgIHBsYXRmb3Jt
UmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKTsKIH0KIAotUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZCBpc1ByZXdh
cm1lZCwgQ3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSkKK1JlZjxXZWJQcm9jZXNzUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdlYnNpdGVEYXRhU3RvcmUsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUgY2Fw
dGl2ZVBvcnRhbE1vZGUsIFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQs
IENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgbV90Y2NQcmVmZXJlbmNlRW5hYmxlZCA9IGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwpA
QCAtNjE3LDE0ICs2MTcsMTQgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2Vic2kKICAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQobV90Y2NQcmVm
ZXJlbmNlRW5hYmxlZCk7CiAjZW5kaWYKIAotICAgIGF1dG8gcHJvY2Vzc1Byb3h5ID0gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkLCBj
cm9zc09yaWdpbk1vZGUpOworICAgIGF1dG8gcHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoKnRoaXMsIHdlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0YWxNb2RlLCBpc1By
ZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2Vzcyhw
cm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUsIGlzUHJld2FybWVkKTsKICAgICBtX3Byb2Nl
c3Nlcy5hcHBlbmQocHJvY2Vzc1Byb3h5LmNvcHlSZWYoKSk7CiAKICAgICByZXR1cm4gcHJvY2Vz
c1Byb3h5OwogfQogCi1SZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6dHJ5
VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkK
K1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2FybWVk
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQcm9jZXNzUHJv
eHk6OkNhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKQogewogICAgIGlmICghbV9w
cmV3YXJtZWRQcm9jZXNzKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYzNyw2ICs2Mzcs
OSBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdh
cm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzLT5jYXB0aXZlUG9ydGFsTW9kZSgpICE9
IGNhcHRpdmVQb3J0YWxNb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJi
bGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2lu
ZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNv
IHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRh
U3RvcmUuCkBAIC04ODUsNyArODg4LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByZXdhcm1Q
cm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9M
T0coUGVyZm9ybWFuY2VMb2dnaW5nLCAicHJld2FybVByb2Nlc3M6IFByZXdhcm1pbmcgYSBXZWJQ
cm9jZXNzIGZvciBwZXJmb3JtYW5jZSIpOwotICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MobnVsbHB0
ciwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6WWVzKTsKKworICAgIGF1dG8gY2FwdGl2
ZVBvcnRhbE1vZGUgPSBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxl
ZDsKKyAgICBpZiAoIW1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgY2FwdGl2ZVBvcnRh
bE1vZGUgPSBtX3Byb2Nlc3Nlcy5sYXN0KCktPmNhcHRpdmVQb3J0YWxNb2RlKCk7CisKKyAgICBj
cmVhdGVOZXdXZWJQcm9jZXNzKG51bGxwdHIsIGNhcHRpdmVQb3J0YWxNb2RlLCBXZWJQcm9jZXNz
UHJveHk6OklzUHJld2FybWVkOjpZZXMpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjplbmFi
bGVQcm9jZXNzVGVybWluYXRpb24oKQpAQCAtOTg1LDIzICs5OTMsMjMgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAg
IHJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2FjaGVTZXQocHJvY2Vzcyk7CiB9CiAKLVJlZjxXZWJQ
cm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCitSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0
aXZlUG9ydGFsTW9kZSkKIHsKICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nl
c3MocmVnaXN0cmFibGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgICAgIGlmIChh
dXRvIHByb2Nlc3MgPSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURv
bWFpbiwgd2Vic2l0ZURhdGFTdG9yZSwgY2FwdGl2ZVBvcnRhbE1vZGUpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoKnByb2Nlc3MpKTsKICAgICAgICAgICAgIHJl
dHVybiBwcm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBD
aGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJs
ZSBkb21haW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCi0gICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZp
bmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwg
d2Vic2l0ZURhdGFTdG9yZSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoKnRoaXMsIHJlZ2lz
dHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlLCBjYXB0aXZlUG9ydGFsTW9kZSkpIHsKICAg
ICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgInBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbjogVXNpbmcgV2ViUHJvY2VzcyBmcm9tIGEgU3VzcGVu
ZGVkUGFnZSAocHJvY2Vzcz0lcCwgUElEPSVpKSIsIHByb2Nlc3MuZ2V0KCksIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRh
aW5zKCpwcm9jZXNzKSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRyeVRha2VQ
cmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUpKSB7CisgICAgaWYgKGF1dG8gcHJvY2Vz
cyA9IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0
YWxNb2RlKSkgewogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW46IFVzaW5nIHByZXdhcm1lZCBwcm9j
ZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWkpIiwgcHJvY2Vzcy5nZXQoKSwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgp
KQogICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbigqcHJvY2Vzcywg
cmVnaXN0cmFibGVEb21haW4pOwpAQCAtMTAyOCw3ICsxMDM2LDcgQEAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRl
RGF0YVN0b3IKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9CiAgICAgfQot
ICAgIHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBy
ZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSwgY2FwdGl2ZVBvcnRh
bE1vZGUpOwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMTA1OSw2ICsxMDY3
LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICB9CiAKICAgICBSZWZQdHI8V2ViUHJv
Y2Vzc1Byb3h5PiBwcm9jZXNzOworICAgIGF1dG8gY2FwdGl2ZVBvcnRhbE1vZGUgPSBwYWdlQ29u
ZmlndXJhdGlvbi0+Y2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKCkgPyBXZWJQcm9jZXNzUHJveHk6
OkNhcHRpdmVQb3J0YWxNb2RlOjpFbmFibGVkIDogV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9y
dGFsTW9kZTo6RGlzYWJsZWQ7CiAgICAgYXV0byogcmVsYXRlZFBhZ2UgPSBwYWdlQ29uZmlndXJh
dGlvbi0+cmVsYXRlZFBhZ2UoKTsKICAgICBpZiAocmVsYXRlZFBhZ2UgJiYgIXJlbGF0ZWRQYWdl
LT5pc0Nsb3NlZCgpKSB7CiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4g
Y3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCkBAIC0xMDcwLDEyICsxMDc5LDEy
IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2Fz
ZSwgd2UgZGVsYXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxv
YWRlZCBpbiB0aGUgcGFnZS4KICAgICAgICAgcHJvY2VzcyA9IGR1bW15UHJvY2Vzc1Byb3h5KHBh
Z2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPnNlc3Npb25JRCgpKTsKICAgICAg
ICAgaWYgKCFwcm9jZXNzKSB7Ci0gICAgICAgICAgICBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGUoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIFdl
YlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwg
V2ViUHJvY2Vzc1Byb3h5OjpTaG91bGRMYXVuY2hQcm9jZXNzOjpObyk7CisgICAgICAgICAgICBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9u
LT53ZWJzaXRlRGF0YVN0b3JlKCksIGNhcHRpdmVQb3J0YWxNb2RlLCBXZWJQcm9jZXNzUHJveHk6
OklzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFdlYlByb2Nlc3NQcm94
eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgbV9kdW1teVByb2Nlc3NQ
cm94aWVzLmFkZChwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9u
SUQoKSwgKnByb2Nlc3MpOwogICAgICAgICAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKCpwcm9jZXNz
KTsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBwcm9jZXNzID0gcHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBu
dWxscHRyLCB7IH0pOworICAgICAgICBwcm9jZXNzID0gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9t
YWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCB7IH0sIGNhcHRpdmVQ
b3J0YWxNb2RlKTsKIAogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4g
dXNlckNvbnRlbnRDb250cm9sbGVyID0gcGFnZUNvbmZpZ3VyYXRpb24tPnVzZXJDb250ZW50Q29u
dHJvbGxlcigpOwogICAgIApAQCAtMTc5NCw5ICsxODAzLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldChXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiAgICAgICAgIG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92
ZShyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NG
b3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVS
TCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VV
UkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9k
ZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4m
JiBkYXRhU3RvcmUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgcHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChwYWdlLCBuYXZpZ2F0aW9u
LCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBmcmFtZUluZm8sIFdURk1vdmUoZGF0YVN0b3JlKSwgW3RoaXMsIHBhZ2UgPSBS
ZWYgeyBwYWdlIH0sIG5hdmlnYXRpb24gPSBSZWYgeyBuYXZpZ2F0aW9uIH0sIHNvdXJjZVByb2Nl
c3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFN1c3BlbmRlZFBhZ2VQcm94eSog
c3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgeworICAgIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5j
b3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgY2FwdGl2
ZVBvcnRhbE1vZGUsIGZyYW1lSW5mbywgV1RGTW92ZShkYXRhU3RvcmUpLCBbdGhpcywgcGFnZSA9
IFJlZiB7IHBhZ2UgfSwgbmF2aWdhdGlvbiA9IFJlZiB7IG5hdmlnYXRpb24gfSwgc291cmNlUHJv
Y2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgU3VzcGVuZGVkUGFnZVByb3h5
KiBzdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAg
IC8vIFdlIGFyZSBwcm9jZXNzLXN3YXBwaW5nIHNvIGF1dG9tYXRpYyBwcm9jZXNzIHByZXdhcm1p
bmcgd291bGQgYmUgYmVuZWZpY2lhbCBpZiB0aGUgY2xpZW50IGhhcyBub3QgZXhwbGljaXRseSBl
bmFibGVkIC8gZGlzYWJsZWQgaXQuCiAgICAgICAgIGJvb2wgZG9pbmdBbkF1dG9tYXRpY1Byb2Nl
c3NTd2FwID0gcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50OjpObyAmJiBwcm9jZXNzLnB0cigpICE9IHNvdXJjZVByb2Nlc3MucHRyKCk7
CiAgICAgICAgIGlmIChkb2luZ0FuQXV0b21hdGljUHJvY2Vzc1N3YXAgJiYgIWNvbmZpZ3VyYXRp
b24oKS53YXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ1NldEJ5Q2xpZW50KCkgJiYgIWNvbmZpZ3Vy
YXRpb24oKS5jbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmco
KSkgewpAQCAtMTgxOSwxOCArMTgyOCwyMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdAogICAg
IH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVy
bmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgcGFnZVNv
dXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm8sIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50
ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBwYWdl
U291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBv
cnRhbE1vZGUsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgUmVmPFdlYnNpdGVEYXRh
U3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8mIHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJl
cXVlc3QoKS51cmwoKTsKICAgICBhdXRvIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB0YXJnZXRVUkwgfTsKIAotICAgIGF1dG8gY3JlYXRlTmV3
UHJvY2VzcyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGFnZSA9IFJl
ZiB7IHBhZ2UgfSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4sIGRhdGFTdG9yZV0gKCkgLT4gUmVm
PFdlYlByb2Nlc3NQcm94eT4gewotICAgICAgICByZXR1cm4gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKGRhdGFTdG9yZSwgcGFnZS5wdHIoKSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4pOwor
ICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4sIGRhdGFTdG9yZSwgY2FwdGl2ZVBvcnRh
bE1vZGVdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKKyAgICAgICAgcmV0dXJuIHByb2Nl
c3NGb3JSZWdpc3RyYWJsZURvbWFpbihkYXRhU3RvcmUsIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWlu
LCBjYXB0aXZlUG9ydGFsTW9kZSk7CiAgICAgfTsKIAogICAgIGlmICh1c2VzU2luZ2xlV2ViUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzb3VyY2VQ
cm9jZXNzKSwgbnVsbHB0ciwgIlNpbmdsZSBXZWJQcm9jZXNzIG1vZGUgaXMgZW5hYmxlZCJfcyk7
CiAKKyAgICBpZiAoc291cmNlUHJvY2Vzcy0+Y2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZl
UG9ydGFsTW9kZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1By
b2Nlc3MoKSwgbnVsbHB0ciwgIlByb2Nlc3Mgc3dhcCBkdWUgdG8gY2FwdGl2ZSBwb3J0YWwgbW9k
ZSBjaGFuZ2UiX3MpOworCiAgICAgaWYgKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCAiUHJvY2VzcyBzd2FwIHdh
cyByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCJfcyk7CiAKQEAgLTIwOTgsNCArMjExMCwxMSBAQCBi
b29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQor
Ym9vbCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRCeVN5c3RlbSgpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOGFiOTk2NTNjZjg3NjVkYmZkM2JiOGExMDg3
OWI1NGNiNTFhMGRiNy4uOGU4MGZkYzI5Y2U1Y2VhMDZkNjNjMjRmYWM2YTQ4ZjQzODhkYWRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTksNiArMTE5
LDcgQEAgaW50IG5ldHdvcmtQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogaW50IHdlYlByb2Nlc3NM
YXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgorYm9v
bCBjYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWRCeVN5c3RlbSgpOwogCiBlbnVtIGNsYXNzIENhbGxE
b3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCA6IGJvb2w7CkBAIC0zMDMsNyArMzA0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5
U3RhdGUpOwogCi0gICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYpOyAvLyBXaWxsIHJldHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGlt
aXQgaXMgbWV0IG9yIGR1ZSB0byBjYWNoaW5nLgorICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IHBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQcm9jZXNzUHJveHk6OkNhcHRpdmVQb3J0YWxNb2Rl
KTsgLy8gV2lsbCByZXR1cm4gYW4gZXhpc3Rpbmcgb25lIGlmIGxpbWl0IGlzIG1ldCBvciBkdWUg
dG8gY2FjaGluZy4KIAogICAgIHZvaWQgcHJld2FybVByb2Nlc3MoKTsKIApAQCAtNDM4LDcgKzQz
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0ZvcmVncm91bmRXZWJQcm9jZXNzZXMoKSBjb25z
dCB7IHJldHVybiBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpOyB9CiAgICAg
Ym9vbCBoYXNCYWNrZ3JvdW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKTsgfQogCi0gICAgdm9pZCBwcm9jZXNzRm9yTmF2
aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgcHJv
Y2Vzc0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwg
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVS
TCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5OjpDYXB0aXZl
UG9ydGFsTW9kZSwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRl
ZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKIAogICAgIHZvaWQgZGlkUmVhY2hHb29k
VGltZVRvUHJld2FybSgpOwogCkBAIC01MDcsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CiAjZW5kaWYKIAotICAgIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSos
IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2Fy
bWVkOjpObywgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQpOworICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZU5ld1dlYlByb2Nl
c3MoV2Vic2l0ZURhdGFTdG9yZSosIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUs
IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQgPSBXZWJQcm9jZXNzUHJveHk6OklzUHJld2Fy
bWVkOjpObywgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CkBAIC01MTUsOSArNTE2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpOwogCi0gICAg
dm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEFQ
STo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNvbnN0IEZy
YW1lSW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBT
dHJpbmcmKT4mJik7CisgICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
c291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFdlYlByb2Nlc3NQcm94eTo6Q2FwdGl2ZVBvcnRhbE1vZGUsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJp
bmcmKT4mJik7CiAKLSAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0cnlUYWtlUHJld2FybWVk
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQcm94
eTo6Q2FwdGl2ZVBvcnRhbE1vZGUpOwogCiAgICAgdm9pZCBpbml0aWFsaXplTmV3V2ViUHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkmLCBXZWJzaXRlRGF0YVN0b3JlKiwgV2ViUHJvY2Vzc1Byb3h5OjpJ
c1ByZXdhcm1lZCA9IFdlYlByb2Nlc3NQcm94eTo6SXNQcmV3YXJtZWQ6Ok5vKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOTQ4MTc2MDhjODA4
YTZiZTA5Y2VjNDRlYzBjYTA4OTU1ZjYwOTUzNS4uOWMwMGM0N2I3YzVjZDAyNjRmMjcwMzAyZWE3
YmY2MzU0NTgwYjdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjQsOSArMTY0LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZvcldlYlBh
Z2VzV2l0aE9yaWdpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3UKICAgICB9
CiB9CiAKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9y
ZSwgSXNQcmV3YXJtZWQgaXNQcmV3YXJtZWQsIENyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1v
ZGUsIFNob3VsZExhdW5jaFByb2Nlc3Mgc2hvdWxkTGF1bmNoUHJvY2VzcykKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSwgQ2FwdGl2ZVBvcnRhbE1v
ZGUgY2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkIGlzUHJld2FybWVkLCBDcm9zc09yaWdp
bk1vZGUgY3Jvc3NPcmlnaW5Nb2RlLCBTaG91bGRMYXVuY2hQcm9jZXNzIHNob3VsZExhdW5jaFBy
b2Nlc3MpCiB7Ci0gICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5
KHByb2Nlc3NQb29sLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5N
b2RlKSk7CisgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHBy
b2Nlc3NQb29sLCB3ZWJzaXRlRGF0YVN0b3JlLCBpc1ByZXdhcm1lZCwgY3Jvc3NPcmlnaW5Nb2Rl
LCBjYXB0aXZlUG9ydGFsTW9kZSkpOwogICAgIGlmIChzaG91bGRMYXVuY2hQcm9jZXNzID09IFNo
b3VsZExhdW5jaFByb2Nlc3M6OlllcykgewogICAgICAgICBpZiAobGl2ZVByb2Nlc3Nlc0xSVSgp
LnNpemUoKSA+PSBzX21heFByb2Nlc3NDb3VudCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKQEAgLTE4NCw3
ICsxODQsNyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2Vy
dmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3Jl
KQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9j
ZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NPcmlnaW5N
b2RlOjpTaGFyZWQpKTsKKyAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNz
UHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENy
b3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAg
ICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
OwogICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2Vycyhwcm9jZXNzUG9vbC51c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyRm9yU2VydmljZVdvcmtlcnMoKSk7CiAgICAgcHJveHktPmNv
bm5lY3QoKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1XZWJQ
cm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkIGlzUHJld2Fy
bWVkLCBDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKQorV2ViUHJvY2Vzc1Byb3h5OjpX
ZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZCBpc1ByZXdhcm1lZCwgQ3Jvc3NPcmln
aW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1v
ZGUpCiAgICAgOiBBdXhpbGlhcnlQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wuYWx3YXlzUnVuc0F0
QmFja2dyb3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyKCp0aGlzKQogICAgICwgbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCwgaXNQcmV3YXJtZWQg
PT0gSXNQcmV3YXJtZWQ6OlllcyA/IElzV2Vhazo6WWVzIDogSXNXZWFrOjpObykKQEAgLTIzNyw2
ICsyMzcsNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Piht
YWtlVW5pcXVlUmVmPFVJUHJveHlGb3JDYXB0dXJlPigqdGhpcykpKQogI2VuZGlmCiAgICAgLCBt
X2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCisgICAgLCBtX2Nh
cHRpdmVQb3J0YWxNb2RlKGNhcHRpdmVQb3J0YWxNb2RlKQogICAgICwgbV9jcm9zc09yaWdpbk1v
ZGUoY3Jvc3NPcmlnaW5Nb2RlKQogICAgICwgbV9zaHV0ZG93blByZXZlbnRpbmdTY29wZUNvdW50
ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgeyBpZiAoZXZlbnQgPT0gUmVmQ291bnRl
ckV2ZW50OjpEZWNyZW1lbnQpIG1heWJlU2h1dERvd24oKTsgfSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWI4Yzk5NmVlZjQ4MDA1NWMyOGI2MDQ0
M2E0MDBjYmRhNGU4NDllZS4uZjE2YTU3ZWQ3ZDJiMGYyOTljZjg0MjNkZmExNmZmYTZkNDExZjhh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNCw4
ICsxMzQsOSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNo
UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBDYXB0aXZlUG9ydGFs
TW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OwogCi0gICAgc3RhdGljIFJlZjxXZWJQ
cm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJ
c1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmln
aW5Nb2RlOjpTaGFyZWQsIFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNz
OjpZZXMpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVk
LCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNo
YXJlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7CiAg
ICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdl
YlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwpAQCAtNDI1LDkgKzQyNiwxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdp
bk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQorICAgIENhcHRpdmVQ
b3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0aXZlUG9y
dGFsTW9kZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQ
b29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUpOworICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRh
U3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlLCBDYXB0aXZlUG9y
dGFsTW9kZSk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVy
YWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29udGVudCJfczsgfQpA
QCAtNDM4LDE2ICs0NDAsMTYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJvY2Vzc1dpbGxTaHV0
RG93bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFNlbmRQZW5k
aW5nTWVzc2FnZShjb25zdCBQZW5kaW5nTWVzc2FnZSYpIGZpbmFsOwogICAgIAotICAgIC8vIFBy
b2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ci0gICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vz
c0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKLQogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgY2FjaGVNZWRpYU1JTUVUeXBlc0ludGVybmFsKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6
Q2xpZW50CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENvbmZp
Z3VyZUpTQ0ZvclRlc3RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzSklURW5hYmxlZCgp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2hvdWxkRW5hYmxlU2hhcmVkQXJyYXlCdWZmZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZSA9PSBXZWJDb3JlOjpDcm9zc09y
aWdpbk1vZGU6Oklzb2xhdGVkOyB9CisgICAgYm9vbCBzaG91bGRFbmFibGVDYXB0aXZlUG9ydGFs
TW9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGUgPT0gQ2FwdGl2
ZVBvcnRhbE1vZGU6OkVuYWJsZWQ7IH0KIAogICAgIHZvaWQgdmFsaWRhdGVGcmVlemVyU3RhdHVz
KCk7CiAKQEAgLTYyMCw2ICs2MjIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hhc0NvbW1p
dHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1ByZXdhcm1l
ZDsKKyAgICBDYXB0aXZlUG9ydGFsTW9kZSBtX2NhcHRpdmVQb3J0YWxNb2RlIHsgQ2FwdGl2ZVBv
cnRhbE1vZGU6OkRpc2FibGVkIH07CiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIG1fY3Jv
c3NPcmlnaW5Nb2RlIHsgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQgfTsKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGJvb2wgbV9oYXNJc3N1ZWRBdHRhY2htZW50
RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGIwYjIyODM0Y2EyMTRhMGYx
MjY1MzAwZDMwNmYzZjZiNzVjOTYyNS4uNTI1NzMxYTg5ZGUwMDhkZDExNWNjOWM0YTMzMDZjYjUx
ZjUzNTE3MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBDYXB0aXZl
UG9ydGFsTW9kZSBXZWJQcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMjczNworICAgICAgICA8cmRhcjovLzg0NDczMDM3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBj
b3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMjEtMTEtMDggIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJzZSByZWRpcmVjdCBhbmQg
bW9kaWZ5LWhlYWRlcnMgYWN0aW9ucyBmb3IgV0tDb250ZW50UnVsZUxpc3QKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50
aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0
QVBJLWlPUy5lbnRpdGxlbWVudHMKaW5kZXggNmFjNDVjNjhkNDMzNDRiYWZiNjhlMzRmMzQwNDA3
YTg0MGNkNmYyNi4uMjhjMzY5ODg2MjAxZDFmZDBlMmJjYmM0ZmViMjZjODUyODA2NjhiNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LWlPUy5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMKQEAgLTEwLDUgKzEwLDcgQEAKIAk8dHJ1
ZS8+CiAJPGtleT5jb20uYXBwbGUuUGFzdGVib2FyZC5wYXN0ZS11bmNoZWNrZWQ8L2tleT4KIAk8
dHJ1ZS8+CisgICAgICAgIDxrZXk+Y29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3Nlcjwva2V5
PgorICAgICAgICA8dHJ1ZS8+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW0KaW5kZXggNjYxYmNjNmEwNTE3ZGFmYTQ0YmZjYjJhNjg5YTRjOWIzZDZkYjBj
NC4uMTY5ZmQyMTUzNzY3NjkxZWU2ZTVmNmEzMjNkYzg0MzY5Y2FiOTFlMiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC03NjI2LDMgKzc2MjYsMTIzIEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIE5hdmlnYXRpbmdDcm9zc09yaWdpbkZyb21DT09QU2FtZU9yaWdpbkFsbG93UG9wdXA0
KQogewogICAgIHJ1bkNPT1BQcm9jZXNzU3dhcFRlc3QoInNhbWUtb3JpZ2luLWFsbG93LXBvcHVw
IiwgInVuc2FmZS1ub25lIiwgInVuc2FmZS1ub25lIiwgInVuc2FmZS1ub25lIiwgSXNTYW1lT3Jp
Z2luOjpObywgRG9TZXJ2ZXJTaWRlUmVkaXJlY3Q6Ok5vLCBFeHBlY3RTd2FwOjpObyk7CiB9CisK
K3N0YXRpYyBib29sIGlzSklURW5hYmxlZChXS1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgX19i
bG9jayBib29sIGdvdFJlc3BvbnNlID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlzSklURW5h
YmxlZFJlc3VsdCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0pJVEVuYWJsZWQ6XihCT09MIGlz
SklURW5hYmxlZCkgeworICAgICAgICBpc0pJVEVuYWJsZWRSZXN1bHQgPSBpc0pJVEVuYWJsZWQ7
CisgICAgICAgIGdvdFJlc3BvbnNlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdFJlc3BvbnNlKTsKKyAgICBFWFBFQ1RfTkUoW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXSwgMCk7CisgICAgcmV0dXJuIGlzSklURW5hYmxlZFJlc3VsdDsKK30K
KworVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGluZ1RvQ2FwdGl2ZVBvcnRhbE1vZGUpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBFWFBFQ1Rf
VFJVRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgX19ibG9jayBib29sIGZp
bmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5h
dmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5p
c2hlZE5hdmlnYXRpb24gPSB0cnVlOworICAgIH07CisKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisKKyAgICBw
aWRfdCBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1Rf
TkUocGlkMSwgMCk7CisKKyAgICBFWFBFQ1RfVFJVRShpc0pJVEVuYWJsZWQod2ViVmlldy5nZXQo
KSkpOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLV2VicGFn
ZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVByZWZlcmVuY2VzICopKSB7CisgICAgICAg
IEVYUEVDVF9GQUxTRShwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOworICAg
ICAgICBwcmVmZXJlbmNlcy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQgPSBZRVM7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LCBwcmVmZXJl
bmNlcyk7CisgICAgfTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIHVy
bCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0aW9u
KTsKKworICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3Mtc3dhcCBmb3IgdHJhbnNpdGlvbmlu
ZyB0byBjYXB0aXZlIHBvcnRhbCBtb2RlLgorICAgIEVYUEVDVF9ORShwaWQxLCBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNKSVRFbmFibGVkKHdl
YlZpZXcuZ2V0KCkpKTsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgQ2FwdGl2ZVBvcnRhbE1vZGVF
bmFibGVkQnlEZWZhdWx0VGhlbk9wdE91dCkKK3sKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uod2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkuZGVmYXVsdFdlYnBhZ2VQcmVmZXJlbmNl
cy5jYXB0aXZlUG9ydGFsTW9kZUVuYWJsZWQpOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdl
dCgpLmRlZmF1bHRXZWJwYWdlUHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkID0g
WUVTOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIEVYUEVDVF9GQUxTRShpc0pJVEVuYWJsZWQo
d2ViVmlldy5nZXQoKSkpOworICAgIHBpZF90IHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lk
ZW50aWZpZXJdOworCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmdldCgpLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb24gKikgeworICAgICAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOwor
ICAgIH07CisKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uV2l0aFByZWZlcmVuY2VzID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tXZWJw
YWdlUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKikpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocHJlZmVyZW5jZXMuY2FwdGl2ZVBvcnRhbE1vZGVFbmFibGVkKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHBy
ZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOworCisgICAgRVhQRUNUX0ZBTFNF
KGlzSklURW5hYmxlZCh3ZWJWaWV3LmdldCgpKSk7CisgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0g
ZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
InNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5p
c2hlZE5hdmlnYXRpb24pOworCisgICAgRVhQRUNUX0VRKHBpZDEsIFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl0pOyAvLyBTaG91bGRuJ3QgaGF2ZSBwcm9jZXNzLXN3YXBwZWQgc2luY2Ug
d2UncmUgc3RheWluZyBpbiBjYXB0aXZlIHBvcnRhbCBtb2RlLgorICAgIEVYUEVDVF9GQUxTRShp
c0pJVEVuYWJsZWQod2ViVmlldy5nZXQoKSkpOworCisgICAgZGVsZWdhdGUuZ2V0KCkuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbldpdGhQcmVmZXJlbmNlcyA9IF4oV0tOYXZpZ2F0aW9u
QWN0aW9uICphY3Rpb24sIFdLV2VicGFnZVByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIFdLV2VicGFnZVBy
ZWZlcmVuY2VzICopKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHByZWZlcmVuY2VzLmNhcHRpdmVQ
b3J0YWxNb2RlRW5hYmxlZCk7CisgICAgICAgIHByZWZlcmVuY2VzLmNhcHRpdmVQb3J0YWxNb2Rl
RW5hYmxlZCA9IE5POyAvLyBPcHQgb3V0IG9mIGNhcHRpdmUgcG9ydGFsIG1vZGUgZm9yIHRoaXMg
bG9hZC4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3csIHByZWZlcmVuY2VzKTsKKyAgICB9OworCisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0g
ZmFsc2U7CisgICAgdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
InNpbXBsZTMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5p
c2hlZE5hdmlnYXRpb24pOworCisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgcHJvY2Vzcy1zd2FwcGVk
IHRvIGdldCBvdXQgb2YgY2FwdGl2ZSBwb3J0YWwgbW9kZS4KKyAgICBFWFBFQ1RfTkUocGlkMSwg
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgRVhQRUNUX1RSVUUoaXNKSVRF
bmFibGVkKHdlYlZpZXcuZ2V0KCkpKTsKKworICAgIC8vIGNhcHRpdmUgcG9ydGFsIG1vZGUgc2hv
dWxkIGJlIGRpc2FibGVkIGluIG5ldyBXZWJWaWV3cyBzaW5jZSBpdCBpcyBub3QgZW5hYmxlZCBn
bG9iYWxseS4KKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt3ZWJWaWV3MiBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAg
IEVYUEVDVF9UUlVFKGlzSklURW5hYmxlZCh3ZWJWaWV3Mi5nZXQoKSkpOworICAgIHBpZF90IHBp
ZDIgPSBbd2ViVmlldzIgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIGRlbGVnYXRlLmdl
dCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25XaXRoUHJlZmVyZW5jZXMgPSBuaWw7
CisKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICB1cmwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmll
dzIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisgICAgRVhQRUNU
X1RSVUUoaXNKSVRFbmFibGVkKHdlYlZpZXcyLmdldCgpKSk7CisgICAgRVhQRUNUX0VRKHBpZDIs
IFt3ZWJWaWV3MiBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKK30K
</data>
<flag name="review"
          id="468419"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>