<?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>215595</bug_id>
          
          <creation_ts>2020-08-17 17:01:21 -0700</creation_ts>
          <short_desc>Third party domains are not stored in the case of back/forward navigations</short_desc>
          <delta_ts>2020-08-19 17:39:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680974</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-17 17:01:21 -0700</bug_when>
    <thetext>We should keep per-page loaded third party domains somewhere for when we navigate back/forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680975</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-17 17:02:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/66642893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680982</commentid>
    <comment_count>2</comment_count>
      <attachid>406756</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-17 17:27:39 -0700</bug_when>
    <thetext>Created attachment 406756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681098</commentid>
    <comment_count>3</comment_count>
      <attachid>406756</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-18 09:31:50 -0700</bug_when>
    <thetext>Comment on attachment 406756
Patch

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

Should upload a new version to fix the Windows build.

&gt; Source/WebCore/history/CachedPage.h:40
&gt; +    explicit CachedPage(Page&amp;, Vector&lt;RegistrableDomain&gt;&amp;&amp;);

Most of the benefit of the explicit keyword is gone now that this has two arguments, so we could remove it.

A bit strange that we have to pass this explicitly here. This seems to possibly indicate a problem with the design pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681100</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-18 09:34:31 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 406756 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406756&amp;action=review
&gt; 
&gt; Should upload a new version to fix the Windows build.

Will do.

&gt; 
&gt; &gt; Source/WebCore/history/CachedPage.h:40
&gt; &gt; +    explicit CachedPage(Page&amp;, Vector&lt;RegistrableDomain&gt;&amp;&amp;);
&gt; 
&gt; Most of the benefit of the explicit keyword is gone now that this has two
&gt; arguments, so we could remove it.
&gt; 
&gt; A bit strange that we have to pass this explicitly here. This seems to
&gt; possibly indicate a problem with the design pattern.

I can probably change it to use a setter instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681103</commentid>
    <comment_count>5</comment_count>
      <attachid>406756</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-18 09:44:57 -0700</bug_when>
    <thetext>Comment on attachment 406756
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:2005
&gt; +        BackForwardCache::singleton().addIfCacheable(*history().currentItem(), m_frame.page(), m_frame.loader().client().loadedThirdPartyDomainsForCache());

Why do we need to pass the domain here at the call site. Cannot the CachedPage constructor simply call m_frame.loader().client().loadedThirdPartyDomainsForCache() itself if caching does end up happening?

&gt; Source/WebCore/loader/FrameLoader.cpp:2054
&gt; +        m_client-&gt;restoreThirdPartyDomains(cachedPage-&gt;loadedThirdPartyDomains());

May be nicer to have this inside CachedPage so that all the logic for saving and restoring is inside CachedPage.

&gt; Source/WebCore/loader/FrameLoaderClient.h:377
&gt; +    virtual void restoreThirdPartyDomains(Vector&lt;RegistrableDomain&gt;&amp;) { }

Odd to pass a Vector&lt;RegistrableDomain&gt;&amp; here. You probably want a Vector&lt;RegistrableDomain&gt;&amp;&amp;

Come to think of it though, do we really need a new client function? Cannot we simply replay and call didLoadFromRegistrableDomain() in a loop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681127</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-18 10:56:45 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 406756 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406756&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2005
&gt; &gt; +        BackForwardCache::singleton().addIfCacheable(*history().currentItem(), m_frame.page(), m_frame.loader().client().loadedThirdPartyDomainsForCache());
&gt; 
&gt; Why do we need to pass the domain here at the call site. Cannot the
&gt; CachedPage constructor simply call
&gt; m_frame.loader().client().loadedThirdPartyDomainsForCache() itself if
&gt; caching does end up happening?
&gt; 

Yes, good idea.

&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2054
&gt; &gt; +        m_client-&gt;restoreThirdPartyDomains(cachedPage-&gt;loadedThirdPartyDomains());
&gt; 
&gt; May be nicer to have this inside CachedPage so that all the logic for saving
&gt; and restoring is inside CachedPage.
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderClient.h:377
&gt; &gt; +    virtual void restoreThirdPartyDomains(Vector&lt;RegistrableDomain&gt;&amp;) { }
&gt; 
&gt; Odd to pass a Vector&lt;RegistrableDomain&gt;&amp; here. You probably want a
&gt; Vector&lt;RegistrableDomain&gt;&amp;&amp;
&gt; 
&gt; Come to think of it though, do we really need a new client function? Cannot
&gt; we simply replay and call didLoadFromRegistrableDomain() in a loop?

Good point, I will remove this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681134</commentid>
    <comment_count>7</comment_count>
      <attachid>406795</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-18 11:38:08 -0700</bug_when>
    <thetext>Created attachment 406795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681245</commentid>
    <comment_count>8</comment_count>
      <attachid>406795</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-18 16:51:18 -0700</bug_when>
    <thetext>Comment on attachment 406795
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:2055
&gt; +        for (auto&amp; domain : cachedPage-&gt;loadedThirdPartyDomains())

Why didn&apos;t you move this inside CachedPage::restore() like I suggested? We want cache / restore logic inside CachedPage / CachedFrame as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681246</commentid>
    <comment_count>9</comment_count>
      <attachid>406795</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-18 16:59:47 -0700</bug_when>
    <thetext>Comment on attachment 406795
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:355
&gt; +- (void)_setloadedThirdPartyDomain:(NSString *)domain completionHandler:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

I don&apos;t think &quot;set&quot; in the name is great, given what the method actually does. I think we should use &quot;add&quot; prefix instead. Also, I like when we use &quot;ForTesting&quot; suffix for such things to make it clear what it is for.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1218
&gt; +    Vector&lt;WebCore::RegistrableDomain&gt; loadedThirdPartyDomainsForCache();

Not sure we need the &quot;ForCache&quot; suffix here. Also, this getter should be const. Finally, I think this should return a &apos;const HashSet&lt;RegistrableDomain&gt;&amp;&apos; since this is the most efficient. The call site can call copyToVector() as needed.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1219
&gt; +    void setloadedThirdPartyDomain(WebCore::RegistrableDomain&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

addLoadedThirdPartyDomainForTesting

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:1664
&gt; +    [webView _setloadedThirdPartyDomain:@&quot;example1.com&quot; completionHandler: ^(void) {

I don&apos;t even think we need this setter. Why can&apos;t you simply actually load different domains in the view? At least it would be a real test. Now it is half faked.
See ProcessSwapOnNavigation.mm tests to see how you can load different registrable domains in tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681377</commentid>
    <comment_count>10</comment_count>
      <attachid>406795</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-19 09:38:38 -0700</bug_when>
    <thetext>Comment on attachment 406795
Patch

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

&gt; Source/WebCore/history/CachedPage.h:62
&gt; +    Vector&lt;RegistrableDomain&gt;&amp; loadedThirdPartyDomains() { return m_loadedThirdPartyDomains; }

Can we give this a clearer name? I don&apos;t know from looking at this what this represents?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681380</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 09:45:46 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 406795 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406795&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:355
&gt; &gt; +- (void)_setloadedThirdPartyDomain:(NSString *)domain completionHandler:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; I don&apos;t think &quot;set&quot; in the name is great, given what the method actually
&gt; does. I think we should use &quot;add&quot; prefix instead. Also, I like when we use
&gt; &quot;ForTesting&quot; suffix for such things to make it clear what it is for.
&gt; 

Ok -- can remove this after changing the test probably.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1218
&gt; &gt; +    Vector&lt;WebCore::RegistrableDomain&gt; loadedThirdPartyDomainsForCache();
&gt; 
&gt; Not sure we need the &quot;ForCache&quot; suffix here. Also, this getter should be
&gt; const. Finally, I think this should return a &apos;const
&gt; HashSet&lt;RegistrableDomain&gt;&amp;&apos; since this is the most efficient. The call site
&gt; can call copyToVector() as needed.
&gt; 

I used ForCache because there is already a loadedThirdPartyDomains() function in WebPage.cpp, so the compiler was unhappy. I will change it to be const and return const HashSet&lt;RegistrableDomain&gt;&amp; though. I can change the ForCache name if you have a suggestion.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1219
&gt; &gt; +    void setloadedThirdPartyDomain(WebCore::RegistrableDomain&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; addLoadedThirdPartyDomainForTesting
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:1664
&gt; &gt; +    [webView _setloadedThirdPartyDomain:@&quot;example1.com&quot; completionHandler: ^(void) {
&gt; 
&gt; I don&apos;t even think we need this setter. Why can&apos;t you simply actually load
&gt; different domains in the view? At least it would be a real test. Now it is
&gt; half faked.
&gt; See ProcessSwapOnNavigation.mm tests to see how you can load different
&gt; registrable domains in tests.

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681384</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-19 10:03:18 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #11)
&gt; (In reply to Chris Dumez from comment #9)
&gt; &gt; Comment on attachment 406795 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=406795&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:355
&gt; &gt; &gt; +- (void)_setloadedThirdPartyDomain:(NSString *)domain completionHandler:(void (^)(void))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; 
&gt; &gt; I don&apos;t think &quot;set&quot; in the name is great, given what the method actually
&gt; &gt; does. I think we should use &quot;add&quot; prefix instead. Also, I like when we use
&gt; &gt; &quot;ForTesting&quot; suffix for such things to make it clear what it is for.
&gt; &gt; 
&gt; 
&gt; Ok -- can remove this after changing the test probably.
&gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1218
&gt; &gt; &gt; +    Vector&lt;WebCore::RegistrableDomain&gt; loadedThirdPartyDomainsForCache();
&gt; &gt; 
&gt; &gt; Not sure we need the &quot;ForCache&quot; suffix here. Also, this getter should be
&gt; &gt; const. Finally, I think this should return a &apos;const
&gt; &gt; HashSet&lt;RegistrableDomain&gt;&amp;&apos; since this is the most efficient. The call site
&gt; &gt; can call copyToVector() as needed.
&gt; &gt; 
&gt; 
&gt; I used ForCache because there is already a loadedThirdPartyDomains()
&gt; function in WebPage.cpp, so the compiler was unhappy. I will change it to be
&gt; const and return const HashSet&lt;RegistrableDomain&gt;&amp; though. I can change the
&gt; ForCache name if you have a suggestion.

Maybe we can rename the existing one (which is used for IPC and has a completion handler) to something like: requestLoadedThirdPartyDomains

&gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1219
&gt; &gt; &gt; +    void setloadedThirdPartyDomain(WebCore::RegistrableDomain&amp;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; &gt; 
&gt; &gt; addLoadedThirdPartyDomainForTesting
&gt; &gt; 
&gt; &gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:1664
&gt; &gt; &gt; +    [webView _setloadedThirdPartyDomain:@&quot;example1.com&quot; completionHandler: ^(void) {
&gt; &gt; 
&gt; &gt; I don&apos;t even think we need this setter. Why can&apos;t you simply actually load
&gt; &gt; different domains in the view? At least it would be a real test. Now it is
&gt; &gt; half faked.
&gt; &gt; See ProcessSwapOnNavigation.mm tests to see how you can load different
&gt; &gt; registrable domains in tests.
&gt; 
&gt; Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681388</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 10:06:40 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #10)
&gt; Comment on attachment 406795 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406795&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/history/CachedPage.h:62
&gt; &gt; +    Vector&lt;RegistrableDomain&gt;&amp; loadedThirdPartyDomains() { return m_loadedThirdPartyDomains; }
&gt; 
&gt; Can we give this a clearer name? I don&apos;t know from looking at this what this
&gt; represents?

I would be open to that if you think it is unclear. It represents a list of third party domains that have been loaded on a page via resources/iframes, etc. Other possible ideas: loadedCrossSiteDomains, loadedSubResourceDomains. Let me know if you have other ideas!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681394</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-19 10:24:20 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; Maybe we can rename the existing one (which is used for IPC and has a
&gt; completion handler) to something like: requestLoadedThirdPartyDomains

Or even getXXX. This is part of why we reserve the word get; I think it’s good for completion handler based asynchronous functions as well as ones with out arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681426</commentid>
    <comment_count>15</comment_count>
      <attachid>406862</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 11:42:11 -0700</bug_when>
    <thetext>Created attachment 406862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681429</commentid>
    <comment_count>16</comment_count>
      <attachid>406863</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 11:52:08 -0700</bug_when>
    <thetext>Created attachment 406863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681430</commentid>
    <comment_count>17</comment_count>
      <attachid>406862</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-19 11:53:03 -0700</bug_when>
    <thetext>Comment on attachment 406862
Patch

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

&gt; Source/WebCore/loader/FrameLoaderClient.h:378
&gt; +    virtual const HashSet&lt;RegistrableDomain&gt; loadedThirdPartyDomains() const { return { }; }

const without &amp; is not useful. This should either return a &apos;HashSet&lt;RegistrableDomain&gt;&apos; or a &apos;const HashSet&lt;RegistrableDomain&gt;&amp;&apos;. Likely &apos;HashSet&lt;RegistrableDomain&gt;&apos; here because of this override and this is not performance sensitive code.
Note that maybe FrameLoaderClient::loadedThirdPartyDomains() could return a Vector&lt;RegistrableDomain&gt; (WebPage:: loadedThirdPartyDomains() would keep returning a const HashSet&lt;RegistrableDomain&gt;&amp; though), since we need to make a copy anyway and we end up needing a Vector.

Right now we go from HashSet -&gt; HashSet copy -&gt; Vector.
Ideally, we&apos;d go from HashSet -&gt; Vector directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681432</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 11:56:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; Comment on attachment 406862 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406862&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderClient.h:378
&gt; &gt; +    virtual const HashSet&lt;RegistrableDomain&gt; loadedThirdPartyDomains() const { return { }; }
&gt; 
&gt; const without &amp; is not useful. This should either return a
&gt; &apos;HashSet&lt;RegistrableDomain&gt;&apos; or a &apos;const HashSet&lt;RegistrableDomain&gt;&amp;&apos;.
&gt; Likely &apos;HashSet&lt;RegistrableDomain&gt;&apos; here because of this override and this
&gt; is not performance sensitive code.
&gt; Note that maybe FrameLoaderClient::loadedThirdPartyDomains() could return a
&gt; Vector&lt;RegistrableDomain&gt; (WebPage:: loadedThirdPartyDomains() would keep
&gt; returning a const HashSet&lt;RegistrableDomain&gt;&amp; though), since we need to make
&gt; a copy anyway and we end up needing a Vector.
&gt; 
&gt; Right now we go from HashSet -&gt; HashSet copy -&gt; Vector.
&gt; Ideally, we&apos;d go from HashSet -&gt; Vector directly.

Ahh smart, I see. Thanks for explaining, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681437</commentid>
    <comment_count>19</comment_count>
      <attachid>406865</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 12:10:00 -0700</bug_when>
    <thetext>Created attachment 406865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681461</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-19 13:36:53 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #13)
&gt; (In reply to Sam Weinig from comment #10)
&gt; &gt; Comment on attachment 406795 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=406795&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/history/CachedPage.h:62
&gt; &gt; &gt; +    Vector&lt;RegistrableDomain&gt;&amp; loadedThirdPartyDomains() { return m_loadedThirdPartyDomains; }
&gt; &gt; 
&gt; &gt; Can we give this a clearer name? I don&apos;t know from looking at this what this
&gt; &gt; represents?
&gt; 
&gt; I would be open to that if you think it is unclear. It represents a list of
&gt; third party domains that have been loaded on a page via resources/iframes,
&gt; etc. Other possible ideas: loadedCrossSiteDomains, loadedSubResourceDomains.
&gt; Let me know if you have other ideas!

So its the set of domains that the page (including any subframes) has loaded any resources from? Does this include all subresource types? (e.g. iframes, images, scripts, etc?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681463</commentid>
    <comment_count>21</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 13:40:37 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #20)
&gt; (In reply to katherine_cheney from comment #13)
&gt; &gt; (In reply to Sam Weinig from comment #10)
&gt; &gt; &gt; Comment on attachment 406795 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=406795&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/history/CachedPage.h:62
&gt; &gt; &gt; &gt; +    Vector&lt;RegistrableDomain&gt;&amp; loadedThirdPartyDomains() { return m_loadedThirdPartyDomains; }
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we give this a clearer name? I don&apos;t know from looking at this what this
&gt; &gt; &gt; represents?
&gt; &gt; 
&gt; &gt; I would be open to that if you think it is unclear. It represents a list of
&gt; &gt; third party domains that have been loaded on a page via resources/iframes,
&gt; &gt; etc. Other possible ideas: loadedCrossSiteDomains, loadedSubResourceDomains.
&gt; &gt; Let me know if you have other ideas!
&gt; 
&gt; So its the set of domains that the page (including any subframes) has loaded
&gt; any resources from? Does this include all subresource types? (e.g. iframes,
&gt; images, scripts, etc?)

Yes, as long as the domain is not the same as the first party domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681464</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-19 13:46:55 -0700</bug_when>
    <thetext>I think we really want the word &quot;subresource&quot; in there. (One word, not two words &quot;sub resource&quot;.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681465</commentid>
    <comment_count>23</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 13:55:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #22)
&gt; I think we really want the word &quot;subresource&quot; in there. (One word, not two
&gt; words &quot;sub resource&quot;.)

Ok. Maybe loadedSubresourceDomains, or even just subresourceDomains?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681490</commentid>
    <comment_count>24</comment_count>
      <attachid>406865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-19 15:16:56 -0700</bug_when>
    <thetext>Comment on attachment 406865
Patch

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

r=me with nit fix. Please address naming issue raised by Darin &amp; Sam before landing too.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6836
&gt; +const HashSet&lt;WebCore::RegistrableDomain&gt;&amp; WebPage::loadedThirdPartyDomains() const

This could be inlined in the header given how trivial it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681530</commentid>
    <comment_count>25</comment_count>
      <attachid>406888</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 16:54:52 -0700</bug_when>
    <thetext>Created attachment 406888
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681531</commentid>
    <comment_count>26</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-08-19 16:55:08 -0700</bug_when>
    <thetext>This patch changes the name from loadedThirdPartyDomains to loadedSubresourceDomains based on the comments on this thread. Sam or Darin, if you have more thoughts on the name I can post a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681548</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-19 17:21:01 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #26)
&gt; This patch changes the name from loadedThirdPartyDomains to
&gt; loadedSubresourceDomains based on the comments on this thread. Sam or Darin,
&gt; if you have more thoughts on the name I can post a followup patch.

I like that name. I think being explicit about &quot;these are the domains all the subresources are in&quot; but implicit about &quot;but we leave out the first party domain&quot; is the right call. A comment somewhere could state the latter rule if we think someone will be confused about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681557</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-19 17:39:09 -0700</bug_when>
    <thetext>Committed r265916: &lt;https://trac.webkit.org/changeset/265916&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406888.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406756</attachid>
            <date>2020-08-17 17:27:39 -0700</date>
            <delta_ts>2020-08-18 11:38:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215595-20200817172738.patch</filename>
            <type>text/plain</type>
            <size>21814</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NGM1MDg0NDNkNjBi
YmNjYzM5YTk4OWM5MTY1OTE0MjhhNDE0ZS4uNmZkMzkzZTYxYTQ2MDExNDY4ZDRiNmY3ZWMzMGU2
ODgxYTBlYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA4LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoaXJkIHBh
cnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3YXJkIG5h
dmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3JlIGN1cnJlbnQgcGFnZSB0
aGlyZCBwYXJ0eSBkb21haW5zIGluIENhY2hlZFBhZ2UgYW5kIGFkZCB0d28gCisgICAgICAgIEZy
YW1lTG9hZGVyQ2xpZW50IGZ1bmN0aW9ucyB0byBzdG9yZSBhbmQgcmVzdG9yZSBsb2FkZWQgdGhp
cmQgcGFydHkKKyAgICAgICAgZG9tYWlucyBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2
aWdhdGlvbnMuCisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAg
ICAqIGhpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVk
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKToKKyAg
ICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBh
Z2U6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFs
TG9hZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjAtMDgt
MTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSBzaG91bGQgYmUgYSBjb25zdHJ1Y3RvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkMzNkYzkxZGMyMjEwNTVkNzRhMzI3MWM2ZDVjOGNjYjhkOWZiODMzLi44NTczMWU5ODhj
YTQ5ODVkYzM4NmZlN2ExY2FlODE2Njk4OWVjMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDIwLTA4LTE3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIFRoaXJkIHBhcnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ug
b2YgYmFjay9mb3J3YXJkIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQy
ODkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0
b3JlIHBlci1wYWdlIGxvYWRlZCB0aGlyZCBwYXJ0eSBkb21haW5zIGluIENhY2hlZFBhZ2Ugc28g
d2UgY2FuCisgICAgICAgIHJlc3RvcmUgdGhlbSB3aGVuIG5hdmlnYXRpbmcgdXNpbmcgdGhlIGJh
Y2svZm9yd2FyZCBsaXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRsb2FkZWRUaGlyZFBhcnR5RG9tYWluKToK
KyAgICAgICAgU1BJIG5lZWRlZCB0byBzZXQgdGhpcmQgcGFydGllcyBmb3IgdGVzdGluZy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc3RvcmVUaGlyZFBhcnR5RG9tYWlucyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpsb2FkZWRUaGlyZFBhcnR5RG9tYWlu
c0ZvckNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kRm9yUHJvY2Vzc1N3YXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvckNhY2hlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVUaGlyZFBhcnR5RG9tYWlucyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wOC0xNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZW1v
dmUgc3VwcG9ydCBmb3IgTlBBUEkgcGx1Z2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggOTE1N2ExMDY4N2NlYmMxODU0YjEzMWFiNGVjM2I2ODQz
ODg2YWVmMS4uMGI3YjBjYTZiN2U0Yzk2ZDAzYzM5Yjc3ZTcxMDUwYTgxNjA4MDFlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC00MjcsNyArNDI3
LDcgQEAgc3RhdGljIHZvaWQgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVseShGcmFtZSYgZnJh
bWUpCiAgICAgICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoKmNoaWxkKTsKIH0KIAot
Ym9vbCBCYWNrRm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwg
UGFnZSogcGFnZSkKK2Jvb2wgQmFja0ZvcndhcmRDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9y
eUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBsb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucykKIHsKICAgICBpZiAoaXRlbS5pc0luQmFja0ZvcndhcmRDYWNo
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NzEsNyArNDcxLDcgQEAgYm9vbCBCYWNr
Rm9yd2FyZENhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFn
ZSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0
aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBz
Y3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1ha2VV
bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpKTsKKyAgICAgICAgaXRlbS5zZXRDYWNoZWRQYWdlKG1h
a2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UsIFdURk1vdmUobG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMpKSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9u
ZTsKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKaW5kZXggYWRhYWZhYmE2YmE2MzEyN2NjNGQ4MmQ3ZjFk
MmMzOWQ0NzUzNGY3ZS4uY2ZjMWJkMDZmZDdiZGIwODk1ZTBhY2RkZTkxNWUxNzk5MmFhYTE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRl
ICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01
Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUo
dW5zaWduZWQpOyAvLyBudW1iZXIgb2YgcGFnZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1bmVzIGlmIG1h
eFNpemUoKSBpcyBleGNlZWRlZC4KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFkZElmQ2FjaGVh
YmxlKEhpc3RvcnlJdGVtJiwgUGFnZSosIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4mJik7IC8vIFBydW5lcyBpZiBtYXhTaXplKCkgaXMgZXhjZWVkZWQuCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmUoSGlzdG9yeUl0ZW0mKTsKICAgICBDYWNoZWRQYWdlKiBnZXQoSGlz
dG9yeUl0ZW0mLCBQYWdlKik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IHRha2Uo
SGlzdG9yeUl0ZW0mLCBQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApp
bmRleCBhYTFmMzFmODZjM2Q2NjZjMDEyOThjNTU5NGNiOTI5YTc5MWY0ZTQwLi5kMmZkNmE5MDE1
YTRlNjI1ZThmODc0Zjk0YjY3ODQyYjFiZDAwMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5jcHAKQEAgLTUzLDEwICs1MywxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBE
RUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hl
ZFBhZ2VDb3VudGVyLCAoIkNhY2hlZFBhZ2UiKSk7CiAKLUNhY2hlZFBhZ2U6OkNhY2hlZFBhZ2Uo
UGFnZSYgcGFnZSkKK0NhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSwgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKQogICAgIDogbV9wYWdl
KHBhZ2UpCiAgICAgLCBtX2V4cGlyYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpICsgcGFn
ZS5zZXR0aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkKICAgICAs
IG1fY2FjaGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1l
KCkpKQorICAgICwgbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhXVEZNb3ZlKGxvYWRlZFRoaXJk
UGFydHlEb21haW5zKSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIu
aW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCmluZGV4IDZkOTdmZDll
NDZkMmZmMGNhMjMxY2MzZmE4MmMxYWM1ODIxMDAyMTkuLjRjYmZkZTRhZTdhN2Q5MmVkNmVmOGU2
M2JkNjgyNmUzY2U5YjNmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCkBAIC0z
Nyw3ICszNyw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBDYWNoZWRQYWdlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDYWNoZWRQYWdlKFBhZ2Um
KTsKKyAgICBleHBsaWNpdCBDYWNoZWRQYWdlKFBhZ2UmLCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+JiYpOwogICAgIH5DYWNoZWRQYWdlKCk7CiAKICAgICB2b2lkIHJlc3RvcmUoUGFnZSYpOwpA
QCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1hcmtGb3JDb250ZW50c1NpemVD
aGFuZ2VkKCkgeyBtX25lZWRzVXBkYXRlQ29udGVudHNTaXplID0gdHJ1ZTsgfQogCisgICAgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSB7IHJldHVy
biBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zOyB9CisKIHByaXZhdGU6CiAgICAgUGFnZSYgbV9w
YWdlOwogICAgIE1vbm90b25pY1RpbWUgbV9leHBpcmF0aW9uVGltZTsKQEAgLTY4LDYgKzcwLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9uZWVkc0RldmljZU9yUGFnZVNjYWxlQ2hh
bmdlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzVXBkYXRlQ29udGVudHNTaXplIHsgZmFs
c2UgfTsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IG1fbG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBjZDFkOTFhZjI4YWQ5NWZmMTg4Mjk0MDAwMjM5NWNmMGVmMWQ2
MjQxLi5iMTk4MDE4ZDhlZTA1YjQ1OTg2YTYzYzk4ZDFmZjgyMDVlMWM3OTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTIwMDIsOCArMjAwMiw4IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKCFtX2ZyYW1lLnRyZWUo
KS5wYXJlbnQoKSAmJiBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSAmJiBoaXN0b3J5KCkuY3VycmVu
dEl0ZW0oKSAhPSBoaXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8gY2FjaGUgdGhlIHBhZ2Ugd2UgYXJlIG5hdmlnYXRpbmcg
YXdheSBmcm9tIGludG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KICAgICAgICAgLy8gV2UgYXJl
IGRvaW5nIHRoaXMgaGVyZSBiZWNhdXNlIHdlIGtub3cgZm9yIHN1cmUgdGhhdCBhIG5ldyBwYWdl
IGlzIGFib3V0IHRvIGJlIGxvYWRlZC4KLSAgICAgICAgQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xl
dG9uKCkuYWRkSWZDYWNoZWFibGUoKmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpLCBtX2ZyYW1lLnBh
Z2UoKSk7Ci0gICAgICAgIAorICAgICAgICBCYWNrRm9yd2FyZENhY2hlOjpzaW5nbGV0b24oKS5h
ZGRJZkNhY2hlYWJsZSgqaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCksIG1fZnJhbWUucGFnZSgpLCBt
X2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yQ2FjaGUo
KSk7CisKICAgICAgICAgV2ViQ29yZTo6amV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZl
bE5hdmlnYXRpb24oKTsKICAgICB9CiAKQEAgLTIwNTEsNyArMjA1MSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
QVBJIHNob3VsZCBiZSB0dXJuZWQgYXJvdW5kIHNvIHRoYXQgd2UgZ3JvdW5kIENhY2hlZFBhZ2Ug
aW50byB0aGUgUGFnZS4KICAgICAgICAgY2FjaGVkUGFnZS0+cmVzdG9yZSgqbV9mcmFtZS5wYWdl
KCkpOwotCisgICAgICAgIG1fY2xpZW50LT5yZXN0b3JlVGhpcmRQYXJ0eURvbWFpbnMoY2FjaGVk
UGFnZS0+bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLnNldERpc3BhdGNoVmlld3BvcnRE
YXRhRGlkQ2hhbmdlU3VwcHJlc3NlZChmYWxzZSk7CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5j
aHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShtX2ZyYW1lLnBhZ2Uo
KS0+dmlld3BvcnRBcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGIxYWQ0OTIwMjk5YWE0NWY5NzA0MGZhYTZiY2EwNjM1MmI2NjA1NDYu
LmYwYTkwMjY3MDMzNzhiN2MzMmIwZjQwMjY0MWY3YTk0MzFjMWRjZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNzQsNiArMzc0LDggQEAgcHVibGlj
OgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdmlydHVhbCBib29s
IGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFp
biYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVRoaXJkUGFydHlEb21haW5zKFZlY3Rv
cjxSZWdpc3RyYWJsZURvbWFpbj4mKSB7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4gbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3JDYWNoZSgpIHsgcmV0dXJuIHsgfTsg
fQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0Nv
bnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
QWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjFkNDEyNDFiNTliODFkNDlhZDYzNmUx
MzUzNmZmN2JiNTQ3ODM4NC4uYWQ0NmEzZjY0NDQ2MjAzY2RhNjZiYWMzZWZmN2NmODQ5N2JhMjNj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0yNjc0LDYgKzI2NzQsMTMgQEAgLSAodm9pZClfcHJlY29ubmVjdFRvU2VydmVyOihOU1VS
TCAqKXVybAogICAgIF9wYWdlLT5wcmVjb25uZWN0VG8odXJsKTsKIH0KIAorLSAodm9pZClfc2V0
bG9hZGVkVGhpcmRQYXJ0eURvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPnNldGxv
YWRlZFRoaXJkUGFydHlEb21haW4oZG9tYWluLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSk7Cit9CisKIC0gKEJPT0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiB7CiAgICAg
cmV0dXJuIF9wYWdlLT5jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMDcx
NGIxN2FhNzk1Nzg3NzI1YjBiZGUwYjdlY2ZhODgyMTdlZjdjMC4uM2IwMDZhM2JiZDA4Yzg1Y2E4
NGRiNjlhNWNiZDY4MjMyM2JjYmZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNTIsNiArMzUyLDggQEAgZm9y
IHRoaXMgcHJvcGVydHkuCiAKIC0gKHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwgKilz
ZXJ2ZXJVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAorLSAodm9pZClfc2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbjooTlNTdHJpbmcgKilk
b21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENhblVzZUNyZWRlbnRpYWxTdG9yYWdl
OikgQk9PTCBfY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggM2FiYTUzN2VmNDZiNmEyNWFjY2JmOTYxZTFiMDU1
OWY2MGMyY2ZjMi4uZTU0MzE2Yjg2MjEzNjliM2EwOWM0YzY4YzZiYzBiODJjNTk5MWFjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDE5Niw2ICsxMDE5
NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucygpKTsKIH0KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldGxvYWRlZFRoaXJkUGFydHlEb21h
aW4oY29uc3QgU3RyaW5nJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldGxvYWRlZFRoaXJkUGFydHlEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbikpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZTY1NDZiODQ5ZjI4NTYzM2FiNTM5MWIx
YzBiNzAxZTEyOTIyMTRlLi5iNmMyZjY1MzRlNTExZjc5MmJhMzM0OTg0ODljMTkwOWY0ZmUwOTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYwNSw2ICsxNjA1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJh
bnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7
CisgICAgdm9pZCBzZXRsb2FkZWRUaGlyZFBhcnR5RG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjU2
NTcxYmFiYjhlYmQ4OTk3YTgxZmU5ZTNhNmNiNTFlNTMxOTA3YS4uMDVkZGZkNjQ0Yjg5YmUxNDgw
Yjc2NTc5Mjc2YTViMGFkZmY5NjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC0xNTgsNiArMTU4LDI0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZExvYWRG
cm9tUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21hCiAgICAgd2ViUGFn
ZS0+ZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOwogfQogCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZXN0b3JlVGhpcmRQYXJ0eURvbWFpbnMoVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiYgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpCit7CisgICAgYXV0
byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIHdlYlBhZ2UtPnJlc3RvcmVUaGlyZFBhcnR5RG9tYWlucyhsb2FkZWRU
aGlyZFBhcnR5RG9tYWlucyk7Cit9CisKK1ZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yQ2FjaGUoKQoreworICAg
IGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHdlYlBhZ2UtPmxvYWRlZFRoaXJkUGFydHlE
b21haW5zRm9yQ2FjaGUoKTsKK30KKwogI2VuZGlmCiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6Omhhc0hUTUxWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
OWUyMDBhMWU0OWFkYjM3MGUzNzlmYzdmMWY3NjRiM2Q3YTkwODU0ZC4uYzc0OGZkN2FkYzVkODNl
YmJkNGJjM2FhYTcyMDdlNDVhMzZkNGRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgIH07CiAgICAgdm9pZCBzZXRIYXNGcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2VzcyhGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIm
Jik7CiAgICAgdm9pZCBkaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYpIGZpbmFsOworICAgIHZvaWQgcmVzdG9yZVRoaXJkUGFydHlEb21haW5z
KFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKSBmaW5hbDsKKyAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yQ2Fj
aGUoKSBmaW5hbDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3Jp
cHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZGY0ZTg3ZDg0ZDY2NWNhODgyMTllNTJlMmZmOGNlNWViYmQ1MjA0NS4uYjU4NmQ3MjE1
OWU2MGU4MTdhMTJiMTA1MzgxNjk4MDBjMjA5MDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1MTYsNyArMTUxNiw3IEBAIHZvaWQgV2Vi
UGFnZTo6c3VzcGVuZEZvclByb2Nlc3NTd2FwKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmICghQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xldG9uKCkuYWRkSWZDYWNoZWFibGUoKmN1
cnJlbnRIaXN0b3J5SXRlbSwgY29yZVBhZ2UoKSkpIHsKKyAgICBpZiAoIUJhY2tGb3J3YXJkQ2Fj
aGU6OnNpbmdsZXRvbigpLmFkZElmQ2FjaGVhYmxlKCpjdXJyZW50SGlzdG9yeUl0ZW0sIGNvcmVQ
YWdlKCksIGNvcHlUb1ZlY3RvcihtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zKSkpIHsKICAgICAg
ICAgZmFpbGVkVG9TdXNwZW5kKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02ODMzLDYg
KzY4MzMsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFJl
Z2lzdHJhYmxlRG9tYWluJiYgdGFyZ2V0RG9tYWluKQogICAgICAgICBtX2xvYWRlZFRoaXJkUGFy
dHlEb21haW5zLmFkZCh0YXJnZXREb21haW4pOwogfQogCitWZWN0b3I8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IFdlYlBhZ2U6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yQ2FjaGUoKQor
eworICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk7Cit9
CisKIHZvaWQgV2ViUGFnZTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihjb3B5VG9WZWN0b3IobV9sb2FkZWRUaGlyZFBhcnR5
RG9tYWlucykpOwpAQCAtNjg0Myw2ICs2ODQ4LDE4IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucygpCiAgICAgbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucy5jbGVh
cigpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldGxvYWRlZFRoaXJkUGFydHlEb21haW4oUmVnaXN0
cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zLmFkZChXVEZNb3Zl
KGRvbWFpbikpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
cmVzdG9yZVRoaXJkUGFydHlEb21haW5zKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGxvYWRl
ZFRoaXJkUGFydHlEb21haW5zKQoreworICAgIGZvciAoYXV0byYgZG9tYWluIDogbG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMpCisgICAgICAgIG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMuYWRkKFdU
Rk1vdmUoZG9tYWluKSk7Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAy
NmU4MzQ4YjczYjYwNzgwNzEzZTMyMDdiZjViOTU2MjBiN2YyNjMwLi5lMWQ4NTNjZWFmOWE1MmZm
YWRlZjBiMjY2MDkyODAzNWEzNzAzMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjE0LDcgKzEyMTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZv
aWQgZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmKTsKICAgICB2b2lkIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9y
Q2FjaGUoKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPik+JiYpOworICAgIHZv
aWQgc2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVzdG9yZVRoaXJkUGFy
dHlEb21haW5zKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDU1ODYxNGNlOWI5
ZDEwZGQ2Y2QxZTU2MjdhMmNmM2MwYjE5ZWZjNjQuLjljYmMzOTZkMGNkZjBjZmZlOTYzM2MzODli
OTkyZjc2M2Q3N2FjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTg2LDYgKzU4Niw3IEBAIEdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlCiAgICAgV2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRS
ZXNvdXJjZSgpCiAgICAgQ2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiAgICAgTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiBkb21haW5zKSBBc3luYworICAgIFNldGxvYWRlZFRoaXJkUGFydHlEb21haW4oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICNpZiBVU0Uo
U1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYjQ3NDZkNTc2NDNmZmE5YWQ4OTBjMWE4NDU5Yjc5ZWY0MmNiYjI5OC4uNzlj
NmIwYTNiYzQ1ZDJiYmZmMzFhOWEyMjU3MDlmMDAxNjc1MzI1MiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4
LTE3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAg
IFRoaXJkIHBhcnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9m
b3J3YXJkIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFQSSB0ZXN0IGNv
dmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDgtMTcgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5tbQppbmRleCAxN2JjN2Y1ZDc0NDg0YWI1NGQ2NzdhNDcyODkxNDI4ZWYyZmZhMmMw
Li43Nzk3NjEyMGM4MjdmOWNjMGZiNGFkNDAwY2NiN2QwYzk5ZDhhYmIxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0xNjQwLDMgKzE2NDAsODUgQEAgVEVTVChSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLCBTdG9yZVN1c3BlbnNpb24pCiAKICAgICBbc2hhcmVkUHJvY2Vzc1Bvb2wg
X3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZV07CiB9CisKK1RFU1QoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcywgQmFja0ZvcndhcmRQZXJQYWdlRGF0YSkKK3sKKyAgICBhdXRvICpkYXRhU3RvcmUg
PSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJW
aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlu
cykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0p
LCAwKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBTZWVkIHRoZSBwYWdlIHdpdGgg
YSB0aGlyZCBwYXJ0eS4KKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOworICAg
IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zZXRsb2FkZWRUaGlyZFBhcnR5RG9tYWluOkAiZXhhbXBs
ZTEuY29tIiBjb21wbGV0aW9uSGFuZGxlcjogXih2b2lkKSB7CisgICAgICAgIGRvbmVGbGFnID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcp
OworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBh
cnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50
PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtkb21haW5z
IG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTEuY29tIik7CisgICAgICAgIGRvbmVGbGFnID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcp
OworCisgICAgLy8gTmF2aWdhdGUgc29tZXdoZXJlIGVsc2UgYW5kIGxvYWQgYSBkaWZmZXJlbnQg
dGhpcmQgcGFydHkuCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2lt
cGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW2Rl
bGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICAKKyAgICBkb25lRmxhZyA9
IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOndlYlZp
ZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSB7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSks
IDApOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAg
W3dlYlZpZXcgX3NldGxvYWRlZFRoaXJkUGFydHlEb21haW46QCJleGFtcGxlMi5jb20iIGNvbXBs
ZXRpb25IYW5kbGVyOiBeKHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBH
byBiYWNrLCBjaGVjayBmb3IgdGhlIGNhY2hlZCB0aGlyZCBwYXJ0eSBleGFtcGxlMS5jb20uCisg
ICAgW3dlYlZpZXcgZ29CYWNrXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRU
aGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtk
b21haW5zIG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTEuY29tIik7CisgICAgICAgIGRvbmVG
bGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworCisgICAgLy8gR28gZm9yd2FyZCwgY2hlY2sgZm9yIHRoZSBjYWNoZWQgdGhpcmQg
cGFydHkgZXhhbXBsZTIuY29tLgorICAgIFt3ZWJWaWV3IGdvRm9yd2FyZF07CisgICAgW2RlbGVn
YXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGRvbmVGbGFnID0gZmFsc2U7
CisgICAgW2RhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6d2ViVmlldy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMgY291bnRdKSwgMSk7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShbZG9tYWlucyBvYmplY3RBdEluZGV4OjBdLCBAImV4YW1w
bGUyLmNvbSIpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAgCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406795</attachid>
            <date>2020-08-18 11:38:08 -0700</date>
            <delta_ts>2020-08-19 11:42:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215595-20200818113807.patch</filename>
            <type>text/plain</type>
            <size>17408</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NGM1MDg0NDNkNjBi
YmNjYzM5YTk4OWM5MTY1OTE0MjhhNDE0ZS4uOTUwNmRkNjc1ZTc0NWUzY2ExNjc0MzMyZGYwYjBj
YWY2YjdkZjIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA4LTE4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoaXJkIHBh
cnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3YXJkIG5h
dmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xp
ZW50IGZ1bmN0aW9uIHRvIHN0b3JlIGxvYWRlZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5z
IGluIGEgQ2FjaGVkUGFnZSBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMu
CisKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oOgorCiAyMDIwLTA4LTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUgc2hv
dWxkIGJlIGEgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDMzZGM5MWRjMjIxMDU1ZDc0YTMyNzFj
NmQ1YzhjY2I4ZDlmYjgzMy4uZGM1OTNlMTYxZWYwNjdhNWEzM2Q1YzQxMzMyODY2YmYzYjAxZTkw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wOC0xOCAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBUaGlyZCBwYXJ0eSBkb21haW5z
IGFyZSBub3Qgc3RvcmVkIGluIHRoZSBjYXNlIG9mIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTk1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjY0Mjg5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGFiaWxpdHkgdG8g
cmV0cmlldmUgbG9hZGVkIHRoaXJkIHBhcnR5IGRvbWFpbnMgZnJvbSB0aGUgcGFnZQorICAgICAg
ICBzeW5jaHJvbm91c2x5IHRvIGJlIHN0b3JlZCBpbiB0aGUgQ2FjaGVkUGFnZSBpbiB0aGUgY2Fz
ZSBvZiBhCisgICAgICAgIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0
bG9hZGVkVGhpcmRQYXJ0eURvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRs
b2FkZWRUaGlyZFBhcnR5RG9tYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgIFNQSSBuZWVkZWQgdG8gc2V0IHRoaXJkIHBhcnRpZXMgZm9yIHRlc3Rpbmcu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZFRo
aXJkUGFydHlEb21haW5zRm9yQ2FjaGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zRm9yQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRsb2FkZWRU
aGlyZFBhcnR5RG9tYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDIwLTA4LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXVtXUEVdIFJlbW92ZSBzdXBwb3J0IGZvciBOUEFQSSBwbHVnaW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCBhYTFmMzFmODZjM2Q2NjZjMDEyOThj
NTU5NGNiOTI5YTc5MWY0ZTQwLi4wY2ZmZmY0ZDk3MDE2NmFjNmMzMDUxZmI3ODhiOTI2NWZlNmIx
ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKQEAgLTU3LDYgKzU3LDkg
QEAgQ2FjaGVkUGFnZTo6Q2FjaGVkUGFnZShQYWdlJiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2Up
CiAgICAgLCBtX2V4cGlyYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpICsgcGFnZS5zZXR0
aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkKICAgICAsIG1fY2Fj
aGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgLCBtX2xvYWRlZFRoaXJk
UGFydHlEb21haW5zKHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkubG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnNGb3JDYWNoZSgpKQorI2VuZGlmCiB7CiAjaWZuZGVmIE5ERUJVRwogICAg
IGNhY2hlZFBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBh
Z2UuaAppbmRleCA2ZDk3ZmQ5ZTQ2ZDJmZjBjYTIzMWNjM2ZhODJjMWFjNTgyMTAwMjE5Li5kMTcw
MmIyOGIzNzUwYjIzYjY2YWFmYzhhOTVlZTg1YTNjMjYyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuaApAQCAtNTgsNyArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrRm9y
RGV2aWNlT3JQYWdlU2NhbGVDaGFuZ2VkKCkgeyBtX25lZWRzRGV2aWNlT3JQYWdlU2NhbGVDaGFu
Z2VkID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBtYXJrRm9yQ29udGVudHNTaXplQ2hhbmdlZCgpIHsg
bV9uZWVkc1VwZGF0ZUNvbnRlbnRzU2l6ZSA9IHRydWU7IH0KLQorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgbG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKSB7IHJldHVybiBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zOyB9
CisjZW5kaWYKIHByaXZhdGU6CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIE1vbm90b25pY1RpbWUg
bV9leHBpcmF0aW9uVGltZTsKQEAgLTY4LDYgKzcwLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IGJvb2wgbV9uZWVkc0RldmljZU9yUGFnZVNjYWxlQ2hhbmdlZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX25lZWRzVXBkYXRlQ29udGVudHNTaXplIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gbV9sb2Fk
ZWRUaGlyZFBhcnR5RG9tYWluczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggY2QxZDkxYWYyOGFkOTVm
ZjE4ODI5NDAwMDIzOTVjZjBlZjFkNjI0MS4uMzY5YWQ1ZTg5Nzc4NTQ5MzhkOTZmMzBjMDNmYTYw
NzVmMGJlYmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yMDUx
LDcgKzIwNTEsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkK
IAogICAgICAgICAvLyBGSVhNRTogVGhpcyBBUEkgc2hvdWxkIGJlIHR1cm5lZCBhcm91bmQgc28g
dGhhdCB3ZSBncm91bmQgQ2FjaGVkUGFnZSBpbnRvIHRoZSBQYWdlLgogICAgICAgICBjYWNoZWRQ
YWdlLT5yZXN0b3JlKCptX2ZyYW1lLnBhZ2UoKSk7Ci0KKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGNhY2hlZFBhZ2UtPmxv
YWRlZFRoaXJkUGFydHlEb21haW5zKCkpCisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkTG9hZEZy
b21SZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOworI2VuZGlmCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLnNldERpc3Bh
dGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZChmYWxzZSk7CiAgICAgICAgIG1fZnJh
bWUucGFnZSgpLT5jaHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZSht
X2ZyYW1lLnBhZ2UoKS0+dmlld3BvcnRBcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIxYWQ0OTIwMjk5YWE0NWY5NzA0MGZhYTZiY2Ew
NjM1MmI2NjA1NDYuLjQ3M2VmMjMyODRkMjNmYzRkMjcxNjY3YTJhYjQ2ODE1ZWI1ZWVmYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNzQsNiArMzc0
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
dmlydHVhbCBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdp
c3RyYWJsZURvbWFpbiYmKSB7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4gbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3JDYWNoZSgpIHsgcmV0dXJuIHsgfTsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQWxsb3dz
Q29udGVudEphdmFTY3JpcHQ6OlllczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjFkNDEyNDFiNTliODFkNDlhZDYzNmUxMzUzNmZm
N2JiNTQ3ODM4NC4uYWQ0NmEzZjY0NDQ2MjAzY2RhNjZiYWMzZWZmN2NmODQ5N2JhMjNjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0y
Njc0LDYgKzI2NzQsMTMgQEAgLSAodm9pZClfcHJlY29ubmVjdFRvU2VydmVyOihOU1VSTCAqKXVy
bAogICAgIF9wYWdlLT5wcmVjb25uZWN0VG8odXJsKTsKIH0KIAorLSAodm9pZClfc2V0bG9hZGVk
VGhpcmRQYXJ0eURvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPnNldGxvYWRlZFRo
aXJkUGFydHlEb21haW4oZG9tYWluLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSk7Cit9CisKIC0gKEJPT0wpX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlCiB7CiAgICAgcmV0dXJu
IF9wYWdlLT5jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMDcxNGIxN2Fh
Nzk1Nzg3NzI1YjBiZGUwYjdlY2ZhODgyMTdlZjdjMC4uM2IwMDZhM2JiZDA4Yzg1Y2E4NGRiNjlh
NWNiZDY4MjMyM2JjYmZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNTIsNiArMzUyLDggQEAgZm9yIHRoaXMg
cHJvcGVydHkuCiAKIC0gKHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwgKilzZXJ2ZXJV
UkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IAorLSAodm9pZClfc2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbjooTlNTdHJpbmcgKilkb21haW4g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlOikgQk9P
TCBfY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggM2FiYTUzN2VmNDZiNmEyNWFjY2JmOTYxZTFiMDU1OWY2MGMy
Y2ZjMi4uZTU0MzE2Yjg2MjEzNjliM2EwOWM0YzY4YzZiYzBiODJjNTk5MWFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDE5Niw2ICsxMDE5NiwxMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCiB7CiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygp
KTsKIH0KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldGxvYWRlZFRoaXJkUGFydHlEb21haW4oY29u
c3QgU3RyaW5nJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dGxvYWRlZFRoaXJkUGFydHlEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbikpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZTY1NDZiODQ5ZjI4NTYzM2FiNTM5MWIxYzBiNzAx
ZTEyOTIyMTRlLi5iNmMyZjY1MzRlNTExZjc5MmJhMzM0OTg0ODljMTkwOWY0ZmUwOTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYwNSw2ICsxNjA1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJG
cm9tUHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5z
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAg
dm9pZCBzZXRsb2FkZWRUaGlyZFBhcnR5RG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjU2NTcxYmFi
YjhlYmQ4OTk3YTgxZmU5ZTNhNmNiNTFlNTMxOTA3YS4uYTgxZGE5NjMyMjU5ZmZjZmNmZDRmYTBi
OGUzYTUyZmUzYTZhNjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
NTgsNiArMTU4LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZExvYWRGcm9tUmVn
aXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21hCiAgICAgd2ViUGFnZS0+ZGlk
TG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOwogfQogCitWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpsb2FkZWRUaGlyZFBhcnR5
RG9tYWluc0ZvckNhY2hlKCkKK3sKKyAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiB3
ZWJQYWdlLT5sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvckNhY2hlKCk7Cit9CisKICNlbmRpZgog
CiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDllMjAwYTFlNDlhZGIzNzBlMzc5ZmM3ZjFmNzY0YjNk
N2E5MDg1NGQuLjE1MWYwYjE2Yjg1NWMyMjZiYzZhZDY2OTU4NjY4ODNkNGRmMGQ4YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIHZvaWQgc2V0SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoRnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyJiYpOwogICAgIHZvaWQgZGlkTG9hZEZyb21SZWdpc3Ry
YWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGxvYWRlZFRoaXJkUGFydHlEb21haW5zRm9y
Q2FjaGUoKSBmaW5hbDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFT
Y3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZGY0ZTg3ZDg0ZDY2NWNhODgyMTllNTJlMmZmOGNlNWViYmQ1MjA0NS4uMzViZmNk
Y2FiNTA4ZGU2ZjM0YTViYWJmNzQ4YmRlZDFiOWI0YWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY4MzMsNiArNjgzMywxMSBAQCB2b2lk
IFdlYlBhZ2U6OmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4m
JiB0YXJnZXREb21haW4pCiAgICAgICAgIG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMuYWRkKHRh
cmdldERvbWFpbik7CiB9CiAKK1ZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gV2Vi
UGFnZTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3JDYWNoZSgpCit7CisgICAgcmV0dXJuIGNv
cHlUb1ZlY3RvcihtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zKTsKK30KKwogdm9pZCBXZWJQYWdl
Ojpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvcHlUb1ZlY3RvcihtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zKSk7CkBAIC02
ODQzLDYgKzY4NDgsMTEgQEAgdm9pZCBXZWJQYWdlOjpjbGVhckxvYWRlZFRoaXJkUGFydHlEb21h
aW5zKCkKICAgICBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zLmNsZWFyKCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6c2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklF
TlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCAyNmU4MzQ4YjczYjYwNzgwNzEzZTMyMDdiZjViOTU2MjBiN2YyNjMwLi44ZjlmZTg2N2I1YTAy
Y2JkMzI2MWI4MmU2M2RkMzcyYzllMDEzOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjE1LDYgKzEyMTUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYpOwogICAgIHZvaWQgY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogICAgIHZvaWQg
bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+KT4mJik7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBsb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvckNhY2hlKCk7CisgICAgdm9p
ZCBzZXRsb2FkZWRUaGlyZFBhcnR5RG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1NTg2MTRjZTliOWQxMGRkNmNkMWU1NjI3YTJj
ZjNjMGIxOWVmYzY0Li45Y2JjMzk2ZDBjZGYwY2ZmZTk2MzNjMzg5Yjk5MmY3NjNkNzdhY2RhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTU4Niw2ICs1ODYsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQogICAgIENs
ZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQogICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5z
KCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgQXN5bmMK
KyAgICBTZXRsb2FkZWRUaGlyZFBhcnR5RG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbikgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI0NzQ2
ZDU3NjQzZmZhOWFkODkwYzFhODQ1OWI3OWVmNDJjYmIyOTguLmRmZWUzOTRkZDkwMWFlZGVkNDA1
NTgwOGUwNjM4ZDdlZGQyZTE5NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wOC0xOCAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBUaGlyZCBwYXJ0eSBkb21h
aW5zIGFyZSBub3Qgc3RvcmVkIGluIHRoZSBjYXNlIG9mIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTk1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjY0Mjg5Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA4LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFJlbW92ZSBzdXBw
b3J0IGZvciBOUEFQSSBwbHVnaW5zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KaW5kZXgg
MTdiYzdmNWQ3NDQ4NGFiNTRkNjc3YTQ3Mjg5MTQyOGVmMmZmYTJjMC4uNzc5NzYxMjBjODI3Zjlj
YzBmYjRhZDQwMGNjYjdkMGM5OWQ4YWJiMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5t
bQpAQCAtMTY0MCwzICsxNjQwLDg1IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgU3Rv
cmVTdXNwZW5zaW9uKQogCiAgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZW5kTmV0d29ya1Byb2Nl
c3NEaWRSZXN1bWVdOwogfQorCitURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIEJhY2tGb3J3
YXJkUGVyUGFnZURhdGEpCit7CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFT
dG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIHN0YXRpYyBib29sIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2Rh
dGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6d2ViVmlldy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMgY291bnRdKSwgMCk7CisgICAgICAgIGRv
bmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZUZsYWcpOworCisgICAgLy8gU2VlZCB0aGUgcGFnZSB3aXRoIGEgdGhpcmQgcGFydHkuCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJsYW5rIl1dXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfc2V0bG9hZGVkVGhpcmRQYXJ0eURvbWFpbjpAImV4YW1wbGUxLmNvbSIgY29tcGxldGlv
bkhhbmRsZXI6IF4odm9pZCkgeworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIGRvbmVGbGFn
ID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6d2Vi
Vmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFp
bnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMgY291bnRd
KSwgMSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbZG9tYWlucyBvYmplY3RBdEluZGV4OjBd
LCBAImV4YW1wbGUxLmNvbSIpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIE5hdmln
YXRlIHNvbWV3aGVyZSBlbHNlIGFuZCBsb2FkIGEgZGlmZmVyZW50IHRoaXJkIHBhcnR5LgorICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0
YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAwKTsKKyAgICAgICAgZG9u
ZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lRmxhZyk7CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zZXRsb2Fk
ZWRUaGlyZFBhcnR5RG9tYWluOkAiZXhhbXBsZTIuY29tIiBjb21wbGV0aW9uSGFuZGxlcjogXih2
b2lkKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gR28gYmFjaywgY2hlY2sgZm9y
IHRoZSBjYWNoZWQgdGhpcmQgcGFydHkgZXhhbXBsZTEuY29tLgorICAgIFt3ZWJWaWV3IGdvQmFj
a107CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGRv
bmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNG
b3I6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KmRvbWFpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMg
Y291bnRdKSwgMSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbZG9tYWlucyBvYmplY3RBdElu
ZGV4OjBdLCBAImV4YW1wbGUxLmNvbSIpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAg
fV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8v
IEdvIGZvcndhcmQsIGNoZWNrIGZvciB0aGUgY2FjaGVkIHRoaXJkIHBhcnR5IGV4YW1wbGUyLmNv
bS4KKyAgICBbd2ViVmlldyBnb0ZvcndhcmRdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUg
X2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSksIDEpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW2RvbWFpbnMgb2JqZWN0QXRJbmRleDowXSwgQCJleGFtcGxlMi5jb20iKTsKKyAgICAg
ICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUZsYWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406862</attachid>
            <date>2020-08-19 11:42:11 -0700</date>
            <delta_ts>2020-08-19 12:09:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215595-20200819114210.patch</filename>
            <type>text/plain</type>
            <size>19118</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NGM1MDg0NDNkNjBi
YmNjYzM5YTk4OWM5MTY1OTE0MjhhNDE0ZS4uYjBlYWJlOGJlOTNlNTc2OGY3NzA2NTljZTQ2NjQ4
OGM5Y2VmYmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA4LTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoaXJkIHBh
cnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3YXJkIG5h
dmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xp
ZW50IGZ1bmN0aW9uIHRvIHN0b3JlIGxvYWRlZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5z
IGluIGEgQ2FjaGVkUGFnZSBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMu
CisKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpy
ZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OmNsZWFyKToKKyAgICAgICAg
KiBoaXN0b3J5L0NhY2hlZFBhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKwogMjAyMC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIHNob3VsZCBiZSBhIGNv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzM2RjOTFkYzIyMTA1NWQ3NGEzMjcxYzZkNWM4Y2NiOGQ5
ZmI4MzMuLmRkN2M2YzFjMWIyNzc1YWFmNTJiMDUxMDdhZDg2ZmUyZGNlNGQxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhpcmQgcGFydHkgZG9tYWlucyBhcmUgbm90IHN0
b3JlZCBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjY2NDI4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHJldHJpZXZlIGxv
YWRlZCB0aGlyZCBwYXJ0eSBkb21haW5zIGZyb20gdGhlIHBhZ2UKKyAgICAgICAgc3luY2hyb25v
dXNseSB0byBiZSBzdG9yZWQgaW4gdGhlIENhY2hlZFBhZ2UgaW4gdGhlIGNhc2Ugb2YgYQorICAg
ICAgICBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi4gCisKKyAgICAgICAgVGhlIHBhdGNoIGFkZHMg
YSBuZXcgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSBmdW5jdGlvbiwgYW5kIHJlbmFtZXMKKyAg
ICAgICAgdGhlIGFzeW5jIElQQyBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGZ1bmN0aW9uIHRv
IGdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldExvYWRlZFRoaXJkUGFydHlE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAt
MDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1dQRV0gUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IGFhMWYzMWY4NmMzZDY2NmMwMTI5OGM1NTk0
Y2I5MjlhNzkxZjRlNDAuLjA4ZjI4MTc5YmQyMzdiYjAzNTAzMmRkYWIwMzJmNmUxYjAyOTk1MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNTcsNiArNTcsOSBAQCBD
YWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAg
ICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBwYWdlLnNldHRpbmdz
KCkuYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbCgpKQogICAgICwgbV9jYWNoZWRN
YWluRnJhbWUobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAsIG1fbG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnMoY29weVRvVmVjdG9yKHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCku
bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSkpCisjZW5kaWYKIHsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0xNjUsNiArMTY4LDExIEBAIHZv
aWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlJiBwYWdlKQogCiAgICAgZmlyZVBhZ2VTaG93QW5k
UG9wU3RhdGVFdmVudHMocGFnZSk7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIGZvciAoYXV0byYgZG9tYWluIDogbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucykK
KyAgICAgICAgcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb2FkRnJvbVJl
Z2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7CisjZW5kaWYKKwogICAgIGNsZWFyKCk7
CiB9CiAKQEAgLTE3OCw2ICsxODYsNyBAQCB2b2lkIENhY2hlZFBhZ2U6OmNsZWFyKCkKICNlbmRp
ZgogICAgIG1fbmVlZHNEZXZpY2VPclBhZ2VTY2FsZUNoYW5nZWQgPSBmYWxzZTsKICAgICBtX25l
ZWRzVXBkYXRlQ29udGVudHNTaXplID0gZmFsc2U7CisgICAgbV9sb2FkZWRUaGlyZFBhcnR5RG9t
YWlucy5jbGVhcigpOwogfQogCiBib29sIENhY2hlZFBhZ2U6Omhhc0V4cGlyZWQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAppbmRleCA2ZDk3ZmQ5ZTQ2ZDJmZjBjYTIzMWNj
M2ZhODJjMWFjNTgyMTAwMjE5Li41ZThiZTMwZjg1YjZiMWYxNmM1MTkxOTIyMzQyYWY3ZTQ1YzE5
OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaApAQCAtNjgsNiArNjgsOSBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgYm9vbCBtX25lZWRzRGV2aWNlT3JQYWdlU2NhbGVDaGFuZ2Vk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNVcGRhdGVDb250ZW50c1NpemUgeyBmYWxzZSB9
OworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IGIxYWQ0OTIwMjk5YWE0NWY5NzA0MGZhYTZiY2EwNjM1MmI2NjA1NDYuLjYz
ZmFiYjg2YjE3ZjYwY2I4ZDY0ODUyYzcwMmU5ZjdiYmM3NjlhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
TGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0ljb24uaCIKICNpbmNsdWRlICJQYWdl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8
d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KQEAgLTM3NCw2ICszNzUsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0
b3JhZ2VBY2Nlc3MoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb2Fk
RnJvbVJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYpIHsgfQorICAgIHZpcnR1
YWwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBBbGxvd3ND
b250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2
aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXM7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGNkZTIwYWExMjFh
MWYyZDE2YThkMmUyNTQ2ZWVjZWU3MTgzYmJhNjIuLmJmYzBkNTRjMzBmYTQ2NzkyYzBjNzczZWQ4
YjZiOTE5ZjJmYzIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cApAQCAtMjk3Nyw3ICsyOTc3LDcgQEAgV0tfRVhQT1JUIGJvb2wgV0tQYWdlSXNNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoV0tQYWdlUmVmKQogdm9pZCBXS1BhZ2VMb2FkZWRU
aGlyZFBhcnR5RG9tYWlucyhXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlTG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdG9JbXBsKHBhZ2UpLT5sb2FkZWRU
aGlyZFBhcnR5RG9tYWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lz
dHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpIHsKKyAgICB0b0ltcGwocGFnZSktPmdldExvYWRlZFRo
aXJkUGFydHlEb21haW5zKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXShWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiYgZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4gYXBpRG9tYWlucyA9IFdURjo6bWFwKGRvbWFpbnMsIFtdKGF1dG8mIGRvbWFpbikgewog
ICAgICAgICAgICAgcmV0dXJuIFJlZlB0cjxBUEk6Ok9iamVjdD4oQVBJOjpTdHJpbmc6OmNyZWF0
ZShXVEZNb3ZlKGRvbWFpbi5zdHJpbmcoKSkpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpp
bmRleCAyYzEzNTZlMDhhNWU3NjkwYmRhODYyZTc1NjZlMWIxMTMzOTY2NWI5Li4yZmE1Mzc2Zjg0
M2NiNDQ4NTExNTA3YzhiOWJmMzQxMDUwYjFhMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQxOSw3
ICs0MTksNyBAQCAtICh2b2lkKV9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3
ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZAogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIHdlYlBhZ2VQcm94eS0+bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucykgewor
ICAgIHdlYlBhZ2VQcm94eS0+Z2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mJiBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucykgewogICAgICAg
ICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWlucyA9IFdURjo6bWFwKGxvYWRl
ZFRoaXJkUGFydHlEb21haW5zLCBbXShhdXRvJiBkb21haW4pIHsKICAgICAgICAgICAgIHJldHVy
biBSZWZQdHI8QVBJOjpPYmplY3Q+KEFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGTW92ZShkb21haW4u
c3RyaW5nKCkpKSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggM2FiYTUzN2VmNDZiNmEyNWFjY2JmOTYxZTFiMDU1OWY2MGMyY2ZjMi4u
NjNjODU1NWFhMDg0NDdhMjcyZWIzNTEwMzE2ZjhlOTk2NDA4ZjUxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDE4Nyw5ICsxMDE4Nyw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmll
bnRhdGlvbikKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRl
ZFRoaXJkUGFydHlEb21haW5zKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldExvYWRlZFRoaXJkUGFydHlE
b21haW5zKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAwZTY1NDZiODQ5ZjI4NTYzM2FiNTM5MWIxYzBiNzAxZTEy
OTIyMTRlLi4wMmUzODhjY2FhNmQzMDZkYmQxMjBlMmJlYjg3NGQzYWE4NDU0MmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYwMyw3ICsxNjAzLDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHN1YkZyYW1lRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwotICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+JiYpPiYmKTsKKyAgICB2b2lkIGdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjU2NTcxYmFiYjhlYmQ4OTk3YTgx
ZmU5ZTNhNmNiNTFlNTMxOTA3YS4uZjJlNDMzNDliOTBkODkzMjAxMGQwN2E1ZTJmNGY4N2Q1YWEx
NDYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTgsNiArMTU4LDE1
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21h
aW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21hCiAgICAgd2ViUGFnZS0+ZGlkTG9hZEZyb21SZWdp
c3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbikpOwogfQogCitjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6bG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMoKSBjb25zdAoreworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAg
aWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHdlYlBhZ2Ut
PmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7Cit9CisKICNlbmRpZgogCiBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDllMjAwYTFlNDlhZGIzNzBlMzc5ZmM3ZjFmNzY0YjNkN2E5MDg1NGQuLjY1NTc5
MWEyNTUyNWY1ZTVjM2U3MThlMjZkYjBmMmI2NDc5MDg4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZvaWQgc2V0
SGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJ
ZGVudGlmaWVyJiYpOwogICAgIHZvaWQgZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKSBmaW5hbDsKKyAgICBjb25zdCBIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxv
d3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBk
ZjRlODdkODRkNjY1Y2E4ODIxOWU1MmUyZmY4Y2U1ZWJiZDUyMDQ1Li41YzU4ZGFmYzc0ZWYxYzJj
NDlkN2NjZGJlZjNmOTI3NjliN2E4YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjgzMyw3ICs2ODMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6
ZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIHRhcmdldERv
bWFpbikKICAgICAgICAgbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucy5hZGQodGFyZ2V0RG9tYWlu
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIFdlYlBhZ2U6
OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2FkZWRU
aGlyZFBhcnR5RG9tYWluczsKK30KKwordm9pZCBXZWJQYWdlOjpnZXRMb2FkZWRUaGlyZFBhcnR5
RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvcHlUb1Zl
Y3RvcihtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjZlODM0OGI3M2I2MDc4MDcxM2UzMjA3YmY1
Yjk1NjIwYjdmMjYzMC4uZjlmNTFhZTA1ODExZGE1NTNjMjE3N2NiMGQ2YzFkZGQ4YmJiYjg1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTIxNCw3
ICsxMjE0LDggQEAgcHVibGljOgogICAgIHZvaWQgd2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlkTG9hZEZyb21SZWdpc3RyYWJsZURv
bWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIGNsZWFyTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKTsKLSAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPik+
JiYpOworICAgIHZvaWQgZ2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+KT4mJik7CisgICAgY29u
c3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIGxvYWRlZFRoaXJkUGFydHlE
b21haW5zKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCA1NTg2MTRjZTliOWQxMGRkNmNkMWU1NjI3YTJjZjNjMGIxOWVmYzY0Li41
MTZlNDA4NzY1OGU1ZGVjOGQ2YThkNmY2MmIwODJkMWYwMDg5NDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU4
NSw3ICs1ODUsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2
YWxlbnRSZXNvdXJjZSgpCiAgICAgQ2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCi0gICAg
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zKSBBc3luYworICAgIEdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkg
LT4gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgQXN5bmMKICNl
bmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI0NzQ2ZDU3NjQzZmZhOWFkODkwYzFhODQ1OWI3
OWVmNDJjYmIyOTguLjYxOTlkMjU2NDcwMzBjYTQ2MTAxNzZlMjFhZGUwNTc0ZTllODUwZjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0wOC0xOCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KKworICAgICAgICBUaGlyZCBwYXJ0eSBkb21haW5zIGFyZSBub3Qgc3RvcmVkIGluIHRo
ZSBjYXNlIG9mIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82NjY0Mjg5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBUEkgdGVzdCBjb3ZlcmFnZSwgaW5jbHVkaW5nIGEgbmV3IHNjaGVtZSBoYW5kbGVyIHRv
IGxvYWQgdGhpcmQgcGFydHkKKyAgICAgICAgZG9tYWlucy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAg
ICAgKC1bUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVS
TFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVI
YW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgIChURVNUKToKKwog
MjAyMC0wOC0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUgc3VwcG9ydCBmb3IgTlBBUEkgcGx1Z2lucwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCmluZGV4IDE3YmM3ZjVkNzQ0ODRhYjU0ZDY3N2E0NzI4
OTE0MjhlZjJmZmEyYzAuLmMxMzQxYjg1OTdmNDMwMzg3YzQ4ZTk0NGFmY2I5M2NlOGJhNjJkYzUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KQEAgLTE2NDAsMyArMTY0MCwxMDIgQEAg
VEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBTdG9yZVN1c3BlbnNpb24pCiAKICAgICBbc2hh
cmVkUHJvY2Vzc1Bvb2wgX3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZV07CiB9CisKK0BpbnRl
cmZhY2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tV
UkxTY2hlbWVIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NjaGVtZUhhbmRsZXIKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAg
IE5TU3RyaW5nICpyZXNwb25zZSA9IG5pbDsKKyAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCIvZnAtbG9hZC1vbmUiXSkKKyAgICAgICAgcmVzcG9uc2UgPSBA
Ijxib2R5PjxpZnJhbWUgc3JjPSdyZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3M6Ly9leGFtcGxlMS5j
b20vdHAtbG9hZCc+PC9pZnJhbWU+PC9ib2R5PiI7CisgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJM
LnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ZwLWxvYWQtdHdvIl0pCisgICAgICAgIHJlc3BvbnNl
ID0gQCI8Ym9keT48aWZyYW1lIHNyYz0ncmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzOi8vZXhhbXBs
ZTIuY29tL3RwLWxvYWQnPjwvaWZyYW1lPjwvYm9keT4iOworICAgIGVsc2UgaWYgKFt0YXNrLnJl
cXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL3RwLWxvYWQiXSkKKyAgICAgICAgcmVz
cG9uc2UgPSBAIjxib2R5PjwvYm9keT4iOworCisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgW3Rhc2sgZGlkUmVjZWl2
ZURhdGE6W3Jlc3BvbnNlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07
CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7
Cit9CisKK0BlbmQKKworVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBCYWNrRm9yd2FyZFBl
clBhZ2VEYXRhKQoreworICAgIGF1dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUg
ZGVmYXVsdERhdGFTdG9yZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgbmV3XSk7CisKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5T
KFtbUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJy
ZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBzdGF0aWMgYm9vbCBkb25l
RmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9y
OndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpk
b21haW5zKSB7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNv
dW50XSksIDApOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNlZWQgdGhlIHBhZ2Ug
d2l0aCBhIHRoaXJkIHBhcnR5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJyZXNvdXJjZS1sb2FkLXN0
YXRpc3RpY3M6Ly9mcDEvZnAtbG9hZC1vbmUiXV1dOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3Rv
cmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSksIDEpOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW2RvbWFpbnMgb2JqZWN0QXRJbmRleDowXSwgQCJleGFtcGxlMS5jb20iKTsKKyAg
ICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBOYXZpZ2F0ZSBzb21ld2hlcmUgZWxzZSBhbmQg
bG9hZCBhIGRpZmZlcmVudCB0aGlyZCBwYXJ0eS4KKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicmVzb3Vy
Y2UtbG9hZC1zdGF0aXN0aWNzOi8vZnAyL2ZwLWxvYWQtdHdvIl1dXTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAg
ICBbZGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKFtkb21haW5zIG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTIu
Y29tIik7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gR28gYmFjaywgY2hlY2sgZm9y
IHRoZSBjYWNoZWQgdGhpcmQgcGFydHkgZXhhbXBsZTEuY29tLgorICAgIFt3ZWJWaWV3IGdvQmFj
a107CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGRv
bmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNG
b3I6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KmRvbWFpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMg
Y291bnRdKSwgMSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbZG9tYWlucyBvYmplY3RBdElu
ZGV4OjBdLCBAImV4YW1wbGUxLmNvbSIpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAg
fV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8v
IEdvIGZvcndhcmQsIGNoZWNrIGZvciB0aGUgY2FjaGVkIHRoaXJkIHBhcnR5IGV4YW1wbGUyLmNv
bS4KKyAgICBbd2ViVmlldyBnb0ZvcndhcmRdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUg
X2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSksIDEpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW2RvbWFpbnMgb2JqZWN0QXRJbmRleDowXSwgQCJleGFtcGxlMi5jb20iKTsKKyAgICAg
ICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUZsYWcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406863</attachid>
            <date>2020-08-19 11:52:08 -0700</date>
            <delta_ts>2020-08-19 12:09:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215595-20200819115207.patch</filename>
            <type>text/plain</type>
            <size>19164</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NGM1MDg0NDNkNjBi
YmNjYzM5YTk4OWM5MTY1OTE0MjhhNDE0ZS4uYjBlYWJlOGJlOTNlNTc2OGY3NzA2NTljZTQ2NjQ4
OGM5Y2VmYmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA4LTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoaXJkIHBh
cnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3YXJkIG5h
dmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xp
ZW50IGZ1bmN0aW9uIHRvIHN0b3JlIGxvYWRlZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5z
IGluIGEgQ2FjaGVkUGFnZSBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMu
CisKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpy
ZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OmNsZWFyKToKKyAgICAgICAg
KiBoaXN0b3J5L0NhY2hlZFBhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKwogMjAyMC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIHNob3VsZCBiZSBhIGNv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzM2RjOTFkYzIyMTA1NWQ3NGEzMjcxYzZkNWM4Y2NiOGQ5
ZmI4MzMuLmRkN2M2YzFjMWIyNzc1YWFmNTJiMDUxMDdhZDg2ZmUyZGNlNGQxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhpcmQgcGFydHkgZG9tYWlucyBhcmUgbm90IHN0
b3JlZCBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjY2NDI4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHJldHJpZXZlIGxv
YWRlZCB0aGlyZCBwYXJ0eSBkb21haW5zIGZyb20gdGhlIHBhZ2UKKyAgICAgICAgc3luY2hyb25v
dXNseSB0byBiZSBzdG9yZWQgaW4gdGhlIENhY2hlZFBhZ2UgaW4gdGhlIGNhc2Ugb2YgYQorICAg
ICAgICBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi4gCisKKyAgICAgICAgVGhlIHBhdGNoIGFkZHMg
YSBuZXcgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSBmdW5jdGlvbiwgYW5kIHJlbmFtZXMKKyAg
ICAgICAgdGhlIGFzeW5jIElQQyBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGZ1bmN0aW9uIHRv
IGdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldExvYWRlZFRoaXJkUGFydHlE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAt
MDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1dQRV0gUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IGFhMWYzMWY4NmMzZDY2NmMwMTI5OGM1NTk0
Y2I5MjlhNzkxZjRlNDAuLjc0YjgyNmNkYWZlNjEzMTg3NDk2Y2M1YmYyNzUxOWI4NjFiZGI0Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNTcsNiArNTcsOSBAQCBD
YWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAg
ICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBwYWdlLnNldHRpbmdz
KCkuYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbCgpKQogICAgICwgbV9jYWNoZWRN
YWluRnJhbWUobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAsIG1fbG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnMoY29weVRvVmVjdG9yKHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCku
bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSkpCisjZW5kaWYKIHsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0xNjUsNiArMTY4LDExIEBAIHZv
aWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlJiBwYWdlKQogCiAgICAgZmlyZVBhZ2VTaG93QW5k
UG9wU3RhdGVFdmVudHMocGFnZSk7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIGZvciAoYXV0byYgZG9tYWluIDogbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucykK
KyAgICAgICAgcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb2FkRnJvbVJl
Z2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSk7CisjZW5kaWYKKwogICAgIGNsZWFyKCk7
CiB9CiAKQEAgLTE3OCw2ICsxODYsOSBAQCB2b2lkIENhY2hlZFBhZ2U6OmNsZWFyKCkKICNlbmRp
ZgogICAgIG1fbmVlZHNEZXZpY2VPclBhZ2VTY2FsZUNoYW5nZWQgPSBmYWxzZTsKICAgICBtX25l
ZWRzVXBkYXRlQ29udGVudHNTaXplID0gZmFsc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zLmNsZWFyKCk7CisjZW5k
aWYKIH0KIAogYm9vbCBDYWNoZWRQYWdlOjpoYXNFeHBpcmVkKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmgKaW5kZXggNmQ5N2ZkOWU0NmQyZmYwY2EyMzFjYzNmYTgyYzFhYzU4
MjEwMDIxOS4uNWU4YmUzMGY4NWI2YjFmMTZjNTE5MTkyMjM0MmFmN2U0NWMxOTk4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgKQEAgLTY4LDYgKzY4LDkgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIGJvb2wgbV9uZWVkc0RldmljZU9yUGFnZVNjYWxlQ2hhbmdlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX25lZWRzVXBkYXRlQ29udGVudHNTaXplIHsgZmFsc2UgfTsKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4gbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWluczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCBiMWFkNDkyMDI5OWFhNDVmOTcwNDBmYWE2YmNhMDYzNTJiNjYwNTQ2Li42M2ZhYmI4NmIxN2Y2
MGNiOGQ2NDg1MmM3MDJlOWY3YmJjNzY5YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVz
dG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHd0Zi9FeHBlY3Rl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+
CkBAIC0zNzQsNiArMzc1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZEZyb21SZWdpc3Ry
YWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmKSB7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IGxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgY29uc3Qg
eyByZXR1cm4geyB9OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgQWxsb3dzQ29udGVudEphdmFT
Y3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBj
b25zdCB7IHJldHVybiBBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVzOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBjZGUyMGFhMTIxYTFmMmQxNmE4ZDJl
MjU0NmVlY2VlNzE4M2JiYTYyLi5iZmMwZDU0YzMwZmE0Njc5MmMwYzc3M2VkOGI2YjkxOWYyZmMy
MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI5Nzcs
NyArMjk3Nyw3IEBAIFdLX0VYUE9SVCBib29sIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJFbmFibGVkKFdLUGFnZVJlZikKIHZvaWQgV0tQYWdlTG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUxvYWRlZFRoaXJkUGFydHlEb21haW5zRnVuY3Rp
b24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHRvSW1wbChwYWdlKS0+bG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMoW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mJiBkb21haW5zKSB7CisgICAgdG9JbXBsKHBhZ2UpLT5nZXRMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyhbY2FsbGJhY2tDb250ZXh0LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiYmIGRvbWFpbnMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURv
bWFpbnMgPSBXVEY6Om1hcChkb21haW5zLCBbXShhdXRvJiBkb21haW4pIHsKICAgICAgICAgICAg
IHJldHVybiBSZWZQdHI8QVBJOjpPYmplY3Q+KEFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGTW92ZShk
b21haW4uc3RyaW5nKCkpKSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMmMxMzU2
ZTA4YTVlNzY5MGJkYTg2MmU3NTY2ZTFiMTEzMzk2NjViOS4uMmZhNTM3NmY4NDNjYjQ0ODUxMTUw
N2M4YjliZjM0MTA1MGIxYTAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC00MTksNyArNDE5LDcgQEAg
LSAodm9pZClfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICB3ZWJQYWdlUHJveHktPmxvYWRlZFRoaXJkUGFydHlEb21haW5zKFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiYgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpIHsKKyAgICB3ZWJQYWdl
UHJveHktPmdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpIHsKICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnMgPSBXVEY6Om1hcChsb2FkZWRUaGlyZFBhcnR5
RG9tYWlucywgW10oYXV0byYgZG9tYWluKSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQ
STo6T2JqZWN0PihBUEk6OlN0cmluZzo6Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkp
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDNhYmE1MzdlZjQ2YjZhMjVhY2NiZjk2MWUxYjA1NTlmNjBjMmNmYzIuLjYzYzg1NTVhYTA4
NDQ3YTI3MmViMzUxMDMxNmY4ZTk5NjQwOGY1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTAxODcsOSArMTAxODcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCiB9
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkZWRUaGlyZFBhcnR5
RG9tYWlucygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVh
ckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggMGU2NTQ2Yjg0OWYyODU2MzNhYjUzOTFiMWMwYjcwMWUxMjkyMjE0ZS4uMDJl
Mzg4Y2NhYTZkMzA2ZGJkMTIwZTJiZWI4NzRkM2FhODQ1NDJhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJl
dmFsZW50UmVzb3VyY2UoKTsKLSAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CisgICAgdm9pZCBnZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZv
aWQgY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI1NjU3MWJhYmI4ZWJkODk5N2E4MWZlOWUzYTZjYjUx
ZTUzMTkwN2EuLmYyZTQzMzQ5YjkwZDg5MzIwMTBkMDdhNWUyZjRmODdkNWFhMTQ2MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTU4LDYgKzE1OCwxNSBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYQogICAgIHdlYlBhZ2UtPmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21h
aW4oV1RGTW92ZShkb21haW4pKTsKIH0KIAorY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgY29uc3QK
K3sKKyAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFn
ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiB3ZWJQYWdlLT5sb2FkZWRUaGly
ZFBhcnR5RG9tYWlucygpOworfQorCiAjZW5kaWYKIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6aGFzSFRNTFZpZXcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5
ZTIwMGExZTQ5YWRiMzcwZTM3OWZjN2YxZjc2NGIzZDdhOTA4NTRkLi42NTU3OTFhMjU1MjVmNWU1
YzNlNzE4ZTI2ZGIwZjJiNjQ3OTA4OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2b2lkIHNldEhhc0ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciYm
KTsKICAgICB2b2lkIGRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJikgZmluYWw7CisgICAgY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEph
dmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGY0ZTg3ZDg0ZDY2
NWNhODgyMTllNTJlMmZmOGNlNWViYmQ1MjA0NS4uNWM1OGRhZmM3NGVmMWMyYzQ5ZDdjY2RiZWYz
ZjkyNzY5YjdhOGE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTY4MzMsNyArNjgzMywxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvYWRGcm9t
UmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiB0YXJnZXREb21haW4pCiAgICAg
ICAgIG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMuYWRkKHRhcmdldERvbWFpbik7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK2NvbnN0
IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBXZWJQYWdlOjpsb2FkZWRUaGly
ZFBhcnR5RG9tYWlucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnM7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Z2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihjb3B5VG9WZWN0b3IobV9sb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDI2ZTgzNDhiNzNiNjA3ODA3MTNlMzIwN2JmNWI5NTYyMGI3ZjI2
MzAuLmY5ZjUxYWUwNTgxMWRhNTUzYzIxNzdjYjBkNmMxZGRkOGJiYmI4NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEyMTQsNyArMTIxNCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50
UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJik7CiAgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlE
b21haW5zKCk7Ci0gICAgdm9pZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKKyAgICB2
b2lkIGdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPik+JiYpOworICAgIGNvbnN0IEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGNv
bnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggNTU4NjE0Y2U5YjlkMTBkZDZjZDFlNTYyN2EyY2YzYzBiMTllZmM2NC4uNTE2ZTQwODc2NThl
NWRlYzhkNmE4ZDZmNjJiMDgyZDFmMDA4OTQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODUsNyArNTg1LDcg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIFdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3Vy
Y2UoKQogICAgIENsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQotICAgIExvYWRlZFRoaXJk
UGFydHlEb21haW5zKCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9t
YWlucykgQXN5bmMKKyAgICBHZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIC0+IChWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIEFzeW5jCiAjZW5kaWYKIAogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBiNDc0NmQ1NzY0M2ZmYTlhZDg5MGMxYTg0NTliNzllZjQyY2JiMjk4
Li42MTk5ZDI1NjQ3MDMwY2E0NjEwMTc2ZTIxYWRlMDU3NGU5ZTg1MGY5IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjAtMDgtMTggIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgVGhpcmQgcGFydHkgZG9tYWlucyBhcmUgbm90IHN0b3JlZCBpbiB0aGUgY2FzZSBvZiBi
YWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTU5NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY2NDI4OTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJIHRl
c3QgY292ZXJhZ2UsIGluY2x1ZGluZyBhIG5ldyBzY2hlbWUgaGFuZGxlciB0byBsb2FkIHRoaXJk
IHBhcnR5CisgICAgICAgIGRvbWFpbnMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgICgtW1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNr
Ol0pOgorICAgICAgICAoLVtSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2NoZW1lSGFuZGxlciB3ZWJW
aWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDgtMTcg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5tbQppbmRleCAxN2JjN2Y1ZDc0NDg0YWI1NGQ2NzdhNDcyODkxNDI4ZWYyZmZh
MmMwLi5jMTM0MWI4NTk3ZjQzMDM4N2M0OGU5NDRhZmNiOTNjZThiYTYyZGM1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0xNjQwLDMgKzE2NDAsMTAyIEBAIFRFU1QoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcywgU3RvcmVTdXNwZW5zaW9uKQogCiAgICAgW3NoYXJlZFByb2Nlc3NQ
b29sIF9zZW5kTmV0d29ya1Byb2Nlc3NEaWRSZXN1bWVdOwogfQorCitAaW50ZXJmYWNlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFu
ZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hl
bWVIYW5kbGVyCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVS
TFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBOU1N0cmluZyAq
cmVzcG9uc2UgPSBuaWw7CisgICAgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRv
U3RyaW5nOkAiL2ZwLWxvYWQtb25lIl0pCisgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9keT48aWZy
YW1lIHNyYz0ncmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzOi8vZXhhbXBsZTEuY29tL3RwLWxvYWQn
PjwvaWZyYW1lPjwvYm9keT4iOworICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1
YWxUb1N0cmluZzpAIi9mcC1sb2FkLXR3byJdKQorICAgICAgICByZXNwb25zZSA9IEAiPGJvZHk+
PGlmcmFtZSBzcmM9J3Jlc291cmNlLWxvYWQtc3RhdGlzdGljczovL2V4YW1wbGUyLmNvbS90cC1s
b2FkJz48L2lmcmFtZT48L2JvZHk+IjsKKyAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5w
YXRoIGlzRXF1YWxUb1N0cmluZzpAIi90cC1sb2FkIl0pCisgICAgICAgIHJlc3BvbnNlID0gQCI8
Ym9keT48L2JvZHk+IjsKKworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4
dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNw
b25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIFt0YXNr
IGRpZEZpbmlzaF07Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQorCitAZW5k
CisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgQmFja0ZvcndhcmRQZXJQYWdlRGF0YSkK
K3sKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlIG5ld10pOworCisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicmVzb3VyY2UtbG9h
ZC1zdGF0aXN0aWNzIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcgPSBmYWxz
ZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3Lmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgewor
ICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAwKTsK
KyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBTZWVkIHRoZSBwYWdlIHdpdGggYSB0aGly
ZCBwYXJ0eS4KKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzOi8v
ZnAxL2ZwLWxvYWQtb25lIl1dXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRU
aGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtk
b21haW5zIG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTEuY29tIik7CisgICAgICAgIGRvbmVG
bGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworCisgICAgLy8gTmF2aWdhdGUgc29tZXdoZXJlIGVsc2UgYW5kIGxvYWQgYSBkaWZm
ZXJlbnQgdGhpcmQgcGFydHkuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInJlc291cmNlLWxvYWQtc3Rh
dGlzdGljczovL2ZwMi9mcC1sb2FkLXR3byJdXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9y
ZSBfbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMgY291bnRdKSwgMSk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShbZG9tYWlucyBvYmplY3RBdEluZGV4OjBdLCBAImV4YW1wbGUyLmNvbSIpOworICAg
ICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIEdvIGJhY2ssIGNoZWNrIGZvciB0aGUgY2FjaGVk
IHRoaXJkIHBhcnR5IGV4YW1wbGUxLmNvbS4KKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtk
ZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZh
bHNlOworICAgIFtkYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOndlYlZpZXcu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7
CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSksIDEp
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW2RvbWFpbnMgb2JqZWN0QXRJbmRleDowXSwgQCJl
eGFtcGxlMS5jb20iKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBHbyBmb3J3YXJk
LCBjaGVjayBmb3IgdGhlIGNhY2hlZCB0aGlyZCBwYXJ0eSBleGFtcGxlMi5jb20uCisgICAgW3dl
YlZpZXcgZ29Gb3J3YXJkXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b25dOworCisgICAgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRUaGly
ZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
aW50PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtkb21h
aW5zIG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTIuY29tIik7CisgICAgICAgIGRvbmVGbGFn
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmVGbGFnKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406865</attachid>
            <date>2020-08-19 12:10:00 -0700</date>
            <delta_ts>2020-08-19 16:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215595-20200819120959.patch</filename>
            <type>text/plain</type>
            <size>19143</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NGM1MDg0NDNkNjBi
YmNjYzM5YTk4OWM5MTY1OTE0MjhhNDE0ZS4uYjBlYWJlOGJlOTNlNTc2OGY3NzA2NTljZTQ2NjQ4
OGM5Y2VmYmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA4LTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoaXJkIHBh
cnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3YXJkIG5h
dmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xp
ZW50IGZ1bmN0aW9uIHRvIHN0b3JlIGxvYWRlZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5z
IGluIGEgQ2FjaGVkUGFnZSBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMu
CisKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpy
ZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OmNsZWFyKToKKyAgICAgICAg
KiBoaXN0b3J5L0NhY2hlZFBhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKwogMjAyMC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIHNob3VsZCBiZSBhIGNv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzM2RjOTFkYzIyMTA1NWQ3NGEzMjcxYzZkNWM4Y2NiOGQ5
ZmI4MzMuLmRkN2M2YzFjMWIyNzc1YWFmNTJiMDUxMDdhZDg2ZmUyZGNlNGQxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhpcmQgcGFydHkgZG9tYWlucyBhcmUgbm90IHN0
b3JlZCBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjY2NDI4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHJldHJpZXZlIGxv
YWRlZCB0aGlyZCBwYXJ0eSBkb21haW5zIGZyb20gdGhlIHBhZ2UKKyAgICAgICAgc3luY2hyb25v
dXNseSB0byBiZSBzdG9yZWQgaW4gdGhlIENhY2hlZFBhZ2UgaW4gdGhlIGNhc2Ugb2YgYQorICAg
ICAgICBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbi4gCisKKyAgICAgICAgVGhlIHBhdGNoIGFkZHMg
YSBuZXcgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSBmdW5jdGlvbiwgYW5kIHJlbmFtZXMKKyAg
ICAgICAgdGhlIGFzeW5jIElQQyBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGZ1bmN0aW9uIHRv
IGdldExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWRlZFRoaXJkUGFydHlEb21haW5zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkZWRUaGlyZFBhcnR5RG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlu
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldExvYWRlZFRoaXJkUGFydHlE
b21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAt
MDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW1dQRV0gUmVtb3ZlIHN1cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IGFhMWYzMWY4NmMzZDY2NmMwMTI5OGM1NTk0
Y2I5MjlhNzkxZjRlNDAuLjgxMWQwNWEzMWEyMWNhNjBhOTk0NWY2OWI0MDA0OTlmNDNjMmEwZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNTcsNiArNTcsOSBAQCBD
YWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAg
ICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBwYWdlLnNldHRpbmdz
KCkuYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbCgpKQogICAgICwgbV9jYWNoZWRN
YWluRnJhbWUobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAsIG1fbG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnMocGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5sb2FkZWRUaGlyZFBh
cnR5RG9tYWlucygpKQorI2VuZGlmCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNhY2hlZFBhZ2VD
b3VudGVyLmluY3JlbWVudCgpOwpAQCAtMTY1LDYgKzE2OCwxMSBAQCB2b2lkIENhY2hlZFBhZ2U6
OnJlc3RvcmUoUGFnZSYgcGFnZSkKIAogICAgIGZpcmVQYWdlU2hvd0FuZFBvcFN0YXRlRXZlbnRz
KHBhZ2UpOwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpCisgICAgICAgIHBhZ2Uu
bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkuZGlkTG9hZEZyb21SZWdpc3RyYWJsZURvbWFp
bihXVEZNb3ZlKGRvbWFpbikpOworI2VuZGlmCisKICAgICBjbGVhcigpOwogfQogCkBAIC0xNzgs
NiArMTg2LDkgQEAgdm9pZCBDYWNoZWRQYWdlOjpjbGVhcigpCiAjZW5kaWYKICAgICBtX25lZWRz
RGV2aWNlT3JQYWdlU2NhbGVDaGFuZ2VkID0gZmFsc2U7CiAgICAgbV9uZWVkc1VwZGF0ZUNvbnRl
bnRzU2l6ZSA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgbV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucy5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wg
Q2FjaGVkUGFnZTo6aGFzRXhwaXJlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFn
ZS5oCmluZGV4IDZkOTdmZDllNDZkMmZmMGNhMjMxY2MzZmE4MmMxYWM1ODIxMDAyMTkuLjVlOGJl
MzBmODViNmIxZjE2YzUxOTE5MjIzNDJhZjdlNDVjMTk5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkUGFnZS5oCkBAIC02OCw2ICs2OCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBib29s
IG1fbmVlZHNEZXZpY2VPclBhZ2VTY2FsZUNoYW5nZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9u
ZWVkc1VwZGF0ZUNvbnRlbnRzU2l6ZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IG1fbG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYjFhZDQ5MjAyOTlh
YTQ1Zjk3MDQwZmFhNmJjYTA2MzUyYjY2MDU0Ni4uZmNhMDQ3NDkyYTlkZDBmMzE2ZjM1MTI5ZmM4
Mzc2OGViNjdlM2Q2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNs
dWRlICJMaW5rSWNvbi5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
UmVnaXN0cmFibGVEb21haW4uaCIKICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtMzc0LDYgKzM3
NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IHZpcnR1YWwgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oUmVn
aXN0cmFibGVEb21haW4mJikgeyB9CisgICAgdmlydHVhbCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+IGxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEph
dmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3ND
b250ZW50SmF2YVNjcmlwdDo6WWVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAppbmRleCBjZGUyMGFhMTIxYTFmMmQxNmE4ZDJlMjU0NmVlY2VlNzE4M2JiYTYyLi5i
ZmMwZDU0YzMwZmE0Njc5MmMwYzc3M2VkOGI2YjkxOWYyZmMyMjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI5NzcsNyArMjk3Nyw3IEBAIFdLX0VYUE9S
VCBib29sIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKFdLUGFn
ZVJlZikKIHZvaWQgV0tQYWdlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV0tQYWdlUmVmIHBhZ2Us
IFdLUGFnZUxvYWRlZFRoaXJkUGFydHlEb21haW5zRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNh
bGxiYWNrQ29udGV4dCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHRvSW1wbChwYWdlKS0+bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoW2NhbGxiYWNrQ29udGV4
dCwgY2FsbGJhY2tdKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKSB7CisgICAg
dG9JbXBsKHBhZ2UpLT5nZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhbY2FsbGJhY2tDb250ZXh0
LCBjYWxsYmFja10oVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpIHsKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnMgPSBXVEY6Om1hcChkb21h
aW5zLCBbXShhdXRvJiBkb21haW4pIHsKICAgICAgICAgICAgIHJldHVybiBSZWZQdHI8QVBJOjpP
YmplY3Q+KEFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGTW92ZShkb21haW4uc3RyaW5nKCkpKSk7CiAg
ICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMmMxMzU2ZTA4YTVlNzY5MGJkYTg2MmU3NTY2
ZTFiMTEzMzk2NjViOS4uMmZhNTM3NmY4NDNjYjQ0ODUxMTUwN2M4YjliZjM0MTA1MGIxYTAwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC00MTksNyArNDE5LDcgQEAgLSAodm9pZClfbG9hZGVkVGhpcmRQ
YXJ0eURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB3ZWJQYWdlUHJveHktPmxvYWRl
ZFRoaXJkUGFydHlEb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgbG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnMpIHsKKyAgICB3ZWJQYWdlUHJveHktPmdldExvYWRlZFRoaXJk
UGFydHlEb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgbG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFw
aURvbWFpbnMgPSBXVEY6Om1hcChsb2FkZWRUaGlyZFBhcnR5RG9tYWlucywgW10oYXV0byYgZG9t
YWluKSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0cmlu
Zzo6Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDNhYmE1MzdlZjQ2YjZhMjVh
Y2NiZjk2MWUxYjA1NTlmNjBjMmNmYzIuLjYzYzg1NTVhYTA4NDQ3YTI3MmViMzUxMDMxNmY4ZTk5
NjQwOGY1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTAxODcsOSArMTAxODcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JN
ZWRpYUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRlZFRoaXJkUGFydHlE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkZWRUaGly
ZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWRlZFRoaXJkUGFydHlEb21h
aW5zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGU2NTQ2Yjg0
OWYyODU2MzNhYjUzOTFiMWMwYjcwMWUxMjkyMjE0ZS4uMDJlMzg4Y2NhYTZkMzA2ZGJkMTIwZTJi
ZWI4NzRkM2FhODQ1NDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE2MDMsNyArMTYwMyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZGlkQ29tbWl0
Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKLSAg
ICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CisgICAgdm9pZCBnZXRMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZvaWQgY2xlYXJMb2FkZWRUaGlyZFBh
cnR5RG9tYWlucygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGI1NjU3MWJhYmI4ZWJkODk5N2E4MWZlOWUzYTZjYjUxZTUzMTkwN2EuLjFkMTM3ZGJiNWEy
MTdmZjk1NzQ1MjBjOWJlZjI1NTlkY2UwYjU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtMTU4LDYgKzE1OCwxNSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYQogICAg
IHdlYlBhZ2UtPmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShkb21haW4pKTsK
IH0KIAorVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6bG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSBjb25zdAoreworICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcih3ZWJQYWdlLT5sb2FkZWRUaGlyZFBhcnR5RG9tYWlucygp
KTsKK30KKwogI2VuZGlmCiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hUTUxWaWV3
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOWUyMDBhMWU0OWFkYjM3
MGUzNzlmYzdmMWY3NjRiM2Q3YTkwODU0ZC4uZmJkMmFiYTk0NGI3NzFhYzI0NmU1MzEwYjYxNGYx
YzdmYmU2MzY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYxLDYgKzYxLDcg
QEAgcHVibGljOgogICAgIH07CiAgICAgdm9pZCBzZXRIYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2VzcyhGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXImJik7CiAgICAgdm9pZCBk
aWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYp
IGZpbmFsOworICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgV2ViQ29yZTo6QWxs
b3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2Vu
dE5hdmlnYXRpb24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGY0ZTg3ZDg0ZDY2NWNhODgyMTllNTJlMmZmOGNlNWVi
YmQ1MjA0NS4uNWM1OGRhZmM3NGVmMWMyYzQ5ZDdjY2RiZWYzZjkyNzY5YjdhOGE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY4MzMsNyAr
NjgzMywxMiBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oUmVn
aXN0cmFibGVEb21haW4mJiB0YXJnZXREb21haW4pCiAgICAgICAgIG1fbG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnMuYWRkKHRhcmdldERvbWFpbik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK2NvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiBXZWJQYWdlOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnM7Cit9CisKK3ZvaWQgV2Vi
UGFnZTo6Z2V0TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
b21wbGV0aW9uSGFuZGxlcihjb3B5VG9WZWN0b3IobV9sb2FkZWRUaGlyZFBhcnR5RG9tYWlucykp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI2
ZTgzNDhiNzNiNjA3ODA3MTNlMzIwN2JmNWI5NTYyMGI3ZjI2MzAuLmY5ZjUxYWUwNTgxMWRhNTUz
YzIxNzdjYjBkNmMxZGRkOGJiYmI4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTEyMTQsNyArMTIxNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdh
c0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lk
IGRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jik7CiAgICAgdm9pZCBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7Ci0gICAgdm9pZCBs
b2FkZWRUaGlyZFBhcnR5RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKKyAgICB2b2lkIGdldExvYWRlZFRoaXJkUGFy
dHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPik+JiYpOworICAgIGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+JiBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTU4NjE0Y2U5YjlkMTBkZDZj
ZDFlNTYyN2EyY2YzYzBiMTllZmM2NC4uNTE2ZTQwODc2NThlNWRlYzhkNmE4ZDZmNjJiMDgyZDFm
MDA4OTQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODUsNyArNTg1LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdhc0xvYWRl
ZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoKQogICAgIENsZWFyTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnMoKQotICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgQXN5bmMKKyAgICBHZXRM
b2FkZWRUaGlyZFBhcnR5RG9tYWlucygpIC0+IChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IGRvbWFpbnMpIEFzeW5jCiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNDc0
NmQ1NzY0M2ZmYTlhZDg5MGMxYTg0NTliNzllZjQyY2JiMjk4Li42MTk5ZDI1NjQ3MDMwY2E0NjEw
MTc2ZTIxYWRlMDU3NGU5ZTg1MGY5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDgtMTggIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhpcmQgcGFydHkgZG9t
YWlucyBhcmUgbm90IHN0b3JlZCBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY2NDI4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJIHRlc3QgY292ZXJhZ2UsIGluY2x1ZGlu
ZyBhIG5ldyBzY2hlbWUgaGFuZGxlciB0byBsb2FkIHRoaXJkIHBhcnR5CisgICAgICAgIGRvbWFp
bnMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNr
Ol0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVtb3ZlIHN1cHBv
cnQgZm9yIE5QQVBJIHBsdWdpbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQppbmRleCAx
N2JjN2Y1ZDc0NDg0YWI1NGQ2NzdhNDcyODkxNDI4ZWYyZmZhMmMwLi5jMTM0MWI4NTk3ZjQzMDM4
N2M0OGU5NDRhZmNiOTNjZThiYTYyZGM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1t
CkBAIC0xNjQwLDMgKzE2NDAsMTAyIEBAIFRFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgU3Rv
cmVTdXNwZW5zaW9uKQogCiAgICAgW3NoYXJlZFByb2Nlc3NQb29sIF9zZW5kTmV0d29ya1Byb2Nl
c3NEaWRSZXN1bWVdOwogfQorCitAaW50ZXJmYWNlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hl
bWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVIYW5kbGVyCisKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VS
TFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBOU1N0cmluZyAqcmVzcG9uc2UgPSBuaWw7CisgICAg
aWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ZwLWxvYWQtb25l
Il0pCisgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9keT48aWZyYW1lIHNyYz0ncmVzb3VyY2UtbG9h
ZC1zdGF0aXN0aWNzOi8vZXhhbXBsZTEuY29tL3RwLWxvYWQnPjwvaWZyYW1lPjwvYm9keT4iOwor
ICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9mcC1sb2Fk
LXR3byJdKQorICAgICAgICByZXNwb25zZSA9IEAiPGJvZHk+PGlmcmFtZSBzcmM9J3Jlc291cmNl
LWxvYWQtc3RhdGlzdGljczovL2V4YW1wbGUyLmNvbS90cC1sb2FkJz48L2lmcmFtZT48L2JvZHk+
IjsKKyAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpA
Ii90cC1sb2FkIl0pCisgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9keT48L2JvZHk+IjsKKworICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRl
bnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFz
ZV1dOworICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9CisKKy0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQg
PFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQorCitAZW5kCisKK1RFU1QoUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcywgQmFja0ZvcndhcmRQZXJQYWdlRGF0YSkKK3sKKyAgICBhdXRvICpkYXRhU3Rv
cmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworCisgICAgYXV0
byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hlbWVI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRs
ZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAicmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzIl07CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9s
b2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAwKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7
CisKKyAgICAvLyBTZWVkIHRoZSBwYWdlIHdpdGggYSB0aGlyZCBwYXJ0eS4KKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAicmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzOi8vZnAxL2ZwLWxvYWQtb25lIl1dXTsK
KyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3
ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9t
YWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3Vu
dF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtkb21haW5zIG9iamVjdEF0SW5kZXg6
MF0sIEAiZXhhbXBsZTEuY29tIik7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gTmF2
aWdhdGUgc29tZXdoZXJlIGVsc2UgYW5kIGxvYWQgYSBkaWZmZXJlbnQgdGhpcmQgcGFydHkuCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInJlc291cmNlLWxvYWQtc3RhdGlzdGljczovL2ZwMi9mcC1sb2Fk
LXR3byJdXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKwor
ICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfbG9hZGVkVGhpcmRQYXJ0eURv
bWFpbnNGb3I6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2Rv
bWFpbnMgY291bnRdKSwgMSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbZG9tYWlucyBvYmpl
Y3RBdEluZGV4OjBdLCBAImV4YW1wbGUyLmNvbSIpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKwor
ICAgIC8vIEdvIGJhY2ssIGNoZWNrIGZvciB0aGUgY2FjaGVkIHRoaXJkIHBhcnR5IGV4YW1wbGUx
LmNvbS4KKyAgICBbd2ViVmlldyBnb0JhY2tdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUg
X2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSksIDEpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW2RvbWFpbnMgb2JqZWN0QXRJbmRleDowXSwgQCJleGFtcGxlMS5jb20iKTsKKyAgICAg
ICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBHbyBmb3J3YXJkLCBjaGVjayBmb3IgdGhlIGNhY2hl
ZCB0aGlyZCBwYXJ0eSBleGFtcGxlMi5jb20uCisgICAgW3dlYlZpZXcgZ29Gb3J3YXJkXTsKKyAg
ICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Zvcjp3ZWJW
aWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlu
cykgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0p
LCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtkb21haW5zIG9iamVjdEF0SW5kZXg6MF0s
IEAiZXhhbXBsZTIuY29tIik7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406888</attachid>
            <date>2020-08-19 16:54:52 -0700</date>
            <delta_ts>2020-08-19 17:39:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-215595-20200819165451.patch</filename>
            <type>text/plain</type>
            <size>44591</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1NGM1MDg0NDNkNjBi
YmNjYzM5YTk4OWM5MTY1OTE0MjhhNDE0ZS4uNTE4ZTcwYmVlMTg1ODRiNTY0YjNhZGNkMjliZjEz
NThiMzhkOTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA4LTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRoaXJkIHBh
cnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3YXJkIG5h
dmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50
IGZ1bmN0aW9uIHRvIHN0b3JlIGxvYWRlZCB0aGlyZCBwYXJ0eQorICAgICAgICBkb21haW5zIGlu
IGEgQ2FjaGVkUGFnZSBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMuCisK
KyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OmNsZWFyKToKKyAgICAgICAgKiBo
aXN0b3J5L0NhY2hlZFBhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aDoKKwogMjAyMC0wOC0xNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIHNob3VsZCBiZSBhIGNvbnN0
cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGQzM2RjOTFkYzIyMTA1NWQ3NGEzMjcxYzZkNWM4Y2NiOGQ5ZmI4
MzMuLmI4NGNjMzZlYzA5MTcxMmI1ODkxMDRjZDlmZTg0MjMyYjRjNWE4NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMjAtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CisKKyAgICAgICAgVGhpcmQgcGFydHkgZG9tYWlucyBhcmUgbm90IHN0b3Jl
ZCBpbiB0aGUgY2FzZSBvZiBiYWNrL2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5NQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjY2NDI4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IHRvIHJldHJpZXZlIGxvYWRlZCB0
aGlyZCBwYXJ0eSBkb21haW5zIGZyb20gdGhlIHBhZ2UKKyAgICAgICAgc3luY2hyb25vdXNseSB0
byBiZSBzdG9yZWQgaW4gdGhlIENhY2hlZFBhZ2UgaW4gdGhlIGNhc2Ugb2YgYQorICAgICAgICBi
YWNrL2ZvcndhcmQgbmF2aWdhdGlvbi4gCisKKyAgICAgICAgSXQgYWxzbyBjaGFuZ2VzIHRoZSBm
dW5jdGlvbnMgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMgYW5kCisgICAgICAgIGdldExvYWRlZFRo
aXJkUGFydHlEb21haW5zIHRvIGxvYWRlZFN1YnJlc291cmNlRG9tYWlucyBhbmQKKyAgICAgICAg
Z2V0TG9hZGVkU3VicmVzb3VyY2VEb21haW5zIHJlc3BlY3RpdmVseSBiYXNlZCBvbiB0aGUgY29u
dmVyc2F0aW9uIGZyb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNTU5NS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgor
ICAgICAgICAoV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFn
ZUNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdLUGFnZUxvYWRlZFRo
aXJkUGFydHlEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdLUGFnZUNsZWFyTG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkU3VicmVzb3Vy
Y2VEb21haW5zRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgX2NsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOl0pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFRoaXJkUGFydHlEb21haW5zRm9yOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2Ns
ZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0TG9hZGVkU3VicmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlu
cyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpnZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wOC0xNyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBSZW1vdmUgc3VwcG9ydCBmb3IgTlBBUEkgcGx1Z2lucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggYWExZjMxZjg2YzNkNjY2YzAxMjk4YzU1OTRjYjkyOWE3
OTFmNGU0MC4uZjQyODVjMDkxZWNkZmEwYWYwNTdmZjYxMzYxN2VhOWRjYzE2YzI2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC01Nyw2ICs1Nyw5IEBAIENhY2hlZFBh
Z2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9l
eHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSArIHBhZ2Uuc2V0dGluZ3MoKS5iYWNr
Rm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsKCkpCiAgICAgLCBtX2NhY2hlZE1haW5GcmFt
ZShtYWtlVW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICwgbV9sb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMocGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5sb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoKSkKKyNlbmRpZgogewogI2lmbmRlZiBOREVCVUcKICAgICBjYWNoZWRQYWdlQ291bnRl
ci5pbmNyZW1lbnQoKTsKQEAgLTE2NSw2ICsxNjgsMTEgQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0
b3JlKFBhZ2UmIHBhZ2UpCiAKICAgICBmaXJlUGFnZVNob3dBbmRQb3BTdGF0ZUV2ZW50cyhwYWdl
KTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZm9yIChhdXRv
JiBkb21haW4gOiBtX2xvYWRlZFN1YnJlc291cmNlRG9tYWlucykKKyAgICAgICAgcGFnZS5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFdU
Rk1vdmUoZG9tYWluKSk7CisjZW5kaWYKKwogICAgIGNsZWFyKCk7CiB9CiAKQEAgLTE3OCw2ICsx
ODYsOSBAQCB2b2lkIENhY2hlZFBhZ2U6OmNsZWFyKCkKICNlbmRpZgogICAgIG1fbmVlZHNEZXZp
Y2VPclBhZ2VTY2FsZUNoYW5nZWQgPSBmYWxzZTsKICAgICBtX25lZWRzVXBkYXRlQ29udGVudHNT
aXplID0gZmFsc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBt
X2xvYWRlZFN1YnJlc291cmNlRG9tYWlucy5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgQ2Fj
aGVkUGFnZTo6aGFzRXhwaXJlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5o
CmluZGV4IDZkOTdmZDllNDZkMmZmMGNhMjMxY2MzZmE4MmMxYWM1ODIxMDAyMTkuLjRlZWNmMWNi
MGMyNWRhYzdlMWQ2ZjI0OThjYmIyYzk1ZTM4ODVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCkBAIC02OCw2ICs2OCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBib29sIG1f
bmVlZHNEZXZpY2VPclBhZ2VTY2FsZUNoYW5nZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9uZWVk
c1VwZGF0ZUNvbnRlbnRzU2l6ZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IG1fbG9hZGVkU3VicmVz
b3VyY2VEb21haW5zOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGIxYWQ0OTIwMjk5YWE0
NWY5NzA0MGZhYTZiY2EwNjM1MmI2NjA1NDYuLjZhYzIyMzQ5MmM5ZTFhNDAyNmY3Yzk2MzA1M2E3
ZGFlMzQwMTA3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVk
ZSAiTGlua0ljb24uaCIKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJl
Z2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTM3NCw2ICszNzUs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2
aXJ0dWFsIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lz
dHJhYmxlRG9tYWluJiYpIHsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiBsb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KICNlbmRp
ZgogCiAgICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2
YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0Nv
bnRlbnRKYXZhU2NyaXB0OjpZZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCmluZGV4IGNkZTIwYWExMjFhMWYyZDE2YThkMmUyNTQ2ZWVjZWU3MTgzYmJhNjIuLjYx
N2QwMTg2MTExMTBiOGRhZGIxMjUyYTVjNTc2OGZiMmM5MzdlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjk3NCwxMCArMjk3NCwxMCBAQCBXS19FWFBP
UlQgYm9vbCBXS1BhZ2VJc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZChXS1Bh
Z2VSZWYpCiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhX
S1BhZ2VSZWYgcGFnZSwgV0tQYWdlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQordm9pZCBXS1BhZ2VMb2FkZWRTdWJyZXNvdXJj
ZURvbWFpbnMoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0Z1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB0b0ltcGwocGFnZSktPmxvYWRlZFRoaXJkUGFy
dHlEb21haW5zKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXShWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+JiYgZG9tYWlucykgeworICAgIHRvSW1wbChwYWdlKS0+Z2V0TG9hZGVkU3VicmVzb3Vy
Y2VEb21haW5zKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXShWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+JiYgZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
YXBpRG9tYWlucyA9IFdURjo6bWFwKGRvbWFpbnMsIFtdKGF1dG8mIGRvbWFpbikgewogICAgICAg
ICAgICAgcmV0dXJuIFJlZlB0cjxBUEk6Ok9iamVjdD4oQVBJOjpTdHJpbmc6OmNyZWF0ZShXVEZN
b3ZlKGRvbWFpbi5zdHJpbmcoKSkpKTsKICAgICAgICAgfSk7CkBAIC0yOTg5LDEwICsyOTg5LDEw
IEBAIHZvaWQgV0tQYWdlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoV0tQYWdlUmVmIHBhZ2UsIFdL
UGFnZUxvYWRlZFRoaXJkUGFydHlEb21haW5zCiAjZW5kaWYKIH0KIAotdm9pZCBXS1BhZ2VDbGVh
ckxvYWRlZFRoaXJkUGFydHlEb21haW5zKFdLUGFnZVJlZiBwYWdlKQordm9pZCBXS1BhZ2VDbGVh
ckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZSkKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJMb2FkZWRU
aGlyZFBhcnR5RG9tYWlucygpOworICAgIHRvSW1wbChwYWdlKS0+Y2xlYXJMb2FkZWRTdWJyZXNv
dXJjZURvbWFpbnMoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKaW5kZXggMmQw
Y2UzYmZkZDhjOThhYjJkYzZhYjExNjhmZDUxNDcxYTkyMGY2OS4uYmM1ZmQxMmI3NmM3ZWIyNmFh
NTFlZWRhMTU0MTU3ZjJjNzhjZDkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZVByaXZhdGUuaApAQCAtMTk0LDkgKzE5NCw5IEBAIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZU1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhXS1BhZ2VSZWYg
cGFnZSwKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldE1vY2tDYW1lcmFPcmllbnRhdGlvbihXS1Bh
Z2VSZWYgcGFnZSwgdWludDY0X3Qgb3JpZW50YXRpb24pOwogV0tfRVhQT1JUIGJvb2wgV0tQYWdl
SXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoV0tQYWdlUmVmIHBhZ2UpOwog
Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0Z1bmN0aW9uKShX
S0FycmF5UmVmIGRvbWFpbnMsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7Ci1XS19FWFBPUlQgdm9p
ZCBXS1BhZ2VMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlTG9h
ZGVkVGhpcmRQYXJ0eURvbWFpbnNGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250
ZXh0KTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZUNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMo
V0tQYWdlUmVmIHBhZ2UpOwordHlwZWRlZiB2b2lkICgqV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYgZG9tYWlucywgdm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VS
ZWYgcGFnZSwgV0tQYWdlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRnVuY3Rpb24gY2FsbGJhY2ss
IHZvaWQqIGNhbGxiYWNrQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDbGVhckxvYWRl
ZFN1YnJlc291cmNlRG9tYWlucyhXS1BhZ2VSZWYgcGFnZSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMmMxMzU2ZTA4YTVlNzY5MGJkYTg2MmU3NTY2ZTFiMTEz
Mzk2NjViOS4uOWRlYTNlNmYzMjBmMjAxNTM5MWUxZTIwOGM4NzY2YjY0YTFiYjhmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCkBAIC00MDUsNyArNDA1LDcgQEAgKyAodm9pZClfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjphbGxvd1dl
YnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMoKTsKIH0KIAotLSAodm9pZClfbG9hZGVkVGhp
cmRQYXJ0eURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVy
CistICh2b2lkKV9sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFp
bnMpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBpZiAoIXdlYlZpZXcpIHsKQEAgLTQxOSw4ICs0MTksOCBAQCAtICh2b2lkKV9s
b2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHdlYlBhZ2VQ
cm94eS0+bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mJiBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucykgewotICAgICAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWlucyA9IFdURjo6bWFwKGxvYWRlZFRoaXJkUGFydHlEb21h
aW5zLCBbXShhdXRvJiBkb21haW4pIHsKKyAgICB3ZWJQYWdlUHJveHktPmdldExvYWRlZFN1YnJl
c291cmNlRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGxvYWRlZFN1
YnJlc291cmNlRG9tYWlucykgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
YXBpRG9tYWlucyA9IFdURjo6bWFwKGxvYWRlZFN1YnJlc291cmNlRG9tYWlucywgW10oYXV0byYg
ZG9tYWluKSB7CiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPEFQSTo6T2JqZWN0PihBUEk6OlN0
cmluZzo6Y3JlYXRlKFdURk1vdmUoZG9tYWluLnN0cmluZygpKSkpOwogICAgICAgICB9KTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShhcGlEb21haW5zKSkpKTsKQEAgLTQzMCw3ICs0MzAsNyBAQCAtICh2b2lkKV9sb2FkZWRUaGly
ZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZAogI2VuZGlmCiB9CiAKLS0gKHZvaWQpX2NsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNG
b3I6KFdLV2ViVmlldyAqKXdlYlZpZXcKKy0gKHZvaWQpX2NsZWFyTG9hZGVkU3VicmVzb3VyY2VE
b21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoIXdlYlZpZXcpCkBAIC00NDAsNyArNDQwLDcgQEAgLSAo
dm9pZClfY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmll
dwogICAgIGlmICghd2ViUGFnZVByb3h5KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdl
UHJveHktPmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICB3ZWJQYWdlUHJveHkt
PmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKaW5kZXggMGRlZmE4NDYyYjRmM2NjNmQ5MTFiYjg4Y2YxMWFmNzNiZTVk
ZDI2Mi4uZmNjYzZiNTk3ZWYzNzdlN2MwNGQ5MmRiNjcwYmQ0MTM1ZDg2MTFmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC02MSw4ICs2MSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIC0gKHZvaWQp
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2s6KG51bGxhYmxlIHZvaWQg
KF4pKFdLV2Vic2l0ZURhdGFTdG9yZSAqLCBOU1N0cmluZyAqKSljYWxsYmFjayBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKLS0gKHZvaWQpX2xvYWRl
ZFRoaXJkUGFydHlEb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwotLSAodm9pZClfY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjooV0tXZWJWaWV3ICop
d2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpk
b21haW5zKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKICsgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2lucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEu
MykpOwogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDNhYmE1MzdlZjQ2YjZhMjVhY2NiZjk2MWUxYjA1NTlmNjBjMmNm
YzIuLmIwMmZjODc3N2E1ODI3OWViMmZlZTU5MmRjNDcyNGI1Nzc3YjlkYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAxODcsMTQgKzEwMTg3LDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRf
dCBvcmllbnRhdGlvbikKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWRlZFN1YnJlc291cmNlRG9tYWlucyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRMb2FkZWRTdWJy
ZXNvdXJjZURvbWFpbnMoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCit2b2lkIFdlYlBh
Z2VQcm94eTo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZTY1
NDZiODQ5ZjI4NTYzM2FiNTM5MWIxYzBiNzAxZTEyOTIyMTRlLi4xMzFhMjE3ZDNjNDcxOWIxMGFh
NzZjNjk1MmNiMzVlZWM3YzI2ZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTYwMyw4ICsxNjAzLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBkaWRD
b21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgp
OwotICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNs
ZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICB2b2lkIGdldExvYWRlZFN1YnJlc291
cmNlRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJik+JiYpOworICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI1NjU3MWJhYmI4ZWJkODk5N2E4MWZlOWUzYTZj
YjUxZTUzMTkwN2EuLjAwYmUxZTJkNGRkMjEyOWZkNjQ2OWJjZGZiOWJiNmMxNjdkZTBiOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTU4LDYgKzE1OCwxNSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRMb2FkRnJvbVJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYQogICAgIHdlYlBhZ2UtPmRpZExvYWRGcm9tUmVnaXN0cmFibGVE
b21haW4oV1RGTW92ZShkb21haW4pKTsKIH0KIAorVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkgY29uc3QKK3sK
KyAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBjb3B5VG9WZWN0b3Iod2ViUGFnZS0+
bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkpOworfQorCiAjZW5kaWYKIAogYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6aGFzSFRNTFZpZXcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA5ZTIwMGExZTQ5YWRiMzcwZTM3OWZjN2YxZjc2NGIzZDdhOTA4NTRkLi5mNTJl
NDRkZjhlMDJkYzY4ZjJkMDYzYTE4YWNmNDlkYWFlODQ2MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2b2lkIHNl
dEhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
SWRlbnRpZmllciYmKTsKICAgICB2b2lkIGRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJikgZmluYWw7CisgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBsb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29u
dGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZGY0ZTg3
ZDg0ZDY2NWNhODgyMTllNTJlMmZmOGNlNWViYmQ1MjA0NS4uYzdmMjAyYzg3MjExOWQ3NDgyNjYy
NjExZWQwZWZiNzRkMTlkYjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTU5NjAsNyArNTk2MCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29t
bWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgdW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVl
RnJlZXplUmVhc29uOjpQcm9jZXNzU3dhcCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICBjbGVh
ckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOwogI2VuZGlmCiAgICAgCiAgICAgLy8gSWYgcHJl
dmlvdXMgVVJMIGlzIGludmFsaWQsIHRoZW4gaXQncyBub3QgYSByZWFsIHBhZ2UgdGhhdCdzIGJl
aW5nIG5hdmlnYXRlZCBhd2F5IGZyb20uCkBAIC02ODMwLDE3ICs2ODMwLDE3IEBAIHZvaWQgV2Vi
UGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCiB2
b2lkIFdlYlBhZ2U6OmRpZExvYWRGcm9tUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21h
aW4mJiB0YXJnZXREb21haW4pCiB7CiAgICAgaWYgKHRhcmdldERvbWFpbiAhPSBSZWdpc3RyYWJs
ZURvbWFpbihtYWluV2ViRnJhbWUoKS51cmwoKSkpCi0gICAgICAgIG1fbG9hZGVkVGhpcmRQYXJ0
eURvbWFpbnMuYWRkKHRhcmdldERvbWFpbik7CisgICAgICAgIG1fbG9hZGVkU3VicmVzb3VyY2VE
b21haW5zLmFkZCh0YXJnZXREb21haW4pOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRlZFRoaXJk
UGFydHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmdldExvYWRlZFN1YnJl
c291cmNlRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
cHlUb1ZlY3RvcihtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoY29weVRvVmVjdG9yKG1fbG9hZGVkU3VicmVzb3VyY2VEb21haW5zKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Y2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCit2b2lkIFdlYlBhZ2U6
OmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkKIHsKLSAgICBtX2xvYWRlZFRoaXJkUGFy
dHlEb21haW5zLmNsZWFyKCk7CisgICAgbV9sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMuY2xlYXIo
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggMjZlODM0OGI3M2I2MDc4MDcxM2UzMjA3YmY1Yjk1NjIwYjdmMjYzMC4uNjcwY2Q2
YjUyMTRiZmNlMTNjODJiYWZhYTYwYzA3NmU1ZjczNzkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTIxMyw4ICsxMjEzLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pOwogICAgIHZvaWQgd2FzTG9hZGVkV2l0aERh
dGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlkTG9hZEZyb21S
ZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lk
IGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKLSAgICB2b2lkIGxvYWRlZFRoaXJkUGFy
dHlEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPik+JiYpOworICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMo
KTsKKyAgICB2b2lkIGdldExvYWRlZFN1YnJlc291cmNlRG9tYWlucyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4pPiYmKTsKKyAgICBjb25z
dCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgbG9hZGVkU3VicmVzb3VyY2VE
b21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnM7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTIxMjQsNyArMjEyNSw3
IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2VzczsKLSAgICBIYXNoU2V0
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2xvYWRlZFRoaXJkUGFydHlEb21haW5zOwor
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fbG9hZGVkU3VicmVzb3Vy
Y2VEb21haW5zOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVkaWFUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggNTU4NjE0Y2U5YjlkMTBkZDZjZDFlNTYyN2EyY2YzYzBiMTllZmM2NC4uYjU4
ZTg5Zjg0ODIwYzY4ZDE0NDA5NjYxZGIzNzc2NmUzMzJmN2RjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01ODQs
OCArNTg0LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2
YWxlbnRSZXNvdXJjZSgpCi0gICAgQ2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpCi0gICAg
TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zKSBBc3luYworICAgIENsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5z
KCkKKyAgICBHZXRMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSBBc3luYwogI2VuZGlmCiAKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYjQ3NDZkNTc2NDNmZmE5YWQ4OTBjMWE4NDU5Yjc5ZWY0MmNiYjI5OC4uMzlkMmI5
ZDE0MmU2MjRkMDcwMDY1MjE3M2Q3ODlkZjk3ODg1YzgxOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA4LTE5
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFRo
aXJkIHBhcnR5IGRvbWFpbnMgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGNhc2Ugb2YgYmFjay9mb3J3
YXJkIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU1OTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQyODkzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFQSSB0ZXN0IGNvdmVyYWdl
LCBpbmNsdWRpbmcgYSBuZXcgc2NoZW1lIGhhbmRsZXIgdG8gbG9hZCB0aGlyZCBwYXJ0eQorICAg
ICAgICBkb21haW5zLiBBbHNvIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgZnVuY3Rpb24gbmFtZSBm
cm9tCisgICAgICAgIGxvYWRlZFRoaXJkUGFydHlEb21haW5zIHRvIGxvYWRlZFN1YnJlc291cmNl
RG9tYWlucyBiYXNlZCBvbiB0aGUKKyAgICAgICAgY29udmVyc2F0aW9uIGZyb20gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5NS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAg
ICAgICAgKC1bUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFy
dFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2
ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmxvYWRlZFN1YnJl
c291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZl
TG9hZGVkU3VicmVzb3VyY2VEb21haW5zQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKToKKyAgICAgICAgKFdUUjo6TG9hZGVkU3VicmVzb3VyY2VEb21haW5zQ2FsbGJhY2tDb250
ZXh0OjpMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAo
V1RSOjpsb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpsb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMpOgorICAgICAgICAo
V1RSOjpMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrQ29udGV4dDo6TG9hZGVkVGhpcmRQ
YXJ0eURvbWFpbnNDYWxsYmFja0NvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpsb2Fk
ZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmxvYWRlZFRoaXJkUGFydHlEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUxvYWRlZFRo
aXJkUGFydHlEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omxv
YWRlZFRoaXJkUGFydHlEb21haW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMpOiBEZWxldGVkLgorCiAyMDIwLTA4
LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXVtXUEVdIFJlbW92ZSBzdXBwb3J0IGZvciBOUEFQSSBwbHVnaW5zCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MubW0KaW5kZXggMTdiYzdmNWQ3NDQ4NGFiNTRkNjc3YTQ3Mjg5MTQyOGVm
MmZmYTJjMC4uMGUxMGMzNGVlYzgyYzZmNjU5MmJiN2M0Mjc0ZDBlNDU1ZWFmMTFlOCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQpAQCAtMTY0MCwzICsxNjQwLDEwMiBAQCBURVNUKFJl
c291cmNlTG9hZFN0YXRpc3RpY3MsIFN0b3JlU3VzcGVuc2lvbikKIAogICAgIFtzaGFyZWRQcm9j
ZXNzUG9vbCBfc2VuZE5ldHdvcmtQcm9jZXNzRGlkUmVzdW1lXTsKIH0KKworQGludGVyZmFjZSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVt
ZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2NoZW1lSGFuZGxlcgorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3Rh
cnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgTlNTdHJp
bmcgKnJlc3BvbnNlID0gbmlsOworICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1
YWxUb1N0cmluZzpAIi9mcC1sb2FkLW9uZSJdKQorICAgICAgICByZXNwb25zZSA9IEAiPGJvZHk+
PGlmcmFtZSBzcmM9J3Jlc291cmNlLWxvYWQtc3RhdGlzdGljczovL2V4YW1wbGUxLmNvbS90cC1s
b2FkJz48L2lmcmFtZT48L2JvZHk+IjsKKyAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCIvZnAtbG9hZC10d28iXSkKKyAgICAgICAgcmVzcG9uc2UgPSBAIjxi
b2R5PjxpZnJhbWUgc3JjPSdyZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3M6Ly9leGFtcGxlMi5jb20v
dHAtbG9hZCc+PC9pZnJhbWU+PC9ib2R5PiI7CisgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5V
UkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvdHAtbG9hZCJdKQorICAgICAgICByZXNwb25zZSA9
IEAiPGJvZHk+PC9ib2R5PiI7CisKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnJlc3BvbnNlLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpb
cmVzcG9uc2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBb
dGFzayBkaWRGaW5pc2hdOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKwor
QGVuZAorCitURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIEJhY2tGb3J3YXJkUGVyUGFnZURh
dGEpCit7CisgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBuZXddKTsKKworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInJlc291cmNl
LWxvYWQtc3RhdGlzdGljcyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIHN0YXRpYyBib29sIGRvbmVGbGFnID0g
ZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOndlYlZp
ZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSB7CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSks
IDApOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFNlZWQgdGhlIHBhZ2Ugd2l0aCBh
IHRoaXJkIHBhcnR5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJyZXNvdXJjZS1sb2FkLXN0YXRpc3Rp
Y3M6Ly9mcDEvZnAtbG9hZC1vbmUiXV1dOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2xv
YWRlZFN1YnJlc291cmNlRG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKFtkb21haW5zIG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTEuY29tIik7CisgICAgICAg
IGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZUZsYWcpOworCisgICAgLy8gTmF2aWdhdGUgc29tZXdoZXJlIGVsc2UgYW5kIGxvYWQg
YSBkaWZmZXJlbnQgdGhpcmQgcGFydHkuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInJlc291cmNlLWxv
YWQtc3RhdGlzdGljczovL2ZwMi9mcC1sb2FkLXR3byJdXV07CisgICAgW2RlbGVnYXRlIHdhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2Rh
dGFTdG9yZSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOndlYlZpZXcuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KFtkb21haW5zIGNvdW50XSksIDEpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoW2RvbWFpbnMgb2JqZWN0QXRJbmRleDowXSwgQCJleGFtcGxlMi5jb20i
KTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBHbyBiYWNrLCBjaGVjayBmb3IgdGhl
IGNhY2hlZCB0aGlyZCBwYXJ0eSBleGFtcGxlMS5jb20uCisgICAgW3dlYlZpZXcgZ29CYWNrXTsK
KyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgZG9uZUZs
YWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6
d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRv
bWFpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oW2RvbWFpbnMgY291
bnRdKSwgMSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbZG9tYWlucyBvYmplY3RBdEluZGV4
OjBdLCBAImV4YW1wbGUxLmNvbSIpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIEdv
IGZvcndhcmQsIGNoZWNrIGZvciB0aGUgY2FjaGVkIHRoaXJkIHBhcnR5IGV4YW1wbGUyLmNvbS4K
KyAgICBbd2ViVmlldyBnb0ZvcndhcmRdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2xv
YWRlZFN1YnJlc291cmNlRG9tYWluc0Zvcjp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8aW50PihbZG9tYWlucyBjb3VudF0pLCAxKTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKFtkb21haW5zIG9iamVjdEF0SW5kZXg6MF0sIEAiZXhhbXBsZTIuY29tIik7CisgICAgICAg
IGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmVGbGFnKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDU1YWE3
MzA2Y2JiNjQ0YTU1ZjQyMTBiMDdhMWIwNGRkOWMwZGIxYTguLmQ4NGRlNWNkYzFkMTg0NDI3M2Vh
ZmFhMTE2MjYxNjAwZTVmYTI3NmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzUw
LDcgKzM1MCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxs
YmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihE
T01TdHJpbmcgZmlyc3RQYXJ0eVVSTFN0cmluZywgRE9NU3RyaW5nIGNuYW1lVVJMU3RyaW5nLCBv
YmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURv
bWFpbihET01TdHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVjdCBjYWxsYmFjayk7Ci0gICAgdm9p
ZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgbG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAKICAgICAvLyBJbmplY3Rl
ZCBidW5kbGUgZm9ybSBjbGllbnQuCiAgICAgdm9pZCBpbnN0YWxsVGV4dERpZENoYW5nZUluVGV4
dEZpZWxkQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYWY3
NDNiNjNlOGZmMGE0NjZmZDRhODlhZTA4NTM2YmZjMGQ4YWI1MS4uYzU3Y2JjMDg3YTA4NjZiZGNl
OTgzMTM2MDBjZGVmOTEwMWQyNWFkMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQzNyw3ICs0Mzcs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2Fs
bERpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyIpKSB7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZUxvYWRlZFN1
YnJlc291cmNlRG9tYWlucyIpKSB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CiAgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgp
KTsKIApAQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVN
ZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAg
ICAgICAgICAgZG9tYWlucy51bmNoZWNrZWRBcHBlbmQodG9XVEZTdHJpbmcoc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KGl0ZW0pKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3Rlc3RSdW5uZXIt
PmNhbGxEaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRv
bWFpbnMpKTsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUxvYWRlZFN1YnJl
c291cmNlRG9tYWluc0NhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAppbmRleCA3MjAxODI2OTUyZTlmZjJmNDEwNDhkZjkzNWIzOGRkNDc3
NzZmMDMxLi40MWY0NGUzNmI5MmQ4YmFkNjhlY2RjMTJkYzU4NWEwZTViMzE1Nzg1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTc2MSw3ICs3NjEsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldFRoaXJk
UGFydHlDTkFNRURvbWFpbkNhbGxiYWNrSUQsCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFja0lELAotICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tJRCwKKyAgICBM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdENhbGxi
YWNrSUQsCiAgICAgVGV4dERpZENoYW5nZUluVGV4dEZpZWxkQ2FsbGJhY2tJRCwKQEAgLTI1MDgs
MTUgKzI1MDgsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGQKICAgICBjYWxsVGVzdFJ1bm5l
ckNhbGxiYWNrKEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7
CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6bG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoSlNWYWx1ZVJl
ZiBjYWxsYmFjaykKK3ZvaWQgVGVzdFJ1bm5lcjo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKEpT
VmFsdWVSZWYgY2FsbGJhY2spCiB7Ci0gICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soTG9hZGVk
VGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAgY2FjaGVUZXN0UnVu
bmVyQ2FsbGJhY2soTG9hZGVkU3VicmVzb3VyY2VEb21haW5zQ2FsbGJhY2tJRCwgY2FsbGJhY2sp
OwogICAgIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxvYWRlZFRoaXJkUGFydHlEb21haW5z
IikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxvYWRlZFN1YnJlc291cmNlRG9tYWlucyIp
KTsKICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQogCi12b2lkIFRlc3RSdW5u
ZXI6OmNhbGxEaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayhWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpCit2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlTG9hZGVk
U3VicmVzb3VyY2VEb21haW5zQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQogewog
ICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1l
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CiAgICAgSlNDb250
ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZy
YW1lKTsKQEAgLTI1MzcsNyArMjUzNyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2Vp
dmVMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrKFZlY3RvcjxTdHJpbmc+JiYKICAgICAK
ICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoY29udGV4
dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nQnVpbGRlci50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CiAKLSAgICBjYWxsVGVzdFJ1bm5lckNhbGxi
YWNrKExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7CisgICAg
Y2FsbFRlc3RSdW5uZXJDYWxsYmFjayhMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFja0lE
LCAxLCAmcmVzdWx0KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrTWVkaWFEZXZpY2Uo
SlNTdHJpbmdSZWYgcGVyc2lzdGVudElkLCBKU1N0cmluZ1JlZiBsYWJlbCwgY29uc3QgY2hhciog
dHlwZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKaW5kZXggMDU2MTllMzI3MTcwMGJiMWZmMjQ5YmI5ZDU1ODZhOWNiODRkMWFiOC4u
MDAxMjgzOGRiMmI2Y2E2ZjU0M2YzYzc1MTBmZjc4NjFjMTgyOTQ5NSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ2MCw4
ICs0NjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBs
b2FkZWRUaGlyZFBhcnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGNh
bGxEaWRSZWNlaXZlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5n
PiYmIGRvbWFpbnMpOworICAgIHZvaWQgbG9hZGVkU3VicmVzb3VyY2VEb21haW5zKEpTVmFsdWVS
ZWYgY2FsbGJhY2spOworICAgIHZvaWQgY2FsbERpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwogCiAgICAgLy8gSW5qZWN0
ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFuZ2VJblRl
eHRGaWVsZENhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBhNDNmYTgxMzRhN2FiNzZjM2EzYjdmODIwOGRj
OTI2NjcyNzQ3NDYxLi40YzI2MDhmOWIxZWNmNmMyNTZjMmQwYWIzZjk2N2NhYWU5MDMyNGEyIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTE2MSw3ICsx
MTYxLDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVl
cyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBzZXRBbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZSh0cnVlKTsKIAogICAgIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7
Ci0gICAgY2xlYXJMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpOworICAgIGNsZWFyTG9hZGVkU3Vi
cmVzb3VyY2VEb21haW5zKCk7CiAgICAgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICBjbGVh
ckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCkBAIC0zMjM3LDggKzMyMzcsOCBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgcnVuVW50aWwoY29u
dGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCi1zdHJ1Y3QgTG9hZGVkVGhpcmRQYXJ0eURvbWFp
bnNDYWxsYmFja0NvbnRleHQgewotICAgIGV4cGxpY2l0IExvYWRlZFRoaXJkUGFydHlEb21haW5z
Q2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorc3RydWN0IExvYWRl
ZFN1YnJlc291cmNlRG9tYWluc0NhbGxiYWNrQ29udGV4dCB7CisgICAgZXhwbGljaXQgTG9hZGVk
U3VicmVzb3VyY2VEb21haW5zQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9s
bGVyKQogICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCiAgICAgewogICAgIH0K
QEAgLTMyNDgsOSArMzI0OCw5IEBAIHN0cnVjdCBMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxi
YWNrQ29udGV4dCB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogfTsKIAotc3RhdGljIHZv
aWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFjayhXS0FycmF5UmVmIGRvbWFpbnMsIHZv
aWQqIHVzZXJEYXRhKQorc3RhdGljIHZvaWQgbG9hZGVkU3VicmVzb3VyY2VEb21haW5zQ2FsbGJh
Y2soV0tBcnJheVJlZiBkb21haW5zLCB2b2lkKiB1c2VyRGF0YSkKIHsKLSAgICBhdXRvKiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8TG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0NvbnRleHQq
Pih1c2VyRGF0YSk7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PExvYWRlZFN1YnJl
c291cmNlRG9tYWluc0NhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKICAgICBjb250ZXh0LT5k
b25lID0gdHJ1ZTsKIAogICAgIGlmIChkb21haW5zKSB7CkBAIC0zMjYzLDE3ICszMjYzLDE3IEBA
IHN0YXRpYyB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2soV0tBcnJheVJlZiBk
b21haW5zLCB2b2lkKiB1c2VyRGF0YSkKICAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmxvYWRlZFRoaXJkUGFydHlEb21h
aW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpCiB7
Ci0gICAgTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhp
cyk7Ci0gICAgV0tQYWdlTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMobV9tYWluV2ViVmlldy0+cGFn
ZSgpLCBsb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrLCAmY29udGV4dCk7CisgICAgTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAg
IFdLUGFnZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhtX21haW5XZWJWaWV3LT5wYWdlKCksIGxv
YWRlZFN1YnJlc291cmNlRG9tYWluc0NhbGxiYWNrLCAmY29udGV4dCk7CiAgICAgcnVuVW50aWwo
Y29udGV4dC5kb25lLCBub1RpbWVvdXQpOwotICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJl
Y2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhXVEZNb3ZlKGNvbnRleHQucmVzdWx0KSk7Cisg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUxvYWRlZFN1YnJlc291cmNlRG9tYWlu
cyhXVEZNb3ZlKGNvbnRleHQucmVzdWx0KSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmNs
ZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogewotICAgIFdLUGFnZUNsZWFyTG9hZGVkVGhpcmRQ
YXJ0eURvbWFpbnMobV9tYWluV2ViVmlldy0+cGFnZSgpKTsKKyAgICBXS1BhZ2VDbGVhckxvYWRl
ZFN1YnJlc291cmNlRG9tYWlucyhtX21haW5XZWJWaWV3LT5wYWdlKCkpOwogfQogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CmluZGV4IDcyNGNkMDA0YzFiNDJlODE1ZmQ1MjE1NTM5OWZhZTAyMTA2Y2NmODAuLjcxM2ZmOWFi
MTk2OWI5N2E1N2U3YjVlNGIyMjg0ZWQyMDhmMDZjMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKQEAgLTI3Miw4ICsyNzIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCiAgICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcygpOwotICAgIHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsK
LSAgICB2b2lkIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoKTsKKyAgICB2b2lkIGxvYWRl
ZFN1YnJlc291cmNlRG9tYWlucygpOworICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoKTsKICAgICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdm9pZCByZWlu
aXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKTsKICAgICB2b2lkIHVwZGF0ZUJ1bmRsZUlkZW50aWZp
ZXJJbk5ldHdvcmtQcm9jZXNzKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGM2MTVkMjg3MmY5ZGM4
N2E5ODhjMWQzY2I3NWNjMjU1Y2FhY2YxNzEuLjlhZWFmNmVhNmU1MTY4MTgwNDdmZTg3YzVhYjBj
ZTJlNDEzNzNkYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CkBAIC04MjIsOCArODIyLDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICB9CiAjZW5k
aWYKICAgICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkxvYWRlZFRoaXJkUGFydHlEb21haW5zIikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLmxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubG9hZGVkU3VicmVz
b3VyY2VEb21haW5zKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNjksOSArMjA2
OSw5IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
YWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKLXZvaWQg
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVMb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTG9hZGVk
U3VicmVzb3VyY2VEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKIHsKLSAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2ZUxvYWRlZFRoaXJkUGFydHlEb21haW5zIikp
OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZlTG9hZGVkU3VicmVzb3Vy
Y2VEb21haW5zIikpOwogICAgIAogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBt
ZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CiAgICAgZm9yIChh
dXRvJiBkb21haW4gOiBkb21haW5zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oCmluZGV4IDJkNjIwNjBjZDk1ZWJjNWUwYjZiZDIxMGE1ZWIyMGYwZjYyYjA2YzUuLmI4Y2E2
YjdiZGNmZDM0NzQ1NTYyZDBjYzdiYjllZTc2NGEwZDBkMjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkU2V0VmVyeVByZXZhbGVudFJlc291cmNlKCk7CiAgICAgdm9pZCBkaWRTZXRIYXNIYWRVc2Vy
SW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmll
cyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUxvYWRlZFRo
aXJkUGFydHlEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk7
CiAKICAgICB2b2lkIGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5k
ZXggMTVjMzllMTBjZGNjM2FlZDAwY2UwNzI5ZTFmNDg0YjczN2E0M2NjZS4uZjc1ODc2NjlmZmVh
OGM3NGQ3YmQ2MDNkN2FiMjJiYjhlNDg5NzlkOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzUyLDI0ICszNTIsMjQg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAg
IH1dOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpsb2FkZWRUaGlyZFBhcnR5RG9tYWlucygp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpsb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogewogICAg
IGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlIF9sb2FkZWRUaGlyZFBhcnR5RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5w
bGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRv
bWFpbnMpIHsKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUxvYWRlZFRo
aXJkUGFydHlEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CisgICAgW2dsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFN1YnJlc291cmNl
RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICAgICAgbV9jdXJyZW50SW52b2Nh
dGlvbi0+ZGlkUmVjZWl2ZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhtYWtlVmVjdG9yPFN0cmlu
Zz4oZG9tYWlucykpOwogICAgIH1dOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckxv
YWRlZFRoaXJkUGFydHlEb21haW5zKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9hZGVk
U3VicmVzb3VyY2VEb21haW5zKCkKIHsKICAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZp
ZXcoKTsKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhckxvYWRlZFRoaXJk
UGFydHlEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKKyAgICBbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJMb2FkZWRTdWJyZXNv
dXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOwogfQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA1OGYzMTliYWIxOTU4ZmVmZTViNTNiOTU3YmVkY2JmNTIzZmM5MDFhLi4zYzYxNzJkMTI4OGQ4
ODQ5MzE4MmM2NTAxOTExNDJmZGYyMmE1MDQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAt
MDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgVGhpcmQgcGFydHkgZG9tYWlucyBhcmUgbm90IHN0b3JlZCBpbiB0aGUgY2FzZSBvZiBiYWNr
L2ZvcndhcmQgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTU5NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjY2NDI4OTM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVXBkYXRlZCBsYXlv
dXQgdGVzdHMgdG8gdXNlIHRoZSBuZXcgZnVuY3Rpb24gbmFtZS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVnaXN0cmFibGUtZG9tYWlucy1n
ZXQtcmVwb3J0ZWQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC93ZWItc29j
a2V0LWxvYWRzLWNhcHR1cmVkLWluLXBlci1wYWdlLWRvbWFpbnMuaHRtbDoKKwogMjAyMC0wOC0x
NyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS11bV1BFXSBSZW1vdmUgc3VwcG9ydCBmb3IgTlBBUEkgcGx1Z2lucwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdp
c3RyYWJsZS1kb21haW5zLWdldC1yZXBvcnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2xvYWRlZC1yZWdpc3RyYWJsZS1kb21haW5zLWdldC1y
ZXBvcnRlZC5odG1sCmluZGV4IDNkMDBmMmQ4ZTRkNGVjNDBkYzY2NzdmYTNiN2VhZjI4ODU1NDZi
NWMuLjM5MmJmODM5NjhjZTJmZDIzYzM0MGI5OWRmYzAxMjhhOTJmMzA1ZmQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9sb2FkZWQtcmVn
aXN0cmFibGUtZG9tYWlucy1nZXQtcmVwb3J0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvbG9hZGVkLXJlZ2lzdHJhYmxlLWRvbWFpbnMt
Z2V0LXJlcG9ydGVkLmh0bWwKQEAgLTgsMTAgKzgsMTAgQEAKICAgICAgICAgZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgYSBpZnJhbWUgZ2V0cyByZXBvcnRlZCBhcyBhIGxvYWRlZCB0aGlyZCBwYXJ0
eSBkb21haW4uIik7CiAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi0gICAgICAgIGZ1
bmN0aW9uIGFza0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCkgewotICAgICAgICAgICAgdGVz
dFJ1bm5lci5sb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhmdW5jdGlvbiAoYXJyYXlPZkRvbWFpbnMp
IHsKKyAgICAgICAgZnVuY3Rpb24gYXNrRm9yTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoZnVuY3Rpb24g
KGFycmF5T2ZEb21haW5zKSB7CiAgICAgICAgICAgICAgICAgaWYgKGFycmF5T2ZEb21haW5zLmxl
bmd0aCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFza0ZvckxvYWRlZFRoaXJkUGFydHlE
b21haW5zKCk7CisgICAgICAgICAgICAgICAgICAgIGFza0ZvckxvYWRlZFN1YnJlc291cmNlRG9t
YWlucygpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWlucy5pbmNsdWRlcygibG9jYWxob3N0Iikp
CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxpZnJh
bWUgb25sb2FkPSJzZXRUaW1lb3V0KCdhc2tGb3JMb2FkZWRUaGlyZFBhcnR5RG9tYWlucygpJywg
MCkiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sIj4KKzxpZnJhbWUgb25sb2FkPSJzZXRUaW1lb3V0KCdh
c2tGb3JMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKScsIDApIiBzcmM9Imh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Jlc291cmNlcy9iYXNpYy1pZnJhbWUuaHRt
bCI+CiA8L2lmcmFtZT4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3dlYi1zb2NrZXQtbG9hZHMtY2FwdHVyZWQtaW4tcGVyLXBh
Z2UtZG9tYWlucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNv
Y2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLmh0bWwKaW5kZXggY2RlMDNm
NzI5OWQ4ZTAwMTkzOTlhNzJlOTVkNDBhMTIwNzNlNzc1Mi4uOTk4OWNmMDFhMzBlYWIzMGMyNjJh
MGRiOTdlYjQ3MGNhZDE3N2JjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fkcy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvd2ViLXNvY2tldC1sb2Fk
cy1jYXB0dXJlZC1pbi1wZXItcGFnZS1kb21haW5zLmh0bWwKQEAgLTEyLDEwICsxMiwxMCBAQAog
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKIAotICAgIGZ1bmN0aW9uIGFza0ZvckxvYWRlZFRoaXJk
UGFydHlEb21haW5zKCkgewotICAgICAgICB0ZXN0UnVubmVyLmxvYWRlZFRoaXJkUGFydHlEb21h
aW5zKGZ1bmN0aW9uIChhcnJheU9mRG9tYWlucykgeworICAgIGZ1bmN0aW9uIGFza0ZvckxvYWRl
ZFN1YnJlc291cmNlRG9tYWlucygpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5sb2FkZWRTdWJyZXNv
dXJjZURvbWFpbnMoZnVuY3Rpb24gKGFycmF5T2ZEb21haW5zKSB7CiAgICAgICAgICAgICBpZiAo
YXJyYXlPZkRvbWFpbnMubGVuZ3RoID09IDApIHsKLSAgICAgICAgICAgICAgICBhc2tGb3JMb2Fk
ZWRUaGlyZFBhcnR5RG9tYWlucygpOworICAgICAgICAgICAgICAgIGFza0ZvckxvYWRlZFN1YnJl
c291cmNlRG9tYWlucygpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChhcnJheU9mRG9tYWlucy5pbmNsdWRlcygibG9jYWxob3N0IikpCkBA
IC0yOCw3ICsyOCw3IEBACiAKICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgICBuZXcg
V2ViU29ja2V0KCd3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NpbXBs
ZScpOwotICAgICAgICBzZXRUaW1lb3V0KGFza0ZvckxvYWRlZFRoaXJkUGFydHlEb21haW5zLCAw
KTsKKyAgICAgICAgc2V0VGltZW91dChhc2tGb3JMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMsIDAp
OwogICAgIH0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>