<?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>220741</bug_id>
          
          <creation_ts>2021-01-19 12:42:34 -0800</creation_ts>
          <short_desc>WKWebView closeAllMediaPresentations API does not have a completion handler</short_desc>
          <delta_ts>2021-02-03 10:46:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221343</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1720628</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-19 12:42:34 -0800</bug_when>
    <thetext>This call involves async operations and should have a completion handler so clients know when it has completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720629</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-19 12:43:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/73045904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720650</commentid>
    <comment_count>2</comment_count>
      <attachid>417901</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-19 13:14:31 -0800</bug_when>
    <thetext>Created attachment 417901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720658</commentid>
    <comment_count>3</comment_count>
      <attachid>417903</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-19 13:21:24 -0800</bug_when>
    <thetext>Created attachment 417903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720684</commentid>
    <comment_count>4</comment_count>
      <attachid>417903</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-19 13:56:39 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt; Source/WebKit/ChangeLog:21
&gt; +        has requested that media presentations close.

Am I correct that a webView cannot have both video fullscreen content and element fullscreen content simultaneously?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720785</commentid>
    <comment_count>5</comment_count>
      <attachid>417903</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-19 18:40:17 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Because many classes inherit from VideoFullscreenModel, we have to add

Looks like only three classes inherit from VideoFullscreenModel: VideoFullscreenModelVideoElement, VideoFullscreenModelContext, and VideoFullscreenControllerContext. :-)

&gt;&gt; Source/WebKit/ChangeLog:21
&gt;&gt; +        has requested that media presentations close.
&gt; 
&gt; Am I correct that a webView cannot have both video fullscreen content and element fullscreen content simultaneously?

This is unlikely to happen in practice, but it is possible in theory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721548</commentid>
    <comment_count>6</comment_count>
      <attachid>417903</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-22 03:22:34 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:194
&gt; +    void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia, CompletionHandler&lt;void(void)&gt;&amp;&amp;) override;

final

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:589
&gt; +    completionHandler();

Does it make sense to call completionHandler as part of  m_fullscreenModel-&gt;requestFullscreenMode completion handler (after a hop to UIThread?)

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:740
&gt; +        return;

This is a bit problematic as most probably completionHandler will not be called if we return early, leading to a debug assert.

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:757
&gt;      m_page-&gt;send(Messages::VideoFullscreenManager::RequestFullscreenMode(contextId, mode, finishedWithMedia));

Why not simply making RequestFullscreenMode Async, using sendWithAsyncReply and passing the completionHandler to it.

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp:160
&gt; +    setCloseAllMediaPresentationsCallback(WTFMove(completionHandler));

It is not clear to me why we are setting close completionHandler here, it seems it could clash with completionHandler from VideoFullscreenManagerProxy::requestFullscreenMode.

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.h:97
&gt; +    CompletionHandler&lt;void(void)&gt; m_closeAllMediaCallback;

void()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721611</commentid>
    <comment_count>7</comment_count>
      <attachid>417903</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-01-22 10:07:01 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:757
&gt;&gt;      m_page-&gt;send(Messages::VideoFullscreenManager::RequestFullscreenMode(contextId, mode, finishedWithMedia));
&gt; 
&gt; Why not simply making RequestFullscreenMode Async, using sendWithAsyncReply and passing the completionHandler to it.

The RequestFullscreenMode message is used by the UI process to request a presentation mode change. It will lead to multiple IPC messages between a Web process and the UI process. So we need to refactor the current implementation before we can use sendAsync() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721614</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-22 10:12:43 -0800</bug_when>
    <thetext>&gt; &gt; Why not simply making RequestFullscreenMode Async, using sendWithAsyncReply and passing the completionHandler to it.
&gt; 
&gt; The RequestFullscreenMode message is used by the UI process to request a
&gt; presentation mode change. It will lead to multiple IPC messages between a
&gt; Web process and the UI process. So we need to refactor the current
&gt; implementation before we can use sendAsync() here.

The WebProcess could keep track of all these messages and call the IPC completion handler when it is done with mode change.

Is the WebProcess not doing so/able to do it without too much trouble?
Or is it necessary that UIProcess calls this completion handler as soon as it knows it  is finished?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721617</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-22 10:16:56 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; &gt; &gt; Why not simply making RequestFullscreenMode Async, using sendWithAsyncReply and passing the completionHandler to it.
&gt; &gt; 
&gt; &gt; The RequestFullscreenMode message is used by the UI process to request a
&gt; &gt; presentation mode change. It will lead to multiple IPC messages between a
&gt; &gt; Web process and the UI process. So we need to refactor the current
&gt; &gt; implementation before we can use sendAsync() here.
&gt; 
&gt; The WebProcess could keep track of all these messages and call the IPC
&gt; completion handler when it is done with mode change.
&gt; 
&gt; Is the WebProcess not doing so/able to do it without too much trouble?
&gt; Or is it necessary that UIProcess calls this completion handler as soon as
&gt; it knows it  is finished?

I think maybe one issue is it seems like PiP is closed (for Mac) in VideoFullscreenInterfaceMac pipDidClose: which we don&apos;t initiate from WebKit, so we can&apos;t pass our own completion handler there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721619</commentid>
    <comment_count>10</comment_count>
      <attachid>417903</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-22 10:18:21 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:21
&gt;&gt;&gt; +        has requested that media presentations close.
&gt;&gt; 
&gt;&gt; Am I correct that a webView cannot have both video fullscreen content and element fullscreen content simultaneously?
&gt; 
&gt; This is unlikely to happen in practice, but it is possible in theory.

Ok. I need to use some sort of callback aggregator then, because now I return early after checking for video fullscreen.

&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:589
&gt;&gt; +    completionHandler();
&gt; 
&gt; Does it make sense to call completionHandler as part of  m_fullscreenModel-&gt;requestFullscreenMode completion handler (after a hop to UIThread?)

I didn&apos;t originally think it mattered because this path is not hit when closing fullscreen but I had to include this because it inherits from VideoFullscreenModel. I will double check, I might be wrong.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:740
&gt;&gt; +        return;
&gt; 
&gt; This is a bit problematic as most probably completionHandler will not be called if we return early, leading to a debug assert.

In the destructor I call it if it is not null, won&apos;t that mean no assert?

&gt;&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp:160
&gt;&gt; +    setCloseAllMediaPresentationsCallback(WTFMove(completionHandler));
&gt; 
&gt; It is not clear to me why we are setting close completionHandler here, it seems it could clash with completionHandler from VideoFullscreenManagerProxy::requestFullscreenMode.

This one is for element fullscreen, the other is for video fullscreen. I originally thought they were mutually exclusive, but as Peng pointed out above it is possible so I think I need some sort of callback aggregator in [WKWebView closeAllMediaPresentations].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721712</commentid>
    <comment_count>11</comment_count>
      <attachid>417903</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-22 14:06:07 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt;&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:194
&gt;&gt; +    void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia, CompletionHandler&lt;void(void)&gt;&amp;&amp;) override;
&gt; 
&gt; final

Ok, I assume requestFullscreenMode in VideoFullscreenModelVideoElement and VideoFullscreenModelContext should also not be overridden?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721780</commentid>
    <comment_count>12</comment_count>
      <attachid>417903</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-22 16:29:25 -0800</bug_when>
    <thetext>Comment on attachment 417903
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:740
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; This is a bit problematic as most probably completionHandler will not be called if we return early, leading to a debug assert.
&gt; 
&gt; In the destructor I call it if it is not null, won&apos;t that mean no assert?

Oh -- I see what you are saying, this is maybe a flawed design because more than one callback can be associated with a single instance of this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721788</commentid>
    <comment_count>13</comment_count>
      <attachid>418201</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-22 17:16:35 -0800</bug_when>
    <thetext>Created attachment 418201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721789</commentid>
    <comment_count>14</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-22 17:17:16 -0800</bug_when>
    <thetext>I think this will work. I append to a vector of completion handlers and call all of them when media presentations close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722668</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-26 12:43:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73628499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722853</commentid>
    <comment_count>16</comment_count>
      <attachid>418201</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-27 00:50:43 -0800</bug_when>
    <thetext>Comment on attachment 418201
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:916
&gt; +            model.requestFullscreenModeWithCallback(WebCore::HTMLMediaElementEnums::VideoFullscreenModeNone, false, [callbackAggregator] { });

callbackAggregator = WTFMove(callbackAggregator);

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:921
&gt; +        fullScreenManager-&gt;closeWithCallback([callbackAggregator] { });

callbackAggregator = WTFMove(callbackAggregator);

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h:217
&gt; +    Vector&lt;CompletionHandler&lt;void()&gt;&gt; m_closeAllMediaHandlers;

I would tend to name it m_closeCompletionHandlers.
And rename callCloseAllMediaHandlers accordingly.

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:341
&gt; +    ASSERT(m_closeAllMediaHandlers.isEmpty());

Why is this ASSERT guaranteed?

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:743
&gt; +void VideoFullscreenManagerProxy::setCloseAllMediaPresentationsCallback(CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)

The name could be improved since we are appending a callback, not setting it.
I would tend to remove it and just append the callback in requestFullscreenModeWithCallback.

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:760
&gt; +    requestFullscreenMode(contextId, mode, finishedWithMedia);

What guarantees do we have didExitFullscreen will be called?
Let&apos;s say requestFullscreenModeWithCallback is called with mode none but the page is not in fullscreen.

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp:54
&gt; +    ASSERT(m_closeAllMediaHandlers.isEmpty());

Is it guaranteed?

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp:95
&gt; +    setCloseAllMediaPresentationsCallback(WTFMove(completionHandler));

Ditto for setCloseAllMediaPresentationsCallback.

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.h:83
&gt; +    void setCloseAllMediaPresentationsCallback(CompletionHandler&lt;void()&gt;&amp;&amp;);

Can we make it private, or remove it?

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.h:91
&gt; +    void callCloseAllMediaHandlers();

I would name it callCloseCompletionHandlers()

&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.h:99
&gt; +    Vector&lt;CompletionHandler&lt;void()&gt;&gt; m_closeAllMediaHandlers;

I would name it m_closeCompletionHandlers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723060</commentid>
    <comment_count>17</comment_count>
      <attachid>418201</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-27 10:51:17 -0800</bug_when>
    <thetext>Comment on attachment 418201
Patch

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

Thanks for the review, I will make these changes before landing.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:916
&gt;&gt; +            model.requestFullscreenModeWithCallback(WebCore::HTMLMediaElementEnums::VideoFullscreenModeNone, false, [callbackAggregator] { });
&gt; 
&gt; callbackAggregator = WTFMove(callbackAggregator);

Is it OK to WTFMove() the callbackAggregator if we might use it again below?

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:341
&gt;&gt; +    ASSERT(m_closeAllMediaHandlers.isEmpty());
&gt; 
&gt; Why is this ASSERT guaranteed?

It is not, I&apos;ll remove it.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:760
&gt;&gt; +    requestFullscreenMode(contextId, mode, finishedWithMedia);
&gt; 
&gt; What guarantees do we have didExitFullscreen will be called?
&gt; Let&apos;s say requestFullscreenModeWithCallback is called with mode none but the page is not in fullscreen.

Ok, I will add a check for fullscreen or Picture in Picture so we know it will be called.

&gt;&gt; Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp:54
&gt;&gt; +    ASSERT(m_closeAllMediaHandlers.isEmpty());
&gt; 
&gt; Is it guaranteed?

No, will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723084</commentid>
    <comment_count>18</comment_count>
      <attachid>418569</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-27 11:31:55 -0800</bug_when>
    <thetext>Created attachment 418569
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723085</commentid>
    <comment_count>19</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-01-27 11:32:22 -0800</bug_when>
    <thetext>Patch-for-landing has all changes except for WTFMove(callbackAggregator) because I did not think that was safe. I can post a followup patch if I am wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723106</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-27 12:25:04 -0800</bug_when>
    <thetext>Committed r271970: &lt;https://trac.webkit.org/changeset/271970&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418569.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417901</attachid>
            <date>2021-01-19 13:14:31 -0800</date>
            <delta_ts>2021-01-19 13:29:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220741-20210119131430.patch</filename>
            <type>text/plain</type>
            <size>37794</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE1ZjY4ZTMzZjgwOTRl
YzI5NDk1MDk2YmE5MDMzZmIyMTcxNWUyYi4uYTcyYzhhZTMwODQ5MTRjMmYwODBlYjQ3NGIwYWY0
YjIzODQwOGM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTAxLTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmll
dyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucyBBUEkgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXRp
b24gaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwNzQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzA0NTkwND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG1hbnkgY2xhc3Nl
cyBpbmhlcml0IGZyb20gVmlkZW9GdWxsc2NyZWVuTW9kZWwsIHdlIGhhdmUgdG8gYWRkCisgICAg
ICAgIHN1cHBvcnQgZm9yIGNvbXBsZXRpb24gaGFuZGxlcnMgdG8gcmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKCkgZnVuY3Rpb25zCisgICAgICAgIGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IGNhcmUgbXVj
aCBhYm91dCBpdC4gV2UgY2FuIGFyYml0cmFyaWx5IGNhbGwKKyAgICAgICAgdGhlc2UgYmVjYXVz
ZSB0aGV5IGFyZSBub3QgdGhlIGNvZGUgcGF0aCB0YWtlbiBmb3IgW1dLV2ViVmlldyBjbG9zZUFs
bE1lZGlhUHJlc2VudGF0aW9uc10uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oOgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gcGFzc2VzIGZhbHNlIGFu
eXdoZXJlIHRoYXQgZmluaXNoZWRXaXRoTWVkaWEgd2FzIG5vdAorICAgICAgICBzcGVjaWZpZWQg
bm93IHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBoZWFkZXIgZmls
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3Vs
ZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnJlcXVlc3RIaWRlQW5kRXhpdFBpUCk6
CisKIDIwMjEtMDEtMTkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNv
bT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkIEphbnVhcnkgMjAyMSBl
ZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDQ1OGNjODU0NzcxMjM4NDI3NTJmYmY4YTE4ZTRiZDEyN2VkMzBj
YzcuLjI4ZmI4MzcxNjAyNzZjZjRiNmFkNjQ2ZDZkNDBhMmI3ZTUwYmQwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMjEtMDEtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRp
b25zIEFQSSBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlvbiBoYW5kbGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3NDEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzczMDQ1OTA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gW1dLV2ViVmlldyBjbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9uczpdLgorICAgICAgICBUaGlzIHJlcXVpcmVkIGhhbmRsaW5n
IHRoZSBjYXNlIGZvciB2aWRlbyBmdWxsc2NyZWVuLCBwaWN0dXJlLWluLXBpY3R1cmUsCisgICAg
ICAgIGFuZCBlbGVtZW50IGZ1bGxzY3JlZW4uIEZvciBzaW1wbGljaXR5LCB0aGUgY2FsbGJhY2tz
IGFyZSBzdG9yZWQgaW4KKyAgICAgICAgdGhlIHJlc3BlY3RpdmUgKkZ1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkgb2JqZWN0IGFuZCBjYWxsZWQgd2hlbgorICAgICAgICBkaWRFeGl0RnVsbHNjcmVlbigp
IGlzIGV4ZWN1dGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOl0pOgorICAgICAgICBDaGVj
ayBpZiB0aGUgdmlkZW9GdWxsc2NyZWVuTWFuYWdlciBoYXMgYW55IGZ1bGwgc2NyZWVuIGNvbnRl
bnQuIElmCisgICAgICAgIG5vdCwgY2hlY2sgdGhlIHdlYkZ1bGxTY3JlZW5NYW5hZ2VyLiBJdCBp
cyBub3QgcG9zc2libGUgdG8gaGF2ZSBib3RoCisgICAgICAgIGF0IG9uY2UsIHNvIGl0IGlzIHNh
ZmUgdG8gZG8gYW4gZWFybHkgcmV0dXJuIG9uY2UgdmlkZW9GdWxsc2NyZWVuTWFuYWdlcgorICAg
ICAgICBoYXMgcmVxdWVzdGVkIHRoYXQgbWVkaWEgcHJlc2VudGF0aW9ucyBjbG9zZS4KKworICAg
ICAgICAoLVtXS1dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkXSk6CisgICAgICAgIE5l
dyBTUEkgZm9yIHRlc3RpbmcuIFByZXZpb3VzbHkgdGhlc2UgdGVzdHMgdXNlZCBKYXZhU2NyaXB0
IHRvIGNoZWNrCisgICAgICAgIGZvciBpbmxpbmUgdmlkZW8gYnV0IHVwZGF0aW5nIHRoZSBKUyB2
YWx1ZSBpcyBhc3luYyBhbmQgbWF5IG5vdCBiZSBjb21wbGV0ZWQKKyAgICAgICAgYnkgdGhlIHRp
bWUgZGlkRXhpdEZ1bGxzY3JlZW4oKSBpcyBjYWxsZWQuIFNvLCB0aGlzIFNQSSB3aWxsIGF2b2lk
CisgICAgICAgIGZsYWtpbmVzcy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgY2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldENsb3Nl
QWxsTWVkaWFQcmVzZW50YXRpb25zQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlQWxsTWVkaWFDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0
RnVsbHNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp+V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OnNldENsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZUFsbE1lZGlhQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRF
eGl0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmNsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmV4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAg
ICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRW50ZXJGdWxsU2NyZWVu
V2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmNsb3NlRnVs
bFNjcmVlbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICBNYW55IGluc3RhbmNlcyBvZiByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoKSBhbmQgY2xvc2UoKSB3aWxsIGhhdmUgZW1wdHkKKyAgICAgICAgY29tcGxldGlv
biBoYW5kbGVycyBiZWNhdXNlIHRoZXkgYXJlIG5vdCBjb2RlIHBhdGhzIHRha2VuIGJ5CisgICAg
ICAgIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLCBidXQgYmVjYXVzZSBvZiBpbmhlcml0YW5j
ZSB3ZSBzdGlsbCBuZWVkCisgICAgICAgIHRvIGluY2x1ZGUgYSBjb21wbGV0aW9uIGhhbmRsZXIu
CisKKwogMjAyMS0wMS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGRyb3AgcmVtYWluaW5nIG1haW4tdGhyZWFkIGFzc2VydGlvbiBpbiBT
aGFyZWFibGVCaXRtYXAgdGhhdCBJIG1pc3NlZCBpbiByMjcxNTMzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKaW5kZXggMGZl
ZDc5NWFjYTlkOTg2ZmQxOThmY2VjOGRmYjVjNTBhNWFkMmQ2ZS4uZWFhNWU3YWU0MDQ3MjMxYTRm
ZjQ2ZTQyYjM5NTJiYmUzODUzMjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDbGllbnQmKT0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVk
V2l0aE1lZGlhID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBm
aW5pc2hlZFdpdGhNZWRpYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
R3Jhdml0eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCAyYzUxZDgzYjFiODc1NTFhY2ViMGMzNDIzMDlhZGNm
ZDU4OTEzMDU0Li5mYmNmMDU0ODlhZWU2YWFhYTY2NWI3ZmM3Y2UyNTJiMjU1MGY4M2EyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUNsaWVudChW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllckVudW1z
OjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDRjYTRj
MmNiYzYwZDBhMzU0YzViMzRhNjYzM2U2YmU3ODQ1ODI3MTIuLjBkZDFjMjMyOWEzYTJlMjFhMjJk
MTkzODBhNjQzOTQ0NWFhNGNkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW8KICAgICBtX3ZpZGVv
RWxlbWVudC0+d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAobV92aWRlb0VsZW1lbnQpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50
YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShtb2RlKSk7CkBA
IC0xNjEsNiArMTYxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnUKICAgICAgICAgICAgICAg
ICB3aW5kb3ctPmhpc3RvcnkoKS5iYWNrKCk7CiAgICAgICAgIH0KICAgICB9CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCmluZGV4IDljMDdkNzgzNDVhMDE3MzFkMjM5NWQ4YjFmOTEwNTk0ZGIzNTZlZmEuLmU5MDM0
OWNmMjNlY2IwMjQzMmUwYTM5YTQ0NGM3YWFhNTA3NjM5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KQEAgLTEwNjIsNyArMTA2Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnJlcXVlc3RIaWRlQW5kRXhpdEZ1bGxzY3JlZW4oKQogCiAgICAgaWYgKHBsYXliYWNr
U2Vzc2lvbk1vZGVsKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkgewogICAgICAgICBwbGF5
YmFja1Nlc3Npb25Nb2RlbCgpLT5wYXVzZSgpOwotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVl
c3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lLCBmYWxzZSwgW10geyB9KTsKICAgICB9CiB9CiAKQEAgLTExNTUsNyArMTE1NSw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJl
SW5QaWN0dXJlKCkKIAogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKSB7CiAgICAgICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7
Ci0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZhbHNlLCBbXSB7IH0pOwogICAg
IH0KIH0KIApAQCAtMTI4MCw3ICsxMjgwLDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFZpZGVvRnVsbHNjcmUKICAg
ICBCT09MIGZpbmlzaGVkID0gcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0
dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6UGluY2hHZXN0dXJl
SGFuZGxlZDsKICAgICBBU1NFUlQobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCk7CiAgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lLCBmaW5pc2hlZCk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lLCBmaW5pc2hlZCwgW10geyB9KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDRiOGEwM2I2NzVjZGUxMWRkZWZjODI2
OWRmN2JlYzY5NWMzOTQ3OWIuLmFmMDgxNWQwOGRlOWMxYWZiMWM3YTA5YjFjZjY1ZDZiOWY1Yzkw
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTkxLDcgKzE5MSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gVmlkZW9GdWxsc2NyZWVuTW9kZWwKICAgICB2b2lkIGFkZENsaWVu
dChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh2b2lkKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRS
ZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlk
ZTsKQEAgLTU3OSwxMyArNTc5LDE0IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnJlbW92ZUNsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYKICAgICBtX2Z1
bGxzY3JlZW5DbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlh
KQordm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBi
b29sIGZpbmlzaGVkV2l0aE1lZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRo
cmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIG1vZGUsIGZp
bmlzaGVkV2l0aE1lZGlhXSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5Nb2RlbCkKLSAgICAg
ICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSwgZmlu
aXNoZWRXaXRoTWVkaWEpOworICAgICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RG
dWxsc2NyZWVuTW9kZShtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSwgW10geyB9KTsKICAgICB9KTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW0KaW5kZXggMmMxMWY3ZWY1MmUwNjE0ZTVmMzYyOWI0YTFlMGNhZmZlOWMyNWQz
My4uZmE5NjhkM2JiZTczNzYxOWE4YTY3YzhlYjA4YjEyNjRjMTZkOTU3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLm1tCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OnJlcXVlc3RIaWRlQW5kRXhpdFBpUCgpCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5y
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZh
bHNlLCBbXSB7IH0pOwogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPndpbGxFeGl0UGljdHVy
ZUluUGljdHVyZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3LmgKaW5kZXggNzQ3NWJjYTI2NWI3NzI2NWY0OTJhZmM5YWMwODNlMzBhZTkwYjc2
Ni4uZTNiOWQ4YjU3ZTcwM2U2OGI1ZTc2YTdjZGYyMjgwNDVlY2Q0NzYxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzI3LDcgKzMyNyw3
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogLyohIEBhYnN0
cmFjdCBDbG9zZXMgYWxsIG91dC1vZi13aW5kb3cgbWVkaWEgcHJlc2VudGF0aW9ucyBpbiBhIFdL
V2ViVmlldy4KICBAZGlzY3Vzc2lvbiBJbmNsdWRlcyBwaWN0dXJlLWluLXBpY3R1cmUgYW5kIGZ1
bGxzY3JlZW4uCiAgKi8KLS0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6KHZvaWQgKF5fTnVsbGFibGUpKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIC8qISBAYWJzdHJhY3QgUGF1c2VzIG1lZGlhIHBsYXliYWNrIGluIFdLV2Vi
Vmlldy4KICBAZGlzY3Vzc2lvbiBQYXVzZXMgbWVkaWEgcGxheWJhY2suIE1lZGlhIGluIHRoZSBw
YWdlIGNhbiBiZSByZXN0YXJ0ZWQgYnkgY2FsbGluZyBwbGF5KCkgb24gYSBtZWRpYSBlbGVtZW50
IG9yIHJlc3VtZSgpIG9uIGFuIEF1ZGlvQ29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDE3YzZiZTkxYTI0OWJkNDE3NzAxMTQ0
ZmUzMjNhZjU0ZGMyNmY5MzUuLjFhYWExMzI3ZjAwNGE0NWNhM2E0M2FjMjFiODc5MjhkMTBmNzA3
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtOTA1LDE4ICs5MDUsMjQgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBh
cmd1bWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS0gKHZvaWQpY2xvc2VBbGxNZWRpYVBy
ZXNlbnRhdGlvbnMKKy0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
ICAgIGlmIChhdXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcigpKSB7Ci0gICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVhY2hT
ZXNzaW9uKFtdIChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7Ci0gICAgICAgICAgICBt
b2RlbC5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgICAgIH0pOworICAgICAgICBpZiAodmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci0+aGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkgfHwgdmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci0+aGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkgeworICAgICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFu
YWdlci0+Zm9yRWFjaFNlc3Npb24oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBtb2RlbC5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmFsc2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGF1dG8gZnVsbFNjcmVlbk1hbmFnZXIgPSBf
cGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKTsgZnVsbFNjcmVlbk1hbmFnZXIgJiYgZnVsbFNjcmVl
bk1hbmFnZXItPmlzRnVsbFNjcmVlbigpKQotICAgICAgICBmdWxsU2NyZWVuTWFuYWdlci0+Y2xv
c2UoKTsKKyAgICBpZiAoYXV0byBmdWxsU2NyZWVuTWFuYWdlciA9IF9wYWdlLT5mdWxsU2NyZWVu
TWFuYWdlcigpOyBmdWxsU2NyZWVuTWFuYWdlciAmJiBmdWxsU2NyZWVuTWFuYWdlci0+aXNGdWxs
U2NyZWVuKCkpIHsKKyAgICAgICAgZnVsbFNjcmVlbk1hbmFnZXItPmNsb3NlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZgorICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIC0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrOih2
b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgpAQCAtMTk4OSw3ICsxOTk1LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxf
V0tUZXh0TWFuaXB1bGF0aW9uSXQKIAogLSAodm9pZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlv
bnMKIHsKLSAgICBbc2VsZiBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107CisgICAgW3NlbGYg
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6bmlsXTsKIH0KIAogLSAodm9pZClfc3RvcE1lZGlh
Q2FwdHVyZQpAQCAtMjM1Miw2ICsyMzU4LDI1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4g
d2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAg
ICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXNBc3luY0Z1bmN0aW9u
OllFUyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJH
ZXN0dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50
YXRpb25zQ2xvc2VkCit7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGJvb2wgdmlk
ZW9GdWxsU2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CisgICAgaWYgKGF1dG8gdmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkpIHsK
KyAgICAgICAgdmlkZW9GdWxsU2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlID0gdmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci0+aGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQorICAgICAgICAgICAgfHwgdmlkZW9GdWxs
c2NyZWVuTWFuYWdlci0+aGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CisgICAgfQorCisgICAgYm9vbCBlbGVtZW50RnVs
bFNjcmVlbiA9IGZhbHNlOworICAgIGlmIChfcGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKSAmJiBf
cGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+aXNGdWxsU2NyZWVuKCkpCisgICAgICAgIGVsZW1l
bnRGdWxsU2NyZWVuID0gdHJ1ZTsKKworICAgIHJldHVybiAhdmlkZW9GdWxsU2NyZWVuT3JQaWN0
dXJlSW5QaWN0dXJlICYmICFlbGVtZW50RnVsbFNjcmVlbjsKKyNlbHNlCisgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKK30KKwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAq
KWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBbc2Vs
ZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5P
IHdpdGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6WUVT
IGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMWUzMzFjNDBmNzIzNjlmMjQ3ZmU4ZWJmNDkw
NTM0NmQ2MDFkNjYyNy4uNzU3ZjFkMTQ2OWM5MjRlN2U1YTJlNWZmNGFjMzUwMzQ1NzgyMDk0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCkBAIC0yMjEsNiArMjIxLDcgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lk
KV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBpbkZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKiBlcnJv
cikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGluRnJh
bWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICop
Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqIGVy
cm9yKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfY2FsbEFzeW5jSmF2YVNjcmlwdDooTlNTdHJp
bmcgKilmdW5jdGlvbkJvZHkgYXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+
ICopYXJndW1lbnRzIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6
KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChCT09MKV9hbGxNZWRpYVBy
ZXNlbnRhdGlvbnNDbG9zZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TGF5b3V0
TW9kZTopIF9XS0xheW91dE1vZGUgX2xheW91dE1vZGU7CiAvLyBGb3IgdXNlIHdpdGggX2xheW91
dE1vZGUgPSBfV0tMYXlvdXRNb2RlRml4ZWRTaXplOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRl
eCA4MDc1YTJjNWQzNTcwZDBiZmFiYWY5YmY5ZmIxYzIwNmE0OTNmMTljLi5hZjY3OGNjNDMzYmUz
MjQ3ODVlODQ0YTAxNmJlZDVkZjdlNzNmYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAt
ODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIC8vIFZpZGVvRnVsbHNjcmVlbk1vZGVsCiAgICAg
dm9pZCBhZGRDbGllbnQoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5p
c2hlZFdpdGhNZWRpYSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0
UmVjdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIKLSAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpOworICAgIHZvaWQgcmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNo
ZWRXaXRoTWVkaWEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOwogICAgIHZvaWQg
cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIp
OwogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKQEAgLTE5OSw2ICsxOTksOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSk7CiAgICAgdm9p
ZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIs
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAg
ICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOworICAgIHZvaWQgc2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNDYWxs
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIGNsb3NlQWxs
TWVkaWFDYWxsYmFjaygpOwogCiAgICAgYm9vbCBtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVF
bmFibGVkIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9tb2NrUGljdHVyZUlu
UGljdHVyZVdpbmRvd1NpemUgeyBEZWZhdWx0TW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dXaWR0
aCwgRGVmYXVsdE1vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93SGVpZ2h0IH07CkBAIC0yMDksNiAr
MjExLDcgQEAgcHJpdmF0ZToKICAgICBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBt
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZDsKICAgICBIYXNoTWFwPFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBpbnQ+IG1fY2xpZW50Q291bnRzOwogICAgIFdlYWtQdHI8VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50PiBtX2NsaWVudDsKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHZvaWQpPiBtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDA0YjNlNDJmNWQwOTg2
YjY0ZGRmNjk1MjRiNDk4MDM1ZWY0Y2RiNGQuLjdlOGZjMmJiYjcwMGQyYmYwMTM2MzU0NDRmZDIx
YzNmYmRiZWYwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTE4MSwxMCArMTgxLDE0
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZW1vdmVDbGllbnQoVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVuCiAgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50
KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwg
Ym9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1fbWFuYWdlcikK
LSAgICAgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobV9jb250ZXh0SWQsIG1v
ZGUsIGZpbmlzaGVkV2l0aE1lZGlhKTsKKyAgICBpZiAoIW1fbWFuYWdlcikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9tYW5h
Z2VyLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobV9jb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0
aE1lZGlhLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0OjpzZXRWaWRlb0xheWVyRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0
IGZyYW1lKQpAQCAtMzI4LDYgKzMzMiw5IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAKIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgp
CiB7CisgICAgaWYgKG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrKQorICAgICAgICBtX2Nsb3NlQWxs
TWVkaWFDYWxsYmFjaygpOworCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKICAg
ICBpbnZhbGlkYXRlKCk7CkBAIC03MjcsOCArNzM0LDI2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29u
dGV4CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyB0byBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAK
LXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hl
ZFdpdGhNZWRpYSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDbG9zZUFs
bE1lZGlhUHJlc2VudGF0aW9uc0NhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNr
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjayA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6Y2xvc2VBbGxNZWRpYUNhbGxiYWNrKCkKK3sKKyAgICBpZiAobV9jbG9zZUFsbE1lZGlh
Q2FsbGJhY2spCisgICAgICAgIG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrKCk7CisKKyAgICBtX2Ns
b3NlQWxsTWVkaWFDYWxsYmFjayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBpZiAobW9k
ZSA9PSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKQorICAgICAgICBzZXRDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc0NhbGxiYWNrKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUs
IGZpbmlzaGVkV2l0aE1lZGlhKSk7CiB9CiAKQEAgLTc2NiwxMCArNzkxLDEzIEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLmNoYW5naW5n
U3RhbmRieU9ubHkoKSkKKyAgICBpZiAoZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuY2hhbmdp
bmdTdGFuZGJ5T25seSgpKSB7CisgICAgICAgIGNsb3NlQWxsTWVkaWFDYWxsYmFjaygpOwogICAg
ICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVl
bigpOworICAgIGNsb3NlQWxsTWVkaWFDYWxsYmFjaygpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmNwcAppbmRleCA2MzMyNDg4YTNlZjgxYTc4NmMxZjQxYzhhMWY4YTBjZThlYWM3MDcwLi40
NDkxYWQxMjViZmEzNjlmMjI1NGYxZGM1ZjRjNzhlODNhMjViMjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAt
NTEsNiArNTEsOCBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp+V2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eSgpCiB7CiAgICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKICAgICBtX2NsaWVudC5jbG9zZUZ1bGxTY3JlZW5N
YW5hZ2VyKCk7CisgICAgaWYgKG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrKQorICAgICAgICBtX2Ns
b3NlQWxsTWVkaWFDYWxsYmFjaygpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQpAQCAtNzYsNiArNzgsMjIgQEAgdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRXhpdEZ1bGxTY3JlZW4oKQogICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCkpOwog
fQogCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldENsb3NlQWxsTWVkaWFQcmVz
ZW50YXRpb25zQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV9jbG9zZUFsbE1lZGlhQ2FsbGJhY2spCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcik7Cit9CisKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y2xvc2VB
bGxNZWRpYUNhbGxiYWNrKCkKK3sKKyAgICBpZiAobV9jbG9zZUFsbE1lZGlhQ2FsbGJhY2spCisg
ICAgICAgIG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrKCk7CisKKyAgICBtX2Nsb3NlQWxsTWVkaWFD
YWxsYmFjayA9IG51bGxwdHI7Cit9CisKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkuZGlk
RXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7CkBAIC04NSw2ICsxMDMsNyBAQCB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkKICAgICAgICAgaWYgKFdlYkF1
dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQogICAgICAgICAgICAgYXV0b21hdGlvblNl
c3Npb24tPmRpZEV4aXRGdWxsU2NyZWVuRm9yUGFnZShtX3BhZ2UpOwogICAgIH0KKyAgICBjbG9z
ZUFsbE1lZGlhQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5nKQpAQCAtMTM2LDggKzE1NSw5
IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkNvbnRyb2xz
SGlkZGVuKGJvb2wgaGlkZGVuKQogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGhpZGRlbikpOwogfQogCi12
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlKCkKK3ZvaWQgV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6Y2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKKyAgICBzZXRDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc0NhbGxi
YWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBtX2NsaWVudC5jbG9zZUZ1bGxT
Y3JlZW5NYW5hZ2VyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAyZDJlMjdhYTE1YzBlNjgxN2U3YzZkMmQx
Yjk1YmE5N2IwYWY1ZDQxLi41MmExMDcyNmMzMDVkNGNkMjEwNzAxZWEzNDhiZjI1NWEyMmE5NzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KQEAgLTYzLDcgKzY0LDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc0Z1bGxTY3JlZW4oKTsKICAgICBib29sIGJsb2Nrc1JldHVyblRvRnVs
bHNjcmVlbkZyb21QaWN0dXJlSW5QaWN0dXJlKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9zZSgpOwor
ICAgIHZvaWQgY2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7CiAKICAgICB2
b2lkIHdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigp
OwpAQCAtNzcsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuSW5zZXRz
KGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50Jik7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVu
QXV0b0hpZGVEdXJhdGlvbihTZWNvbmRzKTsKICAgICB2b2lkIHNldEZ1bGxzY3JlZW5Db250cm9s
c0hpZGRlbihib29sKTsKKyAgICB2b2lkIHNldENsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zQ2Fs
bGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtODQsNiArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGJlZ2FuRW50ZXJGdWxsU2NyZWVuKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmlu
YWxGcmFtZSk7CiAgICAgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmluYWxGcmFtZSk7
CisgICAgdm9pZCBjbG9zZUFsbE1lZGlhQ2FsbGJhY2soKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKQEAgLTkxLDYgKzk0
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5Q2xpZW50JiBtX2NsaWVudDsKICAgICBib29sIG1fYmxvY2tzUmV0dXJu
VG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodm9pZCk+IG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1ZDE0Mzgz
Mzg5MWI1MjllMDE3YzlhNmY3YzlmOTRhMzQ0OWI4M2FlLi5kNzQ1YjQwYTE0NzViZmIyZDkxMTdl
NmEwNjZlZGU3MDFjOWE5ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI3LDYg
KzI3LDYgQEAgbWVzc2FnZXMgLT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKICAgICBFeGl0RnVsbFNjcmVlbigpCiAgICAgQmVnYW5FbnRlckZ1bGxTY3JlZW4oV2Vi
Q29yZTo6SW50UmVjdCBpbml0aWFsUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCiAg
ICAgQmVnYW5FeGl0RnVsbFNjcmVlbihXZWJDb3JlOjpJbnRSZWN0IGluaXRpYWxSZWN0LCBXZWJD
b3JlOjpJbnRSZWN0IGZpbmFsUmVjdCkKLSAgICBDbG9zZSgpCisgICAgQ2xvc2UoKSAtPiAoKSBB
c3luYwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBhZTg3YTBiYWZlZjU3YWE2ZDM5MmY5ZWViZWY0OGM1ODgxMWQ1ZWUzLi4yMjJmZjIwYWNj
NzFlZTYzMmRhMWNkZTVhMzFjNzEwOGFlYmU5MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU1NzUsNyArNTU3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCkKIHsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgaWYgKGZ1bGxTY3JlZW5NYW5hZ2VyKCkpCi0gICAgICAgIGZ1bGxTY3JlZW5NYW5h
Z2VyKCktPmNsb3NlKCk7CisgICAgICAgIGZ1bGxTY3JlZW5NYW5hZ2VyKCktPmNsb3NlKFtdIHsg
fSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKQEAgLTc1
MTQsNyArNzUxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVS
ZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBpZiAobV9mdWxsU2NyZWVuTWFuYWdlcikgewotICAgICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2Vy
LT5jbG9zZSgpOworICAgICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyLT5jbG9zZShbXSB7IH0pOwog
ICAgICAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCmluZGV4IDZmNzE5
YjBiN2ViNWEzMGMyYzlmY2YyYjMzYjEwNGE2YjFjMmU0ZjUuLmVkYjNjNzhiMjhiMWY3NmNjMmVm
NmY2M2Q5OWEzNDgxNGQ5MzQyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcklPUy5tbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+aW5QaWN0dXJlSW5Q
aWN0dXJlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBtb2RlbCA9IHZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9lbnRlckZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5Q
aWN0dXJlID0gWUVTOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLT5yZXF1ZXN0
RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwtPnJlcXVl
c3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lLCBmYWxzZSwgW10geyB9KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VGdWxsU2NyZWVuQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmNwcAppbmRleCAxZDZm
NzNiOGFiNTQ0YzE2MDVhZWQ5YTQyZmE2MzU1YzE4NzAxYmJhLi44YzU0ZDEzYTZkNzE2ZWU0ODYx
NGIyZjA0ZjA0NDIyMjNjYjk3NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudDo6Y2xvc2VGdWxsU2NyZWVuKFdlYlBhZ2UgKnBh
Z2UpCiAgICAgaWYgKG1fY2xpZW50LmNsb3NlRnVsbFNjcmVlbikKICAgICAgICAgbV9jbGllbnQu
Y2xvc2VGdWxsU2NyZWVuKHRvQVBJKHBhZ2UpKTsKICAgICBlbHNlCi0gICAgICAgIHBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkNsb3NlKCkpOworICAgICAg
ICBwYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OkNsb3NlKCksIFtdIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQppbmRleCA0YzdlYTNhN2M5ODllYjAyMTIxMmYwNmUzZmQzYzg3MWZmZGEzYjU5
Li4yM2M1NzExM2JiODBmMmIzNDBiZDY1ZjEwMGE1YmM0NjU3NTc5ZjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlk
ZW9EaW1lbnNpb25zQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEp
CiB7Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9k
ZSwgZmluaXNoZWRXaXRoTWVkaWEpOworICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhLCBbXSB7IH0pOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgyMTFiYzdi
Yjk4NDFjNzY2NTY2ZTdhYzMxODgwZjJkNWJhZTc2NTEuLjY1ZjJmZjc2OThiNzJlOTRhZDE4ZTFm
ZDA0ZjQ1ZGNhYjc5MmY2NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wMS0xOSAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgY2xvc2VBbGxN
ZWRpYVByZXNlbnRhdGlvbnMgQVBJIGRvZXMgbm90IGhhdmUgYSBjb21wbGV0aW9uIGhhbmRsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDc0MQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzMwNDU5MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cyB0byB1c2UgdGhlIG5l
dyBjb21wbGV0aW9uIGhhbmRsZXIuIE1vdmUgZnJvbSB1c2luZyBKUworICAgICAgICB0byBhIG5l
dyBTUEkgdG8gY2hlY2sgZm9yIGlubGluZSB2aWRlbyB0byBhdm9pZCBmbGFraW5lc3MgYmVjYXVz
ZSB0aGUKKyAgICAgICAgSlMgdmFsdWUgaXMgYXN5bmMgYW5kIG1heSBub3QgYmUgY29tcGxldGVk
IGJ5IHRoZSB0aW1lCisgICAgICAgIGRpZEV4aXRGdWxsc2NyZWVuKCkgaXMgY2FsbGVkLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1Rlc3RXZWJLaXRBUEkueGNzY2hlbWU6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9u
cy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTAxLTE5ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbdXBkYXRlLXdlYmtpdF0gRG8gbm90IGF1dG9t
YXRpY2FsbHkgdXNlIGdpdCBzdm4gcmViYXNlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbQppbmRleCA4ZTQ2OTkxMzg3NTdhYTY1NDQ4MjYwZmNl
ODgyOGJmMzBjZDY2ZDM1Li45NjgzYjU1ZWM2YzIzZmVjOTQ2NWRkNzY4ZTdhMWVlNzlmNWU1MjZh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMu
bW0KQEAgLTcyLDE0ICs3MiwxMyBAQCBURVNUKFdLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zLCBQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
bGVlcCgwLjUpOwogICAgIH0gd2hpbGUgKHRydWUpOwogCi0gICAgcHJlc2VudGF0aW9uTW9kZUNo
YW5nZWQgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdl
OkAicHJlc2VudGF0aW9ubW9kZWNoYW5nZWQiIGFjdGlvbjpeeyBwcmVzZW50YXRpb25Nb2RlQ2hh
bmdlZCA9IHRydWU7IH1dOwotCi0gICAgW3dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRp
b25zXTsKLQotICAgIEFTU0VSVChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW5Gb3IoJnByZXNlbnRh
dGlvbk1vZGVDaGFuZ2VkLCAxMCkpOworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOl57CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogCi0gICAgRVhQRUNUX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpLndlYmtpdFByZXNlbnRhdGlvbk1v
ZGUiXS5VVEY4U3RyaW5nLCAiaW5saW5lIik7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX2Fs
bE1lZGlhUHJlc2VudGF0aW9uc0Nsb3NlZF0pOwogfQogCiAjZW5kaWYKQEAgLTEwOSwxNCArMTA4
LDEzIEBAIFRFU1QoV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMsIFZpZGVvRnVs
bHNjcmVlbikKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsKICAgICB9
IHdoaWxlICh0cnVlKTsKIAotICAgIHByZXNlbnRhdGlvbk1vZGVDaGFuZ2VkID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInByZXNlbnRhdGlvbm1v
ZGVjaGFuZ2VkIiBhY3Rpb246XnsgcHJlc2VudGF0aW9uTW9kZUNoYW5nZWQgPSB0cnVlOyB9XTsK
LQotICAgIFt3ZWJWaWV3IF9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107Ci0KLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnByZXNlbnRhdGlvbk1vZGVDaGFuZ2VkKTsKLQotICAgIEVY
UEVDVF9TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigndmlkZW8nKS53ZWJraXRQcmVzZW50YXRpb25Nb2RlIl0uVVRGOFN0
cmluZywgImlubGluZSIpOworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOl57CisgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAg
IAorICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWRd
KTsKIH0KIAogVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucywgRWxlbWVu
dEZ1bGxzY3JlZW4pCkBAIC0xMzgsMTEgKzEzNiwxMyBAQCBURVNUKFdLV2ViVmlld0Nsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zLCBFbGVtZW50RnVsbHNjcmVlbikKICAgICBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAiZnVsbHNjcmVlbmNoYW5nZSIgYWN0aW9uOl57IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCA9
IHRydWU7IH1dOwogCi0gICAgW3dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXTsK
LQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTsK
LQotICAgIEVYUEVDVF9TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQiXS5VVEY4U3RyaW5nLCAiPG51bGw+
Iik7CisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgY2xvc2VB
bGxNZWRpYVByZXNlbnRhdGlvbnM6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgX2FsbE1lZGlhUHJlc2VudGF0aW9uc0Nsb3NlZF0pOwogfQogCiAjZW5k
aWYK
</data>
<flag name="commit-queue"
          id="435717"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417903</attachid>
            <date>2021-01-19 13:21:24 -0800</date>
            <delta_ts>2021-01-22 17:16:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220741-20210119132123.patch</filename>
            <type>text/plain</type>
            <size>38299</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE1ZjY4ZTMzZjgwOTRl
YzI5NDk1MDk2YmE5MDMzZmIyMTcxNWUyYi4uNGUzY2Y3YmI0YzE1ZTdkNWI5NjFjMjk5M2U0NGUz
MDU5ZDgwYTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAxLTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmll
dyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucyBBUEkgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZXRp
b24gaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwNzQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzA0NTkwND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIG1hbnkgY2xhc3Nl
cyBpbmhlcml0IGZyb20gVmlkZW9GdWxsc2NyZWVuTW9kZWwsIHdlIGhhdmUgdG8gYWRkCisgICAg
ICAgIHN1cHBvcnQgZm9yIGNvbXBsZXRpb24gaGFuZGxlcnMgdG8gcmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKCkgZnVuY3Rpb25zCisgICAgICAgIGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IGNhcmUgbXVj
aCBhYm91dCBpdC4gV2UgY2FuIGFyYml0cmFyaWx5IGNhbGwKKyAgICAgICAgdGhlc2UgYmVjYXVz
ZSB0aGV5IGFyZSBub3QgdGhlIGNvZGUgcGF0aCB0YWtlbiBmb3IgW1dLV2ViVmlldyBjbG9zZUFs
bE1lZGlhUHJlc2VudGF0aW9uc10uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbC5oOgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gcGFzc2VzIGZhbHNlIGFu
eXdoZXJlIHRoYXQgZmluaXNoZWRXaXRoTWVkaWEgd2FzIG5vdAorICAgICAgICBzcGVjaWZpZWQg
bm93IHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGluIHRoZSBoZWFkZXIgZmls
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZp
ZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3Vs
ZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6cmVxdWVzdEhpZGVB
bmRFeGl0UGlQKToKKwogMjAyMS0wMS0xOSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJl
ekBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQgSmFu
dWFyeSAyMDIxIGVkaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDU4Y2M4NTQ3NzEyMzg0Mjc1MmZiZjhhMThl
NGJkMTI3ZWQzMGNjNy4uMjhmYjgzNzE2MDI3NmNmNGI2YWQ2NDZkNmQ0MGEyYjdlNTBiZDBlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAyMS0wMS0xOSAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgY2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnMgQVBJIGRvZXMgbm90IGhhdmUgYSBjb21wbGV0aW9uIGhhbmRsZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDc0MQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzMwNDU5MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIGNvbXBsZXRpb24gaGFuZGxlciB0byBbV0tX
ZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOl0uCisgICAgICAgIFRoaXMgcmVxdWly
ZWQgaGFuZGxpbmcgdGhlIGNhc2UgZm9yIHZpZGVvIGZ1bGxzY3JlZW4sIHBpY3R1cmUtaW4tcGlj
dHVyZSwKKyAgICAgICAgYW5kIGVsZW1lbnQgZnVsbHNjcmVlbi4gRm9yIHNpbXBsaWNpdHksIHRo
ZSBjYWxsYmFja3MgYXJlIHN0b3JlZCBpbgorICAgICAgICB0aGUgcmVzcGVjdGl2ZSAqRnVsbHNj
cmVlbk1hbmFnZXJQcm94eSBvYmplY3QgYW5kIGNhbGxlZCB3aGVuCisgICAgICAgIGRpZEV4aXRG
dWxsc2NyZWVuKCkgaXMgZXhlY3V0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6XSk6Cisg
ICAgICAgIENoZWNrIGlmIHRoZSB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIGhhcyBhbnkgZnVsbCBz
Y3JlZW4gY29udGVudC4gSWYKKyAgICAgICAgbm90LCBjaGVjayB0aGUgd2ViRnVsbFNjcmVlbk1h
bmFnZXIuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBoYXZlIGJvdGgKKyAgICAgICAgYXQgb25jZSwg
c28gaXQgaXMgc2FmZSB0byBkbyBhbiBlYXJseSByZXR1cm4gb25jZSB2aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyCisgICAgICAgIGhhcyByZXF1ZXN0ZWQgdGhhdCBtZWRpYSBwcmVzZW50YXRpb25zIGNs
b3NlLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWRdKToK
KyAgICAgICAgTmV3IFNQSSBmb3IgdGVzdGluZy4gUHJldmlvdXNseSB0aGVzZSB0ZXN0cyB1c2Vk
IEphdmFTY3JpcHQgdG8gY2hlY2sKKyAgICAgICAgZm9yIGlubGluZSB2aWRlbyBidXQgdXBkYXRp
bmcgdGhlIEpTIHZhbHVlIGlzIGFzeW5jIGFuZCBtYXkgbm90IGJlIGNvbXBsZXRlZAorICAgICAg
ICBieSB0aGUgdGltZSBkaWRFeGl0RnVsbHNjcmVlbigpIGlzIGNhbGxlZC4gU28sIHRoaXMgU1BJ
IHdpbGwgYXZvaWQKKyAgICAgICAgZmxha2luZXNzLgorCisgICAgICAgICgtW1dLV2ViVmlldyBj
bG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6flZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6c2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xvc2VBbGxNZWRpYUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6On5XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3Nl
QWxsTWVkaWFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6Y2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVs
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJ
T1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FbnRl
ckZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmZpbmFsRnJhbWU6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVu
dDo6Y2xvc2VGdWxsU2NyZWVuKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSk6CisgICAgICAgIE1hbnkgaW5zdGFuY2VzIG9mIHJl
cXVlc3RGdWxsc2NyZWVuTW9kZSgpIGFuZCBjbG9zZSgpIHdpbGwgaGF2ZSBlbXB0eQorICAgICAg
ICBjb21wbGV0aW9uIGhhbmRsZXJzIGJlY2F1c2UgdGhleSBhcmUgbm90IGNvZGUgcGF0aHMgdGFr
ZW4gYnkKKyAgICAgICAgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMsIGJ1dCBiZWNhdXNlIG9m
IGluaGVyaXRhbmNlIHdlIHN0aWxsIG5lZWQKKyAgICAgICAgdG8gaW5jbHVkZSBhIGNvbXBsZXRp
b24gaGFuZGxlci4KKworCiAyMDIxLTAxLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZHJvcCByZW1haW5pbmcgbWFpbi10aHJlYWQgYXNz
ZXJ0aW9uIGluIFNoYXJlYWJsZUJpdG1hcCB0aGF0IEkgbWlzc2VkIGluIHIyNzE1MzMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2Rl
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aAppbmRleCAwZmVkNzk1YWNhOWQ5ODZmZDE5OGZjZWM4ZGZiNWM1MGE1YWQyZDZlLi5lYWE1ZTdh
ZTQwNDcyMzFhNGZmNDZlNDJiMzk1MmJiZTM4NTMyMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENsaWVudCYpPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGdWxs
c2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJv
b2wgZmluaXNoZWRXaXRoTWVkaWEgPSBmYWxzZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQp
PiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3Qp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9HcmF2aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDJjNTFkODNiMWI4NzU1MWFjZWIw
YzM0MjMwOWFkY2ZkNTg5MTMwNTQuLmZiY2YwNTQ4OWFlZTZhYWFhNjY1YjdmYzdjZTI1MmIyNTUw
ZjgzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2Up
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2Rl
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hl
ZFdpdGhNZWRpYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJikgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KE1lZGlh
UGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0K
aW5kZXggNGNhNGMyY2JjNjBkMGEzNTRjNWIzNGE2NjMzZTZiZTc4NDU4MjcxMi4uMGRkMWMyMzI5
YTNhMmUyMWEyMmQxOTM4MGE2NDM5NDQ1YWE0Y2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpbwog
ICAgIG1fdmlkZW9FbGVtZW50LT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQordm9pZCBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVk
V2l0aE1lZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKICAgICAgICAgbV92aWRlb0VsZW1lbnQt
PnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2Rl
KG1vZGUpKTsKQEAgLTE2MSw2ICsxNjEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudQogICAg
ICAgICAgICAgICAgIHdpbmRvdy0+aGlzdG9yeSgpLmJhY2soKTsKICAgICAgICAgfQogICAgIH0K
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0IHJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0KaW5kZXggOWMwN2Q3ODM0NWEwMTczMWQyMzk1ZDhiMWY5MTA1OTRkYjM1
NmVmYS4uY2M4NWIyM2NlY2M0MDI5YTE4N2M0NTA5MTVkZmYyMDU2Y2YyZGFjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCiAKICAgICBp
ZiAocGxheWJhY2tTZXNzaW9uTW9kZWwoKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKSB7CiAg
ICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7Ci0gICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUsIGZhbHNlLCBbXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTA4Nyw3
ICsxMDg3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRU
b0V4aXRGdWxsc2NyZWVuKCkKICAgICBtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCA9IGZhbHNl
OwogICAgIEFTU0VSVChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKTsKICAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbCkKLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUsIHRydWUpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwg
dHJ1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVy
ZSgpCiAKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkgewogICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBmYWxzZSwgW10geyB9KTsKICAgICB9CiB9CiAK
QEAgLTEyODAsNyArMTI4MCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbihWaWRlb0Z1bGxzY3JlCiAgICAgQk9PTCBm
aW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBl
ZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpbmNoR2VzdHVyZUhhbmRsZWQ7
CiAgICAgQVNTRVJUKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpOwogICAgIGlmIChtX3ZpZGVvRnVs
bHNjcmVlbk1vZGVsKQotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSwgZmluaXNoZWQpOworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSwgZmluaXNoZWQsIFtdIHsgfSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA0YjhhMDNiNjc1Y2RlMTFkZGVmYzgyNjlkZjdiZWM2
OTVjMzk0NzliLi5hZjA4MTVkMDhkZTljMWFmYjFjN2EwOWIxY2Y2NWQ2YjlmNWM5MDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2YXRl
OgogICAgIC8vIFZpZGVvRnVsbHNjcmVlbk1vZGVsCiAgICAgdm9pZCBhZGRDbGllbnQoVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUNsaWVudChW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwg
Ym9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllckVudW1zOjpW
aWRlb0dyYXZpdHkpIG92ZXJyaWRlOwogICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CkBAIC01
NzksMTMgKzU3OSwxNCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpy
ZW1vdmVDbGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmCiAgICAgbV9mdWxsc2NyZWVu
Q2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKK3ZvaWQg
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5p
c2hlZFdpdGhNZWRpYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAgICBXZWJUaHJlYWRSdW4o
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBtb2RlLCBmaW5pc2hlZFdp
dGhNZWRpYV0gewogICAgICAgICBpZiAobV9mdWxsc2NyZWVuTW9kZWwpCi0gICAgICAgICAgICBt
X2Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1vZGUsIGZpbmlzaGVkV2l0
aE1lZGlhKTsKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVl
bk1vZGUobW9kZSwgZmluaXNoZWRXaXRoTWVkaWEsIFtdIHsgfSk7CiAgICAgfSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6c2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tCmluZGV4IDJjMTFmN2VmNTJlMDYxNGU1ZjM2MjliNGExZTBjYWZmZTljMjVkMzMuLmZhOTY4
ZDNiYmU3Mzc2MTlhOGE2N2M4ZWIwOGIxMjY0YzE2ZDk1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5t
bQpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpy
ZXF1ZXN0SGlkZUFuZEV4aXRQaVAoKQogICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBmYWxzZSwgW10g
eyB9KTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxsRXhpdFBpY3R1cmVJblBpY3R1
cmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5oCmluZGV4IDc0NzViY2EyNjViNzcyNjVmNDkyYWZjOWFjMDgzZTMwYWU5MGI3NjYuLmUzYjlk
OGI1N2U3MDNlNjhiNWU3NmE3Y2RmMjI4MDQ1ZWNkNDc2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTMyNyw3ICszMjcsNyBAQCBXS19D
TEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKIC8qISBAYWJzdHJhY3QgQ2xv
c2VzIGFsbCBvdXQtb2Ytd2luZG93IG1lZGlhIHByZXNlbnRhdGlvbnMgaW4gYSBXS1dlYlZpZXcu
CiAgQGRpc2N1c3Npb24gSW5jbHVkZXMgcGljdHVyZS1pbi1waWN0dXJlIGFuZCBmdWxsc2NyZWVu
LgogICovCi0tICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKWNsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zOih2b2lkICheX051bGxhYmxlKSh2b2lkKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiAvKiEgQGFic3RyYWN0IFBhdXNlcyBtZWRpYSBwbGF5YmFjayBpbiBXS1dlYlZpZXcuCiAg
QGRpc2N1c3Npb24gUGF1c2VzIG1lZGlhIHBsYXliYWNrLiBNZWRpYSBpbiB0aGUgcGFnZSBjYW4g
YmUgcmVzdGFydGVkIGJ5IGNhbGxpbmcgcGxheSgpIG9uIGEgbWVkaWEgZWxlbWVudCBvciByZXN1
bWUoKSBvbiBhbiBBdWRpb0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxN2M2YmU5MWEyNDliZDQxNzcwMTE0NGZlMzIzYWY1
NGRjMjZmOTM1Li4xYWFhMTMyN2YwMDRhNDVjYTNhNDNhYzIxYjg3OTI4ZDEwZjcwN2E5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTkw
NSwxOCArOTA1LDI0IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0tICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRp
b25zCistICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBpZiAo
YXV0byB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIoKSkgewotICAgICAgICB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5mb3JFYWNoU2Vzc2lvbihb
XSAoYXV0byYgbW9kZWwsIGF1dG8mIGludGVyZmFjZSkgewotICAgICAgICAgICAgbW9kZWwucmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYgKHZpZGVvRnVsbHNj
cmVlbk1hbmFnZXItPmhhc01vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpIHx8IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhhc01v
ZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGlj
dHVyZUluUGljdHVyZSkpIHsKKyAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZv
ckVhY2hTZXNzaW9uKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYXV0byYgbW9kZWwsIGF1dG8mIGludGVyZmFjZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgbW9kZWwucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZhbHNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChhdXRvIGZ1bGxTY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPmZ1
bGxTY3JlZW5NYW5hZ2VyKCk7IGZ1bGxTY3JlZW5NYW5hZ2VyICYmIGZ1bGxTY3JlZW5NYW5hZ2Vy
LT5pc0Z1bGxTY3JlZW4oKSkKLSAgICAgICAgZnVsbFNjcmVlbk1hbmFnZXItPmNsb3NlKCk7Cisg
ICAgaWYgKGF1dG8gZnVsbFNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIo
KTsgZnVsbFNjcmVlbk1hbmFnZXIgJiYgZnVsbFNjcmVlbk1hbmFnZXItPmlzRnVsbFNjcmVlbigp
KSB7CisgICAgICAgIGZ1bGxTY3JlZW5NYW5hZ2VyLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCiAtICh2b2lkKXBhdXNlQWxsTWVkaWFQbGF5YmFjazoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKQEAgLTE5ODksNyArMTk5NSw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gd2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKE5TQXJyYXk8X1dLVGV4dE1h
bmlwdWxhdGlvbkl0CiAKIC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zCiB7Ci0g
ICAgW3NlbGYgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdOworICAgIFtzZWxmIGNsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zOm5pbF07CiB9CiAKIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1cmUK
QEAgLTIzNTIsNiArMjM1OCwyNSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHdrVGV4dE1h
bmlwdWxhdGlvbkVycm9ycyhOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdAogICAgIFtzZWxm
IF9ldmFsdWF0ZUphdmFTY3JpcHQ6ZnVuY3Rpb25Cb2R5IGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0
aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZ
RVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpj
b21wbGV0aW9uSGFuZGxlcl07CiB9CiAKKy0gKEJPT0wpX2FsbE1lZGlhUHJlc2VudGF0aW9uc0Ns
b3NlZAoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIHZpZGVvRnVsbFNj
cmVlbk9yUGljdHVyZUluUGljdHVyZSA9IGZhbHNlOworICAgIGlmIChhdXRvIHZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpKSB7CisgICAgICAg
IHZpZGVvRnVsbFNjcmVlbk9yUGljdHVyZUluUGljdHVyZSA9IHZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXItPmhhc01vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKKyAgICAgICAgICAgIHx8IHZpZGVvRnVsbHNjcmVlbk1h
bmFnZXItPmhhc01vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlU3RhbmRhcmQpOworICAgIH0KKworICAgIGJvb2wgZWxlbWVudEZ1bGxTY3JlZW4g
PSBmYWxzZTsKKyAgICBpZiAoX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCkgJiYgX3BhZ2UtPmZ1
bGxTY3JlZW5NYW5hZ2VyKCktPmlzRnVsbFNjcmVlbigpKQorICAgICAgICBlbGVtZW50RnVsbFNj
cmVlbiA9IHRydWU7CisKKyAgICByZXR1cm4gIXZpZGVvRnVsbFNjcmVlbk9yUGljdHVyZUluUGlj
dHVyZSAmJiAhZWxlbWVudEZ1bGxTY3JlZW47CisjZWxzZQorICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCit9CisKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdL
Q29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShp
ZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW3NlbGYgX2V2YWx1
YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoU291
cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBpbkZyYW1l
OmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDFlMzMxYzQwZjcyMzY5ZjI0N2ZlOGViZjQ5MDUzNDZkNjAx
ZDY2MjcuLjc1N2YxZDE0NjljOTI0ZTdlNWEyZTVmZjRhYzM1MDM0NTc4MjA5NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aApAQCAtMjIxLDYgKzIyMSw3IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZXZhbHVh
dGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5GcmFtZTooV0tGcmFt
ZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNj
cmlwdFN0cmluZyB3aXRoU291cmNlVVJMOihOU1VSTCAqKXNvdXJjZVVSTCBpbkZyYW1lOihXS0Zy
YW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRX
b3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKiBlcnJvcikpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHQ6KE5TU3RyaW5nICopZnVu
Y3Rpb25Cb2R5IGFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3Vt
ZW50cyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRl
bnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5T
RXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50YXRp
b25zQ2xvc2VkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExheW91dE1vZGU6KSBf
V0tMYXlvdXRNb2RlIF9sYXlvdXRNb2RlOwogLy8gRm9yIHVzZSB3aXRoIF9sYXlvdXRNb2RlID0g
X1dLTGF5b3V0TW9kZUZpeGVkU2l6ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggODA3NWEy
YzVkMzU3MGQwYmZhYmFmOWJmOWZiMWMyMDZhNDkzZjE5Yy4uYWY2NzhjYzQzM2JlMzI0Nzg1ZTg0
NGEwMTZiZWQ1ZGY3ZTczZmEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbAogICAgIHZvaWQgYWRk
Q2xpZW50KFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZW1vdmVDbGllbnQoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRo
TWVkaWEgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29s
IGZpbmlzaGVkV2l0aE1lZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShXZWJDb3JlOjpGbG9hdFJlY3QpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpIG92ZXJyaWRlOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGl0
RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCi0gICAg
dm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwg
Ym9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKTsKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1l
ZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RV
cGRhdGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllcik7CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CkBAIC0xOTksNiArMTk5LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFZpZGVvTGF5ZXJHcmF2aXR5KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpOwogICAgIHZvaWQgZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIHZvaWQg
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHNldENsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zQ2FsbGJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7CisgICAgdm9pZCBjbG9zZUFsbE1lZGlhQ2Fs
bGJhY2soKTsKIAogICAgIGJvb2wgbV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVX
aW5kb3dTaXplIHsgRGVmYXVsdE1vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93V2lkdGgsIERlZmF1
bHRNb2NrUGljdHVyZUluUGljdHVyZVdpbmRvd0hlaWdodCB9OwpAQCAtMjA5LDYgKzIxMSw3IEBA
IHByaXZhdGU6CiAgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250cm9s
c01hbmFnZXJDb250ZXh0SWQ7CiAgICAgSGFzaE1hcDxQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgaW50PiBtX2NsaWVudENvdW50czsKICAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eUNsaWVudD4gbV9jbGllbnQ7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh2b2lkKT4gbV9jbG9zZUFsbE1lZGlhQ2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCAwNGIzZTQyZjVkMDk4NmI2NGRkZjY5
NTI0YjQ5ODAzNWVmNGNkYjRkLi43ZThmYzJiYmI3MDBkMmJmMDEzNjM1NDQ0ZmQyMWMzZmJkYmVm
MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0xODEsMTAgKzE4MSwxNCBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVl
bk1vZGVsQ2xpZW50JiBjbGllbgogICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAK
LXZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmlu
aXNoZWRXaXRoTWVkaWEpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZv
aWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAg
IG1fbWFuYWdlci0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1fY29udGV4dElkLCBtb2RlLCBmaW5p
c2hlZFdpdGhNZWRpYSk7CisgICAgaWYgKCFtX21hbmFnZXIpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbWFuYWdlci0+cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKG1fY29udGV4dElkLCBtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6c2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZsb2F0UmVjdCBmcmFtZSkK
QEAgLTMyOCw2ICszMzIsOSBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYQogCiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQogeworICAg
IGlmIChtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjaykKKyAgICAgICAgbV9jbG9zZUFsbE1lZGlhQ2Fs
bGJhY2soKTsKKwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAgICAgaW52YWxp
ZGF0ZSgpOwpAQCAtNzI3LDggKzczNCwyNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleAogCiAj
cHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVk
aWEpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0Q2xvc2VBbGxNZWRpYVBy
ZXNlbnRhdGlvbnNDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmIChtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jbG9zZUFsbE1lZGlhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNs
b3NlQWxsTWVkaWFDYWxsYmFjaygpCit7CisgICAgaWYgKG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNr
KQorICAgICAgICBtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjaygpOworCisgICAgbV9jbG9zZUFsbE1l
ZGlhQ2FsbGJhY2sgPSBudWxscHRyOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgaWYgKG1vZGUgPT0gV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKKyAg
ICAgICAgc2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNDYWxsYmFjayhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBmaW5pc2hl
ZFdpdGhNZWRpYSkpOwogfQogCkBAIC03NjYsMTAgKzc5MSwxMyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5jaGFuZ2luZ1N0YW5kYnlP
bmx5KCkpCisgICAgaWYgKGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLmNoYW5naW5nU3RhbmRi
eU9ubHkoKSkgeworICAgICAgICBjbG9zZUFsbE1lZGlhQ2FsbGJhY2soKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KICNlbmRpZgogICAgIG1fcGFnZS0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKKyAg
ICBjbG9zZUFsbE1lZGlhQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAK
aW5kZXggNjMzMjQ4OGEzZWY4MWE3ODZjMWY0MWM4YTFmOGEwY2U4ZWFjNzA3MC4uNDQ5MWFkMTI1
YmZhMzY5ZjIyNTRmMWRjNWY0Yzc4ZTgzYTI1YjI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTUxLDYgKzUx
LDggQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkoKQogewogICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS53ZWJQYWdlSUQoKSk7CiAgICAgbV9jbGllbnQuY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigp
OworICAgIGlmIChtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjaykKKyAgICAgICAgbV9jbG9zZUFsbE1l
ZGlhQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp3aWxs
RW50ZXJGdWxsU2NyZWVuKCkKQEAgLTc2LDYgKzc4LDIyIEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbFNjcmVlbigpKTsKIH0KIAordm9p
ZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9u
c0NhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpOworfQorCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlQWxsTWVkaWFD
YWxsYmFjaygpCit7CisgICAgaWYgKG1fY2xvc2VBbGxNZWRpYUNhbGxiYWNrKQorICAgICAgICBt
X2Nsb3NlQWxsTWVkaWFDYWxsYmFjaygpOworCisgICAgbV9jbG9zZUFsbE1lZGlhQ2FsbGJhY2sg
PSBudWxscHRyOworfQorCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRG
dWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEV4aXRGdWxs
c2NyZWVuKCZtX3BhZ2UpOwpAQCAtODUsNiArMTAzLDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9u
U2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29s
KCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT5k
aWRFeGl0RnVsbFNjcmVlbkZvclBhZ2UobV9wYWdlKTsKICAgICB9CisgICAgY2xvc2VBbGxNZWRp
YUNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0QW5p
bWF0aW5nRnVsbFNjcmVlbihib29sIGFuaW1hdGluZykKQEAgLTEzNiw4ICsxNTUsOSBAQCB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihi
b29sIGhpZGRlbikKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OlNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihoaWRkZW4pKTsKIH0KIAotdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZSgpCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CisgICAgc2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNDYWxsYmFjayhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgbV9jbGllbnQuY2xvc2VGdWxsU2NyZWVuTWFu
YWdlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMmQyZTI3YWExNWMwZTY4MTdlN2M2ZDJkMWI5NWJhOTdi
MGFmNWQ0MS4uNTJhMTA3MjZjMzA1ZDRjZDIxMDcwMWVhMzQ4YmYyNTVhMjJhOTcwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNGdWxsU2NyZWVuKCk7CiAgICAgYm9vbCBibG9ja3NSZXR1cm5Ub0Z1bGxzY3JlZW5G
cm9tUGljdHVyZUluUGljdHVyZSgpIGNvbnN0OwotICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lk
IGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOwogCiAgICAgdm9pZCB3aWxs
RW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdm9pZCBkaWRFbnRlckZ1bGxTY3JlZW4oKTsKQEAgLTc3
LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RnVsbHNjcmVlbkluc2V0cyhjb25zdCBX
ZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpOwogICAgIHZvaWQgc2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4o
Ym9vbCk7CisgICAgdm9pZCBzZXRDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc0NhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgc3Vw
cG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKQEAgLTg0LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4aXRGdWxs
U2NyZWVuKCk7CiAgICAgdm9pZCBiZWdhbkVudGVyRnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUp
OwogICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBp
bml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpOworICAgIHZv
aWQgY2xvc2VBbGxNZWRpYUNhbGxiYWNrKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CkBAIC05MSw2ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eUNsaWVudCYgbV9jbGllbnQ7CiAgICAgYm9vbCBtX2Jsb2Nrc1JldHVyblRvRnVsbHNj
cmVlbkZyb21QaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHZvaWQpPiBtX2Nsb3NlQWxsTWVkaWFDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWQxNDM4MzM4OTFiNTI5
ZTAxN2M5YTZmN2M5Zjk0YTM0NDliODNhZS4uZDc0NWI0MGExNDc1YmZiMmQ5MTE3ZTZhMDY2ZWRl
NzAxYzlhOWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw2IEBA
IG1lc3NhZ2VzIC0+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CiAg
ICAgRXhpdEZ1bGxTY3JlZW4oKQogICAgIEJlZ2FuRW50ZXJGdWxsU2NyZWVuKFdlYkNvcmU6Oklu
dFJlY3QgaW5pdGlhbFJlY3QsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQogICAgIEJlZ2Fu
RXhpdEZ1bGxTY3JlZW4oV2ViQ29yZTo6SW50UmVjdCBpbml0aWFsUmVjdCwgV2ViQ29yZTo6SW50
UmVjdCBmaW5hbFJlY3QpCi0gICAgQ2xvc2UoKQorICAgIENsb3NlKCkgLT4gKCkgQXN5bmMKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYWU4
N2EwYmFmZWY1N2FhNmQzOTJmOWVlYmVmNDhjNTg4MTFkNWVlMy4uMjIyZmYyMGFjYzcxZWU2MzJk
YTFjZGU1YTMxYzcxMDhhZWJlOTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC01NTc1LDcgKzU1NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEZ1
bGxzY3JlZW5JbW1lZGlhdGVseSgpCiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IGlmIChmdWxsU2NyZWVuTWFuYWdlcigpKQotICAgICAgICBmdWxsU2NyZWVuTWFuYWdlcigpLT5j
bG9zZSgpOworICAgICAgICBmdWxsU2NyZWVuTWFuYWdlcigpLT5jbG9zZShbXSB7IH0pOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCkBAIC03NTE0LDcgKzc1
MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJl
c2V0U3RhdGVSZWFzb24pCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKG1f
ZnVsbFNjcmVlbk1hbmFnZXIpIHsKLSAgICAgICAgbV9mdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2Uo
KTsKKyAgICAgICAgbV9mdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2UoW10geyB9KTsKICAgICAgICAg
bV9mdWxsU2NyZWVuTWFuYWdlciA9IG51bGxwdHI7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3Jl
ZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA2ZjcxOWIwYjdlYjVh
MzBjMmM5ZmNmMmIzM2IxMDRhNmIxYzJlNGY1Li5lZGIzYzc4YjI4YjFmNzZjYzJlZjZmNjNkOTlh
MzQ4MTRkOTM0MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXJJT1MubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmICh2aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UtPmluUGljdHVyZUluUGljdHVyZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogbW9kZWwgPSB2aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfZW50ZXJGdWxsc2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSA9
IFlFUzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC0+cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLT5yZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlTm9uZSwgZmFsc2UsIFtdIHsgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5jcHAKaW5kZXggMWQ2ZjczYjhhYjU0
NGMxNjA1YWVkOWE0MmZhNjM1NWMxODcwMWJiYS4uOGM1NGQxM2E2ZDcxNmVlNDg2MTRiMmYwNGYw
NDQyMjIzY2I5NzU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUZ1bGxTY3JlZW5DbGllbnQ6OmNsb3NlRnVsbFNjcmVlbihXZWJQYWdlICpwYWdlKQogICAg
IGlmIChtX2NsaWVudC5jbG9zZUZ1bGxTY3JlZW4pCiAgICAgICAgIG1fY2xpZW50LmNsb3NlRnVs
bFNjcmVlbih0b0FQSShwYWdlKSk7CiAgICAgZWxzZQotICAgICAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpDbG9zZSgpKTsKKyAgICAgICAgcGFnZS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpD
bG9zZSgpLCBbXSB7IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KaW5kZXggNGM3ZWEzYTdjOTg5ZWIwMjEyMTJmMDZlM2ZkM2M4NzFmZmRhM2I1OS4uMjNjNTcx
MTNiYjgwZjJiMzQwYmQ2NWYxMDBhNWJjNDY1NzU3OWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAg
LTM1OSw3ICszNTksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnZpZGVvRGltZW5z
aW9uc0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAg
IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1vZGUsIGZpbmlz
aGVkV2l0aE1lZGlhKTsKKyAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSwgW10geyB9KTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MjExYmM3YmI5ODQxYzc2
NjU2NmU3YWMzMTg4MGYyZDViYWU3NjUxLi42NWYyZmY3Njk4YjcyZTk0YWQxOGUxZmQwNGY0NWRj
YWI3OTJmNjQxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDEtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVz
ZW50YXRpb25zIEFQSSBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlvbiBoYW5kbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3NDEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzczMDQ1OTA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMgdG8gdXNlIHRoZSBuZXcgY29tcGxl
dGlvbiBoYW5kbGVyLiBNb3ZlIGZyb20gdXNpbmcgSlMKKyAgICAgICAgdG8gYSBuZXcgU1BJIHRv
IGNoZWNrIGZvciBpbmxpbmUgdmlkZW8gdG8gYXZvaWQgZmxha2luZXNzIGJlY2F1c2UgdGhlCisg
ICAgICAgIEpTIHZhbHVlIGlzIGFzeW5jIGFuZCBtYXkgbm90IGJlIGNvbXBsZXRlZCBieSB0aGUg
dGltZQorICAgICAgICBkaWRFeGl0RnVsbHNjcmVlbigpIGlzIGNhbGxlZC4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2No
ZW1lcy9UZXN0V2ViS2l0QVBJLnhjc2NoZW1lOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMubW06Cisg
ICAgICAgIChURVNUKToKKwogMjAyMS0wMS0xOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW3VwZGF0ZS13ZWJraXRdIERvIG5vdCBhdXRvbWF0aWNhbGx5
IHVzZSBnaXQgc3ZuIHJlYmFzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnMubW0KaW5kZXggOGU0Njk5MTM4NzU3YWE2NTQ0ODI2MGZjZTg4MjhiZjMw
Y2Q2NmQzNS4uOTY4M2I1NWVjNmMyM2ZlYzk0NjVkZDc2OGU3YTFlZTc5ZjVlNTI2YSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLm1tCkBAIC03
MiwxNCArNzIsMTMgQEAgVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucywg
UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41
KTsKICAgICB9IHdoaWxlICh0cnVlKTsKIAotICAgIHByZXNlbnRhdGlvbk1vZGVDaGFuZ2VkID0g
ZmFsc2U7Ci0gICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInByZXNl
bnRhdGlvbm1vZGVjaGFuZ2VkIiBhY3Rpb246XnsgcHJlc2VudGF0aW9uTW9kZUNoYW5nZWQgPSB0
cnVlOyB9XTsKLQotICAgIFt3ZWJWaWV3IF9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107Ci0K
LSAgICBBU1NFUlQoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuRm9yKCZwcmVzZW50YXRpb25Nb2Rl
Q2hhbmdlZCwgMTApKTsKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uczpeeworICAgICAgICBpc0RvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAg
IEVYUEVDVF9TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKS53ZWJraXRQcmVzZW50YXRpb25Nb2RlIl0uVVRG
OFN0cmluZywgImlubGluZSIpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9hbGxNZWRpYVBy
ZXNlbnRhdGlvbnNDbG9zZWRdKTsKIH0KIAogI2VuZGlmCkBAIC0xMDksMTQgKzEwOCwxMyBAQCBU
RVNUKFdLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLCBWaWRlb0Z1bGxzY3JlZW4p
CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuNSk7CiAgICAgfSB3aGlsZSAo
dHJ1ZSk7CiAKLSAgICBwcmVzZW50YXRpb25Nb2RlQ2hhbmdlZCA9IGZhbHNlOwotICAgIFt3ZWJW
aWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwcmVzZW50YXRpb25tb2RlY2hhbmdl
ZCIgYWN0aW9uOl57IHByZXNlbnRhdGlvbk1vZGVDaGFuZ2VkID0gdHJ1ZTsgfV07Ci0KLSAgICBb
d2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdOwotCi0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZwcmVzZW50YXRpb25Nb2RlQ2hhbmdlZCk7Ci0KLSAgICBFWFBFQ1RfU1RS
RVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ3ZpZGVvJykud2Via2l0UHJlc2VudGF0aW9uTW9kZSJdLlVURjhTdHJpbmcsICJp
bmxpbmUiKTsKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBj
bG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uczpeeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkXSk7CiB9CiAK
IFRFU1QoV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMsIEVsZW1lbnRGdWxsc2Ny
ZWVuKQpAQCAtMTM4LDExICsxMzYsMTMgQEAgVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJl
c2VudGF0aW9ucywgRWxlbWVudEZ1bGxzY3JlZW4pCiAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImZ1
bGxzY3JlZW5jaGFuZ2UiIGFjdGlvbjpeeyBmdWxsc2NyZWVuTW9kZUNoYW5nZWQgPSB0cnVlOyB9
XTsKIAotICAgIFt3ZWJWaWV3IF9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107Ci0KLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk7Ci0KLSAgICBF
WFBFQ1RfU1RSRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50Il0uVVRGOFN0cmluZywgIjxudWxsPiIpOworICAg
IHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGNsb3NlQWxsTWVkaWFQ
cmVzZW50YXRpb25zOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IF9hbGxNZWRpYVByZXNlbnRhdGlvbnNDbG9zZWRdKTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418201</attachid>
            <date>2021-01-22 17:16:35 -0800</date>
            <delta_ts>2021-01-27 11:31:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220741-20210122171635.patch</filename>
            <type>text/plain</type>
            <size>30927</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1OGNjODU0NzcxMjM4NDI3
NTJmYmY4YTE4ZTRiZDEyN2VkMzBjYzcuLmZlMDE2MDVhMWYyNTRmMmQ3ZDczZTQ2NmY5ZTMxZDJk
NWY1MjhkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMDEtMjIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGNs
b3NlQWxsTWVkaWFQcmVzZW50YXRpb25zIEFQSSBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlvbiBo
YW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjA3NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMDQ1OTA0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBjb21wbGV0aW9uIGhhbmRs
ZXIgdG8gV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLgorICAgICAgICBUaGlz
IHJlcXVpcmVkIGhhbmRsaW5nIHRoZSBjYXNlIGZvciB2aWRlbyBmdWxsc2NyZWVuLCBwaWN0dXJl
LWluLXBpY3R1cmUsCisgICAgICAgIGFuZCBlbGVtZW50IGZ1bGxzY3JlZW4uIENsb3NpbmcgZnVs
bHNjcmVlbiByZXF1aXJlcyBtdWx0aXBsZSBhc3luYworICAgICAgICBvcGVyYXRpb25zLCBzb21l
IG9mIHdoaWNoIGdvIG91dCBvZiBXZWJLaXQgc2NvcGUgbGlrZSBQSVBWaWV3Q29udHJvbGxlckRl
bGVnYXRlCisgICAgICAgIGZ1bmN0aW9ucywgc28gZm9yIHNpbXBsaWNpdHksIHRoZSBjYWxsYmFj
a3MgYXJlIHN0b3JlZCBpbgorICAgICAgICB0aGUgcmVzcGVjdGl2ZSAqRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eSBvYmplY3QgYW5kIGNhbGxlZCB3aGVuCisgICAgICAgIGRpZEV4aXRGdWxsc2NyZWVu
KCkgaXMgZXhlY3V0ZWQuIEFueSBhZGRpdGlvbmFsIGNhbGxzIHRvIGNsb3NlQWxsTWVkaWFQcmVz
ZW50YXRpb25zCisgICAgICAgIG1hZGUgYmVmb3JlIHRoZSBwcmV2aW91cyBoYXMgZmluaXNoZWQg
d2lsbCBoYXZlIHRoZWlyIGNhbGxiYWNrcworICAgICAgICBhcHBlbmRlZCB0byBhIHZlY3RvciBh
bmQgY2FsbGVkIHdoZW4gYWxsIHByZXNlbnRhdGlvbnMgaGF2ZSBjbG9zZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVBy
ZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hbGxNZWRpYVByZXNlbnRhdGlv
bnNDbG9zZWRdKToKKyAgICAgICAgTmV3IFNQSSBmb3IgdGVzdGluZy4gUHJldmlvdXNseSB0aGVz
ZSB0ZXN0cyB1c2VkIEphdmFTY3JpcHQgdG8gY2hlY2sKKyAgICAgICAgZm9yIGlubGluZSB2aWRl
byBidXQgdXBkYXRpbmcgdGhlIEpTIHZhbHVlIGlzIGFzeW5jIGFuZCBtYXkgbm90IGJlIGNvbXBs
ZXRlZAorICAgICAgICBieSB0aGUgdGltZSBkaWRFeGl0RnVsbHNjcmVlbigpIGlzIGNhbGxlZC4g
U28sIHRoaXMgU1BJIHdpbGwgaGVscCBhdm9pZAorICAgICAgICBmbGFraW5lc3MuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZvckVhY2hTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDbG9zZUFsbE1lZGlhUHJlc2Vu
dGF0aW9uc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpjYWxsQ2xvc2VBbGxNZWRpYUhhbmRsZXJzKToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGVXaXRoQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4
aXRGdWxsc2NyZWVuKToKKyAgICAgICAgQWRkIGEgbmV3IHJlcXVlc3RGdWxsc2NyZWVuTW9kZVdp
dGhDYWxsYmFjayBmdW5jdGlvbgorICAgICAgICBmb3IgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0IHdoaWNoIGlzIHVzZWQgd2hlbiBjbG9zaW5nIGZ1bGxzY3JlZW4KKyAgICAgICAgdmlkZW8u
IFRoaXMgd2F5IHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFuIG92ZXJyaWRkZW4gZnVuY3Rpb24u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6On5XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6c2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNhbGxDbG9zZUFsbE1lZGlhSGFuZGxlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZVdpdGhD
YWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZEV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5oOgorICAgICAgICBEaXR0bywgY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGhlcmUgdG8g
YmUgdXNlZCBvbmx5IGZvciBjbG9zaW5nCisgICAgICAgIG1lZGlhIHByZXNlbnRhdGlvbnMgc28g
d2UgZG9uJ3QgaGF2ZSB0byBwYXNzIGVtcHR5IGNvbXBsZXRpb24gaGFuZGxlcnMKKyAgICAgICAg
dW5uZWNlc3NhcmlseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhdXNlQWxs
TWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lQWxsTWVkaWFQbGF5
YmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
UmVtb3ZlIHVubmVjZXNzYXJ5IHZvaWRzLgorCiAyMDIxLTAxLTE5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZHJvcCByZW1haW5pbmcgbWFp
bi10aHJlYWQgYXNzZXJ0aW9uIGluIFNoYXJlYWJsZUJpdG1hcCB0aGF0IEkgbWlzc2VkIGluIHIy
NzE1MzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgK
aW5kZXggNzQ3NWJjYTI2NWI3NzI2NWY0OTJhZmM5YWMwODNlMzBhZTkwYjc2Ni4uZTNiOWQ4YjU3
ZTcwM2U2OGI1ZTc2YTdjZGYyMjgwNDVlY2Q0NzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzI3LDcgKzMyNyw3IEBAIFdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogLyohIEBhYnN0cmFjdCBDbG9zZXMg
YWxsIG91dC1vZi13aW5kb3cgbWVkaWEgcHJlc2VudGF0aW9ucyBpbiBhIFdLV2ViVmlldy4KICBA
ZGlzY3Vzc2lvbiBJbmNsdWRlcyBwaWN0dXJlLWluLXBpY3R1cmUgYW5kIGZ1bGxzY3JlZW4uCiAg
Ki8KLS0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpY2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnM6KHZvaWQgKF5fTnVsbGFibGUpKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
IC8qISBAYWJzdHJhY3QgUGF1c2VzIG1lZGlhIHBsYXliYWNrIGluIFdLV2ViVmlldy4KICBAZGlz
Y3Vzc2lvbiBQYXVzZXMgbWVkaWEgcGxheWJhY2suIE1lZGlhIGluIHRoZSBwYWdlIGNhbiBiZSBy
ZXN0YXJ0ZWQgYnkgY2FsbGluZyBwbGF5KCkgb24gYSBtZWRpYSBlbGVtZW50IG9yIHJlc3VtZSgp
IG9uIGFuIEF1ZGlvQ29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDE3YzZiZTkxYTI0OWJkNDE3NzAxMTQ0ZmUzMjNhZjU0ZGMy
NmY5MzUuLjY5NzA0MzM2ZjM5YjA2OWI3Y2Y0ZDE2ODZhYjI5OTFlNzI1OTI4NTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTM1LDYg
KzEzNSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92
ZXJsYXkuaD4KICNpbXBvcnQgPFdlYkNvcmUvV3JpdGluZ01vZGUuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2ltcG9ydCA8
d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkwNSwxNyArOTA2LDE5IEBAIHN0YXRpYyBib29sIHZhbGlk
YXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0tICh2b2lk
KWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zCistICh2b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChh
dXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpKSB7Ci0gICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVhY2hTZXNzaW9uKFtd
IChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7Ci0gICAgICAgICAgICBtb2RlbC5yZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVh
Y2hTZXNzaW9uKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJm
YWNlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1vZGVsLnJlcXVlc3RGdWxsc2NyZWVuTW9kZVdp
dGhDYWxsYmFjayhXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lLCBmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgaWYgKGF1dG8gZnVsbFNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+ZnVsbFNj
cmVlbk1hbmFnZXIoKTsgZnVsbFNjcmVlbk1hbmFnZXIgJiYgZnVsbFNjcmVlbk1hbmFnZXItPmlz
RnVsbFNjcmVlbigpKQotICAgICAgICBmdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2UoKTsKKyAgICAg
ICAgZnVsbFNjcmVlbk1hbmFnZXItPmNsb3NlV2l0aENhbGxiYWNrKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMTk4OSw3ICsxOTkyLDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU0FycmF5PiB3a1RleHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFu
aXB1bGF0aW9uSXQKIAogLSAodm9pZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKIHsKLSAg
ICBbc2VsZiBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107CisgICAgW3NlbGYgY2xvc2VBbGxN
ZWRpYVByZXNlbnRhdGlvbnM6bmlsXTsKIH0KIAogLSAodm9pZClfc3RvcE1lZGlhQ2FwdHVyZQpA
QCAtMjM1Miw2ICsyMzU1LDI1IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gd2tUZXh0TWFu
aXB1bGF0aW9uRXJyb3JzKE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0CiAgICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdDpmdW5jdGlvbkJvZHkgYXNBc3luY0Z1bmN0aW9uOllFUyB3aXRo
U291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOllF
UyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOmNv
bXBsZXRpb25IYW5kbGVyXTsKIH0KIAorCistIChCT09MKV9hbGxNZWRpYVByZXNlbnRhdGlvbnND
bG9zZWQKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgYm9vbCBoYXNPcGVuTWVk
aWFQcmVzZW50YXRpb25zID0gZmFsc2U7CisgICAgaWYgKGF1dG8gdmlkZW9GdWxsc2NyZWVuTWFu
YWdlciA9IF9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkpIHsKKyAgICAgICAgaGFzT3Bl
bk1lZGlhUHJlc2VudGF0aW9ucyA9IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhhc01vZGUoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSkKKyAgICAgICAgICAgIHx8IHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmhhc01vZGUo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRh
cmQpOworICAgIH0KKworICAgIGlmICghaGFzT3Blbk1lZGlhUHJlc2VudGF0aW9ucyAmJiBfcGFn
ZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKSAmJiBfcGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+aXNG
dWxsU2NyZWVuKCkpCisgICAgICAgIGhhc09wZW5NZWRpYVByZXNlbnRhdGlvbnMgPSB0cnVlOwor
CisgICAgcmV0dXJuICFoYXNPcGVuTWVkaWFQcmVzZW50YXRpb25zOworI2Vsc2UKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3Ry
aW5nICopamF2YVNjcmlwdFN0cmluZyBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29u
dGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgogewogICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rp
b246Tk8gd2l0aFNvdXJjZVVSTDpuaWwgd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVy
ZTpZRVMgaW5GcmFtZTpmcmFtZSBpbldvcmxkOmNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpjb21wbGV0aW9uSGFuZGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAxZTMzMWM0MGY3MjM2OWYyNDdmZThl
YmY0OTA1MzQ2ZDYwMWQ2NjI3Li5kMmI3NjMyYjg4ZmY3ZjI4Mjc1ZTU1ODYxYTE0ZDc3YThjNTc1
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKQEAgLTIyMiw2ICsyMjIsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0g
KHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdp
dGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqIGVycm9yKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
LSAodm9pZClfY2FsbEFzeW5jSmF2YVNjcmlwdDooTlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJn
dW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3Ip
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKKy0gKEJPT0wpX2FsbE1lZGlhUHJlc2VudGF0aW9uc0Nsb3NlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMYXlvdXRNb2RlOikgX1dLTGF5b3V0TW9k
ZSBfbGF5b3V0TW9kZTsKIC8vIEZvciB1c2Ugd2l0aCBfbGF5b3V0TW9kZSA9IF9XS0xheW91dE1v
ZGVGaXhlZFNpemU6CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRGaXhlZExheW91
dFNpemU6KSBDR1NpemUgX2ZpeGVkTGF5b3V0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5k
ZXggODA3NWEyYzVkMzU3MGQwYmZhYmFmOWJmOWZiMWMyMDZhNDkzZjE5Yy4uMjlkNzUwNmNhM2Ex
MmVmNTI1Mzk1MmI2YjA5MjI5ZGUwYzRhZTA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAg
LTc4LDYgKzc4LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1WaWV3ICpsYXllckhvc3RWaWV3
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhvc3RWaWV3LmdldCgpOyB9CiAgICAgdm9pZCBzZXRM
YXllckhvc3RWaWV3KFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+JiYgbGF5ZXJIb3N0VmlldykgeyBt
X2xheWVySG9zdFZpZXcgPSBXVEZNb3ZlKGxheWVySG9zdFZpZXcpOyB9CisgICAgdm9pZCByZXF1
ZXN0RnVsbHNjcmVlbk1vZGVXaXRoQ2FsbGJhY2soV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dChWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmLCBQbGF5YmFja1Nlc3Npb25N
b2RlbENvbnRleHQmLCBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CkBAIC0xNTIs
NyArMTUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gbWFrZVdlYWtQdHIoY2xpZW50
KTsgfQogICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCogY2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KIAotICAgIHZvaWQgZm9yRWFjaFNlc3Npb24o
RnVuY3Rpb248dm9pZChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbCYsIFBsYXRmb3JtVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlJik+JiYpOworICAgIHZvaWQgZm9yRWFjaFNlc3Npb24oRnVu
Y3Rpb248dm9pZChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQmLCBQbGF0Zm9ybVZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZSYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwpAQCAtMjAwLDYgKzIwMSwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwogICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlV2l0
aENhbGxiYWNrKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRo
TWVkaWEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRDbG9zZUFs
bE1lZGlhUHJlc2VudGF0aW9uc0NhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBjYWxsQ2xvc2VBbGxNZWRpYUhhbmRsZXJzKCk7CisKICAgICBib29sIG1fbW9j
a1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZSB7IERlZmF1bHRNb2NrUGlj
dHVyZUluUGljdHVyZVdpbmRvd1dpZHRoLCBEZWZhdWx0TW9ja1BpY3R1cmVJblBpY3R1cmVXaW5k
b3dIZWlnaHQgfTsKIApAQCAtMjA5LDYgKzIxNCw3IEBAIHByaXZhdGU6CiAgICAgUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQ7CiAgICAg
SGFzaE1hcDxQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgaW50PiBtX2NsaWVudENv
dW50czsKICAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudD4gbV9j
bGllbnQ7CisgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fY2xvc2VBbGxN
ZWRpYUhhbmRsZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0KaW5kZXggMDRiM2U0MmY1ZDA5ODZiNjRkZGY2OTUyNGI0OTgwMzVlZjRjZGI0ZC4u
ZDVmZDk0ZWJkYTc3Mzk2NjZlZDI1MGFkNTg2NTY2YzIwNWU3NzIyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQpAQCAtMTgxLDYgKzE4MSwxNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6cmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbgog
ICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGVXaXRoQ2FsbGJhY2soSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRo
TWVkaWEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fbWFuYWdlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9tYW5hZ2VyLT5yZXF1ZXN0RnVsbHNjcmVlbk1v
ZGVXaXRoQ2FsbGJhY2sobV9jb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxD
b250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7CiAgICAgaWYg
KG1fbWFuYWdlcikKQEAgLTMyOCw2ICszMzgsOSBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsYQog
CiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkoKQogeworICAgIEFTU0VSVChtX2Nsb3NlQWxsTWVkaWFIYW5kbGVycy5pc0VtcHR5KCkpOwor
ICAgIGNhbGxDbG9zZUFsbE1lZGlhSGFuZGxlcnMoKTsKKwogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAgICAgaW52YWxpZGF0ZSgpOwpAQCAtNDc1LDcgKzQ4OCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJCiAgICAgbV9jbGllbnRDb3VudHMuc2V0KGNvbnRleHRJZCwgY2xp
ZW50Q291bnQpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Zm9yRWFj
aFNlc3Npb24oRnVuY3Rpb248dm9pZChWaWRlb0Z1bGxzY3JlZW5Nb2RlbCYsIFBsYXRmb3JtVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlJik+JiYgY2FsbGJhY2spCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6Zm9yRWFjaFNlc3Npb24oRnVuY3Rpb248dm9pZChWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQmLCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSYpPiYmIGNh
bGxiYWNrKQogewogICAgIGlmIChtX2NvbnRleHRNYXAuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CkBAIC03MjcsNiArNzQwLDI2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4CiAKICNwcmFn
bWEgbWFyayBNZXNzYWdlcyB0byBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAKK3ZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc0NhbGxi
YWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBtX2Nsb3NlQWxsTWVkaWFIYW5kbGVycy5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2FsbENsb3NlQWxs
TWVkaWFIYW5kbGVycygpCit7CisgICAgYXV0byBjbG9zZU1lZGlhQ2FsbGJhY2tzID0gV1RGTW92
ZShtX2Nsb3NlQWxsTWVkaWFIYW5kbGVycyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNs
b3NlTWVkaWFDYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGVXaXRoQ2FsbGJhY2so
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hl
ZFdpdGhNZWRpYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmIChtb2RlID09IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpCisgICAgICAgIHNldENsb3NlQWxsTWVkaWFQcmVzZW50YXRp
b25zQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgcmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpOworfQorCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRX
aXRoTWVkaWEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBmaW5pc2hlZFdp
dGhNZWRpYSkpOwpAQCAtNzY2LDEwICs3OTksMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGkK
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4
aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBpZiAoZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuY2hhbmdpbmdTdGFuZGJ5T25seSgpKQor
ICAgIGlmIChlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKS5jaGFuZ2luZ1N0YW5kYnlPbmx5KCkp
IHsKKyAgICAgICAgY2FsbENsb3NlQWxsTWVkaWFIYW5kbGVycygpOwogICAgICAgICByZXR1cm47
CisgICAgfQogI2VuZGlmCiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOworICAgIGNh
bGxDbG9zZUFsbE1lZGlhSGFuZGxlcnMoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAK
aW5kZXggNjMzMjQ4OGEzZWY4MWE3ODZjMWY0MWM4YTFmOGEwY2U4ZWFjNzA3MC4uYmY4NzcxODE1
OTJiNDQwNzFiMjk4OGRhMTNkZDAyZmE5OTVkNzU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTUxLDYgKzUx
LDggQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkoKQogewogICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS53ZWJQYWdlSUQoKSk7CiAgICAgbV9jbGllbnQuY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigp
OworICAgIEFTU0VSVChtX2Nsb3NlQWxsTWVkaWFIYW5kbGVycy5pc0VtcHR5KCkpOworICAgIGNh
bGxDbG9zZUFsbE1lZGlhSGFuZGxlcnMoKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5Ojp3aWxsRW50ZXJGdWxsU2NyZWVuKCkKQEAgLTc2LDYgKzc4LDI0IEBAIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKICAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbFNjcmVlbigp
KTsKIH0KIAordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRDbG9zZUFsbE1lZGlh
UHJlc2VudGF0aW9uc0NhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nsb3NlQWxsTWVkaWFIYW5kbGVycy5hcHBlbmQoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmNhbGxDbG9zZUFsbE1lZGlhSGFuZGxlcnMoKQoreworICAgIGF1dG8gY2xvc2VNZWRpYUNh
bGxiYWNrcyA9IFdURk1vdmUobV9jbG9zZUFsbE1lZGlhSGFuZGxlcnMpOworICAgIGZvciAoYXV0
byYgY2FsbGJhY2sgOiBjbG9zZU1lZGlhQ2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjaygpOwor
fQorCit2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlV2l0aENhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZXRD
bG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc0NhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBjbG9zZSgpOworfQorCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmRpZEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRp
ZEV4aXRGdWxsc2NyZWVuKCZtX3BhZ2UpOwpAQCAtODUsNiArMTA1LDcgQEAgdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAgICAgICAgIGlmIChXZWJB
dXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgICAgIGF1dG9tYXRpb25T
ZXNzaW9uLT5kaWRFeGl0RnVsbFNjcmVlbkZvclBhZ2UobV9wYWdlKTsKICAgICB9CisgICAgY2Fs
bENsb3NlQWxsTWVkaWFIYW5kbGVycygpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBhbmltYXRpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXgg
MmQyZTI3YWExNWMwZTY4MTdlN2M2ZDJkMWI5NWJhOTdiMGFmNWQ0MS4uMmIwZDdhNzQ0NGZkZTBl
MDFjZGE2MDI0NmNhOGZmY2I3MWUzNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMjgsOSArMjgsMTEgQEAKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW50UmVjdDsKQEAgLTc3LDYgKzc5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RnVsbHNjcmVl
bkluc2V0cyhjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYpOwogICAgIHZvaWQgc2V0RnVs
bHNjcmVlbkF1dG9IaWRlRHVyYXRpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVu
Q29udHJvbHNIaWRkZW4oYm9vbCk7CisgICAgdm9pZCBjbG9zZVdpdGhDYWxsYmFjayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0Q2xvc2VBbGxNZWRpYVByZXNlbnRh
dGlvbnNDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgc3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTg0LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGV4aXRGdWxsU2NyZWVuKCk7CiAgICAgdm9pZCBiZWdhbkVudGVyRnVsbFNjcmVlbihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGZpbmFsRnJhbWUpOwogICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJh
bWUpOworICAgIHZvaWQgY2FsbENsb3NlQWxsTWVkaWFIYW5kbGVycygpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwpAQCAt
OTEsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIG1fY2xpZW50OwogICAgIGJvb2wgbV9ibG9j
a3NSZXR1cm5Ub0Z1bGxzY3JlZW5Gcm9tUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07CisgICAg
VmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fY2xvc2VBbGxNZWRpYUhhbmRsZXJz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBhZTg3YTBiYWZlZjU3YWE2ZDM5MmY5ZWViZWY0OGM1ODgxMWQ1
ZWUzLi44ZDJhNGUyMTk5NTg2YzUyZmYxMTdiMGMzNWQwN2Y1M2MyNzg5MTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU5NzIsNyArNTk3Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpNZWRpCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC01OTgyLDcgKzU5ODIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodm9pZCk+JiYgY29tcGxldAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6UGF1c2VBbGxNZWRpYVBsYXliYWNrKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tD
b3VudGVyKys7CiAgICAgaWYgKG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKSB7CkBAIC01OTk5
LDcgKzU5OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbAogICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWxs
TWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX3N1
c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciA+IDApCiAgICAgICAgIG1fc3VzcGVuZE1lZGlhUGxh
eWJhY2tDb3VudGVyLS07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDY3YTRlYjlmNjIxZDQzNzM4ZTAxYjllYWYwMTEyOTNjZWI1N2M5OTAuLmE2MDZlMjcwMDZiMGIx
ZDMzNTlkZDkyMTRjODMxZTA3ZjIxYzJiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMzMyLDkgKzEzMzIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtZWRpYUNh
cHR1cmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhcHR1cmVFbmFibGVkOyB9CiAg
ICAgdm9pZCBzdG9wTWVkaWFDYXB0dXJlKCk7CiAKLSAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKLSAgICB2b2lkIHN1c3BlbmRB
bGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOwotICAgIHZv
aWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYm
KTsKKyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYpOwog
CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjg5MGI4Y2I2YTRhNmI2NjU2OGFhM2ZlYWI4ZTU2MWNi
ODNiZWUxOS4uOWZmOGM1ZTI0OWIxMTlmY2RhZjY3MzVlYjIxZmY2OWQwYTVjZDkxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTg0NCwxOSAr
ODQ0LDE5IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TWVkaWFQbGF5CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
TWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrUGxheWluZyk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFj
ayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UtPnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN1bWVBbGxNZWRp
YVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS0+cmVzdW1lQWxs
TWVkaWFQbGF5YmFjaygpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTEzNDkyMmQ1MGQ0Zjk1ODMzYTAy
MDUxMjE2NDk2N2FhN2E3MjMzMi4uM2U0Zjk2NTZjNjI0YzExMjkwZDU4OTA4ZWU0ZDBiYjc5OThl
ODcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTY2Miw5ICsxNjYyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdE1lZGlhUGxheWJh
Y2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRl
KT4mJik7CiAKLSAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHZvaWQpPiYmKTsKLSAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOwotICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHBhdXNlQWxs
TWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3Vz
cGVuZEFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3Jk
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4
MjExYmM3YmI5ODQxYzc2NjU2NmU3YWMzMTg4MGYyZDViYWU3NjUxLi5kY2U4YWY2OTM1MzFiMzE2
YjIwMzVhYjkyN2NmZTc0OGE3ZDc3MWUwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDEtMjIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGNs
b3NlQWxsTWVkaWFQcmVzZW50YXRpb25zIEFQSSBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlvbiBo
YW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjA3NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMDQ1OTA0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMgdG8gdXNl
IHRoZSBuZXcgY29tcGxldGlvbiBoYW5kbGVyLiBNb3ZlIGZyb20gdXNpbmcgSlMKKyAgICAgICAg
dG8gYSBuZXcgU1BJIHRvIGNoZWNrIGZvciBpbmxpbmUgdmlkZW8gdG8gYXZvaWQgZmxha2luZXNz
IGJlY2F1c2UgdGhlCisgICAgICAgIEpTIHZhbHVlIGlzIGFzeW5jIGFuZCBtYXkgbm90IGJlIGNv
bXBsZXRlZCBieSB0aGUgdGltZQorICAgICAgICBkaWRFeGl0RnVsbHNjcmVlbigpIGlzIGNhbGxl
ZC4KKworICAgICAgICBBZGQgYSBuZXcgY2FzZSBmb3IgbXVsdGlwbGUgc2VxdWVudGlhbCBjYWxs
cyB0bworICAgICAgICBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNl
bnRhdGlvbnMubW06CisgICAgICAgIChURVNUKToKKwogMjAyMS0wMS0xOSAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3VwZGF0ZS13ZWJraXRdIERvIG5v
dCBhdXRvbWF0aWNhbGx5IHVzZSBnaXQgc3ZuIHJlYmFzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2Vu
dGF0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMubW0KaW5kZXggOGU0Njk5MTM4NzU3YWE2NTQ0
ODI2MGZjZTg4MjhiZjMwY2Q2NmQzNS4uYmNkODQzODc3MWZjMWU2Njc2ZDk5ZGI4NzVmMjdjY2U2
YjE5NjIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zLm1tCkBAIC0zNiwyMSArMzYsOCBAQAogLy8gV2UgY2FuIGVuYWJsZSB0aGUgdGVzdCBm
b3Igb2xkIGlPUyB2ZXJzaW9ucyBhZnRlciA8cmRhcjovL3Byb2JsZW0vNjM1NzI1MzQ+IGlzIGZp
eGVkLgogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJiYgKFBMQVRGT1JNKE1B
QykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE0MDAwMCkpCiAKLVRFU1QoV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRh
dGlvbnMsIFBpY3R1cmVJblBpY3R1cmUpCitzdGF0aWMgdm9pZCBsb2FkUGljdHVyZUluUGljdHVy
ZShSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldykKIHsKLSAgICBpZiAoIVdlYkNvcmU6
OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOkB7Ci0g
ICAgICAgIEAiV2ViQ29yZUxvZ2dpbmciOiBAIkZ1bGxzY3JlZW49ZGVidWciLAotICAgICAgICBA
IldlYktpdDJMb2dnaW5nIjogQCJGdWxsc2NyZWVuPWRlYnVnIiwKLSAgICB9XTsKLQotCi0gICAg
YXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50
ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXSBfc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2s6WUVT
XTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24gYWRkVG9XaW5kb3c6WUVTXSk7Ci0KICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCI8dmlkZW8gc3JjPXZpZGVvLXdpdGgtYXVkaW8ubXA0IHdlYmtpdC1w
bGF5c2lubGluZSBwbGF5c2lubGluZSBsb29wPjwvdmlkZW8+Il07CiAKICAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZWdpc3RlckRlZmF1bHRzOkB7CkBAIC03MSwx
NSArNTgsMzIgQEAgVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucywgUGlj
dHVyZUluUGljdHVyZSkKIAogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjUp
OwogICAgIH0gd2hpbGUgKHRydWUpOworfQogCi0gICAgcHJlc2VudGF0aW9uTW9kZUNoYW5nZWQg
PSBmYWxzZTsKLSAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicHJl
c2VudGF0aW9ubW9kZWNoYW5nZWQiIGFjdGlvbjpeeyBwcmVzZW50YXRpb25Nb2RlQ2hhbmdlZCA9
IHRydWU7IH1dOworVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucywgUGlj
dHVyZUluUGljdHVyZSkKK3sKKyAgICBpZiAoIVdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGlj
dHVyZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBbd2ViVmlldyBfY2xvc2VBbGxNZWRpYVBy
ZXNlbnRhdGlvbnNdOworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHJlZ2lzdGVyRGVmYXVsdHM6QHsKKyAgICAgICAgQCJXZWJDb3JlTG9nZ2luZyI6IEAiRnVsbHNj
cmVlbj1kZWJ1ZyIsCisgICAgICAgIEAiV2ViS2l0MkxvZ2dpbmciOiBAIkZ1bGxzY3JlZW49ZGVi
dWciLAorICAgIH1dOwogCi0gICAgQVNTRVJUKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bkZvcigm
cHJlc2VudGF0aW9uTW9kZUNoYW5nZWQsIDEwKSk7CiAKLSAgICBFWFBFQ1RfU1RSRVEoW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J3ZpZGVvJykud2Via2l0UHJlc2VudGF0aW9uTW9kZSJdLlVURjhTdHJpbmcsICJpbmxpbmUiKTsK
KyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFj
azpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIGxvYWRQaWN0dXJlSW5QaWN0
dXJlKHdlYlZpZXcpOworCisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkXSk7CiB9
CiAKICNlbmRpZgpAQCAtMTA5LDE0ICsxMTMsMTMgQEAgVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9ucywgVmlkZW9GdWxsc2NyZWVuKQogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzbGVlcCgwLjUpOwogICAgIH0gd2hpbGUgKHRydWUpOwogCi0gICAgcHJlc2VudGF0
aW9uTW9kZUNoYW5nZWQgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOkAicHJlc2VudGF0aW9ubW9kZWNoYW5nZWQiIGFjdGlvbjpeeyBwcmVzZW50YXRp
b25Nb2RlQ2hhbmdlZCA9IHRydWU7IH1dOwotCi0gICAgW3dlYlZpZXcgX2Nsb3NlQWxsTWVkaWFQ
cmVzZW50YXRpb25zXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHJlc2VudGF0
aW9uTW9kZUNoYW5nZWQpOwotCi0gICAgRVhQRUNUX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpLndlYmtp
dFByZXNlbnRhdGlvbk1vZGUiXS5VVEY4U3RyaW5nLCAiaW5saW5lIik7CisgICAgc3RhdGljIGJv
b2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlv
bnM6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX2Fs
bE1lZGlhUHJlc2VudGF0aW9uc0Nsb3NlZF0pOwogfQogCiBURVNUKFdLV2ViVmlld0Nsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zLCBFbGVtZW50RnVsbHNjcmVlbikKQEAgLTEzOCwxMSArMTQxLDQ1
IEBAIFRFU1QoV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMsIEVsZW1lbnRGdWxs
c2NyZWVuKQogICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJmdWxsc2NyZWVuY2hhbmdlIiBhY3Rpb246
XnsgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkID0gdHJ1ZTsgfV07CiAKLSAgICBbd2ViVmlldyBfY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdOworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zOl57CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworICAgIAorICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9hbGxNZWRpYVByZXNlbnRhdGlv
bnNDbG9zZWRdKTsKK30KIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZnVsbHNjcmVl
bk1vZGVDaGFuZ2VkKTsKK1RFU1QoV0tXZWJWaWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMs
IE11bHRpcGxlU2VxdWVudGlhbENsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zKQoreworICAgIGlm
ICghV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVm
YXVsdHM6QHsKKyAgICAgICAgQCJXZWJDb3JlTG9nZ2luZyI6IEAiRnVsbHNjcmVlbj1kZWJ1ZyIs
CisgICAgICAgIEAiV2ViS2l0MkxvZ2dpbmciOiBAIkZ1bGxzY3JlZW49ZGVidWciLAorICAgIH1d
OworCisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgW1tjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxh
eWJhY2s6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24gYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBsb2FkUGljdHVyZUlu
UGljdHVyZSh3ZWJWaWV3KTsKKworICAgIHN0YXRpYyBib29sIGZpcnN0SXNEb25lID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6XnsKKyAgICAgICAgZmly
c3RJc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgc3RhdGljIGJvb2wgc2Vjb25kSXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6XnsKKyAg
ICAgICAgc2Vjb25kSXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZmlyc3RJc0RvbmUpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
c2Vjb25kSXNEb25lKTsKIAotICAgIEVYUEVDVF9TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQiXS5VVEY4
U3RyaW5nLCAiPG51bGw+Iik7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX2FsbE1lZGlhUHJl
c2VudGF0aW9uc0Nsb3NlZF0pOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418569</attachid>
            <date>2021-01-27 11:31:55 -0800</date>
            <delta_ts>2021-01-27 12:25:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-220741-20210127113155.patch</filename>
            <type>text/plain</type>
            <size>30311</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1OGNjODU0NzcxMjM4NDI3
NTJmYmY4YTE4ZTRiZDEyN2VkMzBjYzcuLmQ5ZDc5ODU3ZTc4MmRjYzdiMTRhMWUzN2FmOTYzZWE0
NjZiM2FkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjEtMDEtMjcgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGNs
b3NlQWxsTWVkaWFQcmVzZW50YXRpb25zIEFQSSBkb2VzIG5vdCBoYXZlIGEgY29tcGxldGlvbiBo
YW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjA3NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMDQ1OTA0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkcyBhIGNvbXBsZXRpb24gaGFuZGxl
ciB0byBXS1dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMuCisgICAgICAgIFRoaXMg
cmVxdWlyZWQgaGFuZGxpbmcgdGhlIGNhc2UgZm9yIHZpZGVvIGZ1bGxzY3JlZW4sIHBpY3R1cmUt
aW4tcGljdHVyZSwKKyAgICAgICAgYW5kIGVsZW1lbnQgZnVsbHNjcmVlbi4gQ2xvc2luZyBmdWxs
c2NyZWVuIHJlcXVpcmVzIG11bHRpcGxlIGFzeW5jCisgICAgICAgIG9wZXJhdGlvbnMsIHNvbWUg
b2Ygd2hpY2ggZ28gb3V0IG9mIFdlYktpdCBzY29wZSBsaWtlIFBJUFZpZXdDb250cm9sbGVyRGVs
ZWdhdGUKKyAgICAgICAgZnVuY3Rpb25zLCBzbyBmb3Igc2ltcGxpY2l0eSwgdGhlIGNhbGxiYWNr
cyBhcmUgc3RvcmVkIGluCisgICAgICAgIHRoZSByZXNwZWN0aXZlICpGdWxsc2NyZWVuTWFuYWdl
clByb3h5IG9iamVjdCBhbmQgY2FsbGVkIHdoZW4KKyAgICAgICAgZGlkRXhpdEZ1bGxzY3JlZW4o
KSBpcyBleGVjdXRlZC4gQW55IGFkZGl0aW9uYWwgY2FsbHMgdG8gY2xvc2VBbGxNZWRpYVByZXNl
bnRhdGlvbnMKKyAgICAgICAgbWFkZSBiZWZvcmUgdGhlIHByZXZpb3VzIGhhcyBmaW5pc2hlZCB3
aWxsIGhhdmUgdGhlaXIgY2FsbGJhY2tzCisgICAgICAgIGFwcGVuZGVkIHRvIGEgdmVjdG9yIGFu
ZCBjYWxsZWQgd2hlbiBhbGwgcHJlc2VudGF0aW9ucyBoYXZlIGNsb3NlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBjbG9zZUFsbE1lZGlh
UHJlc2VudGF0aW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbG9zZUFsbE1lZGlhUHJl
c2VudGF0aW9uc10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2FsbE1lZGlhUHJlc2VudGF0aW9u
c0Nsb3NlZF0pOgorICAgICAgICBOZXcgU1BJIGZvciB0ZXN0aW5nLiBQcmV2aW91c2x5IHRoZXNl
IHRlc3RzIHVzZWQgSmF2YVNjcmlwdCB0byBjaGVjaworICAgICAgICBmb3IgaW5saW5lIHZpZGVv
IGJ1dCB1cGRhdGluZyB0aGUgSlMgdmFsdWUgaXMgYXN5bmMgYW5kIG1heSBub3QgYmUgY29tcGxl
dGVkCisgICAgICAgIGJ5IHRoZSB0aW1lIGRpZEV4aXRGdWxsc2NyZWVuKCkgaXMgY2FsbGVkLiBT
bywgdGhpcyBTUEkgd2lsbCBoZWxwIGF2b2lkCisgICAgICAgIGZsYWtpbmVzcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9k
ZVdpdGhDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Zm9yRWFjaFNlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNhbGxDbG9zZUNvbXBsZXRpb25IYW5k
bGVycyk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlV2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAgICAgIEFkZCBh
IG5ldyByZXF1ZXN0RnVsbHNjcmVlbk1vZGVXaXRoQ2FsbGJhY2sgZnVuY3Rpb24KKyAgICAgICAg
Zm9yIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCB3aGljaCBpcyB1c2VkIHdoZW4gY2xvc2lu
ZyBmdWxsc2NyZWVuCisgICAgICAgIHZpZGVvLiBUaGlzIHdheSB3ZSBkb24ndCBuZWVkIHRvIGFk
anVzdCBhbiBvdmVycmlkZGVuIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5Ojp+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNhbGxDbG9zZUNvbXBsZXRpb25IYW5kbGVy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlV2l0
aENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkRXhpdEZ1bGxTY3JlZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5Lmg6CisgICAgICAgIERpdHRvLCBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gaGVyZSB0
byBiZSB1c2VkIG9ubHkgZm9yIGNsb3NpbmcKKyAgICAgICAgbWVkaWEgcHJlc2VudGF0aW9ucyBz
byB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgZW1wdHkgY29tcGxldGlvbiBoYW5kbGVycworICAgICAg
ICB1bm5lY2Vzc2FyaWx5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjayk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGF1c2VB
bGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3VzcGVuZEFsbE1l
ZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN1bWVBbGxNZWRpYVBs
YXliYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICBSZW1vdmUgdW5uZWNlc3Nhcnkgdm9pZHMuCisKIDIwMjEtMDEtMTkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBkcm9wIHJlbWFpbmluZyBt
YWluLXRocmVhZCBhc3NlcnRpb24gaW4gU2hhcmVhYmxlQml0bWFwIHRoYXQgSSBtaXNzZWQgaW4g
cjI3MTUzMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aAppbmRleCA3NDc1YmNhMjY1Yjc3MjY1ZjQ5MmFmYzlhYzA4M2UzMGFlOTBiNzY2Li5lM2I5ZDhi
NTdlNzAzZTY4YjVlNzZhN2NkZjIyODA0NWVjZDQ3NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0zMjcsNyArMzI3LDcgQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAvKiEgQGFic3RyYWN0IENsb3Nl
cyBhbGwgb3V0LW9mLXdpbmRvdyBtZWRpYSBwcmVzZW50YXRpb25zIGluIGEgV0tXZWJWaWV3Lgog
IEBkaXNjdXNzaW9uIEluY2x1ZGVzIHBpY3R1cmUtaW4tcGljdHVyZSBhbmQgZnVsbHNjcmVlbi4K
ICAqLwotLSAodm9pZCljbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZCljbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9uczoodm9pZCAoXl9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IAogLyohIEBhYnN0cmFjdCBQYXVzZXMgbWVkaWEgcGxheWJhY2sgaW4gV0tXZWJWaWV3LgogIEBk
aXNjdXNzaW9uIFBhdXNlcyBtZWRpYSBwbGF5YmFjay4gTWVkaWEgaW4gdGhlIHBhZ2UgY2FuIGJl
IHJlc3RhcnRlZCBieSBjYWxsaW5nIHBsYXkoKSBvbiBhIG1lZGlhIGVsZW1lbnQgb3IgcmVzdW1l
KCkgb24gYW4gQXVkaW9Db250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTdjNmJlOTFhMjQ5YmQ0MTc3MDExNDRmZTMyM2FmNTRk
YzI2ZjkzNS4uNjk3MDQzMzZmMzliMDY5YjdjZjRkMTY4NmFiMjk5MWU3MjU5Mjg1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMzUs
NiArMTM1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9u
T3ZlcmxheS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW1wb3J0
IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtOTA1LDE3ICs5MDYsMTkgQEAgc3RhdGljIGJvb2wgdmFs
aWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS0gKHZv
aWQpY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKKy0gKHZvaWQpY2xvc2VBbGxNZWRpYVByZXNl
bnRhdGlvbnM6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CisgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYg
KGF1dG8gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKCkpIHsKLSAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Zm9yRWFjaFNlc3Npb24o
W10gKGF1dG8mIG1vZGVsLCBhdXRvJiBpbnRlcmZhY2UpIHsKLSAgICAgICAgICAgIG1vZGVsLnJl
cXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Zm9y
RWFjaFNlc3Npb24oW2NhbGxiYWNrQWdncmVnYXRvcl0gKGF1dG8mIG1vZGVsLCBhdXRvJiBpbnRl
cmZhY2UpIG11dGFibGUgeworICAgICAgICAgICAgbW9kZWwucmVxdWVzdEZ1bGxzY3JlZW5Nb2Rl
V2l0aENhbGxiYWNrKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmUsIGZhbHNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgICAgICB9
KTsKICAgICB9CiAKICAgICBpZiAoYXV0byBmdWxsU2NyZWVuTWFuYWdlciA9IF9wYWdlLT5mdWxs
U2NyZWVuTWFuYWdlcigpOyBmdWxsU2NyZWVuTWFuYWdlciAmJiBmdWxsU2NyZWVuTWFuYWdlci0+
aXNGdWxsU2NyZWVuKCkpCi0gICAgICAgIGZ1bGxTY3JlZW5NYW5hZ2VyLT5jbG9zZSgpOworICAg
ICAgICBmdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2VXaXRoQ2FsbGJhY2soW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKICNlbmRpZgogfQogCkBAIC0xOTg5LDcgKzE5OTIsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TQXJyYXk+IHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyhOU0FycmF5PF9XS1RleHRN
YW5pcHVsYXRpb25JdAogCiAtICh2b2lkKV9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucwogewot
ICAgIFtzZWxmIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXTsKKyAgICBbc2VsZiBjbG9zZUFs
bE1lZGlhUHJlc2VudGF0aW9uczpuaWxdOwogfQogCiAtICh2b2lkKV9zdG9wTWVkaWFDYXB0dXJl
CkBAIC0yMzUyLDYgKzIzNTUsMjUgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB3a1RleHRN
YW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXQKICAgICBbc2Vs
ZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmZ1bmN0aW9uQm9keSBhc0FzeW5jRnVuY3Rpb246WUVTIHdp
dGhTb3VyY2VVUkw6bmlsIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6
WUVTIGluRnJhbWU6ZnJhbWUgaW5Xb3JsZDpjb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6
Y29tcGxldGlvbkhhbmRsZXJdOwogfQogCisKKy0gKEJPT0wpX2FsbE1lZGlhUHJlc2VudGF0aW9u
c0Nsb3NlZAoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIGhhc09wZW5N
ZWRpYVByZXNlbnRhdGlvbnMgPSBmYWxzZTsKKyAgICBpZiAoYXV0byB2aWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyID0gX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKSkgeworICAgICAgICBoYXNP
cGVuTWVkaWFQcmVzZW50YXRpb25zID0gdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+aGFzTW9kZShX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKQorICAgICAgICAgICAgfHwgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+aGFzTW9k
ZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCk7CisgICAgfQorCisgICAgaWYgKCFoYXNPcGVuTWVkaWFQcmVzZW50YXRpb25zICYmIF9w
YWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpICYmIF9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpLT5p
c0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgaGFzT3Blbk1lZGlhUHJlc2VudGF0aW9ucyA9IHRydWU7
CisKKyAgICByZXR1cm4gIWhhc09wZW5NZWRpYVByZXNlbnRhdGlvbnM7CisjZWxzZQorICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCit9CisKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNT
dHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgaW5D
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAg
ICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5j
dGlvbjpOTyB3aXRoU291cmNlVVJMOm5pbCB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0
dXJlOllFUyBpbkZyYW1lOmZyYW1lIGluV29ybGQ6Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5k
bGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDFlMzMxYzQwZjcyMzY5ZjI0N2Zl
OGViZjQ5MDUzNDZkNjAxZDY2MjcuLmQyYjc2MzJiODhmZjdmMjgyNzVlNTU4NjFhMTRkNzdhOGM1
NzU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtMjIyLDYgKzIyMiw4IEBAIGZvciB0aGlzIHByb3BlcnR5Lgog
LSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcg
d2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgaW5GcmFtZTooV0tGcmFtZUluZm8gKilm
cmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAtICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0OihOU1N0cmluZyAqKWZ1bmN0aW9uQm9keSBh
cmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5GcmFt
ZTooV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKilj
b250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJv
cikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAorLSAoQk9PTClfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2Vk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExheW91dE1vZGU6KSBfV0tMYXlvdXRN
b2RlIF9sYXlvdXRNb2RlOwogLy8gRm9yIHVzZSB3aXRoIF9sYXlvdXRNb2RlID0gX1dLTGF5b3V0
TW9kZUZpeGVkU2l6ZToKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEZpeGVkTGF5
b3V0U2l6ZTopIENHU2l6ZSBfZml4ZWRMYXlvdXRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApp
bmRleCA4MDc1YTJjNWQzNTcwZDBiZmFiYWY5YmY5ZmIxYzIwNmE0OTNmMTljLi4yZGM3NDUyNmQ0
MmE2MDVlYWYyMjA0NjFhYzM1NzU2ZjY4N2Y1NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApA
QCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybVZpZXcgKmxheWVySG9zdFZp
ZXcoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdFZpZXcuZ2V0KCk7IH0KICAgICB2b2lkIHNl
dExheWVySG9zdFZpZXcoUmV0YWluUHRyPFBsYXRmb3JtVmlldz4mJiBsYXllckhvc3RWaWV3KSB7
IG1fbGF5ZXJIb3N0VmlldyA9IFdURk1vdmUobGF5ZXJIb3N0Vmlldyk7IH0KKyAgICB2b2lkIHJl
cXVlc3RGdWxsc2NyZWVuTW9kZVdpdGhDYWxsYmFjayhXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYsIFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dCYsIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKQEAgLTE1
Miw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDbGllbnQoVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBtYWtlV2Vha1B0cihjbGll
bnQpOyB9CiAgICAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQogCi0gICAgdm9pZCBmb3JFYWNoU2Vzc2lv
bihGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsJiwgUGxhdGZvcm1W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmKT4mJik7CisgICAgdm9pZCBmb3JFYWNoU2Vzc2lvbihG
dW5jdGlvbjx2b2lkKFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCYsIFBsYXRmb3JtVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlJik+JiYpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ7CkBAIC0yMDAsNiArMjAxLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKTsKICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZVdp
dGhDYWxsYmFjayhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0
aE1lZGlhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2FsbENsb3Nl
Q29tcGxldGlvbkhhbmRsZXJzKCk7CisKICAgICBib29sIG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9u
TW9kZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21vY2tQaWN0
dXJlSW5QaWN0dXJlV2luZG93U2l6ZSB7IERlZmF1bHRNb2NrUGljdHVyZUluUGljdHVyZVdpbmRv
d1dpZHRoLCBEZWZhdWx0TW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dIZWlnaHQgfTsKIApAQCAt
MjA5LDYgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQ7CiAgICAgSGFzaE1hcDxQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgaW50PiBtX2NsaWVudENvdW50czsKICAgICBXZWFrUHRy
PFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eUNsaWVudD4gbV9jbGllbnQ7CisgICAgVmVjdG9y
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fY2xvc2VDb21wbGV0aW9uSGFuZGxlcnM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCAw
NGIzZTQyZjVkMDk4NmI2NGRkZjY5NTI0YjQ5ODAzNWVmNGNkYjRkLi42MWRjYTRkNmNiMTZlZmUw
NzYxNTEyN2IwZDU1ZmY3YjRhMzdhODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0x
ODEsNiArMTgxLDE2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZW1vdmVD
bGllbnQoVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQmIGNsaWVuCiAgICAgbV9jbGllbnRzLnJl
bW92ZSgmY2xpZW50KTsKIH0KIAordm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJl
cXVlc3RGdWxsc2NyZWVuTW9kZVdpdGhDYWxsYmFjayhIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9tYW5h
Z2VyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX21hbmFnZXItPnJlcXVlc3RGdWxsc2NyZWVuTW9kZVdpdGhDYWxsYmFjayht
X2NvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RG
dWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQpAQCAt
MzI4LDYgKzMzOCw4IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAKIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpCiB7CisgICAgY2Fs
bENsb3NlQ29tcGxldGlvbkhhbmRsZXJzKCk7CisKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIGludmFsaWRhdGUoKTsKQEAgLTQ3NSw3ICs0ODcsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SQogICAgIG1fY2xpZW50Q291bnRzLnNldChjb250ZXh0SWQsIGNsaWVudENv
dW50KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZvckVhY2hTZXNz
aW9uKEZ1bmN0aW9uPHZvaWQoVmlkZW9GdWxsc2NyZWVuTW9kZWwmLCBQbGF0Zm9ybVZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZSYpPiYmIGNhbGxiYWNrKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmZvckVhY2hTZXNzaW9uKEZ1bmN0aW9uPHZvaWQoVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0JiwgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAobV9jb250ZXh0TWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNzI3LDYgKzczOSwyMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJl
cGFyZWRUb0V4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleAogCiAjcHJhZ21hIG1h
cmsgTWVzc2FnZXMgdG8gVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogCit2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y2FsbENsb3NlQ29tcGxldGlvbkhhbmRsZXJzKCkKK3sKKyAgICBh
dXRvIGNsb3NlTWVkaWFDYWxsYmFja3MgPSBXVEZNb3ZlKG1fY2xvc2VDb21wbGV0aW9uSGFuZGxl
cnMpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjbG9zZU1lZGlhQ2FsbGJhY2tzKQorICAg
ICAgICBjYWxsYmFjaygpOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlV2l0aENhbGxiYWNrKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobW9kZSA9PSBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lCisg
ICAgICAgICYmIChoYXNNb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisgICAgICAgICAgICB8fCBoYXNNb2RlKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
KSkpCisgICAgICAgIG1fY2xvc2VDb21wbGV0aW9uSGFuZGxlcnMuYXBwZW5kKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKworICAgIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQs
IG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpKTsKQEAgLTc2NiwxMCAr
Nzk1LDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQp
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKGVuc3VyZUludGVyZmFjZShj
b250ZXh0SWQpLmNoYW5naW5nU3RhbmRieU9ubHkoKSkKKyAgICBpZiAoZW5zdXJlSW50ZXJmYWNl
KGNvbnRleHRJZCkuY2hhbmdpbmdTdGFuZGJ5T25seSgpKSB7CisgICAgICAgIGNhbGxDbG9zZUNv
bXBsZXRpb25IYW5kbGVycygpOwogICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAgICAg
bV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOworICAgIGNhbGxDbG9zZUNvbXBsZXRpb25IYW5k
bGVycygpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJG
dWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAppbmRleCA2MzMyNDg4YTNlZjgx
YTc4NmMxZjQxYzhhMWY4YTBjZThlYWM3MDcwLi43N2YxZTAyMTE1NzNlMjlkMWJlNDAzNDY0OTE4
ODNhYTA0NDgwMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5Ojp+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSgpCiB7CiAgICAgbV9wYWdl
LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsK
ICAgICBtX2NsaWVudC5jbG9zZUZ1bGxTY3JlZW5NYW5hZ2VyKCk7CisgICAgY2FsbENsb3NlQ29t
cGxldGlvbkhhbmRsZXJzKCk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
d2lsbEVudGVyRnVsbFNjcmVlbigpCkBAIC03Niw2ICs3NywxOSBAQCB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbFNjcmVlbigpCiAgICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAK
K3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y2FsbENsb3NlQ29tcGxldGlvbkhhbmRs
ZXJzKCkKK3sKKyAgICBhdXRvIGNsb3NlTWVkaWFDYWxsYmFja3MgPSBXVEZNb3ZlKG1fY2xvc2VD
b21wbGV0aW9uSGFuZGxlcnMpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjbG9zZU1lZGlh
Q2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjaygpOworfQorCit2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OmNsb3NlV2l0aENhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2Nsb3NlQ29tcGxldGlvbkhhbmRsZXJzLmFw
cGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgY2xvc2UoKTsKK30KKwogdm9p
ZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAg
bV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKQEAg
LTg1LDYgKzk5LDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVs
bFNjcmVlbigpCiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNl
c3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24o
KSkKICAgICAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT5kaWRFeGl0RnVsbFNjcmVlbkZvclBh
Z2UobV9wYWdlKTsKICAgICB9CisgICAgY2FsbENsb3NlQ29tcGxldGlvbkhhbmRsZXJzKCk7CiB9
CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVl
bihib29sIGFuaW1hdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAyZDJlMjdhYTE1YzBlNjgxN2U3YzZkMmQxYjk1
YmE5N2IwYWY1ZDQxLi4zNTI3ZGQxYWUxNWVkNDg4ZjcwYjY5N2UxNmUyOTUyY2Q1ZDJmNDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5oCkBAIC0yOCw5ICsyOCwxMSBAQAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtNzcsNiArNzksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuSW5zZXRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0
Qm94RXh0ZW50Jik7CiAgICAgdm9pZCBzZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbihTZWNv
bmRzKTsKICAgICB2b2lkIHNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihib29sKTsKKyAgICB2
b2lkIGNsb3NlV2l0aENhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtODQsNiArODcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGJlZ2FuRW50ZXJGdWxsU2Ny
ZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZmluYWxGcmFtZSk7CiAgICAgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZmluYWxGcmFtZSk7CisgICAgdm9pZCBjYWxsQ2xvc2VDb21wbGV0aW9uSGFuZGxlcnMoKTsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVy
cmlkZTsKQEAgLTkxLDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkmIG1fcGFn
ZTsKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50JiBtX2NsaWVudDsKICAgICBi
b29sIG1fYmxvY2tzUmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgeyBmYWxz
ZSB9OworICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2Nsb3NlQ29tcGxl
dGlvbkhhbmRsZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhZTg3YTBiYWZlZjU3YWE2ZDM5MmY5ZWVi
ZWY0OGM1ODgxMWQ1ZWUzLi44ZDJhNGUyMTk5NTg2YzUyZmYxMTdiMGMzNWQwN2Y1M2MyNzg5MTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU5NzIsNyAr
NTk3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVk
aWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC01OTgyLDcg
KzU5ODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldAogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6UGF1c2VBbGxNZWRpYVBsYXliYWNrKCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fc3VzcGVuZE1l
ZGlhUGxheWJhY2tDb3VudGVyKys7CiAgICAgaWYgKG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVk
KSB7CkBAIC01OTk5LDcgKzU5OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1l
ZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbAogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJh
Y2soKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxh
eWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciA+IDApCiAgICAgICAgIG1fc3Vz
cGVuZE1lZGlhUGxheWJhY2tDb3VudGVyLS07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDY3YTRlYjlmNjIxZDQzNzM4ZTAxYjllYWYwMTEyOTNjZWI1N2M5OTAuLmE2
MDZlMjcwMDZiMGIxZDMzNTlkZDkyMTRjODMxZTA3ZjIxYzJiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzMyLDkgKzEzMzIsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBtZWRpYUNhcHR1cmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhcHR1cmVF
bmFibGVkOyB9CiAgICAgdm9pZCBzdG9wTWVkaWFDYXB0dXJlKCk7CiAKLSAgICB2b2lkIHBhdXNl
QWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKLSAgICB2
b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+
JiYpOwotICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tT
dGF0ZSk+JiYpOwogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjg5MGI4Y2I2YTRhNmI2NjU2OGFh
M2ZlYWI4ZTU2MWNiODNiZWUxOS4uOWZmOGM1ZTI0OWIxMTlmY2RhZjY3MzVlYjIxZmY2OWQwYTVj
ZDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTg0NCwxOSArODQ0LDE5IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdE1lZGlhUGxheWJhY2tT
dGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TWVkaWFQbGF5CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoTWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrUGxheWluZyk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnBhdXNlQWxs
TWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNr
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UtPnN1c3BlbmRBbGxNZWRpYVBs
YXliYWNrKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpy
ZXN1bWVBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFn
ZS0+cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTEzNDkyMmQ1
MGQ0Zjk1ODMzYTAyMDUxMjE2NDk2N2FhN2E3MjMzMi4uM2U0Zjk2NTZjNjI0YzExMjkwZDU4OTA4
ZWU0ZDBiYjc5OThlODcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTY2Miw5ICsxNjYyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVz
dE1lZGlhUGxheWJhY2tTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6TWVkaWFQ
bGF5YmFja1N0YXRlKT4mJik7CiAKLSAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKLSAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBs
YXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOwotICAgIHZvaWQgcmVzdW1l
QWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2
b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3Rh
cnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA4MjExYmM3YmI5ODQxYzc2NjU2NmU3YWMzMTg4MGYyZDViYWU3NjUxLi42YWIy
MTMyNjY3OThiN2QzODY5YTUzMDA4OWNlNmZjMDI2YTc3ZGZhIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDEt
MjcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAg
V0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zIEFQSSBkb2VzIG5vdCBoYXZlIGEg
Y29tcGxldGlvbiBoYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjA3NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMDQ1OTA0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0
ZXN0cyB0byB1c2UgdGhlIG5ldyBjb21wbGV0aW9uIGhhbmRsZXIuIE1vdmUgZnJvbSB1c2luZyBK
UworICAgICAgICB0byBhIG5ldyBTUEkgdG8gY2hlY2sgZm9yIGlubGluZSB2aWRlbyB0byBhdm9p
ZCBmbGFraW5lc3MgYmVjYXVzZSB0aGUKKyAgICAgICAgSlMgdmFsdWUgaXMgYXN5bmMgYW5kIG1h
eSBub3QgYmUgY29tcGxldGVkIGJ5IHRoZSB0aW1lCisgICAgICAgIGRpZEV4aXRGdWxsc2NyZWVu
KCkgaXMgY2FsbGVkLgorCisgICAgICAgIEFkZCBhIG5ldyBjYXNlIGZvciBtdWx0aXBsZSBzZXF1
ZW50aWFsIGNhbGxzIHRvCisgICAgICAgIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDbG9zZUFs
bE1lZGlhUHJlc2VudGF0aW9ucy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTAxLTE5ICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbdXBkYXRlLXdl
YmtpdF0gRG8gbm90IGF1dG9tYXRpY2FsbHkgdXNlIGdpdCBzdm4gcmViYXNlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0Nsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbQppbmRleCA4ZTQ2OTkx
Mzg3NTdhYTY1NDQ4MjYwZmNlODgyOGJmMzBjZDY2ZDM1Li5iY2Q4NDM4NzcxZmMxZTY2NzZkOTlk
Yjg3NWYyN2NjZTZiMTk2MjJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2xvc2VBbGxN
ZWRpYVByZXNlbnRhdGlvbnMubW0KQEAgLTM2LDIxICszNiw4IEBACiAvLyBXZSBjYW4gZW5hYmxl
IHRoZSB0ZXN0IGZvciBvbGQgaU9TIHZlcnNpb25zIGFmdGVyIDxyZGFyOi8vcHJvYmxlbS82MzU3
MjUzND4gaXMgZml4ZWQuCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAmJiAo
UExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKSkKIAotVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9ucywgUGljdHVyZUluUGljdHVyZSkKK3N0YXRpYyB2b2lkIGxvYWRQaWN0
dXJlSW5QaWN0dXJlKFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3KQogewotICAgIGlm
ICghV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVm
YXVsdHM6QHsKLSAgICAgICAgQCJXZWJDb3JlTG9nZ2luZyI6IEAiRnVsbHNjcmVlbj1kZWJ1ZyIs
Ci0gICAgICAgIEAiV2ViS2l0MkxvZ2dpbmciOiBAIkZ1bGxzY3JlZW49ZGVidWciLAotICAgIH1d
OwotCi0KLSAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBbW2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQ
bGF5YmFjazpZRVNdOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRvdzpZRVNdKTsKLQogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9dmlkZW8td2l0aC1hdWRpby5t
cDQgd2Via2l0LXBsYXlzaW5saW5lIHBsYXlzaW5saW5lIGxvb3A+PC92aWRlbz4iXTsKIAogICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6
QHsKQEAgLTcxLDE1ICs1OCwzMiBAQCBURVNUKFdLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zLCBQaWN0dXJlSW5QaWN0dXJlKQogCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNsZWVwKDAuNSk7CiAgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CiAKLSAgICBwcmVzZW50YXRpb25N
b2RlQ2hhbmdlZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01l
c3NhZ2U6QCJwcmVzZW50YXRpb25tb2RlY2hhbmdlZCIgYWN0aW9uOl57IHByZXNlbnRhdGlvbk1v
ZGVDaGFuZ2VkID0gdHJ1ZTsgfV07CitURVNUKFdLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50
YXRpb25zLCBQaWN0dXJlSW5QaWN0dXJlKQoreworICAgIGlmICghV2ViQ29yZTo6c3VwcG9ydHNQ
aWN0dXJlSW5QaWN0dXJlKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIFt3ZWJWaWV3IF9jbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9uc107CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpAeworICAgICAgICBAIldlYkNvcmVMb2dnaW5n
IjogQCJGdWxsc2NyZWVuPWRlYnVnIiwKKyAgICAgICAgQCJXZWJLaXQyTG9nZ2luZyI6IEAiRnVs
bHNjcmVlbj1kZWJ1ZyIsCisgICAgfV07CiAKLSAgICBBU1NFUlQoVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuRm9yKCZwcmVzZW50YXRpb25Nb2RlQ2hhbmdlZCwgMTApKTsKIAotICAgIEVYUEVDVF9T
VFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigndmlkZW8nKS53ZWJraXRQcmVzZW50YXRpb25Nb2RlIl0uVVRGOFN0cmluZywg
ImlubGluZSIpOworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9j
ZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAg
IFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEFsbG93c1BpY3R1cmVJblBpY3R1cmVN
ZWRpYVBsYXliYWNrOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uIGFkZFRvV2luZG93OllFU10pOworCisgICAgbG9hZFBp
Y3R1cmVJblBpY3R1cmUod2ViVmlldyk7CisKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uczpeeworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IF9hbGxNZWRpYVByZXNlbnRhdGlvbnND
bG9zZWRdKTsKIH0KIAogI2VuZGlmCkBAIC0xMDksMTQgKzExMywxMyBAQCBURVNUKFdLV2ViVmll
d0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLCBWaWRlb0Z1bGxzY3JlZW4pCiAgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuNSk7CiAgICAgfSB3aGlsZSAodHJ1ZSk7CiAKLSAg
ICBwcmVzZW50YXRpb25Nb2RlQ2hhbmdlZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHBlcmZvcm1B
ZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwcmVzZW50YXRpb25tb2RlY2hhbmdlZCIgYWN0aW9uOl57
IHByZXNlbnRhdGlvbk1vZGVDaGFuZ2VkID0gdHJ1ZTsgfV07Ci0KLSAgICBbd2ViVmlldyBfY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZwcmVzZW50YXRpb25Nb2RlQ2hhbmdlZCk7Ci0KLSAgICBFWFBFQ1RfU1RSRVEoW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Zp
ZGVvJykud2Via2l0UHJlc2VudGF0aW9uTW9kZSJdLlVURjhTdHJpbmcsICJpbmxpbmUiKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBjbG9zZUFsbE1lZGlh
UHJlc2VudGF0aW9uczpeeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBfYWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkXSk7CiB9CiAKIFRFU1QoV0tXZWJW
aWV3Q2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMsIEVsZW1lbnRGdWxsc2NyZWVuKQpAQCAtMTM4
LDExICsxNDEsNDUgQEAgVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucywg
RWxlbWVudEZ1bGxzY3JlZW4pCiAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkID0gZmFsc2U7CiAg
ICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImZ1bGxzY3JlZW5jaGFu
Z2UiIGFjdGlvbjpeeyBmdWxsc2NyZWVuTW9kZUNoYW5nZWQgPSB0cnVlOyB9XTsKIAotICAgIFt3
ZWJWaWV3IF9jbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107CisgICAgc3RhdGljIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnM6XnsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgX2FsbE1lZGlh
UHJlc2VudGF0aW9uc0Nsb3NlZF0pOworfQogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOworVEVTVChXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJl
c2VudGF0aW9ucywgTXVsdGlwbGVTZXF1ZW50aWFsQ2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMp
Cit7CisgICAgaWYgKCFXZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
cmVnaXN0ZXJEZWZhdWx0czpAeworICAgICAgICBAIldlYkNvcmVMb2dnaW5nIjogQCJGdWxsc2Ny
ZWVuPWRlYnVnIiwKKyAgICAgICAgQCJXZWJLaXQyTG9nZ2luZyI6IEAiRnVsbHNjcmVlbj1kZWJ1
ZyIsCisgICAgfV07CisKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2Vi
UHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRBbGxvd3NQaWN0dXJlSW5QaWN0
dXJlTWVkaWFQbGF5YmFjazpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIGxv
YWRQaWN0dXJlSW5QaWN0dXJlKHdlYlZpZXcpOworCisgICAgc3RhdGljIGJvb2wgZmlyc3RJc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uczpeewor
ICAgICAgICBmaXJzdElzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBzdGF0aWMgYm9vbCBz
ZWNvbmRJc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBjbG9zZUFsbE1lZGlhUHJlc2VudGF0
aW9uczpeeworICAgICAgICBzZWNvbmRJc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaXJzdElzRG9uZSk7CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZzZWNvbmRJc0RvbmUpOwogCi0gICAgRVhQRUNUX1NUUkVRKFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxl
bWVudCJdLlVURjhTdHJpbmcsICI8bnVsbD4iKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBf
YWxsTWVkaWFQcmVzZW50YXRpb25zQ2xvc2VkXSk7CiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>