<?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>215972</bug_id>
          
          <creation_ts>2020-08-28 22:32:12 -0700</creation_ts>
          <short_desc>Clean up functions and state variables related to the picture-in-picture implementation</short_desc>
          <delta_ts>2020-09-08 10:38:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>216051</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>oded.hutzler</cc>
    
    <cc>oren.me</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1683871</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-28 22:32:12 -0700</bug_when>
    <thetext>Cleanup state variables related to the picture-in-picture implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683874</commentid>
    <comment_count>1</comment_count>
      <attachid>407526</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-28 22:36:58 -0700</bug_when>
    <thetext>Created attachment 407526
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683876</commentid>
    <comment_count>2</comment_count>
      <attachid>407527</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-28 22:42:08 -0700</bug_when>
    <thetext>Created attachment 407527
WIP patch - fix build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683878</commentid>
    <comment_count>3</comment_count>
      <attachid>407529</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-28 22:49:33 -0700</bug_when>
    <thetext>Created attachment 407529
WIP patch - fix build errors v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683922</commentid>
    <comment_count>4</comment_count>
      <attachid>407541</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-29 11:39:35 -0700</bug_when>
    <thetext>Created attachment 407541
WIP - revert a change leading to test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683928</commentid>
    <comment_count>5</comment_count>
      <attachid>407542</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-29 12:34:08 -0700</bug_when>
    <thetext>Created attachment 407542
WIP - fix an API test failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683950</commentid>
    <comment_count>6</comment_count>
      <attachid>407550</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-29 14:10:39 -0700</bug_when>
    <thetext>Created attachment 407550
WIP - fix some layout test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683952</commentid>
    <comment_count>7</comment_count>
      <attachid>407552</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-29 14:39:45 -0700</bug_when>
    <thetext>Created attachment 407552
WIP - fix an issue of picture-in-picture support on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684204</commentid>
    <comment_count>8</comment_count>
      <attachid>407615</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-08-31 12:26:48 -0700</bug_when>
    <thetext>Created attachment 407615
WIP - add changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684252</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-31 14:14:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/68098202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684264</commentid>
    <comment_count>10</comment_count>
      <attachid>407615</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-31 14:51:27 -0700</bug_when>
    <thetext>Comment on attachment 407615
WIP - add changelogs

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

I didn’t get to really review, but I did look over the patch and have a few style comments.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:6085
&gt; +        downcast&lt;HTMLVideoElement&gt;(this)-&gt;exitToFullscreenModeWithoutAnimationIfPossible(oldVideoFullscreenMode, VideoFullscreenModeStandard);

It would be better like this:

    downcast&lt;HTMLVideoElement&gt;(*this).

Matches the line above.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7914
&gt; +    ASSERT(m_videoFullscreenMode != mode);
&gt;      if (m_videoFullscreenMode == mode)
&gt;          return;

Why is this assertion a good idea?

&gt; Source/WebCore/html/HTMLVideoElement.cpp:480
&gt; +    VideoFullscreenMode videoFullscreenMode = toFullscreenMode(mode);

auto

Also, it seems like in the context of this function we should use a shorter name than videoFullscreenMode. Maybe fullscreenMode.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:517
&gt; +            m_pictureInPictureObserver-&gt;didEnterPictureInPicture(IntSize(size));

How did we select &quot;casting to IntSize&quot; over expandedIntSize, flooredIntSize (I think this does the same thing casting with better handling for edge cases), and roundedIntSize?

&gt; Source/WebCore/html/HTMLVideoElement.h:85
&gt;      enum class VideoPresentationMode { Inline, Fullscreen, PictureInPicture};

Missing space before the &quot;}&quot;.

&gt; Source/WebCore/html/HTMLVideoElement.h:99
&gt; +    // HTMLMediaElement

I don’t think this comment is valuable.

&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1125
&gt; +        WebAVPictureInPicturePlayerLayerView *pipView = (WebAVPictureInPicturePlayerLayerView *)[m_playerLayerView pictureInPicturePlayerLayerView];

auto

&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1126
&gt; +        WebAVPlayerLayer *pipPlayerLayer = (WebAVPlayerLayer *)[pipView layer];

auto

&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1455
&gt; +            WebAVPictureInPicturePlayerLayerView *pipView = (WebAVPictureInPicturePlayerLayerView *)[m_playerLayerView pictureInPicturePlayerLayerView];

auto

&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1456
&gt; +            WebAVPlayerLayer *pipPlayerLayer = (WebAVPlayerLayer *)[pipView layer];

auto

&gt; Source/WebCore/platform/mac/VideoFullscreenInterfaceMac.mm:258
&gt; +        // FIXME(rdar://problem/42250952)

This is not a great comment for people who can’t follow a rdar: link. Can we write words here?

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:601
&gt; +        didEnterFullscreen(contextId, { m_mockPictureInPictureWindowSize.width(), m_mockPictureInPictureWindowSize.height() });

Why do we have to write out separate width and height in braces instead of just m_mockPictureInPictureWindowSize?

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:781
&gt; -    m_page-&gt;send(Messages::VideoFullscreenManager::DidEnterFullscreen(contextId));
&gt; +    if (size.isEmpty())
&gt; +        m_page-&gt;send(Messages::VideoFullscreenManager::DidEnterFullscreen(contextId, WTF::nullopt));
&gt; +    else
&gt; +        m_page-&gt;send(Messages::VideoFullscreenManager::DidEnterFullscreen(contextId, size));

I’d rather use a local variable rather than repeating everything twice:

    Optional&lt;FloatSize&gt; optionalSize;
    if (!size.isEmpty())
        optionalSize = size;
    m_page-&gt;send(Messages::VideoFullscreenManager::DidEnterFullscreen(contextId, optionalSize));

&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:449
&gt; -    videoElement-&gt;didBecomeFullscreenElement();
&gt; +    if (size)
&gt; +        videoElement-&gt;didEnterFullscreenOrPictureInPicture(size.value());
&gt; +    else
&gt; +        videoElement-&gt;didEnterFullscreenOrPictureInPicture({ });

There’s a function called Optional::valueOr that we should use in case like this so this can be one line of code instead of four.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684735</commentid>
    <comment_count>11</comment_count>
      <attachid>407745</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-02 00:06:54 -0700</bug_when>
    <thetext>Created attachment 407745
WIP - revise the patch according to Darin&apos;s comments and fix some issues found in stress test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684885</commentid>
    <comment_count>12</comment_count>
      <attachid>407745</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-09-02 11:17:50 -0700</bug_when>
    <thetext>Comment on attachment 407745
WIP - revise the patch according to Darin&apos;s comments and fix some issues found in stress test

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

&gt; Source/WebCore/ChangeLog:23
&gt; +        the request. The motivation to do that is to guarantee correct events to be fired.

s/guarantee correct events to be fired/guarantee the correct events are fired/

&gt; Source/WebCore/ChangeLog:25
&gt; +        have a good way to create regression tests for the scenarios that presentation mode change

s/scenarios that presentation mode change/scenarios where presentation mode change/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684915</commentid>
    <comment_count>13</comment_count>
      <attachid>407785</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-02 12:17:02 -0700</bug_when>
    <thetext>Created attachment 407785
Revise the patch according to Eric&apos;s comments and fix some issues found in stress tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684917</commentid>
    <comment_count>14</comment_count>
      <attachid>407786</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-02 12:20:00 -0700</bug_when>
    <thetext>Created attachment 407786
Revise the patch according to Eric&apos;s comments and fix some issues found in stress tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684928</commentid>
    <comment_count>15</comment_count>
      <attachid>407615</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-02 12:45:07 -0700</bug_when>
    <thetext>Comment on attachment 407615
WIP - add changelogs

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

Thanks for the review! I have revised the patch accordingly.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:6085
&gt;&gt; +        downcast&lt;HTMLVideoElement&gt;(this)-&gt;exitToFullscreenModeWithoutAnimationIfPossible(oldVideoFullscreenMode, VideoFullscreenModeStandard);
&gt; 
&gt; It would be better like this:
&gt; 
&gt;     downcast&lt;HTMLVideoElement&gt;(*this).
&gt; 
&gt; Matches the line above.

Fixed.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:7914
&gt;&gt;          return;
&gt; 
&gt; Why is this assertion a good idea?

Actually, both the assertion and checking need to be removed. HTMLMediaElement::setFullscreenMode is a private function and it expects callers to do the checking.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:480
&gt;&gt; +    VideoFullscreenMode videoFullscreenMode = toFullscreenMode(mode);
&gt; 
&gt; auto
&gt; 
&gt; Also, it seems like in the context of this function we should use a shorter name than videoFullscreenMode. Maybe fullscreenMode.

Make sense. But &quot;fullscreenMode&quot; is a function name of HTMLMediaElement.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:517
&gt;&gt; +            m_pictureInPictureObserver-&gt;didEnterPictureInPicture(IntSize(size));
&gt; 
&gt; How did we select &quot;casting to IntSize&quot; over expandedIntSize, flooredIntSize (I think this does the same thing casting with better handling for edge cases), and roundedIntSize?

The size will be used by JS code, and an error/offset of 1 is not a big issue. However, I think using flooredIntSize here is better.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.h:85
&gt;&gt;      enum class VideoPresentationMode { Inline, Fullscreen, PictureInPicture};
&gt; 
&gt; Missing space before the &quot;}&quot;.

Good catch! Fixed.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.h:99
&gt;&gt; +    // HTMLMediaElement
&gt; 
&gt; I don’t think this comment is valuable.

Agree. Removed.

&gt;&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1125
&gt;&gt; +        WebAVPictureInPicturePlayerLayerView *pipView = (WebAVPictureInPicturePlayerLayerView *)[m_playerLayerView pictureInPicturePlayerLayerView];
&gt; 
&gt; auto

Fixed.

&gt;&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1126
&gt;&gt; +        WebAVPlayerLayer *pipPlayerLayer = (WebAVPlayerLayer *)[pipView layer];
&gt; 
&gt; auto

Fixed.

&gt;&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1455
&gt;&gt; +            WebAVPictureInPicturePlayerLayerView *pipView = (WebAVPictureInPicturePlayerLayerView *)[m_playerLayerView pictureInPicturePlayerLayerView];
&gt; 
&gt; auto

Fixed.

&gt;&gt; Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:1456
&gt;&gt; +            WebAVPlayerLayer *pipPlayerLayer = (WebAVPlayerLayer *)[pipView layer];
&gt; 
&gt; auto

Fixed.

&gt;&gt; Source/WebCore/platform/mac/VideoFullscreenInterfaceMac.mm:258
&gt;&gt; +        // FIXME(rdar://problem/42250952)
&gt; 
&gt; This is not a great comment for people who can’t follow a rdar: link. Can we write words here?

Agree. Updated the comment.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:601
&gt;&gt; +        didEnterFullscreen(contextId, { m_mockPictureInPictureWindowSize.width(), m_mockPictureInPictureWindowSize.height() });
&gt; 
&gt; Why do we have to write out separate width and height in braces instead of just m_mockPictureInPictureWindowSize?

It is a mistake. Fixed.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:781
&gt;&gt; +        m_page-&gt;send(Messages::VideoFullscreenManager::DidEnterFullscreen(contextId, size));
&gt; 
&gt; I’d rather use a local variable rather than repeating everything twice:
&gt; 
&gt;     Optional&lt;FloatSize&gt; optionalSize;
&gt;     if (!size.isEmpty())
&gt;         optionalSize = size;
&gt;     m_page-&gt;send(Messages::VideoFullscreenManager::DidEnterFullscreen(contextId, optionalSize));

Good idea! Fixed.

&gt;&gt; Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm:449
&gt;&gt; +        videoElement-&gt;didEnterFullscreenOrPictureInPicture({ });
&gt; 
&gt; There’s a function called Optional::valueOr that we should use in case like this so this can be one line of code instead of four.

Great idea! Fixed.
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684930</commentid>
    <comment_count>16</comment_count>
      <attachid>407745</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-02 12:45:40 -0700</bug_when>
    <thetext>Comment on attachment 407745
WIP - revise the patch according to Darin&apos;s comments and fix some issues found in stress test

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

&gt;&gt; Source/WebCore/ChangeLog:23
&gt;&gt; +        the request. The motivation to do that is to guarantee correct events to be fired.
&gt; 
&gt; s/guarantee correct events to be fired/guarantee the correct events are fired/

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        have a good way to create regression tests for the scenarios that presentation mode change
&gt; 
&gt; s/scenarios that presentation mode change/scenarios where presentation mode change/

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685080</commentid>
    <comment_count>17</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-09-02 17:46:48 -0700</bug_when>
    <thetext>*** Bug 191629 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686618</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-08 10:38:30 -0700</bug_when>
    <thetext>Committed r266728: &lt;https://trac.webkit.org/changeset/266728&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407786.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407526</attachid>
            <date>2020-08-28 22:36:58 -0700</date>
            <delta_ts>2020-08-28 22:42:06 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-215972-20200828223657.patch</filename>
            <type>text/plain</type>
            <size>39076</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNDdiODYyODQ3NjA4NDI0YjA3MzI0YjRmN2Y0YzVk
MTFiNTE3NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBzdGF0ZSB2YXJp
YWJsZXMgcmVsYXRlZCB0byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNj
cmVlbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWaWRl
b0xheWVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2Ny
ZWVuTW9kZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9u
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVz
ZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFBy
ZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlk
RW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlc2VudGF0aW9uTW9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlk
QmVjb21lRnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBsYXlvdXRTdWJsYXllcnNdKToKKyAgICAgICAgKFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpk
aWRTdGFydFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbik6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDIGVudGVyUElQXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgYm91bmRzRGlkQ2hhbmdl
Rm9yVmlkZW9WaWV3Q29udGFpbmVyOl0pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOgorCiAyMDIwLTA4LTI1ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IGxvYWRzIHF1aWNrbHkg
Zm9sbG93ZWQgYnkgbmF2aWdhdGlvbnMgbWF5IGZhaWwgaW5kZWZpbml0ZWx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGI1MzdlMWI0OWVjY2I3NDU1MmFhYWRiMDgwNWY4OTU2OTgyZDc3ZDMuLmRmYzE3NWVmOWUzOTk4
NTgxNTNjNTM1NWE2NGYxMjQzMzBjZjUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjAtMDgtMjggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVh
bnVwIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpl
bnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorCiAy
MDIwLTA4LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJ5aW5nIHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4gYSBwb3BvdmVyIGNhdXNl
cyBwcm9jZXNzIHRvIGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxNjAzNDVhNWFjMjE4YjM1MzVkMDJmMDdm
ZWFlNmViNmQ3ZWExZGY4Li5jZDQ3MGJlNWE5NWFmMzU3YWI4Zjc3NzllYmI3NzE5M2JiZGIwMGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU3ODAsNyAr
NTc4MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiAgICAgLy8gdG8gY2hhbmdlIHRoZSBwb3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhp
dGluZyBmdWxsc2NyZWVuLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBh
bmltYXRpb24gd2lsbCBiZSBpbmNvcnJlY3QuCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVu
RXZlbnQpIHsKLSAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOwogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigq
dGhpcykpOwogICAgIH0KIH0KQEAgLTU5NzMsNyArNTk3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIAogICAgICAg
ICAgICAgICAgIG1fdGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2Ny
ZWVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4g
PSB0cnVlOwotICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKKyAg
ICAgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICAgICAgICAgICAgICBj
b25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiAKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoYXNWaWRlbywgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5k
YnkpOwpAQCAtNjAyNCwxMSArNjAyNCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRG
dWxsc2NyZWVuKCkKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgp
KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+
KCp0aGlzKSwgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0gZWxzZSBpZiAoZG9jdW1l
bnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKG9s
ZFZpZGVvRnVsbHNjcmVlbk1vZGUpKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkpIHsKLSAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CisgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZp
ZGVvRWxlbWVudD4oKnRoaXMpLCBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUsIG1fdmlkZW9GdWxsc2Ny
ZWVuU3RhbmRieSk7CiAgICAgICAgIH0KIApAQCAtNjA3NSwxMSArNjA3NSwxMCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1v
ZGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7Ci0jZW5kaWYKIAotICAgIGZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgIGlmIChvbGRWaWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHN3aXRjaCAo
b2xkVmlkZW9GdWxsc2NyZWVuTW9kZSkgewogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmU6CiAgICAgY2FzZSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ6CkBAIC02MDkxLDYgKzYw
OTAsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVu
dCgpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pih0aGlzKS0+ZXhpdFRv
RnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogICAgICAgICBicmVhazsKICAg
ICB9CisjZWxzZQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpOwogI2VuZGlmCiAKICAgICBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNj
cmVlbkVsZW1lbnQoKTsKQEAgLTYxMDYsNyArNjEwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3
aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogewogICAgIGlmIChmdWxsc2NyZWVuTW9k
ZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKLSAgICAgICAgZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVl
bk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBIVE1M
TWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKQEAgLTYxNDYsNyArNjE0OCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkKIHsKICAgICByZXR1cm4gIW1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXI7Ci19OworfQogCiBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1l
ZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQogewpAQCAtNjE2OSw3ICs2
MTcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBXVEYKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNw
bGF5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IGZyYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQogewogICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWUgPSBmcmFtZTsKICAgICBpZiAobV9wbGF5ZXIpCkBAIC03OTE1LDExICs3OTE3LDIy
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGlu
Z1Jlc3RyaWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09
IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IG1vZGUp
OwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gbW9kZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNoYW5nZWQgZnJvbSAiLCBmdWxsc2Ny
ZWVuTW9kZSgpLCAiLCB0byAiLCBtb2RlKTsKKyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9u
bW9kZWNoYW5nZWRFdmVudCk7CisjZW5kaWYKKworICAgIHNldFByZXBhcmVkVG9SZXR1cm5WaWRl
b0xheWVyVG9JbmxpbmUobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKworICAgIGlmIChwbGF5ZXIoKSkKKyAgICAgICAg
cGxheWVyKCktPnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7CisKICAgICBtX3ZpZGVvRnVs
bHNjcmVlbk1vZGUgPSBtb2RlOwogICAgIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKICAgICBz
Y2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5NWVhNzBlZTc3NmQ0ZDU4OWNjNDA1Yjk5NDQzNTk0
YjZjZTU0YTkuLjQwYTA2ODFjYzQ5NWQ2MWM1OTQ1MTFhNDIwZTQyMzZiNTEyNDhjMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVi
bGljOgogI2lmZGVmIF9fT0JKQ19fCiAgICAgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpOyB9CiAj
ZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpW
aWRlb0dyYXZpdHkpOwogICAgIE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkgdmlkZW9GdWxsc2Ny
ZWVuR3Jhdml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eTsgfQog
I2VuZGlmCkBAIC00MzAsNyArNDMwLDYgQEAgcHVibGljOgogCiAgICAgdXNpbmcgTWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZTsKICAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIGZ1
bGxzY3JlZW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CkBAIC02MjUs
NiArNjI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFu
Z2UpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZUNvbnRlbnQoKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIHZvaWQgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZSk7
CisKICAgICB2b2lkIHdpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGM3NjJjMTYyZDk3MDliMzEx
ZmVhMDM0MjkyOTNiMWU3MWY1NzhhZTEuLmFkZTczMjZlYjg0OTEyMDkwNjc0ZTdlZWQ2NWY5OWU4
MzQ1MDEwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
MzUzLDExICszNTMsMTEgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c0Z1
bGxzY3JlZW4oKQogYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNj
cmVlbigpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkucXVpcmtzKCkubmVlZHNBa2FtYWlNZWRpYVBs
YXllclF1aXJrKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGlzRnVsbHNjcmVlbigpIHx8IG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGU7CisgICAgICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKSB8
fCBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlOwogCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBzdGFydHMgdG8gcmV0dXJuIHRydWUgYWZ0ZXIgdGhlIHZpZGVvIGVsZW1lbnQgaGFzIGVudGVy
ZWQKICAgICAvLyBmdWxsc2NyZWVuL3BpY3R1cmUtaW4tcGljdHVyZSB1bnRpbCBpdCBoYXMgZXhp
dGVkIGZ1bGxzY3JlZW4vcGljdHVyZS1pbi1waWN0dXJlCi0gICAgcmV0dXJuIChpc0Z1bGxzY3Jl
ZW4oKSAmJiAhd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuKCkpIHx8ICghaXNGdWxsc2NyZWVuKCkg
JiYgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSk7CisgICAgcmV0dXJuIChpc1N0YW5kYXJk
RnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkgfHwgKCFpc1N0YW5k
YXJkRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQog
CiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbigpCkBA
IC00NTEsNyArNDUxLDcgQEAgc3RhdGljIGlubGluZSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgdG9GdWxsc2NyZWVuTW9kZShIVE1MVmkKICAgICByZXR1cm4gSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZTsKIH0KIAotc3RhdGlj
IGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50
YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQorSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIEhUTUxWaWRlb0VsZW1l
bnQ6OnRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKICAgICAgICAgcmV0dXJuIEhUTUxWaWRlb0Vs
ZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6RnVsbHNjcmVlbjsKQEAgLTQ2OSwzNyArNDY5
LDM4IEBAIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25N
b2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6Ondl
YmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUpCiB7CiAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiwgbW9kZSA9ICIsICBtb2RlKTsKLSAgICBzZXRG
dWxsc2NyZWVuTW9kZSh0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpKTsKKyAgICBzZXRQcmVzZW50YXRp
b25Nb2RlKG1vZGUpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxzY3JlZW5N
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9u
TW9kZSBtb2RlKQogewotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCBt
b2RlKTsKLQotICAgIGlmIChtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlKQorICAgIGlmICht
X2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHx8IHRvUHJlc2VudGF0aW9uTW9kZShmdWxs
c2NyZWVuTW9kZSgpKSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobW9kZSA9
PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgeworICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgdmlk
ZW9GdWxsc2NyZWVuTW9kZSA9IHRvRnVsbHNjcmVlbk1vZGUobW9kZSk7CisgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUiwgIiwgdmlkZW9GdWxsc2NyZWVuTW9kZSA9ICIsIHZpZGVvRnVsbHNjcmVl
bk1vZGUpOworCisgICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpIHsKICAgICAgICAgaWYgKGlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAgICBp
ZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2RlKCkpID09IFZpZGVvUHJlc2VudGF0
aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgICAgICAgICBtX2lzRW50ZXJpbmdP
ckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKIAotICAgICAgICAgICAgbV9pc0NoYW5n
aW5nUHJlc2VudGF0aW9uTW9kZSA9IHRydWU7CisgICAgICAgICAgICBtX2lzQ2hhbmdpbmdWaWRl
b0Z1bGxzY3JlZW5Nb2RlID0gdHJ1ZTsKICAgICAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtZWRpYVNlc3Np
b24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbihtb2RlKSkK
KyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAhc3VwcG9y
dHNGdWxsc2NyZWVuKHZpZGVvRnVsbHNjcmVlbk1vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKKyAgICBp
ZiAodmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSkKICAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRy
dWU7CiAKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVuTW9kZSgpKSB7Ci0gICAgICAgIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOwotICAgICAgICBlbnRlckZ1bGxzY3JlZW4o
bW9kZSk7CisgICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkg
eworICAgICAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gdHJ1ZTsKKyAgICAg
ICAgZW50ZXJGdWxsc2NyZWVuKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIH0KIH0KIApAQCAt
NTA4LDMyICs1MDksMjQgQEAgYXV0byBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRQcmVzZW50YXRp
b25Nb2RlKCkgY29uc3QgLT4gVmlkZW9QcmVzZW50YXRpb25Nb2RlCiAgICAgcmV0dXJuIHRvUHJl
c2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVt
ZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUo
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogewotICAgIGlmIChtb2RlICE9IGZ1bGxzY3JlZW5Nb2Rl
KCkpIHsKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNoYW5nZWQgZnJvbSAiLCBm
dWxsc2NyZWVuTW9kZSgpLCAiLCB0byAiLCBtb2RlKTsKLSAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9ubW9kZWNoYW5nZWRFdmVudCk7Ci0gICAgICAg
IHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUobW9kZSAhPSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICBt
X2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gZmFsc2U7CisgICAgaWYgKG1faXNFbnRl
cmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUpIHsKKyAgICAgICAgbV9pc0VudGVyaW5nT3JF
eGl0aW5nUGljdHVyZUluUGljdHVyZSA9IGZhbHNlOworI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJ
Q1RVUkVfQVBJKQorICAgICAgICBpZiAobV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIpCisgICAg
ICAgICAgICBtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlci0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0
dXJlKEludFNpemUoc2l6ZSkpOworI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKHBsYXllcigpKQot
ICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKLQotICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKKyAgICBpZiAoZnVs
bHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQordm9pZCBIVE1M
VmlkZW9FbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpCiB7Ci0g
ICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IGZhbHNlOwotICAgIGlmIChtX2lzRW50
ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKQotICAgICAgICBtX2lzV2FpdGluZ0ZvclBp
Y3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSA9IHRydWU7Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50
OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOwotfQotCi12b2lkIEhUTUxWaWRlb0VsZW1l
bnQ6OmRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKLXsKLSAgICBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlID0gZmFsc2U7CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVu
TW9kZSA9IGZhbHNlOwogICAgIGlmIChtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0
dXJlKSB7CiAgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBm
YWxzZTsKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKQEAgLTU0MywyMCArNTM2
LDEwIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1l
bnQoKQogICAgIH0KIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShGbG9hdFJlY3QgZnJhbWUpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYgZnJhbWUpCiB7CiAgICAgSFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogCi0gICAgaWYgKG1faXNX
YWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lKSB7Ci0gICAgICAgIG1faXNXYWl0
aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgIG1faXNF
bnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKLSNpZiBFTkFCTEUoUElD
VFVSRV9JTl9QSUNUVVJFX0FQSSkKLSAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyKQotICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGlj
dHVyZUluUGljdHVyZShJbnRTaXplKGZyYW1lLnNpemUoKSkpOwotI2VuZGlmCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2Rl
KCkpICE9IFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDdmYTZm
NTkwOGEzZGZkYWNmYzYxMDVkODlmODBlZjZiNThjYjVhZTMuLjA0OGY3N2I3YWMyMjI2ZDNmZGE3
MTYzMzE3NzgxMjkxOGQ0NWZhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCkBAIC04MywxNSArODMsMTcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKQogICAgIGVudW0gY2xhc3MgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgSW5s
aW5lLCBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0dXJlfTsKKyAgICBzdGF0aWMgVmlkZW9QcmVz
ZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2Via2l0U3VwcG9y
dHNQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSkgY29uc3Q7Ci0gICAgdm9p
ZCB3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CiAgICAg
VmlkZW9QcmVzZW50YXRpb25Nb2RlIHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKLSAg
ICB2b2lkIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAgIHZvaWQg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIHZv
aWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0
aW9uTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW5PclBp
Y3R1cmVJblBpY3R1cmUoY29uc3QgRmxvYXRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBmaW5hbDsKLSAg
ICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7CisgICAgLy8g
SFRNTE1lZGlhRWxlbWVudAorICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3Qg
RmxvYXRSZWN0JikgZmluYWw7CiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkK
ICAgICB2b2lkIHNldFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcihQaWN0dXJlSW5QaWN0dXJlT2Jz
ZXJ2ZXIqKTsKQEAgLTEzMywxMSArMTM1LDEwIEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBt
X2xhc3RSZXBvcnRlZFZpZGVvV2lkdGggeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0
ZWRWaWRlb0hlaWdodCB7IDAgfTsKLSAgICBib29sIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlvbk1v
ZGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB7
IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgYm9v
bCBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lIHsgZmFsc2UgfTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGYyYjNkODdkNGI0OGI1MTFlM2JlZWFmYmQyZDkz
NzA4ODQ5OWRjNzguLjZlMzYyZGU4MTg3ZWFjYjg3YTA0NGVkNTVjN2M3ODYxNTFiOGZkZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC0zMjUsOSArMzI1LDkgQEAgdm9p
ZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xlUGljdHVyZUluUGljdHVy
ZSgpCiAKICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKm1f
bWVkaWFFbGVtZW50KTsKICAgICBpZiAoZWxlbWVudC5mdWxsc2NyZWVuTW9kZSgpID09IE1lZGlh
UGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQotICAgICAg
ICBlbGVtZW50LnNldEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKTsKKyAgICAgICAgZWxlbWVudC5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxW
aWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5saW5lKTsKICAgICBlbHNlCi0g
ICAgICAgIGVsZW1lbnQuc2V0RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgICAgICBlbGVtZW50LnNldFByZXNl
bnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpQaWN0
dXJlSW5QaWN0dXJlKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAppbmRl
eCBiMTNkMTliM2U1Y2NmMWY2ZDdkMjYzYzJlMzBmN2U3ZjhmZDhlODQzLi41NGVlZjM5OThiOGMy
MGFiMzVhYWI4NjdmYzQxMzhkMDExZDQzZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VmlkZW9D
b250ZW50TGF5ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvQ29udGVudExh
eWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0
RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4o
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDNhZDY5YjdlNzQz
Y2VhMTgxZDRjZmZjNThiZjJkMmJlNzg2NjQ3NDYuLmI3NGY0ZWI3OWNhYTI3ZDMxYTk5MzgxZjY5
ODJjY2FlY2U4ZDZiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0x
NTIsOCArMTUyLDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2Fp
dEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0aW8KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1l
ZGlhKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBtX3ZpZGVvRWxlbWVudC0+ZnVsbHNj
cmVlbk1vZGUoKSAhPSBtb2RlKQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0RnVsbHNjcmVl
bk1vZGUobW9kZSk7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50KQorICAgICAgICBtX3ZpZGVvRWxl
bWVudC0+c2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlv
bk1vZGUobW9kZSkpOwogCiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIGZpbmlzaGVkV2l0aE1l
ZGlhICYmIG1vZGUgPT0gTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKSB7CiAg
ICAgICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+ZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkg
ewpAQCAtMTkxLDcgKzE5MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwoKQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIGlmICht
X3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlQ2hh
bmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFBy
ZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKHZpZGVv
RnVsbHNjcmVlbk1vZGUpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSb3V0ZVNoYXJpbmdQb2xpY3ksIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggOGU2ZDM2Yjc4Yjg5YjZkNzAzZThiZmIy
ODVlYzY5YTFkNTNmNmY0Mi4uODQwZDU4OTg5MjU0MWQxZTAxZTc2N2U2Y2IzYzk5ZDk0M2U1NmRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVy
dFRvRXhpdEZ1bGxTY3JlCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIE5T
RGljdGlvbmFyeSAqcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwogQHByb3BlcnR5IENHU2l6ZSB2aWRl
b0RpbWVuc2lvbnM7CiBAcHJvcGVydHkgQ0dSZWN0IG1vZGVsVmlkZW9MYXllckZyYW1lOworQHBy
b3BlcnR5IEJPT0wgaXNQaWN0dXJlSW5QaWN0dXJlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V2ViQVZQbGF5ZXJMYXllciB7CkBAIC0yODMsNyArMjg0LDcgQEAgc3RhdGljIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVs
bFNjcmUKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgaWYg
KFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jh
dml0eV0pCisgICAgaWYgKHNlbGYuaXNQaWN0dXJlSW5QaWN0dXJlIHx8IFtBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCiAgICAgICAg
IHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsKICAgICBlbHNlIGlmIChbQVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHld
KQogICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9J
bnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKQEAgLTQ3OSw2ICs0ODAs
NyBAQCBzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1Rv
UGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVgogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRl
b0RpbWVuc2lvbnM6cGxheWVyTGF5ZXIudmlkZW9EaW1lbnNpb25zXTsKICAgICBbcGlwUGxheWVy
TGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnBsYXllckxheWVyLnZpZGVvR3Jhdml0eV07CiAgICAgW3Bp
cFBsYXllckxheWVyIHNldE1vZGVsVmlkZW9MYXllckZyYW1lOnBsYXllckxheWVyLm1vZGVsVmlk
ZW9MYXllckZyYW1lXTsKKyAgICBbcGlwUGxheWVyTGF5ZXIgc2V0SXNQaWN0dXJlSW5QaWN0dXJl
OllFU107CiAgICAgW3BpcFBsYXllckxheWVyIHNldFBsYXllckNvbnRyb2xsZXI6cGxheWVyTGF5
ZXIucGxheWVyQ29udHJvbGxlcl07CiAgICAgW3BpcFBsYXllckxheWVyIHNldEZ1bGxzY3JlZW5J
bnRlcmZhY2U6cGxheWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZV07CiAgICAgW3BpcFZpZXcg
YWRkU3VidmlldzpwbGF5ZXJMYXllclZpZXcudmlkZW9WaWV3XTsKQEAgLTExMTksOSArMTEyMSwx
MCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdGFydFBpY3R1cmVJ
blBpY3R1cmUoKQogCiAgICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFbnRlclBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIGRvRW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKKyAgICBlbHNlIGlmICht
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgeworICAgICAgICBXZWJBVlBpY3R1cmVJblBpY3R1
cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXll
clZpZXddOworICAgICAgICBXZWJBVlBsYXllckxheWVyICpwaXBQbGF5ZXJMYXllciA9IChXZWJB
VlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOworICAgICAgICBtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKChGbG9hdFNpemUpcGlwUGxheWVyTGF5ZXIu
ZnJhbWUuc2l6ZSk7CiAgICAgfQogCiAgICAgbV9lbnRlcmluZ1BpY3R1cmVJblBpY3R1cmUgPSBm
YWxzZTsKQEAgLTExMzYsOSArMTEzOSw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKICAgICBpZiAobV9jdXJyZW50
TW9kZS5oYXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEVudGVyRnVsbHNjcmVlbigpOwotCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwp
CiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCk7CiAKQEAgLTE0NDksOCArMTQ0OSwxNSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbigpCiAgICAgfQogICAgIG1fZW50ZXJGdWxs
c2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CisgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKSB7CisgICAgICAgIEZsb2F0U2l6ZSBzaXplOworICAgICAgICBpZiAobV9jdXJyZW50TW9k
ZS5oYXNQaWN0dXJlSW5QaWN0dXJlKCkpIHsKKyAgICAgICAgICAgIFdlYkFWUGljdHVyZUluUGlj
dHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IChXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXcgKilbbV9wbGF5ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxh
eWVyVmlld107CisgICAgICAgICAgICBXZWJBVlBsYXllckxheWVyICpwaXBQbGF5ZXJMYXllciA9
IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOworICAgICAgICAgICAgc2l6ZSA9
IEZsb2F0U2l6ZShwaXBQbGF5ZXJMYXllci5mcmFtZS5zaXplKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKHNpemUpOwor
ICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeGl0RnVs
bHNjcmVlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA0ZmNkOWEyZWY5
OWYwNWFiOGQ4YzMyNmEwMjYyMzA0NDkyYjg4YzlkLi5mODMxZDZiODQ0OGEzZDg0NGYyNGM4YjQ4
ZTBmY2JlYmZkMDkwN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI4
LDIwICsyOCwyMCBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiRnJh
bWVWaWV3LmgiCisjaW1wb3J0ICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIgogI2ltcG9ydCAiUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50LmgiCisjaW1wb3J0ICJSZW5kZXJWaWRlby5oIgogI2ltcG9ydCAiVGltZVJhbmdl
cy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQg
IlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hUTUxW
aWRlb0VsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlkZW8uaD4KLSNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRM
aW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KIApAQCAtMTI0
LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIo
KSBmaW5hbDsKICAgICB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAg
dm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSBmaW5hbDsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNj
cmVlbigpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IEZsb2F0
U2l6ZSYpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1
bGxzY3JlZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCmluZGV4IDg1YzcwYjJiYmI1MDQ3
ZWY4ZWRkYTc0Mjk0NjY1OWE0YjI3ZTE3Y2UuLjk0ZWY1NDBmYjVlZDIzYThhYmI3ZDFkNmY1MmU5
MjQzZTAzN2JmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQpAQCAtOTUsNiArOTUsNyBAQCB1c2lu
ZyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbDsKIAogZW51bSBjbGFzcyBQSVBTdGF0ZSB7
CiAgICAgTm90SW5QSVAsCisgICAgRW50ZXJpbmdQSVAsCiAgICAgSW5QSVAsCiAgICAgRXhpdGlu
Z1BJUAogfTsKQEAgLTIxMCwxMiArMjExLDEyIEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogCiAt
ICh2b2lkKWVudGVyUElQCiB7Ci0gICAgaWYgKF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6SW5QSVAp
CisgICAgaWYgKF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6RW50ZXJpbmdQSVAgfHwgX3BpcFN0YXRl
ID09IFBJUFN0YXRlOjpJblBJUCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW192aWRlb1ZpZXdD
b250YWluZXJDb250cm9sbGVyIHZpZXddLmxheWVyLmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JH
ZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spOwogICAgIFtfcGlwVmlld0NvbnRyb2xsZXIg
cHJlc2VudFZpZXdDb250cm9sbGVyQXNQaWN0dXJlSW5QaWN0dXJlOl92aWRlb1ZpZXdDb250YWlu
ZXJDb250cm9sbGVyLmdldCgpXTsKLSAgICBfcGlwU3RhdGUgPSBQSVBTdGF0ZTo6SW5QSVA7Cisg
ICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkVudGVyaW5nUElQOwogfQogCiAtICh2b2lkKWV4aXRQ
SVAKQEAgLTI0OCw3ICsyNDksMTkgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAKICAgICBBU1NF
UlRfVU5VU0VEKHZpZGVvVmlld0NvbnRhaW5lciwgdmlkZW9WaWV3Q29udGFpbmVyID09IF92aWRl
b1ZpZXdDb250YWluZXIpOwogCi0gICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMg
JiYgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkK
KyAgICBpZiAoIV92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkVudGVyaW5nUElQKSB7CisgICAgICAg
IF9waXBTdGF0ZSA9IFBJUFN0YXRlOjpJblBJUDsKKworICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS80MjI1MDk1MikKKyAgICAgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5kaWRFbnRlclBpY3R1cmVJblBp
Y3R1cmUoKTsKKworICAgICAgICBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIF92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCktPmRpZEVudGVy
RnVsbHNjcmVlbigoV2ViQ29yZTo6RmxvYXRTaXplKVtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5k
c10uc2l6ZSk7CisgICAgfSBlbHNlIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQogICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyRnJhbWUoW192aWRlb1Zp
ZXdDb250YWluZXIgYm91bmRzXSk7CiB9CiAKQEAgLTQ1NiwxMSArNDY5LDYgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbigpCiAjaWYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgICAgICBbbV9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0UGljdHVyZUluUGljdHVyZUFj
dGl2ZTpZRVNdOwogI2VuZGlmCi0KLSAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIy
NTA5NTIpOiBNb3ZlIHRoaXMgY2FsbCBpbnRvIGEgY29tcGxldGlvbiBoYW5kbGVyIG9yIGRlbGVn
YXRlIGNhbGxiYWNrLgotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBp
Y3R1cmVJblBpY3R1cmUoKTsKLSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNj
cmVlbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAyOWNmZjIzMWM2
OTNjN2I1MzY2NWYxMWFjOTFlZGZjODBmZjU3ZTU1Li4wMTliZWRjNjE2MjMzMDhjYjgwMjBlZmEx
NTI4OWQyMTg3OTZiODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTA3LDcgKzEwNyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsK
ICAgICB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRT
ZXR1cEZ1bGxzY3JlZW4oKSBmaW5hbDsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZp
bmFsOworICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYpIGZpbmFsOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9p
ZCBkaWRFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oKSBmaW5hbDsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2V0
dXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lk
IHdpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIGRp
ZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciwgV2ViQ29yZTo6RmxvYXRSZWN0KTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpWaWRlb0dyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGRjNDNlZmYyYjM4
NDBkZGFhMjRiNjg2YzhlMTRmZDQ3NGExYTg1NjcuLmFmYzkwNzE3NWRmODVmZmFhYjk0ODNlM2Uy
NzNiMGJiMTc5YTljNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTI0NCwxMCArMjQ0
LDEwIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3Jl
ZW4oKQogICAgICAgICBtX21hbmFnZXItPmRpZFNldHVwRnVsbHNjcmVlbihtX2NvbnRleHRJZCk7
CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVl
bihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikK
LSAgICAgICAgbV9tYW5hZ2VyLT5kaWRFbnRlckZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOworICAg
ICAgICBtX21hbmFnZXItPmRpZEVudGVyRnVsbHNjcmVlbihtX2NvbnRleHRJZCwgc2l6ZSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp3aWxsRXhpdEZ1bGxzY3JlZW4o
KQpAQCAtNTk4LDggKzU5OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpz
ZXRWaWRlb0RpbWVuc2lvbnMoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50CiB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50
YXRpb25Nb2RlRW5hYmxlZCkgewotICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElk
KTsKLSAgICAgICAgc2V0VmlkZW9MYXllckZyYW1lKGNvbnRleHRJZCwgezAsIDAsIG1fbW9ja1Bp
Y3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLndpZHRoKCksIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVX
aW5kb3dTaXplLmhlaWdodCgpfSk7CisgICAgICAgIGRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0
SWQsIHsgbV9tb2NrUGljdHVyZUluUGljdHVyZVdpbmRvd1NpemUud2lkdGgoKSwgbV9tb2NrUGlj
dHVyZUluUGljdHVyZVdpbmRvd1NpemUuaGVpZ2h0KCkgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTc3NCw5ICs3NzMsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGkKICAgICBt
X3BhZ2UtPmRpZEV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVu
dGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0
SWQpKTsKKyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJ
ZCwgV1RGOjpudWxsb3B0KSk7CisgICAgZWxzZQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQs
IHNpemUpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuaAppbmRleCBlODIzZDIwYzRkMWI5MjQ0YTJlY2ViYjljMzkxZDVhZjM3MDJkNTQzLi5iOGM3
MThlODFhY2Y3M2U2ZGJkNGU4OGEwZDY0NGY1YmU1MTBlODczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAg
LTE0OSw3ICsxNDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxs
c2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4
aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Cisg
ICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1
bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0
VmlkZW9MYXllckZyYW1lRmVuY2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKICAg
ICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgdW5zaWduZWQgZ3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCmluZGV4IDA3NmZmZjU3NzYxZTU5NzQ0YWNlYjg3ZDRkYTM2NTFjMjVhYzBiNjcuLjMyNWIz
Y2QyZjQ1OTJlNDFjNGRkZDgxMThkYjJiNmQ4OTY4ZjVjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIgewogICAgIERpZFNldHVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBXaWxsRXhpdEZ1bGxzY3JlZW4o
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAg
RGlkRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQpCi0gICAgRGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIERpZEVudGVyRnVsbHNjcmVlbihX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgT3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRTaXplPiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNl
dFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2ht
ZW50IGZlbmNlUG9ydCkKICAgICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCmluZGV4IDBmYmNmODZlOWNkYzM0YzA5YWRmOTE3YWI2NGYwOTFmMTVk
ZDY2NmYuLmNhMjM1YzQ5YzczNzJjM2NkODQzNmIwZGJmM2Q1ZWU3NmMwNDMzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCkBAIC0zNDIsNyArMzQyLDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWYKIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsK
LSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1
bGxzY3JlZW5Nb2RlKTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2Rl
KHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCkKQEAgLTQyOCw3ICs0MzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OndpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgog
ICAgIH0pOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4g
c2l6ZSkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZEVudGVyRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNDQxLDcg
KzQ0MywxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIGlmICghdmlkZW9FbGVtZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICB2aWRlb0VsZW1lbnQtPmRpZEJlY29tZUZ1bGxzY3Jl
ZW5FbGVtZW50KCk7CisgICAgaWYgKHNpemUpCisgICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkRW50
ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKHNpemUudmFsdWUoKSk7CisgICAgZWxzZQor
ICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVy
ZSh7IH0pOwogCiAgICAgaWYgKGludGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQ4Myw3ICs0ODgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAg
ICAgfSk7CiAjZW5kaWYKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKQEAgLTUwNCw3
ICs1MDksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihuaWwpOwogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0Vs
ZW1lbnQgPSBtb2RlbC0+dmlkZW9FbGVtZW50KCk7CiAgICAgaWYgKHZpZGVvRWxlbWVudCkKLSAg
ICAgICAgdmlkZW9FbGVtZW50LT5kaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOworICAg
ICAgICB2aWRlb0VsZW1lbnQtPmRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7
CiAKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVl
blN0YW5kYnkoZmFsc2UpOwpAQCAtNTE4LDEyICs1MjMsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmkKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KCp2aWRlb0VsZW1lbnQsIG1vZGUsIHN0YW5kYnkpOwogICAgIH0pOwogfQot
ICAgIAorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5
RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVk
IGdyYXZpdHkpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRWaWRlb0xheWVyR3Jh
dml0eSgoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KWdyYXZpdHkpOwogfQotICAgIAor
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9Jbmxp
bmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGlzUGFn
ZVZpc2libGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407527</attachid>
            <date>2020-08-28 22:42:08 -0700</date>
            <delta_ts>2020-08-28 22:49:31 -0700</delta_ts>
            <desc>WIP patch - fix build errors</desc>
            <filename>bug-215972-20200828224207.patch</filename>
            <type>text/plain</type>
            <size>39125</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNDdiODYyODQ3NjA4NDI0YjA3MzI0YjRmN2Y0YzVk
MTFiNTE3NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBzdGF0ZSB2YXJp
YWJsZXMgcmVsYXRlZCB0byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNj
cmVlbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWaWRl
b0xheWVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2Ny
ZWVuTW9kZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9u
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVz
ZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFBy
ZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlk
RW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlc2VudGF0aW9uTW9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlk
QmVjb21lRnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBsYXlvdXRTdWJsYXllcnNdKToKKyAgICAgICAgKFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpk
aWRTdGFydFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbik6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDIGVudGVyUElQXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgYm91bmRzRGlkQ2hhbmdl
Rm9yVmlkZW9WaWV3Q29udGFpbmVyOl0pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOgorCiAyMDIwLTA4LTI1ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IGxvYWRzIHF1aWNrbHkg
Zm9sbG93ZWQgYnkgbmF2aWdhdGlvbnMgbWF5IGZhaWwgaW5kZWZpbml0ZWx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGI1MzdlMWI0OWVjY2I3NDU1MmFhYWRiMDgwNWY4OTU2OTgyZDc3ZDMuLmRmYzE3NWVmOWUzOTk4
NTgxNTNjNTM1NWE2NGYxMjQzMzBjZjUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjAtMDgtMjggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVh
bnVwIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpl
bnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorCiAy
MDIwLTA4LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJ5aW5nIHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4gYSBwb3BvdmVyIGNhdXNl
cyBwcm9jZXNzIHRvIGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxNjAzNDVhNWFjMjE4YjM1MzVkMDJmMDdm
ZWFlNmViNmQ3ZWExZGY4Li5jZGFlNGM2NTJjZWM1MzAwMDAzNGI1MTBjOGU4NzAxY2FkYjRhMDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU3ODAsNyAr
NTc4MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiAgICAgLy8gdG8gY2hhbmdlIHRoZSBwb3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhp
dGluZyBmdWxsc2NyZWVuLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBh
bmltYXRpb24gd2lsbCBiZSBpbmNvcnJlY3QuCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVu
RXZlbnQpIHsKLSAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOwogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigq
dGhpcykpOwogICAgIH0KIH0KQEAgLTU5NzMsNyArNTk3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIAogICAgICAg
ICAgICAgICAgIG1fdGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2Ny
ZWVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4g
PSB0cnVlOwotICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKKyAg
ICAgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICAgICAgICAgICAgICBj
b25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiAKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoYXNWaWRlbywgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5k
YnkpOwpAQCAtNjAyNCwxMSArNjAyNCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRG
dWxsc2NyZWVuKCkKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgp
KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+
KCp0aGlzKSwgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0gZWxzZSBpZiAoZG9jdW1l
bnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKG9s
ZFZpZGVvRnVsbHNjcmVlbk1vZGUpKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkpIHsKLSAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CisgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZp
ZGVvRWxlbWVudD4oKnRoaXMpLCBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUsIG1fdmlkZW9GdWxsc2Ny
ZWVuU3RhbmRieSk7CiAgICAgICAgIH0KIApAQCAtNjA3NSwxMSArNjA3NSwxMCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1v
ZGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7Ci0jZW5kaWYKIAotICAgIGZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgIGlmIChvbGRWaWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHN3aXRjaCAo
b2xkVmlkZW9GdWxsc2NyZWVuTW9kZSkgewogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmU6CiAgICAgY2FzZSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ6CkBAIC02MDkxLDYgKzYw
OTAsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVu
dCgpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pih0aGlzKS0+ZXhpdFRv
RnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogICAgICAgICBicmVhazsKICAg
ICB9CisjZWxzZQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpOwogI2VuZGlmCiAKICAgICBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNj
cmVlbkVsZW1lbnQoKTsKQEAgLTYxMDYsNyArNjEwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3
aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogewogICAgIGlmIChmdWxsc2NyZWVuTW9k
ZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKLSAgICAgICAgZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVl
bk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBIVE1M
TWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKQEAgLTYxNDYsNyArNjE0OCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkKIHsKICAgICByZXR1cm4gIW1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXI7Ci19OworfQogCiBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1l
ZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQogewpAQCAtNjE2OSw3ICs2
MTcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBXVEYKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNw
bGF5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IGZyYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQogewogICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWUgPSBmcmFtZTsKICAgICBpZiAobV9wbGF5ZXIpCkBAIC03OTE1LDExICs3OTE3LDI0
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGlu
Z1Jlc3RyaWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09
IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IG1vZGUp
OwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gbW9kZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNoYW5nZWQgZnJvbSAiLCBmdWxsc2Ny
ZWVuTW9kZSgpLCAiLCB0byAiLCBtb2RlKTsKKyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9u
bW9kZWNoYW5nZWRFdmVudCk7CisjZW5kaWYKKworICAgIHNldFByZXBhcmVkVG9SZXR1cm5WaWRl
b0xheWVyVG9JbmxpbmUobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKworI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKKyAgICBpZiAocGxheWVyKCkpCisgICAgICAgIHBsYXllcigpLT5zZXRWaWRlb0Z1
bGxzY3JlZW5Nb2RlKG1vZGUpOworI2VuZGlmCisgICAgCiAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlID0gbW9kZTsKICAgICB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgc2NoZWR1bGVQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCA2OTVlYTcwZWU3NzZkNGQ1ODljYzQwNWI5OTQ0MzU5NGI2Y2U1NGE5
Li40MGEwNjgxY2M0OTVkNjFjNTk0NTExYTQyMGU0MjM2YjUxMjQ4YzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICNp
ZmRlZiBfX09CSkNfXwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCi0g
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOwog
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2
aXR5KTsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7IH0KICNlbmRpZgpA
QCAtNDMwLDcgKzQzMCw2IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGU7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVu
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwpAQCAtNjI1LDYgKzYyNCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVy
cmlkZTsKICAgICBib29sIGlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICB2b2lkIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOworCiAgICAg
dm9pZCB3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNzYyYzE2MmQ5NzA5YjMxMWZlYTAzNDI5
MjkzYjFlNzFmNTc4YWUxLi5hZGU3MzI2ZWI4NDkxMjA5MDY3NGU3ZWVkNjVmOTllODM0NTAxMDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM1MywxMSAr
MzUzLDExIEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNGdWxsc2NyZWVu
KCkKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQog
ewogICAgIGlmIChkb2N1bWVudCgpLnF1aXJrcygpLm5lZWRzQWthbWFpTWVkaWFQbGF5ZXJRdWly
aygqdGhpcykpCi0gICAgICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKSB8fCBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlOworICAgICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCkgfHwgbV9pc0No
YW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc3RhcnRz
IHRvIHJldHVybiB0cnVlIGFmdGVyIHRoZSB2aWRlbyBlbGVtZW50IGhhcyBlbnRlcmVkCiAgICAg
Ly8gZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1cmUgdW50aWwgaXQgaGFzIGV4aXRlZCBmdWxs
c2NyZWVuL3BpY3R1cmUtaW4tcGljdHVyZQotICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYg
IXdhaXRpbmdUb0VudGVyRnVsbHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUpOworICAgIHJldHVybiAoaXNTdGFuZGFyZEZ1bGxzY3Jl
ZW4oKSAmJiAhd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuKCkpIHx8ICghaXNTdGFuZGFyZEZ1bGxz
Y3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAogdm9pZCBI
VE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4oKQpAQCAtNDUxLDcg
KzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpCiAgICAgcmV0dXJuIEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK0hUTUxW
aWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9FbGVtZW50Ojp0b1By
ZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlkZW9FbGVtZW50OjpW
aWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CkBAIC00NjksMzcgKzQ2OSwzOCBAQCBz
dGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1By
ZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQ
cmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQogewogICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCAgbW9kZSk7Ci0gICAgc2V0RnVsbHNjcmVl
bk1vZGUodG9GdWxsc2NyZWVuTW9kZShtb2RlKSk7CisgICAgc2V0UHJlc2VudGF0aW9uTW9kZSht
b2RlKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3ZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUgbW9k
ZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtb2RlID0gIiwgbW9kZSk7Ci0K
LSAgICBpZiAobV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSkKKyAgICBpZiAobV9pc0NoYW5n
aW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8fCB0b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1v
ZGUoKSkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1vZGUgPT0gVmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
KworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAgICAgaWYgKHRvUHJl
c2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6
OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5n
UGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICAgICAgICAgIG1faXNDaGFuZ2luZ1ByZXNl
bnRhdGlvbk1vZGUgPSB0cnVlOworICAgICAgICAgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2Ny
ZWVuTW9kZSA9IHRydWU7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFTZXNzaW9uKCkuZnVs
bHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4obW9kZSkpCisgICAgaWYg
KCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNj
cmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisgICAgaWYgKHZpZGVv
RnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCiAg
ICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSB0cnVlOwogCi0g
ICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKLSAgICAgICAgZW50ZXJGdWxsc2NyZWVuKG1vZGUpOwor
ICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IGZ1bGxzY3JlZW5Nb2RlKCkpIHsKKyAgICAg
ICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CisgICAgICAgIGVudGVy
RnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB9CiB9CiAKQEAgLTUwOCwzMiAr
NTA5LDI0IEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2VudGF0aW9uTW9kZSgp
IGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAgIHJldHVybiB0b1ByZXNlbnRhdGlv
bk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3ZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVuTW9kZSgpKSB7Ci0g
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVl
bk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOwotICAgICAgICBzZXRQcmVw
YXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisgICAgbV9pc0NoYW5n
aW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlmIChtX2lzRW50ZXJpbmdPckV4
aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1Bp
Y3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQ
SSkKKyAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQorICAgICAgICAgICAg
bV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUluUGljdHVyZShJbnRT
aXplKHNpemUpKTsKKyNlbmRpZgogICAgIH0KIAotICAgIGlmIChwbGF5ZXIoKSkKLSAgICAgICAg
cGxheWVyKCktPnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7Ci0KLSAgICBIVE1MTWVkaWFF
bGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgaWYgKGZ1bGxzY3JlZW5N
b2RlKCkgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBIVE1MTWVkaWFF
bGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOwogfQogCi12b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKK3ZvaWQgSFRNTFZpZGVvRWxl
bWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSBmYWxzZTsKLSAgICBpZiAobV9pc0VudGVyaW5nT3JF
eGl0aW5nUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5Q
aWN0dXJlV2luZG93RnJhbWUgPSB0cnVlOwotCi0gICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVj
b21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKLX0KLQotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpCi17Ci0gICAgbV9pc0NoYW5naW5nUHJlc2VudGF0
aW9uTW9kZSA9IGZhbHNlOworICAgIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBm
YWxzZTsKICAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSkgewog
ICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAj
aWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCkBAIC01NDMsMjAgKzUzNiwxMCBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKICAg
ICB9CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUo
RmxvYXRSZWN0IGZyYW1lKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKIAotICAgIGlmIChtX2lzV2FpdGluZ0Zv
clBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSkgewotICAgICAgICBtX2lzV2FpdGluZ0ZvclBp
Y3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSA9IGZhbHNlOwotICAgICAgICBtX2lzRW50ZXJpbmdP
ckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7Ci0jaWYgRU5BQkxFKFBJQ1RVUkVfSU5f
UElDVFVSRV9BUEkpCi0gICAgICAgIGlmIChtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlcikKLSAg
ICAgICAgICAgIG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyLT5kaWRFbnRlclBpY3R1cmVJblBp
Y3R1cmUoSW50U2l6ZShmcmFtZS5zaXplKCkpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSAhPSBW
aWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA3ZmE2ZjU5MDhhM2Rm
ZGFjZmM2MTA1ZDg5ZjgwZWY2YjU4Y2I1YWUzLi4wNDhmNzdiN2FjMjIyNmQzZmRhNzE2MzMxNzc4
MTI5MThkNDVmYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAt
ODMsMTUgKzgzLDE3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkKICAgICBlbnVtIGNsYXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwgRnVs
bHNjcmVlbiwgUGljdHVyZUluUGljdHVyZX07CisgICAgc3RhdGljIFZpZGVvUHJlc2VudGF0aW9u
TW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdlYmtpdFN1cHBvcnRzUHJlc2Vu
dGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpIGNvbnN0OwotICAgIHZvaWQgd2Via2l0
U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOwogICAgIFZpZGVvUHJl
c2VudGF0aW9uTW9kZSB3ZWJraXRQcmVzZW50YXRpb25Nb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKLSAgICB2b2lkIGZ1bGxzY3Jl
ZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHdlYmtp
dFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5Q
aWN0dXJlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRXhp
dEZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7Ci0gICAgdm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOworICAgIC8vIEhUTUxNZWRp
YUVsZW1lbnQKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVj
dCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCiAgICAgdm9p
ZCBzZXRQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIoUGljdHVyZUluUGljdHVyZU9ic2VydmVyKik7
CkBAIC0xMzMsMTEgKzEzNSwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9sYXN0UmVw
b3J0ZWRWaWRlb1dpZHRoIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlkZW9I
ZWlnaHQgeyAwIH07Ci0gICAgYm9vbCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgeyBmYWxzZSB9
OwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIGJvb2wgbV9pc0Vu
dGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lz
V2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSB7IGZhbHNlIH07CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5tbQppbmRleCBmMmIzZDg3ZDRiNDhiNTExZTNiZWVhZmJkMmQ5MzcwODg0OTlk
Yzc4Li42ZTM2MmRlODE4N2VhY2I4N2EwNDRlZDU1YzdjNzg2MTUxYjhmZGUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMzI1LDkgKzMyNSw5IEBAIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKQogCiAg
ICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCptX21lZGlhRWxl
bWVudCk7CiAgICAgaWYgKGVsZW1lbnQuZnVsbHNjcmVlbk1vZGUoKSA9PSBNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgZWxlbWVu
dC5zZXRGdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CisgICAgICAgIGVsZW1lbnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVt
ZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZSk7CiAgICAgZWxzZQotICAgICAgICBl
bGVtZW50LnNldEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgZWxlbWVudC5zZXRQcmVzZW50YXRpb25N
b2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGlj
dHVyZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKaW5kZXggYjEzZDE5
YjNlNWNjZjFmNmQ3ZDI2M2MyZTMwZjdlN2Y4ZmQ4ZTg0My4uNTRlZWYzOTk4YjhjMjBhYjM1YWFi
ODY3ZmM0MTM4ZDAxMWQ0M2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEVu
dGVyRnVsbHNjcmVlbihjb25zdCBGbG9hdFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxFeGl0RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxzY3Jl
ZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAzYWQ2OWI3ZTc0M2NlYTE4MWQ0
Y2ZmYzU4YmYyZDJiZTc4NjY0NzQ2Li5iNzRmNGViNzljYWEyN2QzMWE5OTM4MWY2OTgyY2NhZWNl
OGQ2YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTUyLDggKzE1
Miw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndhaXRGb3JQcmVw
YXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKIHsK
LSAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2Rl
KCkgIT0gbW9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldEZ1bGxzY3JlZW5Nb2RlKG1v
ZGUpOworICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNl
dFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKG1v
ZGUpKTsKIAogICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhNZWRpYSAmJiBt
b2RlID09IE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgewogICAgICAgICBp
ZiAobV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKQEAgLTE5
MSw3ICsxOTEsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6ZXZlbnROYW1lQWxsKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKICAgICBpZiAobV92aWRlb0Vs
ZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlk
ZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50YXRp
b25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZSh2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJl
cXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUm91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDhlNmQzNmI3OGI4OWI2ZDcwM2U4YmZiMjg1ZWM2OWEx
ZDUzZjZmNDIuLjg0MGQ1ODk4OTI1NDFkMWUwMWU3NjdlNmNiM2M5OWQ5NDNlNTZkZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRG
dWxsU2NyZQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0RpY3Rpb25h
cnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKIEBwcm9wZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNp
b25zOwogQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKK0Bwcm9wZXJ0eSBC
T09MIGlzUGljdHVyZUluUGljdHVyZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkFWUGxh
eWVyTGF5ZXIgewpAQCAtMjgzLDcgKzI4NCw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3JlCiAg
ICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIGlmIChbQVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQor
ICAgIGlmIChzZWxmLmlzUGljdHVyZUluUGljdHVyZSB8fCBbQVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQogICAgICAgICB0YXJnZXRW
aWRlb0ZyYW1lID0gc2VsZi5ib3VuZHM7CiAgICAgZWxzZSBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKICAgICAg
ICAgdGFyZ2V0VmlkZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVj
dCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CkBAIC00NzksNiArNDgwLDcgQEAgc3Rh
dGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJ
blBpY3R1cmVQbGF5ZXJMYXllclYKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNp
b25zOnBsYXllckxheWVyLnZpZGVvRGltZW5zaW9uc107CiAgICAgW3BpcFBsYXllckxheWVyIHNl
dFZpZGVvR3Jhdml0eTpwbGF5ZXJMYXllci52aWRlb0dyYXZpdHldOwogICAgIFtwaXBQbGF5ZXJM
YXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpwbGF5ZXJMYXllci5tb2RlbFZpZGVvTGF5ZXJG
cmFtZV07CisgICAgW3BpcFBsYXllckxheWVyIHNldElzUGljdHVyZUluUGljdHVyZTpZRVNdOwog
ICAgIFtwaXBQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXll
ckNvbnRyb2xsZXJdOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNl
OnBsYXllckxheWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2VdOwogICAgIFtwaXBWaWV3IGFkZFN1YnZp
ZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107CkBAIC0xMTE5LDkgKzExMjEsMTAgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJl
KCkKIAogICAgIGlmIChtX2VudGVyRnVsbHNjcmVlbk5lZWRzRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KQogICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwotICAgIGVsc2UgewotICAgICAgICBpZiAo
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CisgICAgZWxzZSBpZiAobV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsKKyAgICAgICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyAqKVttX3BsYXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3XTsK
KyAgICAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJM
YXllciAqKVtwaXBWaWV3IGxheWVyXTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXItPmRpZEVudGVyRnVsbHNjcmVlbigoRmxvYXRTaXplKXBpcFBsYXllckxheWVyLmZyYW1lLnNp
emUpOwogICAgIH0KIAogICAgIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CkBA
IC0xMTM2LDkgKzExMzksNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpm
YWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFz
RnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKTsKLQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgp
OwogCkBAIC0xNDQ5LDggKzE0NDksMTUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZG9FbnRlckZ1bGxzY3JlZW4oKQogICAgIH0KICAgICBtX2VudGVyRnVsbHNjcmVlbk5l
ZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKIAotICAgIGlmIChtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVu
dGVyRnVsbHNjcmVlbigpOworICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgewor
ICAgICAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzUGlj
dHVyZUluUGljdHVyZSgpKSB7CisgICAgICAgICAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJW
aWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXdd
OworICAgICAgICAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwaXBWaWV3IGxheWVyXTsKKyAgICAgICAgICAgIHNpemUgPSBGbG9hdFNp
emUocGlwUGxheWVyTGF5ZXIuZnJhbWUuc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV9mdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbihzaXplKTsKKyAgICB9CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRXhpdEZ1bGxzY3JlZW4o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggNGZjZDlhMmVmOTlmMDVhYjhk
OGMzMjZhMDI2MjMwNDQ5MmI4OGM5ZC4uZjgzMWQ2Yjg0NDhhM2Q4NDRmMjRjOGI0OGUwZmNiZWJm
ZDA5MDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yOCwyMCArMjgs
MjAgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkZyYW1lVmlldy5o
IgorI2ltcG9ydCAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5oIgorI2ltcG9ydCAiUmVuZGVyVmlkZW8uaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNp
bXBvcnQgIlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQuaCIKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVt
ZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZGVvLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVUaHJlYWRSdW4uaD4KICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAKQEAgLTEyNCw3ICsxMjQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7
CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2V0dXBGdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBm
aW5hbCB7IH0KKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBGbG9hdFNpemUmKSBm
aW5hbCB7IH0KICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVu
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRleCA4NWM3MGIyYmJiNTA0N2VmOGVkZGE3
NDI5NDY2NTlhNGIyN2UxN2NlLi45NGVmNTQwZmI1ZWQyM2E4YWJiN2QxZDZmNTJlOTI0M2UwMzdi
ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KQEAgLTk1LDYgKzk1LDcgQEAgdXNpbmcgV2ViQ29y
ZTo6UGxheWJhY2tTZXNzaW9uTW9kZWw7CiAKIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAgIE5v
dEluUElQLAorICAgIEVudGVyaW5nUElQLAogICAgIEluUElQLAogICAgIEV4aXRpbmdQSVAKIH07
CkBAIC0yMTAsMTIgKzIxMSwxMiBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIAogLSAodm9pZCll
bnRlclBJUAogewotICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQKQorICAgIGlm
IChfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkVudGVyaW5nUElQIHx8IF9waXBTdGF0ZSA9PSBQSVBT
dGF0ZTo6SW5QSVApCiAgICAgICAgIHJldHVybjsKIAogICAgIFtfdmlkZW9WaWV3Q29udGFpbmVy
Q29udHJvbGxlciB2aWV3XS5sYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yR2V0Q29uc3Rh
bnRDb2xvcihrQ0dDb2xvckJsYWNrKTsKICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHByZXNlbnRW
aWV3Q29udHJvbGxlckFzUGljdHVyZUluUGljdHVyZTpfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJv
bGxlci5nZXQoKV07Ci0gICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkluUElQOworICAgIF9waXBT
dGF0ZSA9IFBJUFN0YXRlOjpFbnRlcmluZ1BJUDsKIH0KIAogLSAodm9pZClleGl0UElQCkBAIC0y
NDgsNyArMjQ5LDE5IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogCiAgICAgQVNTRVJUX1VOVVNF
RCh2aWRlb1ZpZXdDb250YWluZXIsIHZpZGVvVmlld0NvbnRhaW5lciA9PSBfdmlkZW9WaWV3Q29u
dGFpbmVyKTsKIAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgaWYg
KCFfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoX3BpcFN0YXRlID09IFBJUFN0YXRlOjpFbnRlcmluZ1BJUCkgeworICAgICAgICBfcGlwU3Rh
dGUgPSBQSVBTdGF0ZTo6SW5QSVA7CisKKyAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0v
NDIyNTA5NTIpCisgICAgICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpKQorICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7
CisKKyAgICAgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyKCkpCisgICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigpLT5kaWRFbnRlckZ1bGxzY3Jl
ZW4oKFdlYkNvcmU6OkZsb2F0U2l6ZSlbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdLnNpemUp
OworICAgIH0gZWxzZSBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxs
c2NyZWVuTW9kZWwoKSkKICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFp
bmVyIGJvdW5kc10pOwogfQogCkBAIC00NTYsMTEgKzQ2OSw2IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4oKQogI2lmIEVOQUJMRShXRUJfUExBWUJB
Q0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICAgICAgW21fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
LT5wbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNldFBpY3R1cmVJblBpY3R1cmVBY3RpdmU6WUVT
XTsKICNlbmRpZgotCi0gICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzQyMjUwOTUyKTog
TW92ZSB0aGlzIGNhbGwgaW50byBhIGNvbXBsZXRpb24gaGFuZGxlciBvciBkZWxlZ2F0ZSBjYWxs
YmFjay4KLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZGlkRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCk7Ci0gICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAg
ICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMjljZmYyMzFjNjkzYzdiNTM2
NjVmMTFhYzkxZWRmYzgwZmY1N2U1NS4uMDE5YmVkYzYxNjIzMzA4Y2I4MDIwZWZhMTUyODlkMjE4
Nzk2Yjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9p
ZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlkU2V0dXBGdWxs
c2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRXhp
dEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgZmlu
YWw7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNldHVwRnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRXhp
dEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwotICAg
IHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBkaWRDbGVhbnVw
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBz
ZXRWaWRlb0xheWVyRnJhbWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNv
cmU6OkZsb2F0UmVjdCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9H
cmF2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBkYzQzZWZmMmIzODQwZGRhYTI0
YjY4NmM4ZTE0ZmQ0NzRhMWE4NTY3Li5hZmM5MDcxNzVkZjg1ZmZhYWI5NDgzZTNlMjczYjBiYjE3
OWE5YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0yNDQsMTAgKzI0NCwxMCBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKICAg
ICAgICAgbV9tYW5hZ2VyLT5kaWRTZXR1cEZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOwogfQogCi12
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKCkKK3Zv
aWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAg
IG1fbWFuYWdlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKG1fY29udGV4dElkKTsKKyAgICAgICAgbV9t
YW5hZ2VyLT5kaWRFbnRlckZ1bGxzY3JlZW4obV9jb250ZXh0SWQsIHNpemUpOwogfQogCiB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKQEAgLTU5
OCw4ICs1OTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9E
aW1lbnNpb25zKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9k
ZUVuYWJsZWQpIHsKLSAgICAgICAgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCk7Ci0gICAg
ICAgIHNldFZpZGVvTGF5ZXJGcmFtZShjb250ZXh0SWQsIHswLCAwLCBtX21vY2tQaWN0dXJlSW5Q
aWN0dXJlV2luZG93U2l6ZS53aWR0aCgpLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6
ZS5oZWlnaHQoKX0pOworICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCB7IG1f
bW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLndpZHRoKCksIG1fbW9ja1BpY3R1cmVJblBp
Y3R1cmVXaW5kb3dTaXplLmhlaWdodCgpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03NzQsOSArNzczLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRF
eGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5k
aWRFeGl0RnVsbHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxz
Y3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7Cisg
ICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIFdURjo6
bnVsbG9wdCkpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCBzaXplKSk7
CiAgICAgbV9wYWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5k
ZXggZTgyM2QyMGM0ZDFiOTI0NGEyZWNlYmI5YzM5MWQ1YWYzNzAyZDU0My4uYjhjNzE4ZTgxYWNm
NzNlNmRiZDRlODhhMGQ2NDRmNWJlNTEwZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbihQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRFbnRl
ckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQg
ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBPcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldFZpZGVvTGF5
ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6
RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCk7CiAgICAgdm9pZCBz
ZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIs
IHVuc2lnbmVkIGdyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRl
eCAwNzZmZmY1Nzc2MWU1OTc0NGFjZWI4N2Q0ZGEzNjUxYzI1YWMwYjY3Li4zMjViM2NkMmY0NTky
ZTQxYzRkZGQ4MTE4ZGIyYjZkODk2OGY1YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNz
YWdlcy5pbgpAQCAtMjksNyArMjksNyBAQCBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyIHsKICAgICBEaWRTZXR1cEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgV2lsbEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIERpZEV4aXRG
dWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQotICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0U2l6ZT4gc2l6ZSkKICAgICBEaWRDbGVhbnVwRnVsbHNjcmVlbihXZWJLaXQ6OlBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBTZXRWaWRlb0xh
eWVyRnJhbWVGZW5jZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5j
ZVBvcnQpCiAgICAgU2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQppbmRleCAwZmJjZjg2ZTljZGMzNGMwOWFkZjkxN2FiNjRmMDkxZjE1ZGQ2NjZmLi5j
YTIzNWM0OWM3MzcyYzNjZDg0MzZiMGRiZjNkNWVlNzZjMDQzM2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQpAQCAtMzQyLDcgKzM0Miw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmCiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB7Ci0gICAgZW5z
dXJlTW9kZWwoY29udGV4dElkKS5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVu
TW9kZSk7CisgICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVy
ZmFjZShjb250ZXh0SWQpOworICAgIG1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9G
dWxsc2NyZWVuTW9kZSk7CisgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZSh2aWRlb0Z1
bGxzY3JlZW5Nb2RlKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0
VXBkYXRlSW5saW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQpCkBAIC00MjgsNyArNDMwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxs
RXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICB9KTsK
IH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemUpCiB7
CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1
bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKQEAgLTQ0MSw3ICs0NDMsMTAg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdmlkZW9FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVu
dCgpOworICAgIGlmIChzaXplKQorICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNj
cmVlbk9yUGljdHVyZUluUGljdHVyZShzaXplLnZhbHVlKCkpOworICAgIGVsc2UKKyAgICAgICAg
dmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoeyB9KTsK
IAogICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1
cm47CkBAIC00ODMsNyArNDg4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRF
eGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwog
I2VuZGlmCiB9Ci0gICAgCisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51
cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQog
ewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51
cEZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CkBAIC01MDQsNyArNTA5LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIobmlsKTsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0g
bW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICh2aWRlb0VsZW1lbnQpCi0gICAgICAgIHZp
ZGVvRWxlbWVudC0+ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgdmlk
ZW9FbGVtZW50LT5kaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCiAgICAg
aW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5TdGFuZGJ5
KGZhbHNlKTsKQEAgLTUxOCwxMiArNTIzLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpCiAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudCgqdmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKIH0KLSAgICAKKwog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5
KQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdyYXZpdHkoKE1l
ZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAKKwogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxl
KQogewogICAgIGlmICghbV9wYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407529</attachid>
            <date>2020-08-28 22:49:33 -0700</date>
            <delta_ts>2020-08-29 11:39:34 -0700</delta_ts>
            <desc>WIP patch - fix build errors v2</desc>
            <filename>bug-215972-20200828224932.patch</filename>
            <type>text/plain</type>
            <size>39161</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNDdiODYyODQ3NjA4NDI0YjA3MzI0YjRmN2Y0YzVk
MTFiNTE3NWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBzdGF0ZSB2YXJp
YWJsZXMgcmVsYXRlZCB0byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNj
cmVlbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNWaWRl
b0xheWVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNldEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2Ny
ZWVuTW9kZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9u
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVz
ZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFBy
ZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlk
RW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlc2VudGF0aW9uTW9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlk
QmVjb21lRnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBsYXlvdXRTdWJsYXllcnNdKToKKyAgICAgICAgKFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3KToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpk
aWRTdGFydFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbik6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDIGVudGVyUElQXSk6CisgICAg
ICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgYm91bmRzRGlkQ2hhbmdl
Rm9yVmlkZW9WaWV3Q29udGFpbmVyOl0pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4pOgorCiAyMDIwLTA4LTI1ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IGxvYWRzIHF1aWNrbHkg
Zm9sbG93ZWQgYnkgbmF2aWdhdGlvbnMgbWF5IGZhaWwgaW5kZWZpbml0ZWx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGI1MzdlMWI0OWVjY2I3NDU1MmFhYWRiMDgwNWY4OTU2OTgyZDc3ZDMuLmRmYzE3NWVmOWUzOTk4
NTgxNTNjNTM1NWE2NGYxMjQzMzBjZjUwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjAtMDgtMjggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVh
bnVwIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpl
bnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorCiAy
MDIwLTA4LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHJ5aW5nIHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4gYSBwb3BvdmVyIGNhdXNl
cyBwcm9jZXNzIHRvIGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxNjAzNDVhNWFjMjE4YjM1MzVkMDJmMDdm
ZWFlNmViNmQ3ZWExZGY4Li5jZGFlNGM2NTJjZWM1MzAwMDAzNGI1MTBjOGU4NzAxY2FkYjRhMDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU3ODAsNyAr
NTc4MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiAgICAgLy8gdG8gY2hhbmdlIHRoZSBwb3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhp
dGluZyBmdWxsc2NyZWVuLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBh
bmltYXRpb24gd2lsbCBiZSBpbmNvcnJlY3QuCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkgJiYgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVu
RXZlbnQpIHsKLSAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmUpOwogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigq
dGhpcykpOwogICAgIH0KIH0KQEAgLTU5NzMsNyArNTk3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIAogICAgICAg
ICAgICAgICAgIG1fdGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2Ny
ZWVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4g
PSB0cnVlOwotICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKKyAg
ICAgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICAgICAgICAgICAgICBj
b25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiAKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoYXNWaWRlbywgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5k
YnkpOwpAQCAtNjAyNCwxMSArNjAyNCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRG
dWxsc2NyZWVuKCkKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgp
KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+
KCp0aGlzKSwgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0gZWxzZSBpZiAoZG9jdW1l
bnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKG9s
ZFZpZGVvRnVsbHNjcmVlbk1vZGUpKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlblN0
YW5kYnkpIHsKLSAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CisgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZp
ZGVvRWxlbWVudD4oKnRoaXMpLCBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUsIG1fdmlkZW9GdWxsc2Ny
ZWVuU3RhbmRieSk7CiAgICAgICAgIH0KIApAQCAtNjA3NSwxMSArNjA3NSwxMCBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1v
ZGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7Ci0jZW5kaWYKIAotICAgIGZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgIGlmIChvbGRWaWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIHN3aXRjaCAo
b2xkVmlkZW9GdWxsc2NyZWVuTW9kZSkgewogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVuTW9kZU5v
bmU6CiAgICAgY2FzZSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ6CkBAIC02MDkxLDYgKzYw
OTAsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVu
dCgpCiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pih0aGlzKS0+ZXhpdFRv
RnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogICAgICAgICBicmVhazsKICAg
ICB9CisjZWxzZQorICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpOwogI2VuZGlmCiAKICAgICBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNj
cmVlbkVsZW1lbnQoKTsKQEAgLTYxMDYsNyArNjEwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3
aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogewogICAgIGlmIChmdWxsc2NyZWVuTW9k
ZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKLSAgICAgICAgZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVl
bk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBIVE1M
TWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKQEAgLTYxNDYsNyArNjE0OCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkKIHsKICAgICByZXR1cm4gIW1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXI7Ci19OworfQogCiBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1l
ZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQogewpAQCAtNjE2OSw3ICs2
MTcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBXVEYKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNw
bGF5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoRmxvYXRSZWN0IGZyYW1lKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQogewogICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuRnJhbWUgPSBmcmFtZTsKICAgICBpZiAobV9wbGF5ZXIpCkBAIC03OTE1LDExICs3OTE3LDI0
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGlu
Z1Jlc3RyaWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09
IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkKIHsKKyAgICBBU1NFUlQobV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IG1vZGUp
OwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gbW9kZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNoYW5nZWQgZnJvbSAiLCBmdWxsc2Ny
ZWVuTW9kZSgpLCAiLCB0byAiLCBtb2RlKTsKKyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCisgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9u
bW9kZWNoYW5nZWRFdmVudCk7CisjZW5kaWYKKworICAgIHNldFByZXBhcmVkVG9SZXR1cm5WaWRl
b0xheWVyVG9JbmxpbmUobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKworI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKKyAgICBpZiAocGxheWVyKCkpCisgICAgICAgIHBsYXllcigpLT5zZXRWaWRlb0Z1
bGxzY3JlZW5Nb2RlKG1vZGUpOworI2VuZGlmCisgICAgCiAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlID0gbW9kZTsKICAgICB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgc2NoZWR1bGVQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCA2OTVlYTcwZWU3NzZkNGQ1ODljYzQwNWI5OTQ0MzU5NGI2Y2U1NGE5
Li40MGEwNjgxY2M0OTVkNjFjNTk0NTExYTQyMGU0MjM2YjUxMjQ4YzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICNp
ZmRlZiBfX09CSkNfXwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCi0g
ICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOwog
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2
aXR5KTsKICAgICBNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvRnVsbHNjcmVlbkdyYXZp
dHkoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7IH0KICNlbmRpZgpA
QCAtNDMwLDcgKzQzMCw2IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGU7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVu
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwpAQCAtNjI1LDYgKzYyNCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVy
cmlkZTsKICAgICBib29sIGlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICB2b2lkIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOworCiAgICAg
dm9pZCB3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNzYyYzE2MmQ5NzA5YjMxMWZlYTAzNDI5
MjkzYjFlNzFmNTc4YWUxLi5lNTYyNDNiZTNmZTM3NjViZDFhMmRkNTQ0MGY5MjQ2ZjcyZTJkYTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM1MywxMSAr
MzUzLDExIEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNGdWxsc2NyZWVu
KCkKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQog
ewogICAgIGlmIChkb2N1bWVudCgpLnF1aXJrcygpLm5lZWRzQWthbWFpTWVkaWFQbGF5ZXJRdWly
aygqdGhpcykpCi0gICAgICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKSB8fCBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlOworICAgICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCkgfHwgbV9pc0No
YW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc3RhcnRz
IHRvIHJldHVybiB0cnVlIGFmdGVyIHRoZSB2aWRlbyBlbGVtZW50IGhhcyBlbnRlcmVkCiAgICAg
Ly8gZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1cmUgdW50aWwgaXQgaGFzIGV4aXRlZCBmdWxs
c2NyZWVuL3BpY3R1cmUtaW4tcGljdHVyZQotICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYg
IXdhaXRpbmdUb0VudGVyRnVsbHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUpOworICAgIHJldHVybiAoaXNTdGFuZGFyZEZ1bGxzY3Jl
ZW4oKSAmJiAhd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuKCkpIHx8ICghaXNTdGFuZGFyZEZ1bGxz
Y3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAogdm9pZCBI
VE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4oKQpAQCAtNDUxLDcg
KzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpCiAgICAgcmV0dXJuIEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9k
ZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK0hUTUxW
aWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9FbGVtZW50Ojp0b1By
ZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlkZW9FbGVtZW50OjpW
aWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CkBAIC00NjksMzcgKzQ2OSwzOCBAQCBz
dGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1By
ZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQ
cmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQogewogICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCAgbW9kZSk7Ci0gICAgc2V0RnVsbHNjcmVl
bk1vZGUodG9GdWxsc2NyZWVuTW9kZShtb2RlKSk7CisgICAgc2V0UHJlc2VudGF0aW9uTW9kZSht
b2RlKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3ZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUgbW9k
ZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtb2RlID0gIiwgbW9kZSk7Ci0K
LSAgICBpZiAobV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSkKKyAgICBpZiAobV9pc0NoYW5n
aW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8fCB0b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1v
ZGUoKSkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1vZGUgPT0gVmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
KworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAgICAgaWYgKHRvUHJl
c2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6
OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5n
UGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICAgICAgICAgIG1faXNDaGFuZ2luZ1ByZXNl
bnRhdGlvbk1vZGUgPSB0cnVlOworICAgICAgICAgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2Ny
ZWVuTW9kZSA9IHRydWU7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFTZXNzaW9uKCkuZnVs
bHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4obW9kZSkpCisgICAgaWYg
KCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNj
cmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisgICAgaWYgKHZpZGVv
RnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCiAg
ICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSB0cnVlOwogCi0g
ICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKLSAgICAgICAgZW50ZXJGdWxsc2NyZWVuKG1vZGUpOwor
ICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IGZ1bGxzY3JlZW5Nb2RlKCkpIHsKKyAgICAg
ICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CisgICAgICAgIGVudGVy
RnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB9CiB9CiAKQEAgLTUwOCwzMiAr
NTA5LDI2IEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2VudGF0aW9uTW9kZSgp
IGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAgIHJldHVybiB0b1ByZXNlbnRhdGlv
bk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3ZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVuTW9kZSgpKSB7Ci0g
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVl
bk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOwotICAgICAgICBzZXRQcmVw
YXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisgICAgbV9pc0NoYW5n
aW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlmIChtX2lzRW50ZXJpbmdPckV4
aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1Bp
Y3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQ
SSkKKyAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQorICAgICAgICAgICAg
bV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUluUGljdHVyZShJbnRT
aXplKHNpemUpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyNlbmRpZgog
ICAgIH0KIAotICAgIGlmIChwbGF5ZXIoKSkKLSAgICAgICAgcGxheWVyKCktPnNldFZpZGVvRnVs
bHNjcmVlbk1vZGUobW9kZSk7Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQobW9kZSk7Ci19Ci0KLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKQotewotICAgIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSBm
YWxzZTsKLSAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSkKLSAg
ICAgICAgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJlV2luZG93RnJhbWUgPSB0cnVlOwot
Ci0gICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAg
ICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCisg
ICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CiB9
CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQo
KQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGlj
dHVyZSgpCiB7Ci0gICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IGZhbHNlOworICAg
IG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsKICAgICBpZiAobV9pc0Vu
dGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSkgewogICAgICAgICBtX2lzRW50ZXJpbmdP
ckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5f
UElDVFVSRV9BUEkpCkBAIC01NDMsMjAgKzUzOCwxMCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6
OmRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQordm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJl
Y3QmIGZyYW1lKQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZy
YW1lKGZyYW1lKTsKIAotICAgIGlmIChtX2lzV2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5k
b3dGcmFtZSkgewotICAgICAgICBtX2lzV2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dG
cmFtZSA9IGZhbHNlOwotICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0
dXJlID0gZmFsc2U7Ci0jaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCi0gICAgICAg
IGlmIChtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlcikKLSAgICAgICAgICAgIG1fcGljdHVyZUlu
UGljdHVyZU9ic2VydmVyLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoSW50U2l6ZShmcmFtZS5z
aXplKCkpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKHRvUHJl
c2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSAhPSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6
OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuaAppbmRleCA3ZmE2ZjU5MDhhM2RmZGFjZmM2MTA1ZDg5ZjgwZWY2YjU4
Y2I1YWUzLi4wNDhmNzdiN2FjMjIyNmQzZmRhNzE2MzMxNzc4MTI5MThkNDVmYTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtODMsMTUgKzgzLDE3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBlbnVtIGNsYXNz
IFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwgRnVsbHNjcmVlbiwgUGljdHVyZUluUGlj
dHVyZX07CisgICAgc3RhdGljIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1v
ZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNl
bnRhdGlvbk1vZGUpIGNvbnN0OwotICAgIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShW
aWRlb1ByZXNlbnRhdGlvbk1vZGUpOwogICAgIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB3ZWJraXRQ
cmVzZW50YXRpb25Nb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShWaWRl
b0Z1bGxzY3JlZW5Nb2RlKTsKLSAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1
bGxzY3JlZW5Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUo
VmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJl
c2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKGNvbnN0IEZsb2F0U2l6
ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJ
blBpY3R1cmUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVl
bkVsZW1lbnQoKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0b3BCZWluZ0Z1
bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpIGZpbmFsOworICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQKKyAgICB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCiAjaWYgRU5B
QkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCiAgICAgdm9pZCBzZXRQaWN0dXJlSW5QaWN0dXJl
T2JzZXJ2ZXIoUGljdHVyZUluUGljdHVyZU9ic2VydmVyKik7CkBAIC0xMzMsMTEgKzEzNSwxMCBA
QCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRlb1dpZHRoIHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlkZW9IZWlnaHQgeyAwIH07Ci0gICAgYm9v
bCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXND
aGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKQogICAgIGJvb2wgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVy
ZUluUGljdHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzV2FpdGluZ0ZvclBpY3R1cmVJblBp
Y3R1cmVXaW5kb3dGcmFtZSB7IGZhbHNlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQSUNUVVJF
X0lOX1BJQ1RVUkVfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBm
MmIzZDg3ZDRiNDhiNTExZTNiZWVhZmJkMmQ5MzcwODg0OTlkYzc4Li42ZTM2MmRlODE4N2VhY2I4
N2EwNDRlZDU1YzdjNzg2MTUxYjhmZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5tbQpAQCAtMzI1LDkgKzMyNSw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgYXV0byYgZWxlbWVudCA9IGRv
d25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCptX21lZGlhRWxlbWVudCk7CiAgICAgaWYgKGVsZW1l
bnQuZnVsbHNjcmVlbk1vZGUoKSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgZWxlbWVudC5zZXRGdWxsc2NyZWVuTW9kZShN
ZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIGVsZW1l
bnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlv
bk1vZGU6OklubGluZSk7CiAgICAgZWxzZQotICAgICAgICBlbGVtZW50LnNldEZ1bGxzY3JlZW5N
b2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
KTsKKyAgICAgICAgZWxlbWVudC5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6
OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSk7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKaW5kZXggYjEzZDE5YjNlNWNjZjFmNmQ3ZDI2M2MyZTMw
ZjdlN2Y4ZmQ4ZTg0My4uNTRlZWYzOTk4YjhjMjBhYjM1YWFiODY3ZmM0MTM4ZDAxMWQ0M2Q4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2V0dXBGdWxsc2NyZWVuKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxz
Y3JlZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBG
bG9hdFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQppbmRleCAzYWQ2OWI3ZTc0M2NlYTE4MWQ0Y2ZmYzU4YmYyZDJiZTc4NjY0NzQ2
Li5iNzRmNGViNzljYWEyN2QzMWE5OTM4MWY2OTgyY2NhZWNlOGQ2YmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTUyLDggKzE1Miw4IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RG
OjpGdW5jdGlvCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVl
c3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKIHsKLSAgICBpZiAobV92aWRlb0VsZW1l
bnQgJiYgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlKCkgIT0gbW9kZSkKLSAgICAgICAg
bV92aWRlb0VsZW1lbnQtPnNldEZ1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIGlmIChtX3ZpZGVv
RWxlbWVudCkKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFByZXNlbnRhdGlvbk1vZGUoSFRN
TFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKG1vZGUpKTsKIAogICAgIGlmIChtX3Zp
ZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhNZWRpYSAmJiBtb2RlID09IE1lZGlhUGxheWVyOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgewogICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPmRv
Y3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKQEAgLTE5MSw3ICsxOTEsNyBAQCBjb25zdCBB
dG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9G
dWxsc2NyZWVuTW9kZSkKIHsKICAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlk
ZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7Cisg
ICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1l
bnQ6OnRvUHJlc2VudGF0aW9uTW9kZSh2aWRlb0Z1bGxzY3JlZW5Nb2RlKSk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xp
Y3lBbmRDb250ZXh0VUlEKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGVTaGFyaW5nUG9saWN5
LCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDhlNmQzNmI3OGI4OWI2ZDcwM2U4YmZiMjg1ZWM2OWExZDUzZjZmNDIuLjg0MGQ1ODk4OTI1
NDFkMWUwMWU3NjdlNmNiM2M5OWQ5NDNlNTZkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
QEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmli
dXRlczsKIEBwcm9wZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNpb25zOwogQHByb3BlcnR5IENHUmVj
dCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKK0Bwcm9wZXJ0eSBCT09MIGlzUGljdHVyZUluUGljdHVy
ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIgewpAQCAtMjgzLDcg
KzI4NCw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxT
Y3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3JlCiAgICAgZWxzZQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSBp
c0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgIGlmIChzZWxmLmlzUGljdHVy
ZUluUGljdHVyZSB8fCBbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJpbmc6
c2VsZi52aWRlb0dyYXZpdHldKQogICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc2VsZi5ib3Vu
ZHM7CiAgICAgZWxzZSBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgaXNFcXVh
bFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKICAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9
IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBz
ZWxmLmJvdW5kcyk7CkBAIC00NzksNiArNDgwLDcgQEAgc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJM
YXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclYK
ICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOnBsYXllckxheWVyLnZpZGVv
RGltZW5zaW9uc107CiAgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvR3Jhdml0eTpwbGF5ZXJM
YXllci52aWRlb0dyYXZpdHldOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5
ZXJGcmFtZTpwbGF5ZXJMYXllci5tb2RlbFZpZGVvTGF5ZXJGcmFtZV07CisgICAgW3BpcFBsYXll
ckxheWVyIHNldElzUGljdHVyZUluUGljdHVyZTpZRVNdOwogICAgIFtwaXBQbGF5ZXJMYXllciBz
ZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXllckNvbnRyb2xsZXJdOwogICAgIFtw
aXBQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnBsYXllckxheWVyLmZ1bGxzY3Jl
ZW5JbnRlcmZhY2VdOwogICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZp
ZGVvVmlld107CkBAIC0xMTE5LDkgKzExMjEsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGlmIChtX2VudGVy
RnVsbHNjcmVlbk5lZWRzRW50ZXJQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICBkb0VudGVyRnVs
bHNjcmVlbigpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIpCi0gICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJG
dWxsc2NyZWVuKCk7CisgICAgZWxzZSBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsK
KyAgICAgICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0g
KFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVttX3BsYXllckxheWVyVmll
dyBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3XTsKKyAgICAgICAgV2ViQVZQbGF5ZXJM
YXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IGxheWVy
XTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVl
bigoRmxvYXRTaXplKXBpcFBsYXllckxheWVyLmZyYW1lLnNpemUpOwogICAgIH0KIAogICAgIG1f
ZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CkBAIC0xMTM2LDkgKzExMzksNiBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUlu
UGljdHVyZSgpCiAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLQogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwogCkBAIC0xNDQ5LDggKzE0NDks
MTUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FbnRlckZ1bGxzY3Jl
ZW4oKQogICAgIH0KICAgICBtX2VudGVyRnVsbHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1
cmUgPSBmYWxzZTsKIAotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAg
ICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOworICAg
IGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgeworICAgICAgICBGbG9hdFNpemUgc2l6
ZTsKKyAgICAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzUGljdHVyZUluUGljdHVyZSgpKSB7Cisg
ICAgICAgICAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcg
PSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJW
aWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOworICAgICAgICAgICAgV2ViQVZQ
bGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3
IGxheWVyXTsKKyAgICAgICAgICAgIHNpemUgPSBGbG9hdFNpemUocGlwUGxheWVyTGF5ZXIuZnJh
bWUuc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEVudGVyRnVsbHNjcmVlbihzaXplKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRXhpdEZ1bGxzY3JlZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0KaW5kZXggNGZjZDlhMmVmOTlmMDVhYjhkOGMzMjZhMDI2MjMwNDQ5MmI4OGM5
ZC4uZjgzMWQ2Yjg0NDhhM2Q4NDRmMjRjOGI0OGUwZmNiZWJmZDA5MDdkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yOCwyMCArMjgsMjAgQEAKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiSFRNTFZpZGVv
RWxlbWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25P
cHRpb24uaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAjaW1w
b3J0ICJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgorI2ltcG9ydCAiUmVuZGVy
VmlkZW8uaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKKyNpbXBv
cnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlv
bi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1JlbmRlclZpZGVvLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4K
ICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmg+CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCByZXR1cm5WaWRl
b0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgZmlu
YWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRp
ZEVudGVyRnVsbHNjcmVlbihjb25zdCBGbG9hdFNpemUmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdp
bGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBm
aW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQppbmRleCA4NWM3MGIyYmJiNTA0N2VmOGVkZGE3NDI5NDY2NTlhNGIyN2UxN2NlLi45
NGVmNTQwZmI1ZWQyM2E4YWJiN2QxZDZmNTJlOTI0M2UwMzdiZjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW0KQEAgLTk1LDYgKzk1LDcgQEAgdXNpbmcgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9k
ZWw7CiAKIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAgIE5vdEluUElQLAorICAgIEVudGVyaW5n
UElQLAogICAgIEluUElQLAogICAgIEV4aXRpbmdQSVAKIH07CkBAIC0yMTAsMTIgKzIxMSwxMiBA
QCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIAogLSAodm9pZCllbnRlclBJUAogewotICAgIGlmIChf
cGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQKQorICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3Rh
dGU6OkVudGVyaW5nUElQIHx8IF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6SW5QSVApCiAgICAgICAg
IHJldHVybjsKIAogICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxlciB2aWV3XS5sYXll
ci5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNr
KTsKICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlckFzUGljdHVy
ZUluUGljdHVyZTpfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgX3Bp
cFN0YXRlID0gUElQU3RhdGU6OkluUElQOworICAgIF9waXBTdGF0ZSA9IFBJUFN0YXRlOjpFbnRl
cmluZ1BJUDsKIH0KIAogLSAodm9pZClleGl0UElQCkBAIC0yNDgsNyArMjQ5LDE5IEBAIGVudW0g
Y2xhc3MgUElQU3RhdGUgewogCiAgICAgQVNTRVJUX1VOVVNFRCh2aWRlb1ZpZXdDb250YWluZXIs
IHZpZGVvVmlld0NvbnRhaW5lciA9PSBfdmlkZW9WaWV3Q29udGFpbmVyKTsKIAotICAgIGlmIChf
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgaWYgKCFfdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX3BpcFN0YXRlID09IFBJUFN0
YXRlOjpFbnRlcmluZ1BJUCkgeworICAgICAgICBfcGlwU3RhdGUgPSBQSVBTdGF0ZTo6SW5QSVA7
CisKKyAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5NTIpCisgICAgICAgIGlm
IChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQor
ICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVu
TW9kZWwoKS0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisKKyAgICAgICAgaWYgKF92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCkp
CisgICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlcigpLT5kaWRFbnRlckZ1bGxzY3JlZW4oKFdlYkNvcmU6OkZsb2F0U2l6
ZSlbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdLnNpemUpOworICAgIH0gZWxzZSBpZiAoX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKICAgICAg
ICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+
c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5kc10pOwogfQogCkBA
IC00NTYsMTEgKzQ2OSw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRl
ckZ1bGxzY3JlZW4oKQogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikK
ICAgICAgICAgW21fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5QmFja0NvbnRyb2xzTWFu
YWdlcigpIHNldFBpY3R1cmVJblBpY3R1cmVBY3RpdmU6WUVTXTsKICNlbmRpZgotCi0gICAgICAg
IC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzQyMjUwOTUyKTogTW92ZSB0aGlzIGNhbGwgaW50byBh
IGNvbXBsZXRpb24gaGFuZGxlciBvciBkZWxlZ2F0ZSBjYWxsYmFjay4KLSAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgICAgIGlm
IChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmgKaW5kZXggMjljZmYyMzFjNjkzYzdiNTM2NjVmMTFhYzkxZWRmYzgwZmY1N2U1
NS4uMDE5YmVkYzYxNjIzMzA4Y2I4MDIwZWZhMTUyODlkMjE4Nzk2Yjg5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVz
dFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRM
YXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAg
dm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNj
cmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBmaW5hbDsKICAgICB2b2lkIHdpbGxFeGl0
RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsK
ICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7CkBAIC0xODUsNyArMTg1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEVudGVy
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCk7CiAgICAg
dm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBkYzQzZWZmMmIzODQwZGRhYTI0YjY4NmM4ZTE0ZmQ0NzRhMWE4NTY3
Li5hZmM5MDcxNzVkZjg1ZmZhYWI5NDgzZTNlMjczYjBiYjE3OWE5YzQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0yNDQsMTAgKzI0NCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tYW5hZ2VyLT5kaWRT
ZXR1cEZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+ZGlkRW50ZXJG
dWxsc2NyZWVuKG1fY29udGV4dElkKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5kaWRFbnRlckZ1bGxz
Y3JlZW4obV9jb250ZXh0SWQsIHNpemUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKQEAgLTU5OCw4ICs1OTgsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVy
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7
CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpIHsKLSAgICAgICAg
ZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCk7Ci0gICAgICAgIHNldFZpZGVvTGF5ZXJGcmFt
ZShjb250ZXh0SWQsIHswLCAwLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZS53aWR0
aCgpLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZS5oZWlnaHQoKX0pOworICAgICAg
ICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCB7IG1fbW9ja1BpY3R1cmVJblBpY3R1cmVX
aW5kb3dTaXplLndpZHRoKCksIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLmhlaWdo
dCgpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NzQsOSArNzczLDEyIEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwog
fQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNp
emUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CisgICAgaWYgKHNpemUuaXNFbXB0eSgp
KQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIFdURjo6bnVsbG9wdCkpOworICAgIGVsc2UK
KyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpE
aWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCBzaXplKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZTgyM2QyMGM0ZDFiOTI0NGEy
ZWNlYmI5YzM5MWQ1YWYzNzAyZDU0My4uYjhjNzE4ZTgxYWNmNzNlNmRiZDRlODhhMGQ2NDRmNWJl
NTEwZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyKTsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNp
emU+KTsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBD
OjpBdHRhY2htZW50IGZlbmNlUG9ydCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVu
dW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwNzZmZmY1Nzc2MWU1OTc0NGFj
ZWI4N2Q0ZGEzNjUxYzI1YWMwYjY3Li4zMjViM2NkMmY0NTkyZTQxYzRkZGQ4MTE4ZGIyYjZkODk2
OGY1YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjksNyArMjks
NyBAQCBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICAgICBEaWRTZXR1cEZ1
bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQpCiAgICAgV2lsbEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIERpZEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotICAgIERpZEVudGVyRnVs
bHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkK
ICAgICBEaWRDbGVhbnVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZs
b2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAgICAgU2V0VmlkZW9M
YXllckdyYXZpdHlFbnVtKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCAwZmJjZjg2
ZTljZGMzNGMwOWFkZjkxN2FiNjRmMDkxZjE1ZGQ2NjZmLi5jYTIzNWM0OWM3MzcyYzNjZDg0MzZi
MGRiZjNkNWVlNzZjMDQzM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMzQyLDcgKzM0Miw5IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB7Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5m
dWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgYXV0byBbbW9k
ZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAg
IG1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAg
aW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZSh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCkBAIC00MjgsNyArNDMwLDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICB9KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRl
ckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemUpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4s
ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRo
aXMsIGNvbnRleHRJZCk7CiAKQEAgLTQ0MSw3ICs0NDMsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlk
ZW9FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOworICAgIGlmIChzaXplKQor
ICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVy
ZShzaXplLnZhbHVlKCkpOworICAgIGVsc2UKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRl
ckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoeyB9KTsKIAogICAgIGlmIChpbnRlcmZhY2Ut
PnRhcmdldElzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CkBAIC00ODMsNyArNDg4LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogI2VuZGlmCiB9Ci0gICAgCisKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVu
LCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oJXAsICV4KSIs
IHRoaXMsIGNvbnRleHRJZCk7CkBAIC01MDQsNyArNTA5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKICAgICBSZWZQ
dHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgp
OwogICAgIGlmICh2aWRlb0VsZW1lbnQpCi0gICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkU3RvcEJl
aW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFeGl0RnVs
bHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5TdGFuZGJ5KGZhbHNlKTsKQEAgLTUxOCwxMiAr
NTIzLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBt
b2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQogewogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdyYXZpdHkoKE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
R3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogewogICAgIGlmICghbV9wYWdl
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407541</attachid>
            <date>2020-08-29 11:39:35 -0700</date>
            <delta_ts>2020-08-29 12:34:07 -0700</delta_ts>
            <desc>WIP - revert a change leading to test failures</desc>
            <filename>bug-215972-20200829113935.patch</filename>
            <type>text/plain</type>
            <size>39173</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNjQyOTVjOWI1OWQyMDY4MDFkNzZhMWNiMDk2YTdh
MTg5MWJmOGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBmdW5jdGlvbnMg
YW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlz
cGxheWluZ0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
dG9QcmVzZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9QcmVzZW50YXRpb25Nb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxzY3Jl
ZW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10p
OgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgZW50
ZXJQSVBdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyBi
b3VuZHNEaWRDaGFuZ2VGb3JWaWRlb1ZpZXdDb250YWluZXI6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbik6CisKIDIwMjAt
MDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQg
bG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0aW9ucyBtYXkgZmFpbCBpbmRlZmluaXRl
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYjUzN2UxYjQ5ZWNjYjc0NTUyYWFhZGIwODA1Zjg5NTY5ODJkNzdkMy4u
NjljMWRjOWJiZmI4NDE4NmVlNDRjYTg3YWYwMDk0NTNlNmU5MDBhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOC0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgor
CisgICAgICAgIENsZWFudXAgZnVuY3Rpb25zIGFuZCBzdGF0ZSB2YXJpYWJsZXMgcmVsYXRlZCB0
byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKwogMjAyMC0wOC0yNSAgTWVnYW4gR2FyZG5lciAgPG1l
Z2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeWluZyB0byBsb29rdXAgd2hlbiBX
ZWJWaWV3IGlzIGluIGEgcG9wb3ZlciBjYXVzZXMgcHJvY2VzcyB0byBoYW5nLiBGaXggZm9yIExl
Z2FjeSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggMTYwMzQ1YTVhYzIxOGIzNTM1ZDAyZjA3ZmVhZTZlYjZkN2VhMWRmOC4uY2RhZTRjNjUyY2Vj
NTMwMDAwMzRiNTEwYzhlODcwMWNhZGI0YTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NzgwLDcgKzU3ODAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9z
aXRpb24vc2l6ZSBiYWNrICpiZWZvcmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhl
cndpc2UsIHRoZSBleGl0IGZ1bGxzY3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0Lgog
ICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
ZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKICAgICB9CiB9CkBAIC01OTczLDcg
KzU5NzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiAKICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyaWx5QWxsb3dp
bmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1v
ZGUobW9kZSk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGFzVmlkZW8sIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKQEAgLTYwMjQsMTEgKzYwMjQsMTEgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAgaWYg
KGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCku
YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewotICAgICAgICBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBzZXRGdWxsc2NyZWVuTW9k
ZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewogICAg
ICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7Ci0gICAgICAgICAgICBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOwogICAgICAgICB9CiAKQEAg
LTYwNzUsMTEgKzYwNzUsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOwot
I2VuZGlmCiAKLSAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKKyAgICBpZiAob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCk7CiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKICAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKICAg
ICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOgogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkOgpAQCAtNjA5MSw2ICs2MDkwLDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlv
bklmUG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorI2Vsc2UKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICNlbmRpZgogCiAg
ICAgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC02MTA2LDcgKzYx
MDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50
KCkKIHsKICAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpCi0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKIH0KIAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1MYXllcigp
IGNvbnN0CkBAIC02MTQ2LDcgKzYxNDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxF
eGl0RnVsbHNjcmVlbigpCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGlu
ZSgpCiB7CiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwotfTsKK30KIAogUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKCkKIHsKQEAgLTYxNjksNyArNjE3MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwg
V1RGCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JiBm
cmFtZSkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lID0gZnJhbWU7CiAgICAgaWYgKG1f
cGxheWVyKQpAQCAtNzkxNSwxMSArNzkxNywyNCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRG
dWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBtb2RlKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlID09IG1vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Cisj
aWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOworI2VuZGlmCisK
KyAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisK
KyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgaWYgKHBsYXllcigpKQor
ICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKKyNlbmRpZgor
ICAgIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1vZGU7CiAgICAgdmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpOwogICAgIHNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjk1ZWE3MGVlNzc2
ZDRkNTg5Y2M0MDViOTk0NDM1OTRiNmNlNTRhOS4uNDBhMDY4MWNjNDk1ZDYxYzU5NDUxMWE0MjBl
NDIzNmI1MTI0OGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CiAgICAgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5HcmF2aXR5OyB9CiAjZW5kaWYKQEAgLTQzMCw3ICs0MzAsNiBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlOwogICAgIFZp
ZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oVmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKQEAgLTYyNSw2ICs2MjQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
YWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ludGVyYWN0aXZl
Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKwogICAgIHZvaWQgd2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggYzc2MmMxNjJkOTcwOWIzMTFmZWEwMzQyOTI5M2IxZTcxZjU3OGFlMS4uNWU0MWQ5ZGI0ZDUz
YjQyYTIyYjhlYWZlZGVlZmZiNTYzOTY3YTJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC0zNTMsMTEgKzM1MywxMSBAQCBib29sIEhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Ondl
YmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5xdWlya3Mo
KS5uZWVkc0FrYW1haU1lZGlhUGxheWVyUXVpcmsoKnRoaXMpKQotICAgICAgICByZXR1cm4gaXNG
dWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZTsKKyAgICAgICAgcmV0
dXJuIGlzRnVsbHNjcmVlbigpIHx8IG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGU7CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyB0byByZXR1cm4gdHJ1ZSBhZnRlciB0aGUgdmlk
ZW8gZWxlbWVudCBoYXMgZW50ZXJlZAogICAgIC8vIGZ1bGxzY3JlZW4vcGljdHVyZS1pbi1waWN0
dXJlIHVudGlsIGl0IGhhcyBleGl0ZWQgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1cmUKLSAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlKTsKKyAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
IH0KIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4o
KQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpCiAgICAgcmV0dXJu
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJl
c2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKK0hUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9F
bGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlk
ZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CkBAIC00NjksMzcg
KzQ2OSwzOCBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0
aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAogdm9pZCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQog
ewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCAgbW9kZSk7Ci0gICAg
c2V0RnVsbHNjcmVlbk1vZGUodG9GdWxsc2NyZWVuTW9kZShtb2RlKSk7CisgICAgc2V0UHJlc2Vu
dGF0aW9uTW9kZShtb2RlKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgbW9kZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtb2RlID0g
IiwgbW9kZSk7Ci0KLSAgICBpZiAobV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSkKKyAgICBp
ZiAobV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8fCB0b1ByZXNlbnRhdGlvbk1vZGUo
ZnVsbHNjcmVlbk1vZGUoKSkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKKworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAg
ICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRlb1ByZXNl
bnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICAgICAgbV9pc0VudGVy
aW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICAgICAgICAgIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOworICAgICAgICAgICAgbV9pc0NoYW5naW5n
VmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbigp
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFT
ZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4obW9k
ZSkpCisgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1
cHBvcnRzRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisg
ICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUg
PSB0cnVlOwogCi0gICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBt
X2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKLSAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuKG1vZGUpOworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IGZ1bGxzY3JlZW5Nb2Rl
KCkpIHsKKyAgICAgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7Cisg
ICAgICAgIGVudGVyRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB9CiB9CiAK
QEAgLTUwOCwzMiArNTA5LDI2IEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2Vu
dGF0aW9uTW9kZSgpIGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAgIHJldHVybiB0
b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0
dXJlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVu
TW9kZSgpKSB7Ci0gICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZyb20g
IiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOwotICAg
ICAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Cisg
ICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlmIChtX2lz
RW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIG1faXNFbnRlcmlu
Z09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUElDVFVSRV9J
Tl9QSUNUVVJFX0FQSSkKKyAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQor
ICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUlu
UGljdHVyZShJbnRTaXplKHNpemUpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyNlbmRpZgogICAgIH0KIAotICAgIGlmIChwbGF5ZXIoKSkKLSAgICAgICAgcGxheWVyKCkt
PnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7Ci19Ci0KLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQotewotICAgIG1faXNDaGFuZ2luZ1ByZXNlbnRh
dGlvbk1vZGUgPSBmYWxzZTsKLSAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUlu
UGljdHVyZSkKLSAgICAgICAgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJlV2luZG93RnJh
bWUgPSB0cnVlOwotCi0gICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVs
ZW1lbnQoKTsKKyAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQpCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNj
cmVlbkVsZW1lbnQoKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbk9y
UGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9
IGZhbHNlOworICAgIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsKICAg
ICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSkgewogICAgICAgICBt
X2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAjaWYgRU5BQkxF
KFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCkBAIC01NDMsMjAgKzUzOCwxMCBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OmRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKICAgICB9CiB9CiAK
LXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
IGZyYW1lKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShj
b25zdCBGbG9hdFJlY3QmIGZyYW1lKQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKIAotICAgIGlmIChtX2lzV2FpdGluZ0ZvclBpY3R1cmVJ
blBpY3R1cmVXaW5kb3dGcmFtZSkgewotICAgICAgICBtX2lzV2FpdGluZ0ZvclBpY3R1cmVJblBp
Y3R1cmVXaW5kb3dGcmFtZSA9IGZhbHNlOwotICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQ
aWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7Ci0jaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9B
UEkpCi0gICAgICAgIGlmIChtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlcikKLSAgICAgICAgICAg
IG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoSW50
U2l6ZShmcmFtZS5zaXplKCkpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSAhPSBWaWRlb1ByZXNl
bnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA3ZmE2ZjU5MDhhM2RmZGFjZmM2MTA1
ZDg5ZjgwZWY2YjU4Y2I1YWUzLi4wNDhmNzdiN2FjMjIyNmQzZmRhNzE2MzMxNzc4MTI5MThkNDVm
YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtODMsMTUgKzgz
LDE3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAg
ICBlbnVtIGNsYXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwgRnVsbHNjcmVlbiwg
UGljdHVyZUluUGljdHVyZX07CisgICAgc3RhdGljIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1By
ZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9k
ZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpIGNvbnN0OwotICAgIHZvaWQgd2Via2l0U2V0UHJlc2Vu
dGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOwogICAgIFZpZGVvUHJlc2VudGF0aW9u
TW9kZSB3ZWJraXRQcmVzZW50YXRpb25Nb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGdWxsc2Ny
ZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKLSAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hh
bmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBmaW5hbDsKKyAgICB2b2lkIHdlYmtpdFNldFByZXNl
bnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKGNv
bnN0IEZsb2F0U2l6ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRXhpdEZ1bGxzY3Jl
ZW5PclBpY3R1cmVJblBpY3R1cmUoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQmVj
b21lRnVsbHNjcmVlbkVsZW1lbnQoKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIGZpbmFsOworICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQK
KyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFs
OwogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCiAgICAgdm9pZCBzZXRQaWN0
dXJlSW5QaWN0dXJlT2JzZXJ2ZXIoUGljdHVyZUluUGljdHVyZU9ic2VydmVyKik7CkBAIC0xMzMs
MTEgKzEzNSwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRl
b1dpZHRoIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlkZW9IZWlnaHQgeyAw
IH07Ci0gICAgYm9vbCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgeyBmYWxzZSB9OwogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIGJvb2wgbV9pc0VudGVyaW5nT3JF
eGl0aW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzV2FpdGluZ0Zv
clBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSB7IGZhbHNlIH07CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dC5tbQppbmRleCBmMmIzZDg3ZDRiNDhiNTExZTNiZWVhZmJkMmQ5MzcwODg0OTlkYzc4Li42ZTM2
MmRlODE4N2VhY2I4N2EwNDRlZDU1YzdjNzg2MTUxYjhmZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbQpAQCAtMzI1LDkgKzMyNSw5IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgYXV0byYg
ZWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCptX21lZGlhRWxlbWVudCk7CiAg
ICAgaWYgKGVsZW1lbnQuZnVsbHNjcmVlbk1vZGUoKSA9PSBNZWRpYVBsYXllckVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgZWxlbWVudC5zZXRGdWxs
c2NyZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Cisg
ICAgICAgIGVsZW1lbnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50OjpWaWRl
b1ByZXNlbnRhdGlvbk1vZGU6OklubGluZSk7CiAgICAgZWxzZQotICAgICAgICBlbGVtZW50LnNl
dEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgZWxlbWVudC5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxW
aWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKaW5kZXggYjEzZDE5YjNlNWNjZjFm
NmQ3ZDI2M2MyZTMwZjdlN2Y4ZmQ4ZTg0My4uNTRlZWYzOTk4YjhjMjBhYjM1YWFiODY3ZmM0MTM4
ZDAxMWQ0M2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRFbnRlckZ1bGxzY3JlZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNj
cmVlbihjb25zdCBGbG9hdFNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGl0RnVs
bHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAzYWQ2OWI3ZTc0M2NlYTE4MWQ0Y2ZmYzU4YmYy
ZDJiZTc4NjY0NzQ2Li5iNzRmNGViNzljYWEyN2QzMWE5OTM4MWY2OTgyY2NhZWNlOGQ2YmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTUyLDggKzE1Miw4IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndhaXRGb3JQcmVwYXJlZEZvcklu
bGluZVRoZW4oV1RGOjpGdW5jdGlvCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKIHsKLSAgICBpZiAo
bV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlKCkgIT0gbW9k
ZSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldEZ1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAg
IGlmIChtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFByZXNlbnRh
dGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKG1vZGUpKTsKIAog
ICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhNZWRpYSAmJiBtb2RlID09IE1l
ZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgewogICAgICAgICBpZiAobV92aWRl
b0VsZW1lbnQtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKQEAgLTE5MSw3ICsxOTEs
NyBAQCBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
ZXZlbnROYW1lQWxsKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKICAgICBpZiAobV92aWRlb0VsZW1lbnQpCi0g
ICAgICAgIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2Ny
ZWVuTW9kZSk7CisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50YXRpb25Nb2RlKEhU
TUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZSh2aWRlb0Z1bGxzY3JlZW5Nb2RlKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RSb3V0
ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUm91dGVT
aGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCmluZGV4IDhlNmQzNmI3OGI4OWI2ZDcwM2U4YmZiMjg1ZWM2OWExZDUzZjZmNDIu
Ljg0MGQ1ODk4OTI1NDFkMWUwMWU3NjdlNmNiM2M5OWQ5NDNlNTZkZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQog
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVs
QnVmZmVyQXR0cmlidXRlczsKIEBwcm9wZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNpb25zOwogQHBy
b3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKK0Bwcm9wZXJ0eSBCT09MIGlzUGlj
dHVyZUluUGljdHVyZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkFWUGxheWVyTGF5ZXIg
ewpAQCAtMjgzLDcgKzI4NCw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3JlCiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIGlmIChbQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgIGlmIChz
ZWxmLmlzUGljdHVyZUluUGljdHVyZSB8fCBbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSBpc0Vx
dWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQogICAgICAgICB0YXJnZXRWaWRlb0ZyYW1l
ID0gc2VsZi5ib3VuZHM7CiAgICAgZWxzZSBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3QgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKICAgICAgICAgdGFyZ2V0
VmlkZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh2aWRlb0Fz
cGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CkBAIC00NzksNiArNDgwLDcgQEAgc3RhdGljIHZvaWQg
V2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclYKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOnBsYXll
ckxheWVyLnZpZGVvRGltZW5zaW9uc107CiAgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvR3Jh
dml0eTpwbGF5ZXJMYXllci52aWRlb0dyYXZpdHldOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRN
b2RlbFZpZGVvTGF5ZXJGcmFtZTpwbGF5ZXJMYXllci5tb2RlbFZpZGVvTGF5ZXJGcmFtZV07Cisg
ICAgW3BpcFBsYXllckxheWVyIHNldElzUGljdHVyZUluUGljdHVyZTpZRVNdOwogICAgIFtwaXBQ
bGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxheWVyLnBsYXllckNvbnRyb2xs
ZXJdOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVuSW50ZXJmYWNlOnBsYXllckxh
eWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2VdOwogICAgIFtwaXBWaWV3IGFkZFN1YnZpZXc6cGxheWVy
TGF5ZXJWaWV3LnZpZGVvVmlld107CkBAIC0xMTE5LDkgKzExMjEsMTAgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAg
IGlmIChtX2VudGVyRnVsbHNjcmVlbk5lZWRzRW50ZXJQaWN0dXJlSW5QaWN0dXJlKQogICAgICAg
ICBkb0VudGVyRnVsbHNjcmVlbigpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CisgICAgZWxzZSBpZiAobV9mdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIpIHsKKyAgICAgICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVttX3Bs
YXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3XTsKKyAgICAgICAg
V2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtw
aXBWaWV3IGxheWVyXTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVu
dGVyRnVsbHNjcmVlbigoRmxvYXRTaXplKXBpcFBsYXllckxheWVyLmZyYW1lLnNpemUpOwogICAg
IH0KIAogICAgIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CkBAIC0xMTM2LDkg
KzExMzksNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0
YXJ0UGljdHVyZUluUGljdHVyZSgpCiAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVl
bigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3Jl
ZW4oKTsKLQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwogCkBAIC0x
NDQ5LDggKzE0NDksMTUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9F
bnRlckZ1bGxzY3JlZW4oKQogICAgIH0KICAgICBtX2VudGVyRnVsbHNjcmVlbk5lZWRzRXhpdFBp
Y3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKIAotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNj
cmVlbigpOworICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgeworICAgICAgICBG
bG9hdFNpemUgc2l6ZTsKKyAgICAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzUGljdHVyZUluUGlj
dHVyZSgpKSB7CisgICAgICAgICAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW21f
cGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOworICAgICAg
ICAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXll
ciAqKVtwaXBWaWV3IGxheWVyXTsKKyAgICAgICAgICAgIHNpemUgPSBGbG9hdFNpemUocGlwUGxh
eWVyTGF5ZXIuZnJhbWUuc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbihzaXplKTsKKyAgICB9CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRXhpdEZ1bGxzY3JlZW4oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggNGZjZDlhMmVmOTlmMDVhYjhkOGMzMjZhMDI2
MjMwNDQ5MmI4OGM5ZC4uZjgzMWQ2Yjg0NDhhM2Q4NDRmMjRjOGI0OGUwZmNiZWJmZDA5MDdkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yOCwyMCArMjgsMjAgQEAKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9y
dCAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVk
aWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0LmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgorI2lt
cG9ydCAiUmVuZGVyVmlkZW8uaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaCIKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZGVvLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVU
aHJlYWRSdW4uaD4KICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9p
ZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlkU2V0dXBGdWxs
c2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBmaW5hbCB7IH0K
KyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBGbG9hdFNpemUmKSBmaW5hbCB7IH0K
ICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1
bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5tbQppbmRleCA4NWM3MGIyYmJiNTA0N2VmOGVkZGE3NDI5NDY2NTlh
NGIyN2UxN2NlLi45NGVmNTQwZmI1ZWQyM2E4YWJiN2QxZDZmNTJlOTI0M2UwMzdiZjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMubW0KQEAgLTk1LDYgKzk1LDcgQEAgdXNpbmcgV2ViQ29yZTo6UGxheWJh
Y2tTZXNzaW9uTW9kZWw7CiAKIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAgIE5vdEluUElQLAor
ICAgIEVudGVyaW5nUElQLAogICAgIEluUElQLAogICAgIEV4aXRpbmdQSVAKIH07CkBAIC0yMTAs
MTIgKzIxMSwxMiBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIAogLSAodm9pZCllbnRlclBJUAog
ewotICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQKQorICAgIGlmIChfcGlwU3Rh
dGUgPT0gUElQU3RhdGU6OkVudGVyaW5nUElQIHx8IF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6SW5Q
SVApCiAgICAgICAgIHJldHVybjsKIAogICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxl
ciB2aWV3XS5sYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihr
Q0dDb2xvckJsYWNrKTsKICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJv
bGxlckFzUGljdHVyZUluUGljdHVyZTpfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxlci5nZXQo
KV07Ci0gICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkluUElQOworICAgIF9waXBTdGF0ZSA9IFBJ
UFN0YXRlOjpFbnRlcmluZ1BJUDsKIH0KIAogLSAodm9pZClleGl0UElQCkBAIC0yNDgsNyArMjQ5
LDE5IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogCiAgICAgQVNTRVJUX1VOVVNFRCh2aWRlb1Zp
ZXdDb250YWluZXIsIHZpZGVvVmlld0NvbnRhaW5lciA9PSBfdmlkZW9WaWV3Q29udGFpbmVyKTsK
IAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF92aWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgaWYgKCFfdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX3BpcFN0
YXRlID09IFBJUFN0YXRlOjpFbnRlcmluZ1BJUCkgeworICAgICAgICBfcGlwU3RhdGUgPSBQSVBT
dGF0ZTo6SW5QSVA7CisKKyAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5NTIp
CisgICAgICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCgpKQorICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKS0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisKKyAgICAg
ICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyKCkpCisgICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigpLT5kaWRFbnRlckZ1bGxzY3JlZW4oKFdlYkNv
cmU6OkZsb2F0U2l6ZSlbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdLnNpemUpOworICAgIH0g
ZWxzZSBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9k
ZWwoKSkKICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2Ny
ZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5k
c10pOwogfQogCkBAIC00NTYsMTEgKzQ2OSw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjOjplbnRlckZ1bGxzY3JlZW4oKQogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJP
TFNfTUFOQUdFUikKICAgICAgICAgW21fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5QmFj
a0NvbnRyb2xzTWFuYWdlcigpIHNldFBpY3R1cmVJblBpY3R1cmVBY3RpdmU6WUVTXTsKICNlbmRp
ZgotCi0gICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzQyMjUwOTUyKTogTW92ZSB0aGlz
IGNhbGwgaW50byBhIGNvbXBsZXRpb24gaGFuZGxlciBvciBkZWxlZ2F0ZSBjYWxsYmFjay4KLSAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7
Ci0gICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1f
ZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMjljZmYyMzFjNjkzYzdiNTM2NjVmMTFhYzkx
ZWRmYzgwZmY1N2U1NS4uMDE5YmVkYzYxNjIzMzA4Y2I4MDIwZWZhMTUyODlkMjE4Nzk2Yjg5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCByZXR1cm5W
aWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkg
ZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZEVudGVyRnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3Jl
ZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7CkBAIC0x
ODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1
bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2
b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyRnJhbWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0
UmVjdCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBkYzQzZWZmMmIzODQwZGRhYTI0YjY4NmM4ZTE0
ZmQ0NzRhMWE4NTY3Li5hZmM5MDcxNzVkZjg1ZmZhYWI5NDgzZTNlMjczYjBiYjE3OWE5YzQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0yNDQsMTAgKzI0NCwxMCBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9t
YW5hZ2VyLT5kaWRTZXR1cEZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdl
ci0+ZGlkRW50ZXJGdWxsc2NyZWVuKG1fY29udGV4dElkKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5k
aWRFbnRlckZ1bGxzY3JlZW4obV9jb250ZXh0SWQsIHNpemUpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKQEAgLTU5OCw4ICs1OTgs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25z
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQpCiB7CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQp
IHsKLSAgICAgICAgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCk7Ci0gICAgICAgIHNldFZp
ZGVvTGF5ZXJGcmFtZShjb250ZXh0SWQsIHswLCAwLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2lu
ZG93U2l6ZS53aWR0aCgpLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZS5oZWlnaHQo
KX0pOworICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCB7IG1fbW9ja1BpY3R1
cmVJblBpY3R1cmVXaW5kb3dTaXplLndpZHRoKCksIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5k
b3dTaXplLmhlaWdodCgpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NzQsOSAr
NzczLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5kaWRFeGl0RnVs
bHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50
ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
K3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CisgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIFdURjo6bnVsbG9wdCkp
OworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCBzaXplKSk7CiAgICAgbV9w
YWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZTgyM2Qy
MGM0ZDFiOTI0NGEyZWNlYmI5YzM5MWQ1YWYzNzAyZDU0My4uYjhjNzE4ZTgxYWNmNzNlNmRiZDRl
ODhhMGQ2NDRmNWJlNTEwZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xNDksNyArMTQ5LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRW50ZXJG
dWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFNpemU+KTsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZl
bmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0
IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCk7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIHVuc2lnbmVk
IGdyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwNzZmZmY1
Nzc2MWU1OTc0NGFjZWI4N2Q0ZGEzNjUxYzI1YWMwYjY3Li4zMjViM2NkMmY0NTkyZTQxYzRkZGQ4
MTE4ZGIyYjZkODk2OGY1YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMjksNyArMjksNyBAQCBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICAg
ICBEaWRTZXR1cEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiAgICAgV2lsbEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIERpZEV4aXRGdWxsc2NyZWVu
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQotICAg
IERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4gc2l6ZSkKICAgICBEaWRDbGVhbnVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBTZXRWaWRlb0xheWVyRnJhbWVG
ZW5jZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAg
ICAgU2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpp
bmRleCAwZmJjZjg2ZTljZGMzNGMwOWFkZjkxN2FiNjRmMDkxZjE1ZGQ2NjZmLi5jYTIzNWM0OWM3
MzcyYzNjZDg0MzZiMGRiZjNkNWVlNzZjMDQzM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMzQy
LDcgKzM0Miw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmCiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB7Ci0gICAgZW5zdXJlTW9kZWwo
Y29udGV4dElkKS5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7Cisg
ICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpOworICAgIG1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVu
TW9kZSk7CisgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZSh2aWRlb0Z1bGxzY3JlZW5N
b2RlKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCkBAIC00
MjgsNyArNDMwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxz
Y3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICB9KTsKIH0KIAotdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNpemUpCiB7CiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4o
JXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKQEAgLTQ0MSw3ICs0NDMsMTAgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdmlkZW9FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOworICAg
IGlmIChzaXplKQorICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGlj
dHVyZUluUGljdHVyZShzaXplLnZhbHVlKCkpOworICAgIGVsc2UKKyAgICAgICAgdmlkZW9FbGVt
ZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoeyB9KTsKIAogICAgIGlm
IChpbnRlcmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CkBAIC00
ODMsNyArNDg4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogI2VuZGlmCiB9
Ci0gICAgCisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CkBAIC01MDQsNyArNTA5LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmls
KTsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZp
ZGVvRWxlbWVudCgpOwogICAgIGlmICh2aWRlb0VsZW1lbnQpCi0gICAgICAgIHZpZGVvRWxlbWVu
dC0+ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgdmlkZW9FbGVtZW50
LT5kaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaW50ZXJmYWNl
LT5zZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVOb25lKTsKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5TdGFuZGJ5KGZhbHNlKTsK
QEAgLTUxOCwxMiArNTIzLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xl
YW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpCiAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlk
ZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKIH0KLSAgICAKKwogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQogewogICAg
IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdyYXZpdHkoKE1lZGlhUGxheWVy
RW51bXM6OlZpZGVvR3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogewogICAg
IGlmICghbV9wYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407542</attachid>
            <date>2020-08-29 12:34:08 -0700</date>
            <delta_ts>2020-08-29 14:10:38 -0700</delta_ts>
            <desc>WIP - fix an API test failure</desc>
            <filename>bug-215972-20200829123407.patch</filename>
            <type>text/plain</type>
            <size>39058</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNjQyOTVjOWI1OWQyMDY4MDFkNzZhMWNiMDk2YTdh
MTg5MWJmOGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBmdW5jdGlvbnMg
YW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlz
cGxheWluZ0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
dG9QcmVzZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9QcmVzZW50YXRpb25Nb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxzY3Jl
ZW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10p
OgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgZW50
ZXJQSVBdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyBi
b3VuZHNEaWRDaGFuZ2VGb3JWaWRlb1ZpZXdDb250YWluZXI6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbik6CisKIDIwMjAt
MDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQg
bG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0aW9ucyBtYXkgZmFpbCBpbmRlZmluaXRl
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYjUzN2UxYjQ5ZWNjYjc0NTUyYWFhZGIwODA1Zjg5NTY5ODJkNzdkMy4u
NjljMWRjOWJiZmI4NDE4NmVlNDRjYTg3YWYwMDk0NTNlNmU5MDBhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOC0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgor
CisgICAgICAgIENsZWFudXAgZnVuY3Rpb25zIGFuZCBzdGF0ZSB2YXJpYWJsZXMgcmVsYXRlZCB0
byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKwogMjAyMC0wOC0yNSAgTWVnYW4gR2FyZG5lciAgPG1l
Z2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeWluZyB0byBsb29rdXAgd2hlbiBX
ZWJWaWV3IGlzIGluIGEgcG9wb3ZlciBjYXVzZXMgcHJvY2VzcyB0byBoYW5nLiBGaXggZm9yIExl
Z2FjeSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggMTYwMzQ1YTVhYzIxOGIzNTM1ZDAyZjA3ZmVhZTZlYjZkN2VhMWRmOC4uY2RhZTRjNjUyY2Vj
NTMwMDAwMzRiNTEwYzhlODcwMWNhZGI0YTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NzgwLDcgKzU3ODAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9z
aXRpb24vc2l6ZSBiYWNrICpiZWZvcmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhl
cndpc2UsIHRoZSBleGl0IGZ1bGxzY3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0Lgog
ICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
ZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKICAgICB9CiB9CkBAIC01OTczLDcg
KzU5NzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiAKICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyaWx5QWxsb3dp
bmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1v
ZGUobW9kZSk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGFzVmlkZW8sIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKQEAgLTYwMjQsMTEgKzYwMjQsMTEgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAgaWYg
KGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCku
YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewotICAgICAgICBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBzZXRGdWxsc2NyZWVuTW9k
ZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewogICAg
ICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7Ci0gICAgICAgICAgICBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOwogICAgICAgICB9CiAKQEAg
LTYwNzUsMTEgKzYwNzUsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOwot
I2VuZGlmCiAKLSAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKKyAgICBpZiAob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCk7CiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKICAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKICAg
ICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOgogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkOgpAQCAtNjA5MSw2ICs2MDkwLDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlv
bklmUG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorI2Vsc2UKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICNlbmRpZgogCiAg
ICAgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC02MTA2LDcgKzYx
MDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50
KCkKIHsKICAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpCi0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKIH0KIAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1MYXllcigp
IGNvbnN0CkBAIC02MTQ2LDcgKzYxNDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxF
eGl0RnVsbHNjcmVlbigpCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGlu
ZSgpCiB7CiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwotfTsKK30KIAogUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKCkKIHsKQEAgLTYxNjksNyArNjE3MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwg
V1RGCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JiBm
cmFtZSkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lID0gZnJhbWU7CiAgICAgaWYgKG1f
cGxheWVyKQpAQCAtNzkxNSwxMSArNzkxNywyNCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRG
dWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBtb2RlKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlID09IG1vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Cisj
aWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOworI2VuZGlmCisK
KyAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisK
KyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgaWYgKHBsYXllcigpKQor
ICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKKyNlbmRpZgor
ICAgIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1vZGU7CiAgICAgdmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpOwogICAgIHNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjk1ZWE3MGVlNzc2
ZDRkNTg5Y2M0MDViOTk0NDM1OTRiNmNlNTRhOS4uNDBhMDY4MWNjNDk1ZDYxYzU5NDUxMWE0MjBl
NDIzNmI1MTI0OGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CiAgICAgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5HcmF2aXR5OyB9CiAjZW5kaWYKQEAgLTQzMCw3ICs0MzAsNiBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlOwogICAgIFZp
ZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oVmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKQEAgLTYyNSw2ICs2MjQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
YWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ludGVyYWN0aXZl
Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKwogICAgIHZvaWQgd2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggYzc2MmMxNjJkOTcwOWIzMTFmZWEwMzQyOTI5M2IxZTcxZjU3OGFlMS4uMTQwNTE1YjU2YjEw
ODBmNmM3ZmJkNGU4MTY2OWVjZThmZWZiNGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC0zNTMsMTEgKzM1MywxMSBAQCBib29sIEhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Ondl
YmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5xdWlya3Mo
KS5uZWVkc0FrYW1haU1lZGlhUGxheWVyUXVpcmsoKnRoaXMpKQotICAgICAgICByZXR1cm4gaXNG
dWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZTsKKyAgICAgICAgcmV0
dXJuIGlzRnVsbHNjcmVlbigpIHx8IG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGU7CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyB0byByZXR1cm4gdHJ1ZSBhZnRlciB0aGUgdmlk
ZW8gZWxlbWVudCBoYXMgZW50ZXJlZAogICAgIC8vIGZ1bGxzY3JlZW4vcGljdHVyZS1pbi1waWN0
dXJlIHVudGlsIGl0IGhhcyBleGl0ZWQgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1cmUKLSAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlKTsKKyAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
IH0KIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4o
KQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpCiAgICAgcmV0dXJu
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJl
c2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKK0hUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9F
bGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlk
ZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CkBAIC00NjksMzcg
KzQ2OSwzOCBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0
aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAogdm9pZCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQog
ewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCAgbW9kZSk7Ci0gICAg
c2V0RnVsbHNjcmVlbk1vZGUodG9GdWxsc2NyZWVuTW9kZShtb2RlKSk7CisgICAgc2V0UHJlc2Vu
dGF0aW9uTW9kZShtb2RlKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgbW9kZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtb2RlID0g
IiwgbW9kZSk7Ci0KLSAgICBpZiAobV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSkKKyAgICBp
ZiAobV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8fCB0b1ByZXNlbnRhdGlvbk1vZGUo
ZnVsbHNjcmVlbk1vZGUoKSkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKKworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAg
ICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRlb1ByZXNl
bnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICAgICAgbV9pc0VudGVy
aW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICAgICAgICAgIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOworICAgICAgICAgICAgbV9pc0NoYW5naW5n
VmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbigp
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFT
ZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4obW9k
ZSkpCisgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1
cHBvcnRzRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisg
ICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUg
PSB0cnVlOwogCi0gICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBt
X2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKLSAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuKG1vZGUpOworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IGZ1bGxzY3JlZW5Nb2Rl
KCkpIHsKKyAgICAgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7Cisg
ICAgICAgIGVudGVyRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB9CiB9CiAK
QEAgLTUwOCwzMiArNTA5LDI1IEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2Vu
dGF0aW9uTW9kZSgpIGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAgIHJldHVybiB0
b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0
dXJlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVu
TW9kZSgpKSB7Ci0gICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZyb20g
IiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOwotICAg
ICAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Cisg
ICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlmIChtX2lz
RW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIG1faXNFbnRlcmlu
Z09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUElDVFVSRV9J
Tl9QSUNUVVJFX0FQSSkKKyAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQor
ICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUlu
UGljdHVyZShJbnRTaXplKHNpemUpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyNlbmRpZgogICAgIH0KIAotICAgIGlmIChwbGF5ZXIoKSkKLSAgICAgICAgcGxheWVyKCkt
PnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7Ci19Ci0KLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQotewotICAgIG1faXNDaGFuZ2luZ1ByZXNlbnRh
dGlvbk1vZGUgPSBmYWxzZTsKLSAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUlu
UGljdHVyZSkKLSAgICAgICAgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJlV2luZG93RnJh
bWUgPSB0cnVlOwotCiAgICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVs
ZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2Ny
ZWVuRWxlbWVudCgpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRGdWxsc2NyZWVuT3JQ
aWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0g
ZmFsc2U7CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOwogICAg
IGlmIChtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CiAgICAgICAgIG1f
aXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKICNpZiBFTkFCTEUo
UElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKQEAgLTU0MywyMCArNTM3LDEwIEBAIHZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogICAgIH0KIH0KIAot
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qg
ZnJhbWUpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNv
bnN0IEZsb2F0UmVjdCYgZnJhbWUpCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogCi0gICAgaWYgKG1faXNXYWl0aW5nRm9yUGljdHVyZUlu
UGljdHVyZVdpbmRvd0ZyYW1lKSB7Ci0gICAgICAgIG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGlj
dHVyZVdpbmRvd0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1Bp
Y3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKLSNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQ
SSkKLSAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQotICAgICAgICAgICAg
bV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUluUGljdHVyZShJbnRT
aXplKGZyYW1lLnNpemUoKSkpOwotI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2RlKCkpICE9IFZpZGVvUHJlc2Vu
dGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDdmYTZmNTkwOGEzZGZkYWNmYzYxMDVk
ODlmODBlZjZiNThjYjVhZTMuLjA0OGY3N2I3YWMyMjI2ZDNmZGE3MTYzMzE3NzgxMjkxOGQ0NWZh
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC04MywxNSArODMs
MTcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAg
IGVudW0gY2xhc3MgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgSW5saW5lLCBGdWxsc2NyZWVuLCBQ
aWN0dXJlSW5QaWN0dXJlfTsKKyAgICBzdGF0aWMgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJl
c2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2Rl
KFZpZGVvUHJlc2VudGF0aW9uTW9kZSkgY29uc3Q7Ci0gICAgdm9pZCB3ZWJraXRTZXRQcmVzZW50
YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CiAgICAgVmlkZW9QcmVzZW50YXRpb25N
b2RlIHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldEZ1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIHZvaWQgd2Via2l0U2V0UHJlc2Vu
dGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoY29u
c3QgRmxvYXRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRFeGl0RnVsbHNjcmVl
bk9yUGljdHVyZUluUGljdHVyZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRCZWNv
bWVGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
U3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBmaW5hbDsKLSAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7CisgICAgLy8gSFRNTE1lZGlhRWxlbWVudAor
ICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7
CiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2b2lkIHNldFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlcihQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIqKTsKQEAgLTEzMywx
MSArMTM1LDEwIEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX2xhc3RSZXBvcnRlZFZpZGVv
V2lkdGggeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRlb0hlaWdodCB7IDAg
fTsKLSAgICBib29sIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB7IGZhbHNlIH07CiAKICNpZiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgYm9vbCBtX2lzRW50ZXJpbmdPckV4
aXRpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNXYWl0aW5nRm9y
UGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lIHsgZmFsc2UgfTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tCmluZGV4IGYyYjNkODdkNGI0OGI1MTFlM2JlZWFmYmQyZDkzNzA4ODQ5OWRjNzguLjZlMzYy
ZGU4MTg3ZWFjYjg3YTA0NGVkNTVjN2M3ODYxNTFiOGZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Lm1tCkBAIC0zMjUsOSArMzI1LDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpCiAKICAgICBhdXRvJiBl
bGVtZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKm1fbWVkaWFFbGVtZW50KTsKICAg
ICBpZiAoZWxlbWVudC5mdWxsc2NyZWVuTW9kZSgpID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQotICAgICAgICBlbGVtZW50LnNldEZ1bGxz
Y3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAg
ICAgICAgZWxlbWVudC5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVv
UHJlc2VudGF0aW9uTW9kZTo6SW5saW5lKTsKICAgICBlbHNlCi0gICAgICAgIGVsZW1lbnQuc2V0
RnVsbHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpOworICAgICAgICBlbGVtZW50LnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZp
ZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAppbmRleCBiMTNkMTliM2U1Y2NmMWY2
ZDdkMjYzYzJlMzBmN2U3ZjhmZDhlODQzLi41NGVlZjM5OThiOGMyMGFiMzVhYWI4NjdmYzQxMzhk
MDExZDQzZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEVudGVyRnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2Ny
ZWVuKGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4aXRGdWxs
c2NyZWVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDNhZDY5YjdlNzQzY2VhMTgxZDRjZmZjNThiZjJk
MmJlNzg2NjQ3NDYuLmI3NGY0ZWI3OWNhYTI3ZDMxYTk5MzgxZjY5ODJjY2FlY2U4ZDZiYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xNTIsOCArMTUyLDggQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5s
aW5lVGhlbihXVEY6OkZ1bmN0aW8KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIGlmICht
X3ZpZGVvRWxlbWVudCAmJiBtX3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2Rl
KQotICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CisgICAg
aWYgKG1fdmlkZW9FbGVtZW50KQorICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0UHJlc2VudGF0
aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUobW9kZSkpOwogCiAg
ICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIGZpbmlzaGVkV2l0aE1lZGlhICYmIG1vZGUgPT0gTWVk
aWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChtX3ZpZGVv
RWxlbWVudC0+ZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkgewpAQCAtMTkxLDcgKzE5MSw3
IEBAIGNvbnN0IEF0b21TdHJpbmcmIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpl
dmVudE5hbWVBbGwoKQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKTsKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFByZXNlbnRhdGlvbk1vZGUoSFRN
TFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKHZpZGVvRnVsbHNjcmVlbk1vZGUpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdFJvdXRl
U2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSb3V0ZVNo
YXJpbmdQb2xpY3ksIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KaW5kZXggOGU2ZDM2Yjc4Yjg5YjZkNzAzZThiZmIyODVlYzY5YTFkNTNmNmY0Mi4u
ODQwZDU4OTg5MjU0MWQxZTAxZTc2N2U2Y2IzYzk5ZDk0M2U1NmRlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbQpAQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3JlCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIE5TRGljdGlvbmFyeSAqcGl4ZWxC
dWZmZXJBdHRyaWJ1dGVzOwogQHByb3BlcnR5IENHU2l6ZSB2aWRlb0RpbWVuc2lvbnM7CiBAcHJv
cGVydHkgQ0dSZWN0IG1vZGVsVmlkZW9MYXllckZyYW1lOworQHByb3BlcnR5IEJPT0wgaXNQaWN0
dXJlSW5QaWN0dXJlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllciB7
CkBAIC0yODMsNyArMjg0LDcgQEAgc3RhdGljIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFNjcmUKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgaWYgKFtBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCisgICAgaWYgKHNl
bGYuaXNQaWN0dXJlSW5QaWN0dXJlIHx8IFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGlzRXF1
YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCiAgICAgICAgIHRhcmdldFZpZGVvRnJhbWUg
PSBzZWxmLmJvdW5kczsKICAgICBlbHNlIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQogICAgICAgICB0YXJnZXRW
aWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNw
ZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKQEAgLTQ3OSw2ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBX
ZWJBVlBsYXllckxheWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBs
YXllckxheWVyVgogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6cGxheWVy
TGF5ZXIudmlkZW9EaW1lbnNpb25zXTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2
aXR5OnBsYXllckxheWVyLnZpZGVvR3Jhdml0eV07CiAgICAgW3BpcFBsYXllckxheWVyIHNldE1v
ZGVsVmlkZW9MYXllckZyYW1lOnBsYXllckxheWVyLm1vZGVsVmlkZW9MYXllckZyYW1lXTsKKyAg
ICBbcGlwUGxheWVyTGF5ZXIgc2V0SXNQaWN0dXJlSW5QaWN0dXJlOllFU107CiAgICAgW3BpcFBs
YXllckxheWVyIHNldFBsYXllckNvbnRyb2xsZXI6cGxheWVyTGF5ZXIucGxheWVyQ29udHJvbGxl
cl07CiAgICAgW3BpcFBsYXllckxheWVyIHNldEZ1bGxzY3JlZW5JbnRlcmZhY2U6cGxheWVyTGF5
ZXIuZnVsbHNjcmVlbkludGVyZmFjZV07CiAgICAgW3BpcFZpZXcgYWRkU3VidmlldzpwbGF5ZXJM
YXllclZpZXcudmlkZW9WaWV3XTsKQEAgLTExMTksOSArMTEyMSwxMCBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdGFydFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAg
aWYgKG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFbnRlclBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAg
IGRvRW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
LT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKKyAgICBlbHNlIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcikgeworICAgICAgICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcg
KnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW21fcGxh
eWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOworICAgICAgICBX
ZWJBVlBsYXllckxheWVyICpwaXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3Bp
cFZpZXcgbGF5ZXJdOworICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50
ZXJGdWxsc2NyZWVuKChGbG9hdFNpemUpcGlwUGxheWVyTGF5ZXIuZnJhbWUuc2l6ZSk7CiAgICAg
fQogCiAgICAgbV9lbnRlcmluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKQEAgLTExMzYsOSAr
MTEzOSw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3Rh
cnRQaWN0dXJlSW5QaWN0dXJlKCkKICAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVu
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVl
bigpOwotCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAKQEAgLTE0
NDksOCArMTQ0OSwxNSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0Vu
dGVyRnVsbHNjcmVlbigpCiAgICAgfQogICAgIG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFeGl0UGlj
dHVyZUluUGljdHVyZSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2Ny
ZWVuKCk7CisgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKSB7CisgICAgICAgIEZs
b2F0U2l6ZSBzaXplOworICAgICAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNQaWN0dXJlSW5QaWN0
dXJlKCkpIHsKKyAgICAgICAgICAgIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmll
dyAqcGlwVmlldyA9IChXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9w
bGF5ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgICAg
ICAgICBXZWJBVlBsYXllckxheWVyICpwaXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVy
ICopW3BpcFZpZXcgbGF5ZXJdOworICAgICAgICAgICAgc2l6ZSA9IEZsb2F0U2l6ZShwaXBQbGF5
ZXJMYXllci5mcmFtZS5zaXplKTsKKyAgICAgICAgfQorICAgICAgICBtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKHNpemUpOworICAgIH0KIH0KIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA0ZmNkOWEyZWY5OWYwNWFiOGQ4YzMyNmEwMjYy
MzA0NDkyYjg4YzlkLi5mODMxZDZiODQ0OGEzZDg0NGYyNGM4YjQ4ZTBmY2JlYmZkMDkwN2RhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTI4LDIwICsyOCwyMCBAQAogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0
ICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRp
YVNlbGVjdGlvbk9wdGlvbi5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQuaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgiCisjaW1w
b3J0ICJSZW5kZXJWaWRlby5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9D
b3JlQW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlkZW8uaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFJ1bi5oPgogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KIApAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lk
IHJldHVyblZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxz
Y3JlZW4oKSBmaW5hbDsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZpbmFsIHsgfQor
ICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQog
ICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFeGl0RnVs
bHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLm1tCmluZGV4IDg1YzcwYjJiYmI1MDQ3ZWY4ZWRkYTc0Mjk0NjY1OWE0
YjI3ZTE3Y2UuLjk0ZWY1NDBmYjVlZDIzYThhYmI3ZDFkNmY1MmU5MjQzZTAzN2JmMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy5tbQpAQCAtOTUsNiArOTUsNyBAQCB1c2luZyBXZWJDb3JlOjpQbGF5YmFj
a1Nlc3Npb25Nb2RlbDsKIAogZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAgTm90SW5QSVAsCisg
ICAgRW50ZXJpbmdQSVAsCiAgICAgSW5QSVAsCiAgICAgRXhpdGluZ1BJUAogfTsKQEAgLTIxMCwx
MiArMjExLDEyIEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogCiAtICh2b2lkKWVudGVyUElQCiB7
Ci0gICAgaWYgKF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6SW5QSVApCisgICAgaWYgKF9waXBTdGF0
ZSA9PSBQSVBTdGF0ZTo6RW50ZXJpbmdQSVAgfHwgX3BpcFN0YXRlID09IFBJUFN0YXRlOjpJblBJ
UCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW192aWRlb1ZpZXdDb250YWluZXJDb250cm9sbGVy
IHZpZXddLmxheWVyLmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtD
R0NvbG9yQmxhY2spOwogICAgIFtfcGlwVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9s
bGVyQXNQaWN0dXJlSW5QaWN0dXJlOl92aWRlb1ZpZXdDb250YWluZXJDb250cm9sbGVyLmdldCgp
XTsKLSAgICBfcGlwU3RhdGUgPSBQSVBTdGF0ZTo6SW5QSVA7CisgICAgX3BpcFN0YXRlID0gUElQ
U3RhdGU6OkVudGVyaW5nUElQOwogfQogCiAtICh2b2lkKWV4aXRQSVAKQEAgLTI0OCw3ICsyNDks
MTkgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAKICAgICBBU1NFUlRfVU5VU0VEKHZpZGVvVmll
d0NvbnRhaW5lciwgdmlkZW9WaWV3Q29udGFpbmVyID09IF92aWRlb1ZpZXdDb250YWluZXIpOwog
Ci0gICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMgJiYgX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAgICBpZiAoIV92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfcGlwU3Rh
dGUgPT0gUElQU3RhdGU6OkVudGVyaW5nUElQKSB7CisgICAgICAgIF9waXBTdGF0ZSA9IFBJUFN0
YXRlOjpJblBJUDsKKworICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS80MjI1MDk1MikK
KyAgICAgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVl
bk1vZGVsKCkpCisgICAgICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRl
b0Z1bGxzY3JlZW5Nb2RlbCgpLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKKworICAgICAg
ICBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCktPmRpZEVudGVyRnVsbHNjcmVlbigoV2ViQ29y
ZTo6RmxvYXRTaXplKVtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5kc10uc2l6ZSk7CisgICAgfSBl
bHNlIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCgpKQogICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyRnJhbWUoW192aWRlb1ZpZXdDb250YWluZXIgYm91bmRz
XSk7CiB9CiAKQEAgLTQ1NiwxMSArNDY5LDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWM6OmVudGVyRnVsbHNjcmVlbigpCiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKQogICAgICAgICBbbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXlCYWNr
Q29udHJvbHNNYW5hZ2VyKCkgc2V0UGljdHVyZUluUGljdHVyZUFjdGl2ZTpZRVNdOwogI2VuZGlm
Ci0KLSAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5NTIpOiBNb3ZlIHRoaXMg
Y2FsbCBpbnRvIGEgY29tcGxldGlvbiBoYW5kbGVyIG9yIGRlbGVnYXRlIGNhbGxiYWNrLgotICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsK
LSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgbV9m
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAyOWNmZjIzMWM2OTNjN2I1MzY2NWYxMWFjOTFl
ZGZjODBmZjU3ZTU1Li4wMTliZWRjNjE2MjMzMDhjYjgwMjBlZmExNTI4OWQyMTg3OTZiODlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIHJldHVyblZp
ZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSBm
aW5hbDsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGZpbmFsOwogICAgIHZv
aWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVl
bigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBmaW5hbDsKQEAgLTE4
NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeGl0RnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZv
aWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldFZpZGVvTGF5
ZXJGcmFtZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRS
ZWN0KTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IGRjNDNlZmYyYjM4NDBkZGFhMjRiNjg2YzhlMTRm
ZDQ3NGExYTg1NjcuLmFmYzkwNzE3NWRmODVmZmFhYjk0ODNlM2UyNzNiMGJiMTc5YTljNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTI0NCwxMCArMjQ0LDEwIEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogICAgICAgICBtX21h
bmFnZXItPmRpZFNldHVwRnVsbHNjcmVlbihtX2NvbnRleHRJZCk7CiB9CiAKLXZvaWQgVmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3JlZW4oKQordm9pZCBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2Vy
LT5kaWRFbnRlckZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOworICAgICAgICBtX21hbmFnZXItPmRp
ZEVudGVyRnVsbHNjcmVlbihtX2NvbnRleHRJZCwgc2l6ZSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0Ojp3aWxsRXhpdEZ1bGxzY3JlZW4oKQpAQCAtNTk4LDggKzU5OCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lvbnMo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6ZW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCkKIHsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkg
ewotICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKTsKLSAgICAgICAgc2V0Vmlk
ZW9MYXllckZyYW1lKGNvbnRleHRJZCwgezAsIDAsIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5k
b3dTaXplLndpZHRoKCksIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLmhlaWdodCgp
fSk7CisgICAgICAgIGRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIHsgbV9tb2NrUGljdHVy
ZUluUGljdHVyZVdpbmRvd1NpemUud2lkdGgoKSwgbV9tb2NrUGljdHVyZUluUGljdHVyZVdpbmRv
d1NpemUuaGVpZ2h0KCkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3NCw5ICs3
NzMsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGkKICAgICBtX3BhZ2UtPmRpZEV4aXRGdWxs
c2NyZWVuKCk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRl
ckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKKyAgICBpZiAoc2l6
ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCwgV1RGOjpudWxsb3B0KSk7
CisgICAgZWxzZQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIHNpemUpKTsKICAgICBtX3Bh
Z2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlODIzZDIw
YzRkMWI5MjQ0YTJlY2ViYjljMzkxZDVhZjM3MDJkNTQzLi5iOGM3MThlODFhY2Y3M2U2ZGJkNGU4
OGEwZDY0NGY1YmU1MTBlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFbnRlckZ1
bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0U2l6ZT4pOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lRmVu
Y2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3Qg
Ym91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKICAgICB2b2lkIHNldFZpZGVvTGF5
ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdW5zaWduZWQg
Z3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDA3NmZmZjU3
NzYxZTU5NzQ0YWNlYjg3ZDRkYTM2NTFjMjVhYzBiNjcuLjMyNWIzY2QyZjQ1OTJlNDFjNGRkZDgx
MThkYjJiNmQ4OTY4ZjVjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgewogICAg
IERpZFNldHVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKICAgICBXaWxsRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxzY3JlZW4o
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAg
RGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkKQorICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRT
aXplPiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNldFZpZGVvTGF5ZXJGcmFtZUZl
bmNlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwg
V2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKICAg
ICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmlu
ZGV4IDBmYmNmODZlOWNkYzM0YzA5YWRmOTE3YWI2NGYwOTFmMTVkZDY2NmYuLmNhMjM1YzQ5Yzcz
NzJjM2NkODQzNmIwZGJmM2Q1ZWU3NmMwNDMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0zNDIs
NyArMzQyLDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVl
bk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWYKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKLSAgICBlbnN1cmVNb2RlbChj
b250ZXh0SWQpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAg
ICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCk7CisgICAgbW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5N
b2RlKTsKKyAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2RlKHZpZGVvRnVsbHNjcmVlbk1v
ZGUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxp
bmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKQEAgLTQy
OCw3ICs0MzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogfQogCi12b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKIHsKICAgICBMT0co
RnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbigl
cCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNDQxLDcgKzQ0MywxMCBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcgogICAgIGlmICghdmlkZW9FbGVtZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICB2aWRlb0VsZW1lbnQtPmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAg
aWYgKHNpemUpCisgICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0
dXJlSW5QaWN0dXJlKHNpemUudmFsdWUoKSk7CisgICAgZWxzZQorICAgICAgICB2aWRlb0VsZW1l
bnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSh7IH0pOwogCiAgICAgaWYg
KGludGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4
Myw3ICs0ODgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgfSk7CiAjZW5kaWYKIH0K
LSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgTE9H
KEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVl
biglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKQEAgLTUwNCw3ICs1MDksNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwp
OwogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2RlbC0+dmlk
ZW9FbGVtZW50KCk7CiAgICAgaWYgKHZpZGVvRWxlbWVudCkKLSAgICAgICAgdmlkZW9FbGVtZW50
LT5kaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICB2aWRlb0VsZW1lbnQt
PmRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKICAgICBpbnRlcmZhY2Ut
PnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOwogICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlblN0YW5kYnkoZmFsc2UpOwpA
QCAtNTE4LDEyICs1MjMsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVh
bnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmkKICAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRl
b0VsZW1lbnQsIG1vZGUsIHN0YW5kYnkpOwogICAgIH0pOwogfQotICAgIAorCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCiB7CiAgICAg
ZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRWaWRlb0xheWVyR3Jhdml0eSgoTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9HcmF2aXR5KWdyYXZpdHkpOwogfQotICAgIAorCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407550</attachid>
            <date>2020-08-29 14:10:39 -0700</date>
            <delta_ts>2020-08-29 14:39:43 -0700</delta_ts>
            <desc>WIP - fix some layout test failures</desc>
            <filename>bug-215972-20200829141039.patch</filename>
            <type>text/plain</type>
            <size>39419</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNjQyOTVjOWI1OWQyMDY4MDFkNzZhMWNiMDk2YTdh
MTg5MWJmOGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBmdW5jdGlvbnMg
YW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlz
cGxheWluZ0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
dG9QcmVzZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9QcmVzZW50YXRpb25Nb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxzY3Jl
ZW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10p
OgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgZW50
ZXJQSVBdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyBi
b3VuZHNEaWRDaGFuZ2VGb3JWaWRlb1ZpZXdDb250YWluZXI6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbik6CisKIDIwMjAt
MDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQg
bG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0aW9ucyBtYXkgZmFpbCBpbmRlZmluaXRl
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYjUzN2UxYjQ5ZWNjYjc0NTUyYWFhZGIwODA1Zjg5NTY5ODJkNzdkMy4u
NjljMWRjOWJiZmI4NDE4NmVlNDRjYTg3YWYwMDk0NTNlNmU5MDBhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOC0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgor
CisgICAgICAgIENsZWFudXAgZnVuY3Rpb25zIGFuZCBzdGF0ZSB2YXJpYWJsZXMgcmVsYXRlZCB0
byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKwogMjAyMC0wOC0yNSAgTWVnYW4gR2FyZG5lciAgPG1l
Z2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeWluZyB0byBsb29rdXAgd2hlbiBX
ZWJWaWV3IGlzIGluIGEgcG9wb3ZlciBjYXVzZXMgcHJvY2VzcyB0byBoYW5nLiBGaXggZm9yIExl
Z2FjeSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggMTYwMzQ1YTVhYzIxOGIzNTM1ZDAyZjA3ZmVhZTZlYjZkN2VhMWRmOC4uY2RhZTRjNjUyY2Vj
NTMwMDAwMzRiNTEwYzhlODcwMWNhZGI0YTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NzgwLDcgKzU3ODAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9z
aXRpb24vc2l6ZSBiYWNrICpiZWZvcmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhl
cndpc2UsIHRoZSBleGl0IGZ1bGxzY3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0Lgog
ICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
ZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKICAgICB9CiB9CkBAIC01OTczLDcg
KzU5NzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiAKICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyaWx5QWxsb3dp
bmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1v
ZGUobW9kZSk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGFzVmlkZW8sIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKQEAgLTYwMjQsMTEgKzYwMjQsMTEgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAgaWYg
KGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCku
YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewotICAgICAgICBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBzZXRGdWxsc2NyZWVuTW9k
ZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewogICAg
ICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7Ci0gICAgICAgICAgICBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOwogICAgICAgICB9CiAKQEAg
LTYwNzUsMTEgKzYwNzUsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOwot
I2VuZGlmCiAKLSAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKKyAgICBpZiAob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCk7CiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKICAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKICAg
ICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOgogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkOgpAQCAtNjA5MSw2ICs2MDkwLDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlv
bklmUG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorI2Vsc2UKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICNlbmRpZgogCiAg
ICAgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC02MTA2LDcgKzYx
MDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50
KCkKIHsKICAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpCi0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKIH0KIAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1MYXllcigp
IGNvbnN0CkBAIC02MTQ2LDcgKzYxNDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxF
eGl0RnVsbHNjcmVlbigpCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGlu
ZSgpCiB7CiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwotfTsKK30KIAogUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKCkKIHsKQEAgLTYxNjksNyArNjE3MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwg
V1RGCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JiBm
cmFtZSkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lID0gZnJhbWU7CiAgICAgaWYgKG1f
cGxheWVyKQpAQCAtNzkxNSwxMSArNzkxNywyNCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRG
dWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBtb2RlKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlID09IG1vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Cisj
aWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOworI2VuZGlmCisK
KyAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisK
KyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgaWYgKHBsYXllcigpKQor
ICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKKyNlbmRpZgor
ICAgIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1vZGU7CiAgICAgdmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpOwogICAgIHNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjk1ZWE3MGVlNzc2
ZDRkNTg5Y2M0MDViOTk0NDM1OTRiNmNlNTRhOS4uNDBhMDY4MWNjNDk1ZDYxYzU5NDUxMWE0MjBl
NDIzNmI1MTI0OGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CiAgICAgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5HcmF2aXR5OyB9CiAjZW5kaWYKQEAgLTQzMCw3ICs0MzAsNiBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlOwogICAgIFZp
ZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oVmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKQEAgLTYyNSw2ICs2MjQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
YWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ludGVyYWN0aXZl
Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKwogICAgIHZvaWQgd2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggYzc2MmMxNjJkOTcwOWIzMTFmZWEwMzQyOTI5M2IxZTcxZjU3OGFlMS4uOTRiZWM5YzRhZWEy
Zjg4NjgxMGEyZjBmN2RmYjhlODY5Mjk2ZjRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC0zNTMsMTEgKzM1MywxMSBAQCBib29sIEhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Ondl
YmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5xdWlya3Mo
KS5uZWVkc0FrYW1haU1lZGlhUGxheWVyUXVpcmsoKnRoaXMpKQotICAgICAgICByZXR1cm4gaXNG
dWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZTsKKyAgICAgICAgcmV0
dXJuIGlzRnVsbHNjcmVlbigpIHx8IG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGU7CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyB0byByZXR1cm4gdHJ1ZSBhZnRlciB0aGUgdmlk
ZW8gZWxlbWVudCBoYXMgZW50ZXJlZAogICAgIC8vIGZ1bGxzY3JlZW4vcGljdHVyZS1pbi1waWN0
dXJlIHVudGlsIGl0IGhhcyBleGl0ZWQgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1cmUKLSAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlKTsKKyAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
IH0KIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4o
KQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpCiAgICAgcmV0dXJu
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJl
c2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKK0hUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9F
bGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlk
ZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CkBAIC00NjksMzcg
KzQ2OSwzOCBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0
aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAogdm9pZCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQog
ewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCAgbW9kZSk7Ci0gICAg
c2V0RnVsbHNjcmVlbk1vZGUodG9GdWxsc2NyZWVuTW9kZShtb2RlKSk7CisgICAgc2V0UHJlc2Vu
dGF0aW9uTW9kZShtb2RlKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgbW9kZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtb2RlID0g
IiwgbW9kZSk7Ci0KLSAgICBpZiAobV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSkKKyAgICBp
ZiAobV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8fCB0b1ByZXNlbnRhdGlvbk1vZGUo
ZnVsbHNjcmVlbk1vZGUoKSkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKKworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAg
ICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRlb1ByZXNl
bnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICAgICAgbV9pc0VudGVy
aW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICAgICAgICAgIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOworICAgICAgICAgICAgbV9pc0NoYW5naW5n
VmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbigp
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFT
ZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4obW9k
ZSkpCisgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1
cHBvcnRzRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisg
ICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUg
PSB0cnVlOwogCi0gICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBt
X2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKLSAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuKG1vZGUpOworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IGZ1bGxzY3JlZW5Nb2Rl
KCkpIHsKKyAgICAgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7Cisg
ICAgICAgIGVudGVyRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB9CiB9CiAK
QEAgLTUwOCwzMiArNTA5LDI1IEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2Vu
dGF0aW9uTW9kZSgpIGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAgIHJldHVybiB0
b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0
dXJlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVu
TW9kZSgpKSB7Ci0gICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZyb20g
IiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOwotICAg
ICAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Cisg
ICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlmIChtX2lz
RW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CisgICAgICAgIG1faXNFbnRlcmlu
Z09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUElDVFVSRV9J
Tl9QSUNUVVJFX0FQSSkKKyAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQor
ICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUlu
UGljdHVyZShJbnRTaXplKHNpemUpKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyNlbmRpZgogICAgIH0KIAotICAgIGlmIChwbGF5ZXIoKSkKLSAgICAgICAgcGxheWVyKCkt
PnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7Ci0KLSAgICBIVE1MTWVkaWFFbGVtZW50Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7Ci19Ci0KLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQotewotICAgIG1faXNDaGFuZ2luZ1ByZXNlbnRh
dGlvbk1vZGUgPSBmYWxzZTsKLSAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUlu
UGljdHVyZSkKLSAgICAgICAgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJlV2luZG93RnJh
bWUgPSB0cnVlOwotCiAgICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVs
ZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2Ny
ZWVuRWxlbWVudCgpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRGdWxsc2NyZWVuT3JQ
aWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0g
ZmFsc2U7CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOwogICAg
IGlmIChtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CiAgICAgICAgIG1f
aXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKICNpZiBFTkFCTEUo
UElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKQEAgLTU0MywxOSArNTM3LDE3IEBAIHZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogICAgIH0KIH0KIAot
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qg
ZnJhbWUpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEUoVklERU9fVVNFU19F
TEVNRU5UX0ZVTExTQ1JFRU4pCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KCkKIHsKLSAgICBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShmcmFtZSk7Ci0KLSAgICBpZiAobV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJl
V2luZG93RnJhbWUpIHsKLSAgICAgICAgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJlV2lu
ZG93RnJhbWUgPSBmYWxzZTsKLSAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUlu
UGljdHVyZSA9IGZhbHNlOwotI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQotICAg
ICAgICBpZiAobV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBtX3BpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKEludFNpemUoZnJh
bWUuc2l6ZSgpKSk7CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNl
OworICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7Cit9
CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKwordm9pZCBIVE1MVmlkZW9FbGVtZW50
OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQoreworICAg
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKIAogICAg
IGlmICh0b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSkgIT0gVmlkZW9QcmVzZW50
YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDdmYTZmNTkwOGEzZGZkYWNmYzYxMDVkODlm
ODBlZjZiNThjYjVhZTMuLjBjYmEwNGNkYWI1OTFhYTEwNzMyNTk2NGJjNTlkNmI2MTQwODIwOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC04MywxNSArODMsMjEg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIGVu
dW0gY2xhc3MgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgSW5saW5lLCBGdWxsc2NyZWVuLCBQaWN0
dXJlSW5QaWN0dXJlfTsKKyAgICBzdGF0aWMgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJlc2Vu
dGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2RlKFZp
ZGVvUHJlc2VudGF0aW9uTW9kZSkgY29uc3Q7Ci0gICAgdm9pZCB3ZWJraXRTZXRQcmVzZW50YXRp
b25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CiAgICAgVmlkZW9QcmVzZW50YXRpb25Nb2Rl
IHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldEZ1bGxzY3JlZW5N
b2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KFZpZGVvRnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0
aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoY29uc3Qg
RmxvYXRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbk9y
UGljdHVyZUluUGljdHVyZSgpOwogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBFTkFC
TEUoVklERU9fVVNFU19FTEVNRU5UX0ZVTExTQ1JFRU4pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBmaW5hbDsKLSAgICB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7CisjZW5kaWYKKworICAgIC8v
IEhUTUxNZWRpYUVsZW1lbnQKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0
IEZsb2F0UmVjdCYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkp
CiAgICAgdm9pZCBzZXRQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIoUGljdHVyZUluUGljdHVyZU9i
c2VydmVyKik7CkBAIC0xMzMsMTEgKzEzOSwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQg
bV9sYXN0UmVwb3J0ZWRWaWRlb1dpZHRoIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9y
dGVkVmlkZW9IZWlnaHQgeyAwIH07Ci0gICAgYm9vbCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25N
b2RlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUg
eyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIGJv
b2wgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2lzV2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSB7IGZhbHNlIH07
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBmMmIzZDg3ZDRiNDhiNTExZTNiZWVhZmJkMmQ5
MzcwODg0OTlkYzc4Li42ZTM2MmRlODE4N2VhY2I4N2EwNDRlZDU1YzdjNzg2MTUxYjhmZGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMzI1LDkgKzMyNSw5IEBAIHZv
aWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUoKQogCiAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCpt
X21lZGlhRWxlbWVudCk7CiAgICAgaWYgKGVsZW1lbnQuZnVsbHNjcmVlbk1vZGUoKSA9PSBNZWRp
YVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKLSAgICAg
ICAgZWxlbWVudC5zZXRGdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIGVsZW1lbnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1M
VmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZSk7CiAgICAgZWxzZQot
ICAgICAgICBlbGVtZW50LnNldEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKyAgICAgICAgZWxlbWVudC5zZXRQcmVz
ZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGlj
dHVyZUluUGljdHVyZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKaW5k
ZXggYjEzZDE5YjNlNWNjZjFmNmQ3ZDI2M2MyZTMwZjdlN2Y4ZmQ4ZTg0My4uNTRlZWYzOTk4Yjhj
MjBhYjM1YWFiODY3ZmM0MTM4ZDAxMWQ0M2Q4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5o
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFZpZGVv
Q29udGVudExheWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRM
YXllcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBGbG9hdFNpemUmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhp
dEZ1bGxzY3JlZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVu
KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAzYWQ2OWI3ZTc0
M2NlYTE4MWQ0Y2ZmYzU4YmYyZDJiZTc4NjY0NzQ2Li5iNzRmNGViNzljYWEyN2QzMWE5OTM4MWY2
OTgyY2NhZWNlOGQ2YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAt
MTUyLDggKzE1Miw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Ondh
aXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oV1RGOjpGdW5jdGlvCiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhN
ZWRpYSkKIHsKLSAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPmZ1bGxz
Y3JlZW5Nb2RlKCkgIT0gbW9kZSkKLSAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldEZ1bGxzY3Jl
ZW5Nb2RlKG1vZGUpOworICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKKyAgICAgICAgbV92aWRlb0Vs
ZW1lbnQtPnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6dG9QcmVzZW50YXRp
b25Nb2RlKG1vZGUpKTsKIAogICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBmaW5pc2hlZFdpdGhN
ZWRpYSAmJiBtb2RlID09IE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgewog
ICAgICAgICBpZiAobV92aWRlb0VsZW1lbnQtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkp
IHsKQEAgLTE5MSw3ICsxOTEsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxsKCkKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKICAgICBpZiAo
bV92aWRlb0VsZW1lbnQpCi0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQ
cmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZSh2aWRl
b0Z1bGxzY3JlZW5Nb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUm91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDhlNmQzNmI3OGI4OWI2ZDcwM2U4YmZi
Mjg1ZWM2OWExZDUzZjZmNDIuLjg0MGQ1ODk4OTI1NDFkMWUwMWU3NjdlNmNiM2M5OWQ5NDNlNTZk
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZl
cnRUb0V4aXRGdWxsU2NyZQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBO
U0RpY3Rpb25hcnkgKnBpeGVsQnVmZmVyQXR0cmlidXRlczsKIEBwcm9wZXJ0eSBDR1NpemUgdmlk
ZW9EaW1lbnNpb25zOwogQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKK0Bw
cm9wZXJ0eSBCT09MIGlzUGljdHVyZUluUGljdHVyZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdlYkFWUGxheWVyTGF5ZXIgewpAQCAtMjgzLDcgKzI4NCw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1
bGxTY3JlCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIGlm
IChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dy
YXZpdHldKQorICAgIGlmIChzZWxmLmlzUGljdHVyZUluUGljdHVyZSB8fCBbQVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQogICAgICAg
ICB0YXJnZXRWaWRlb0ZyYW1lID0gc2VsZi5ib3VuZHM7CiAgICAgZWxzZSBpZiAoW0FWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5
XSkKICAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlv
SW5zaWRlUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CkBAIC00NzksNiArNDgw
LDcgQEAgc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclYKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9EaW1lbnNpb25zOnBsYXllckxheWVyLnZpZGVvRGltZW5zaW9uc107CiAgICAgW3BpcFBsYXll
ckxheWVyIHNldFZpZGVvR3Jhdml0eTpwbGF5ZXJMYXllci52aWRlb0dyYXZpdHldOwogICAgIFtw
aXBQbGF5ZXJMYXllciBzZXRNb2RlbFZpZGVvTGF5ZXJGcmFtZTpwbGF5ZXJMYXllci5tb2RlbFZp
ZGVvTGF5ZXJGcmFtZV07CisgICAgW3BpcFBsYXllckxheWVyIHNldElzUGljdHVyZUluUGljdHVy
ZTpZRVNdOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOnBsYXllckxh
eWVyLnBsYXllckNvbnRyb2xsZXJdOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRGdWxsc2NyZWVu
SW50ZXJmYWNlOnBsYXllckxheWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2VdOwogICAgIFtwaXBWaWV3
IGFkZFN1YnZpZXc6cGxheWVyTGF5ZXJWaWV3LnZpZGVvVmlld107CkBAIC0xMTE5LDkgKzExMjEs
MTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJl
SW5QaWN0dXJlKCkKIAogICAgIGlmIChtX2VudGVyRnVsbHNjcmVlbk5lZWRzRW50ZXJQaWN0dXJl
SW5QaWN0dXJlKQogICAgICAgICBkb0VudGVyRnVsbHNjcmVlbigpOwotICAgIGVsc2UgewotICAg
ICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CisgICAgZWxzZSBpZiAo
bV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsKKyAgICAgICAgV2ViQVZQaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXll
ckxheWVyVmlldyAqKVttX3BsYXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWaWV3XTsKKyAgICAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2Vi
QVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IGxheWVyXTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigoRmxvYXRTaXplKXBpcFBsYXllckxheWVy
LmZyYW1lLnNpemUpOwogICAgIH0KIAogICAgIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlID0g
ZmFsc2U7CkBAIC0xMTM2LDkgKzExMzksNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAgICAgaWYgKG1fY3VycmVu
dE1vZGUuaGFzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
LT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLQogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
KQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUlu
UGljdHVyZSgpOwogCkBAIC0xNDQ5LDggKzE0NDksMTUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZG9FbnRlckZ1bGxzY3JlZW4oKQogICAgIH0KICAgICBtX2VudGVyRnVs
bHNjcmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKIAotICAgIGlmIChtX2Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOworICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlcikgeworICAgICAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgaWYgKG1fY3VycmVudE1v
ZGUuaGFzUGljdHVyZUluUGljdHVyZSgpKSB7CisgICAgICAgICAgICBXZWJBVlBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXddOworICAgICAgICAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGlwUGxheWVyTGF5ZXIg
PSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IGxheWVyXTsKKyAgICAgICAgICAgIHNpemUg
PSBGbG9hdFNpemUocGlwUGxheWVyTGF5ZXIuZnJhbWUuc2l6ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbihzaXplKTsK
KyAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRXhpdEZ1
bGxzY3JlZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggNGZjZDlhMmVm
OTlmMDVhYjhkOGMzMjZhMDI2MjMwNDQ5MmI4OGM5ZC4uZjgzMWQ2Yjg0NDhhM2Q4NDRmMjRjOGI0
OGUwZmNiZWJmZDA5MDdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0y
OCwyMCArMjgsMjAgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkZy
YW1lVmlldy5oIgorI2ltcG9ydCAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudC5oIgorI2ltcG9ydCAiUmVuZGVyVmlkZW8uaCIKICNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgiCiAjaW1wb3J0
ICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1M
VmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZGVvLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0
TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAKQEAgLTEy
NCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVy
KCkgZmluYWw7CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAg
IHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxz
Y3JlZW4oKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBGbG9h
dFNpemUmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBG
dWxsc2NyZWVuKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRleCA4NWM3MGIyYmJiNTA0
N2VmOGVkZGE3NDI5NDY2NTlhNGIyN2UxN2NlLi45NGVmNTQwZmI1ZWQyM2E4YWJiN2QxZDZmNTJl
OTI0M2UwMzdiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KQEAgLTk1LDYgKzk1LDcgQEAgdXNp
bmcgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWw7CiAKIGVudW0gY2xhc3MgUElQU3RhdGUg
ewogICAgIE5vdEluUElQLAorICAgIEVudGVyaW5nUElQLAogICAgIEluUElQLAogICAgIEV4aXRp
bmdQSVAKIH07CkBAIC0yMTAsMTIgKzIxMSwxMiBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIAog
LSAodm9pZCllbnRlclBJUAogewotICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQ
KQorICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkVudGVyaW5nUElQIHx8IF9waXBTdGF0
ZSA9PSBQSVBTdGF0ZTo6SW5QSVApCiAgICAgICAgIHJldHVybjsKIAogICAgIFtfdmlkZW9WaWV3
Q29udGFpbmVyQ29udHJvbGxlciB2aWV3XS5sYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9y
R2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKTsKICAgICBbX3BpcFZpZXdDb250cm9sbGVy
IHByZXNlbnRWaWV3Q29udHJvbGxlckFzUGljdHVyZUluUGljdHVyZTpfdmlkZW9WaWV3Q29udGFp
bmVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkluUElQOwor
ICAgIF9waXBTdGF0ZSA9IFBJUFN0YXRlOjpFbnRlcmluZ1BJUDsKIH0KIAogLSAodm9pZClleGl0
UElQCkBAIC0yNDgsNyArMjQ5LDE5IEBAIGVudW0gY2xhc3MgUElQU3RhdGUgewogCiAgICAgQVNT
RVJUX1VOVVNFRCh2aWRlb1ZpZXdDb250YWluZXIsIHZpZGVvVmlld0NvbnRhaW5lciA9PSBfdmlk
ZW9WaWV3Q29udGFpbmVyKTsKIAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
ICYmIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkp
CisgICAgaWYgKCFfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoX3BpcFN0YXRlID09IFBJUFN0YXRlOjpFbnRlcmluZ1BJUCkgeworICAgICAg
ICBfcGlwU3RhdGUgPSBQSVBTdGF0ZTo6SW5QSVA7CisKKyAgICAgICAgLy8gRklYTUUocmRhcjov
L3Byb2JsZW0vNDIyNTA5NTIpCisgICAgICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQorICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+ZGlkRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCk7CisKKyAgICAgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCkpCisgICAgICAgICAgICBfdmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigpLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKFdlYkNvcmU6OkZsb2F0U2l6ZSlbX3ZpZGVvVmlld0NvbnRhaW5lciBib3Vu
ZHNdLnNpemUpOworICAgIH0gZWxzZSBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+
dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9W
aWV3Q29udGFpbmVyIGJvdW5kc10pOwogfQogCkBAIC00NTYsMTEgKzQ2OSw2IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4oKQogI2lmIEVOQUJMRShX
RUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICAgICAgW21fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlLT5wbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNldFBpY3R1cmVJblBpY3R1cmVB
Y3RpdmU6WUVTXTsKICNlbmRpZgotCi0gICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzQy
MjUwOTUyKTogTW92ZSB0aGlzIGNhbGwgaW50byBhIGNvbXBsZXRpb24gaGFuZGxlciBvciBkZWxl
Z2F0ZSBjYWxsYmFjay4KLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZGlkRW50ZXJQ
aWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikKLSAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxz
Y3JlZW4oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMjljZmYyMzFj
NjkzYzdiNTM2NjVmMTFhYzkxZWRmYzgwZmY1N2U1NS4uMDE5YmVkYzYxNjIzMzA4Y2I4MDIwZWZh
MTUyODlkMjE4Nzk2Yjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTEwNyw3ICsxMDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7
CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2V0dXBGdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBm
aW5hbDsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmKSBmaW5hbDsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZv
aWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2Ny
ZWVuKCkgZmluYWw7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNl
dHVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9p
ZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwog
ICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBk
aWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAg
ICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9HcmF2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCBkYzQzZWZmMmIz
ODQwZGRhYTI0YjY4NmM4ZTE0ZmQ0NzRhMWE4NTY3Li5hZmM5MDcxNzVkZjg1ZmZhYWI5NDgzZTNl
MjczYjBiYjE3OWE5YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0yNDQsMTAgKzI0
NCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2Ny
ZWVuKCkKICAgICAgICAgbV9tYW5hZ2VyLT5kaWRTZXR1cEZ1bGxzY3JlZW4obV9jb250ZXh0SWQp
OwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2Ny
ZWVuKCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChtX21hbmFnZXIp
Ci0gICAgICAgIG1fbWFuYWdlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKG1fY29udGV4dElkKTsKKyAg
ICAgICAgbV9tYW5hZ2VyLT5kaWRFbnRlckZ1bGxzY3JlZW4obV9jb250ZXh0SWQsIHNpemUpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEV4aXRGdWxsc2NyZWVu
KCkKQEAgLTU5OCw4ICs1OTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
c2V0VmlkZW9EaW1lbnNpb25zKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2Vu
dGF0aW9uTW9kZUVuYWJsZWQpIHsKLSAgICAgICAgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJ
ZCk7Ci0gICAgICAgIHNldFZpZGVvTGF5ZXJGcmFtZShjb250ZXh0SWQsIHswLCAwLCBtX21vY2tQ
aWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZS53aWR0aCgpLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJl
V2luZG93U2l6ZS5oZWlnaHQoKX0pOworICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4
dElkLCB7IG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLndpZHRoKCksIG1fbW9ja1Bp
Y3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLmhlaWdodCgpIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03NzQsOSArNzczLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAg
bV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4
dElkKSk7CisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0
SWQsIFdURjo6bnVsbG9wdCkpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElk
LCBzaXplKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKaW5kZXggZTgyM2QyMGM0ZDFiOTI0NGEyZWNlYmI5YzM5MWQ1YWYzNzAyZDU0My4uYjhj
NzE4ZTgxYWNmNzNlNmRiZDRlODhhMGQ2NDRmNWJlNTEwZTg3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHdpbGxFeGl0RnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRF
eGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwor
ICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKICAgICB2b2lkIGRpZENsZWFudXBG
dWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNl
dFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwg
V2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCk7CiAg
ICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbgppbmRleCAwNzZmZmY1Nzc2MWU1OTc0NGFjZWI4N2Q0ZGEzNjUxYzI1YWMwYjY3Li4zMjVi
M2NkMmY0NTkyZTQxYzRkZGQ4MTE4ZGIyYjZkODk2OGY1YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtMjksNyArMjksNyBAQCBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyIHsKICAgICBEaWRTZXR1cEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgV2lsbEV4aXRGdWxsc2NyZWVu
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAg
IERpZEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkKQotICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBEaWRFbnRlckZ1bGxzY3JlZW4o
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKICAgICBEaWRDbGVhbnVwRnVsbHNjcmVlbihX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBT
ZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNo
bWVudCBmZW5jZVBvcnQpCiAgICAgU2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCAwZmJjZjg2ZTljZGMzNGMwOWFkZjkxN2FiNjRmMDkxZjE1
ZGQ2NjZmLi5jYTIzNWM0OWM3MzcyYzNjZDg0MzZiMGRiZjNkNWVlNzZjMDQzM2E1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtMzQyLDcgKzM0Miw5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmCiAK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB7
Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5mdWxsc2NyZWVuTW9kZUNoYW5nZWQodmlkZW9G
dWxsc2NyZWVuTW9kZSk7CisgICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2Rl
bEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIG1vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5n
ZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9k
ZSh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQpCkBAIC00MjgsNyArNDMwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIK
ICAgICB9KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxz
Y3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQordm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+
IHNpemUpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKQEAgLTQ0MSw3
ICs0NDMsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICBpZiAoIXZpZGVvRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlkZW9FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2Ny
ZWVuRWxlbWVudCgpOworICAgIGlmIChzaXplKQorICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEVu
dGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZShzaXplLnZhbHVlKCkpOworICAgIGVsc2UK
KyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1
cmUoeyB9KTsKIAogICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigpKQogICAg
ICAgICByZXR1cm47CkBAIC00ODMsNyArNDg4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgog
ICAgIH0pOwogI2VuZGlmCiB9Ci0gICAgCisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CkBAIC01MDQs
NyArNTA5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmkKICAgICBtb2RlbC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIobmlsKTsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9F
bGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICh2aWRlb0VsZW1lbnQpCi0g
ICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAg
ICAgICAgdmlkZW9FbGVtZW50LT5kaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgp
OwogCiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3Jl
ZW5TdGFuZGJ5KGZhbHNlKTsKQEAgLTUxOCwxMiArNTIzLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKIH0K
LSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25l
ZCBncmF2aXR5KQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdy
YXZpdHkoKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAK
Kwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5s
aW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1Bh
Z2VWaXNpYmxlKQogewogICAgIGlmICghbV9wYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407552</attachid>
            <date>2020-08-29 14:39:45 -0700</date>
            <delta_ts>2020-08-31 12:26:47 -0700</delta_ts>
            <desc>WIP - fix an issue of picture-in-picture support on Mac</desc>
            <filename>bug-215972-20200829143944.patch</filename>
            <type>text/plain</type>
            <size>39545</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNjQyOTVjOWI1OWQyMDY4MDFkNzZhMWNiMDk2YTdh
MTg5MWJmOGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBmdW5jdGlvbnMg
YW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlz
cGxheWluZ0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
dG9QcmVzZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9QcmVzZW50YXRpb25Nb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxzY3Jl
ZW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVu
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10p
OgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgZW50
ZXJQSVBdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyBi
b3VuZHNEaWRDaGFuZ2VGb3JWaWRlb1ZpZXdDb250YWluZXI6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbik6CisKIDIwMjAt
MDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQg
bG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0aW9ucyBtYXkgZmFpbCBpbmRlZmluaXRl
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYjUzN2UxYjQ5ZWNjYjc0NTUyYWFhZGIwODA1Zjg5NTY5ODJkNzdkMy4u
NjljMWRjOWJiZmI4NDE4NmVlNDRjYTg3YWYwMDk0NTNlNmU5MDBhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMC0wOC0yOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgor
CisgICAgICAgIENsZWFudXAgZnVuY3Rpb25zIGFuZCBzdGF0ZSB2YXJpYWJsZXMgcmVsYXRlZCB0
byB0aGUgcGljdHVyZS1pbi1waWN0dXJlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5NzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZENsZWFudXBGdWxsc2NyZWVuKToKKwogMjAyMC0wOC0yNSAgTWVnYW4gR2FyZG5lciAgPG1l
Z2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeWluZyB0byBsb29rdXAgd2hlbiBX
ZWJWaWV3IGlzIGluIGEgcG9wb3ZlciBjYXVzZXMgcHJvY2VzcyB0byBoYW5nLiBGaXggZm9yIExl
Z2FjeSBXZWJWaWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggMTYwMzQ1YTVhYzIxOGIzNTM1ZDAyZjA3ZmVhZTZlYjZkN2VhMWRmOC4uY2RhZTRjNjUyY2Vj
NTMwMDAwMzRiNTEwYzhlODcwMWNhZGI0YTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NzgwLDcgKzU3ODAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9z
aXRpb24vc2l6ZSBiYWNrICpiZWZvcmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhl
cndpc2UsIHRoZSBleGl0IGZ1bGxzY3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0Lgog
ICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
ZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKICAgICB9CiB9CkBAIC01OTczLDcg
KzU5NzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiAKICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyaWx5QWxsb3dp
bmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1v
ZGUobW9kZSk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGFzVmlkZW8sIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKQEAgLTYwMjQsMTEgKzYwMjQsMTEgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAgaWYg
KGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCku
YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewotICAgICAgICBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBzZXRGdWxsc2NyZWVuTW9k
ZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewogICAg
ICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7Ci0gICAgICAgICAgICBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOwogICAgICAgICB9CiAKQEAg
LTYwNzUsMTEgKzYwNzUsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOwot
I2VuZGlmCiAKLSAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKKyAgICBpZiAob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCk7CiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkKICAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKICAg
ICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOgogICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkOgpAQCAtNjA5MSw2ICs2MDkwLDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlv
bklmUG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorI2Vsc2UKKyAgICBpZiAobV92aWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgc2V0
RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICNlbmRpZgogCiAg
ICAgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC02MTA2LDcgKzYx
MDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50
KCkKIHsKICAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpCi0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKIH0KIAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1MYXllcigp
IGNvbnN0CkBAIC02MTQ2LDcgKzYxNDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxF
eGl0RnVsbHNjcmVlbigpCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGlu
ZSgpCiB7CiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwotfTsKK30KIAogUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVsbHNj
cmVlbkxheWVyKCkKIHsKQEAgLTYxNjksNyArNjE3MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwg
V1RGCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JiBm
cmFtZSkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lID0gZnJhbWU7CiAgICAgaWYgKG1f
cGxheWVyKQpAQCAtNzkxNSwxMSArNzkxNywyNCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNo
b3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRG
dWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CisgICAgQVNTRVJUKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBtb2RlKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5N
b2RlID09IG1vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Cisj
aWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIHNjaGVkdWxlRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOworI2VuZGlmCisK
KyAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7CisK
KyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgaWYgKHBsYXllcigpKQor
ICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKKyNlbmRpZgor
ICAgIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1vZGU7CiAgICAgdmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpOwogICAgIHNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjk1ZWE3MGVlNzc2
ZDRkNTg5Y2M0MDViOTk0NDM1OTRiNmNlNTRhOS4uNDBhMDY4MWNjNDk1ZDYxYzU5NDUxMWE0MjBl
NDIzNmI1MTI0OGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAjaWZkZWYgX19PQkpDX18KICAgICBQbGF0Zm9ybUxh
eWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkdy
YXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CiAgICAgTWVkaWFQbGF5ZXI6OlZpZGVv
R3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5HcmF2aXR5OyB9CiAjZW5kaWYKQEAgLTQzMCw3ICs0MzAsNiBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlOwogICAgIFZp
ZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oVmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKQEAgLTYyNSw2ICs2MjQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
YWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ludGVyYWN0aXZl
Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKwogICAgIHZvaWQgd2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggYzc2MmMxNjJkOTcwOWIzMTFmZWEwMzQyOTI5M2IxZTcxZjU3OGFlMS4uZWI3ZDM2MmJkMWJh
ZDE5ZGM4N2VjNzhiOWNjZTEzMTg3ZmZkMmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC0zNTMsMTEgKzM1MywxMSBAQCBib29sIEhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Ondl
YmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5xdWlya3Mo
KS5uZWVkc0FrYW1haU1lZGlhUGxheWVyUXVpcmsoKnRoaXMpKQotICAgICAgICByZXR1cm4gaXNG
dWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZTsKKyAgICAgICAgcmV0
dXJuIGlzRnVsbHNjcmVlbigpIHx8IG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGU7CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyB0byByZXR1cm4gdHJ1ZSBhZnRlciB0aGUgdmlk
ZW8gZWxlbWVudCBoYXMgZW50ZXJlZAogICAgIC8vIGZ1bGxzY3JlZW4vcGljdHVyZS1pbi1waWN0
dXJlIHVudGlsIGl0IGhhcyBleGl0ZWQgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1cmUKLSAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlKTsKKyAg
ICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4oKSkg
fHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
IH0KIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4o
KQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoSFRNTFZpCiAgICAgcmV0dXJu
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJl
c2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkKK0hUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBIVE1MVmlkZW9F
bGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAgICAgICAgIHJldHVybiBIVE1MVmlk
ZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1bGxzY3JlZW47CkBAIC00NjksMzgg
KzQ2OSwzNyBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0
aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAogdm9pZCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQog
ewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIG1vZGUgPSAiLCAgbW9kZSk7Ci0gICAg
c2V0RnVsbHNjcmVlbk1vZGUodG9GdWxsc2NyZWVuTW9kZShtb2RlKSk7CisgICAgc2V0UHJlc2Vu
dGF0aW9uTW9kZShtb2RlKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgbW9kZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiLCBtb2RlID0g
IiwgbW9kZSk7Ci0KLSAgICBpZiAobV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSkKKyAgICBp
ZiAobV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8fCB0b1ByZXNlbnRhdGlvbk1vZGUo
ZnVsbHNjcmVlbk1vZGUoKSkgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKKworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAg
ICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRlb1ByZXNl
bnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgICAgICAgICAgbV9pc0VudGVy
aW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICAgICAgICAgIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOworICAgICAgICAgICAgbV9pc0NoYW5naW5n
VmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CiAgICAgICAgICAgICBleGl0RnVsbHNjcmVlbigp
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFT
ZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1bGxzY3JlZW4obW9k
ZSkpCisgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1
cHBvcnRzRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCisg
ICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCiAgICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUg
PSB0cnVlOwogCi0gICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBt
X2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKLSAgICAgICAgZW50ZXJGdWxsc2Ny
ZWVuKG1vZGUpOwotICAgIH0KKyAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0g
dHJ1ZTsKKyAgICBlbnRlckZ1bGxzY3JlZW4odmlkZW9GdWxsc2NyZWVuTW9kZSk7CiB9CiAKIGF1
dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0IC0+IFZp
ZGVvUHJlc2VudGF0aW9uTW9kZQpAQCAtNTA4LDMyICs1MDcsMjUgQEAgYXV0byBIVE1MVmlkZW9F
bGVtZW50Ojp3ZWJraXRQcmVzZW50YXRpb25Nb2RlKCkgY29uc3QgLT4gVmlkZW9QcmVzZW50YXRp
b25Nb2RlCiAgICAgcmV0dXJuIHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKTsK
IH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxz
Y3JlZW5PclBpY3R1cmVJblBpY3R1cmUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogewotICAgIGlm
IChtb2RlICE9IGZ1bGxzY3JlZW5Nb2RlKCkpIHsKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgImNoYW5nZWQgZnJvbSAiLCBmdWxsc2NyZWVuTW9kZSgpLCAiLCB0byAiLCBtb2RlKTsK
LSAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9ubW9k
ZWNoYW5nZWRFdmVudCk7Ci0gICAgICAgIHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9J
bmxpbmUobW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQ
aWN0dXJlSW5QaWN0dXJlKTsKKyAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0g
ZmFsc2U7CisgICAgaWYgKG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUpIHsK
KyAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IGZhbHNlOwor
I2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQorICAgICAgICBpZiAobV9waWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIpCisgICAgICAgICAgICBtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZl
ci0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKEludFNpemUoc2l6ZSkpOworI2Vsc2UKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHNpemUpOworI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKHBsYXllcigp
KQotICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKLQotICAg
IEhUTUxNZWRpYUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKLX0KLQotdm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCi17Ci0gICAg
bV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IGZhbHNlOwotICAgIGlmIChtX2lzRW50ZXJp
bmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKQotICAgICAgICBtX2lzV2FpdGluZ0ZvclBpY3R1
cmVJblBpY3R1cmVXaW5kb3dGcmFtZSA9IHRydWU7Ci0KICAgICBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6
OmRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIG1faXNDaGFuZ2lu
Z1ByZXNlbnRhdGlvbk1vZGUgPSBmYWxzZTsKKyAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlID0gZmFsc2U7CiAgICAgaWYgKG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBp
Y3R1cmUpIHsKICAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9
IGZhbHNlOwogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQpAQCAtNTQzLDE5ICs1
MzUsMTcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxl
bWVudCgpCiAgICAgfQogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNj
cmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYm
IEVOQUJMRShWSURFT19VU0VTX0VMRU1FTlRfRlVMTFNDUkVFTikKK3ZvaWQgSFRNTFZpZGVvRWxl
bWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogewotICAgIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKLQotICAgIGlmIChtX2lzV2FpdGlu
Z0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSkgewotICAgICAgICBtX2lzV2FpdGluZ0Zv
clBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSA9IGZhbHNlOwotICAgICAgICBtX2lzRW50ZXJp
bmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7Ci0jaWYgRU5BQkxFKFBJQ1RVUkVf
SU5fUElDVFVSRV9BUEkpCi0gICAgICAgIGlmIChtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlcikK
LSAgICAgICAgICAgIG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyLT5kaWRFbnRlclBpY3R1cmVJ
blBpY3R1cmUoSW50U2l6ZShmcmFtZS5zaXplKCkpKTsKKyAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1
bGxzY3JlZW5Nb2RlID0gZmFsc2U7CisgICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKTsKK30KICNlbmRpZgotICAgICAgICByZXR1cm47Ci0gICAgfQorCit2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0
UmVjdCYgZnJhbWUpCit7CisgICAgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUoZnJhbWUpOwogCiAgICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9k
ZSgpKSAhPSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggN2ZhNmY1
OTA4YTNkZmRhY2ZjNjEwNWQ4OWY4MGVmNmI1OGNiNWFlMy4uMGNiYTA0Y2RhYjU5MWFhMTA3MzI1
OTY0YmM1OWQ2YjYxNDA4MjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKQEAgLTgzLDE1ICs4MywyMSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiAgICAgZW51bSBjbGFzcyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgeyBJbmxp
bmUsIEZ1bGxzY3JlZW4sIFBpY3R1cmVJblBpY3R1cmV9OworICAgIHN0YXRpYyBWaWRlb1ByZXNl
bnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3ZWJraXRTdXBwb3J0
c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKSBjb25zdDsKLSAgICB2b2lk
IHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKICAgICBW
aWRlb1ByZXNlbnRhdGlvbk1vZGUgd2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZSk7Ci0gICAgdm9pZCBm
dWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9p
ZCB3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRp
b25Nb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbk9yUGlj
dHVyZUluUGljdHVyZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpICYmIEVOQUJMRShWSURFT19VU0VTX0VMRU1FTlRfRlVMTFNDUkVFTikKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgp
IGZpbmFsOwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5h
bDsKKyNlbmRpZgorCisgICAgLy8gSFRNTE1lZGlhRWxlbWVudAorICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAKICNpZiBFTkFCTEUoUElD
VFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2b2lkIHNldFBpY3R1cmVJblBpY3R1cmVPYnNlcnZl
cihQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIqKTsKQEAgLTEzMywxMSArMTM5LDEwIEBAIHByaXZh
dGU6CiAKICAgICB1bnNpZ25lZCBtX2xhc3RSZXBvcnRlZFZpZGVvV2lkdGggeyAwIH07CiAgICAg
dW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRlb0hlaWdodCB7IDAgfTsKLSAgICBib29sIG1faXND
aGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0NoYW5naW5n
VmlkZW9GdWxsc2NyZWVuTW9kZSB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiAgICAgYm9vbCBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0
dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdp
bmRvd0ZyYW1lIHsgZmFsc2UgfTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElD
VFVSRV9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGYyYjNkODdk
NGI0OGI1MTFlM2JlZWFmYmQyZDkzNzA4ODQ5OWRjNzguLjZlMzYyZGU4MTg3ZWFjYjg3YTA0NGVk
NTVjN2M3ODYxNTFiOGZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBA
IC0zMjUsOSArMzI1LDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6
dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpCiAKICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8
SFRNTFZpZGVvRWxlbWVudD4oKm1fbWVkaWFFbGVtZW50KTsKICAgICBpZiAoZWxlbWVudC5mdWxs
c2NyZWVuTW9kZSgpID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlKQotICAgICAgICBlbGVtZW50LnNldEZ1bGxzY3JlZW5Nb2RlKE1lZGlhUGxh
eWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgZWxlbWVudC5zZXRQ
cmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6
SW5saW5lKTsKICAgICBlbHNlCi0gICAgICAgIGVsZW1lbnQuc2V0RnVsbHNjcmVlbk1vZGUoTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAg
ICAgICBlbGVtZW50LnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCBiMTNkMTliM2U1Y2NmMWY2ZDdkMjYzYzJlMzBmN2U3Zjhm
ZDhlODQzLi41NGVlZjM5OThiOGMyMGFiMzVhYWI4NjdmYzQxMzhkMDExZDQzZDgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJldHVyblZpZGVvQ29udGVudExheWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZXR1
cEZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IEZsb2F0U2l6
ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tCmluZGV4IDNhZDY5YjdlNzQzY2VhMTgxZDRjZmZjNThiZjJkMmJlNzg2NjQ3NDYuLmI3NGY0
ZWI3OWNhYTI3ZDMxYTk5MzgxZjY5ODJjY2FlY2U4ZDZiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCkBAIC0xNTIsOCArMTUyLDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihXVEY6OkZ1bmN0
aW8KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxz
Y3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
LCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBt
X3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2RlKQotICAgICAgICBtX3ZpZGVv
RWxlbWVudC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50
KQorICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9F
bGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUobW9kZSkpOwogCiAgICAgaWYgKG1fdmlkZW9FbGVt
ZW50ICYmIGZpbmlzaGVkV2l0aE1lZGlhICYmIG1vZGUgPT0gTWVkaWFQbGF5ZXI6OlZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRWxlbWVudC0+ZG9jdW1lbnQo
KS5pc01lZGlhRG9jdW1lbnQoKSkgewpAQCAtMTkxLDcgKzE5MSw3IEBAIGNvbnN0IEF0b21TdHJp
bmcmIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwoKQogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKQogewogICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAgICAgICAg
bV92aWRlb0VsZW1lbnQtPnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6dG9Q
cmVzZW50YXRpb25Nb2RlKHZpZGVvRnVsbHNjcmVlbk1vZGUpKTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENv
bnRleHRVSUQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSb3V0ZVNoYXJpbmdQb2xpY3ksIFN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggOGU2
ZDM2Yjc4Yjg5YjZkNzAzZThiZmIyODVlYzY5YTFkNTNmNmY0Mi4uODQwZDU4OTg5MjU0MWQxZTAx
ZTc2N2U2Y2IzYzk5ZDk0M2U1NmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMTk2
LDYgKzE5Niw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1
bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3JlCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSwgbnVsbGFibGUpIE5TRGljdGlvbmFyeSAqcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOwog
QHByb3BlcnR5IENHU2l6ZSB2aWRlb0RpbWVuc2lvbnM7CiBAcHJvcGVydHkgQ0dSZWN0IG1vZGVs
VmlkZW9MYXllckZyYW1lOworQHByb3BlcnR5IEJPT0wgaXNQaWN0dXJlSW5QaWN0dXJlOwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZQbGF5ZXJMYXllciB7CkBAIC0yODMsNyArMjg0LDcg
QEAgc3RhdGljIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJl
YXNvbiBjb252ZXJ0VG9FeGl0RnVsbFNjcmUKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogCi0gICAgaWYgKFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGlzRXF1YWxU
b1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCisgICAgaWYgKHNlbGYuaXNQaWN0dXJlSW5QaWN0
dXJlIHx8IFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZp
ZGVvR3Jhdml0eV0pCiAgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsKICAg
ICBlbHNlIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBpc0VxdWFsVG9TdHJp
bmc6c2VsZi52aWRlb0dyYXZpdHldKQogICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gbGFyZ2Vz
dFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91
bmRzKTsKQEAgLTQ3OSw2ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBXZWJBVlBsYXllckxheWVyVmll
d19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVgogICAgIFtw
aXBQbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6cGxheWVyTGF5ZXIudmlkZW9EaW1lbnNp
b25zXTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OnBsYXllckxheWVyLnZp
ZGVvR3Jhdml0eV07CiAgICAgW3BpcFBsYXllckxheWVyIHNldE1vZGVsVmlkZW9MYXllckZyYW1l
OnBsYXllckxheWVyLm1vZGVsVmlkZW9MYXllckZyYW1lXTsKKyAgICBbcGlwUGxheWVyTGF5ZXIg
c2V0SXNQaWN0dXJlSW5QaWN0dXJlOllFU107CiAgICAgW3BpcFBsYXllckxheWVyIHNldFBsYXll
ckNvbnRyb2xsZXI6cGxheWVyTGF5ZXIucGxheWVyQ29udHJvbGxlcl07CiAgICAgW3BpcFBsYXll
ckxheWVyIHNldEZ1bGxzY3JlZW5JbnRlcmZhY2U6cGxheWVyTGF5ZXIuZnVsbHNjcmVlbkludGVy
ZmFjZV07CiAgICAgW3BpcFZpZXcgYWRkU3VidmlldzpwbGF5ZXJMYXllclZpZXcudmlkZW9WaWV3
XTsKQEAgLTExMTksOSArMTEyMSwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpkaWRTdGFydFBpY3R1cmVJblBpY3R1cmUoKQogCiAgICAgaWYgKG1fZW50ZXJGdWxsc2Ny
ZWVuTmVlZHNFbnRlclBpY3R1cmVJblBpY3R1cmUpCiAgICAgICAgIGRvRW50ZXJGdWxsc2NyZWVu
KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikK
LSAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3Jl
ZW4oKTsKKyAgICBlbHNlIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgeworICAgICAg
ICBXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKnBpcFZpZXcgPSAoV2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW21fcGxheWVyTGF5ZXJWaWV3IHBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXddOworICAgICAgICBXZWJBVlBsYXllckxheWVyICpw
aXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOworICAg
ICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKChGbG9h
dFNpemUpcGlwUGxheWVyTGF5ZXIuZnJhbWUuc2l6ZSk7CiAgICAgfQogCiAgICAgbV9lbnRlcmlu
Z1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKQEAgLTExMzYsOSArMTEzOSw2IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJl
KCkKICAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwotCiAgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZh
aWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAKQEAgLTE0NDksOCArMTQ0OSwxNSBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbigpCiAg
ICAgfQogICAgIG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFeGl0UGljdHVyZUluUGljdHVyZSA9IGZh
bHNlOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CisgICAgaWYgKG1f
ZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKSB7CisgICAgICAgIEZsb2F0U2l6ZSBzaXplOworICAg
ICAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNQaWN0dXJlSW5QaWN0dXJlKCkpIHsKKyAgICAgICAg
ICAgIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IChXZWJB
VlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9wbGF5ZXJMYXllclZpZXcgcGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgICAgICAgICBXZWJBVlBsYXllckxh
eWVyICpwaXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJd
OworICAgICAgICAgICAgc2l6ZSA9IEZsb2F0U2l6ZShwaXBQbGF5ZXJMYXllci5mcmFtZS5zaXpl
KTsKKyAgICAgICAgfQorICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50
ZXJGdWxsc2NyZWVuKHNpemUpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbQppbmRleCA0ZmNkOWEyZWY5OWYwNWFiOGQ4YzMyNmEwMjYyMzA0NDkyYjg4YzlkLi5mODMx
ZDZiODQ0OGEzZDg0NGYyNGM4YjQ4ZTBmY2JlYmZkMDkwN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQVZLaXQubW0KQEAgLTI4LDIwICsyOCwyMCBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAorI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJIVE1MVmlkZW9FbGVtZW50
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNlbGVjdGlvbk9wdGlvbi5o
IgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgiCisjaW1wb3J0ICJSZW5kZXJWaWRlby5o
IgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgiCiAj
aW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIgorI2ltcG9ydCAiV2Vi
Q29yZVRocmVhZFJ1bi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uLmg+CiAj
aW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVu
ZGVyVmlkZW8uaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2ltcG9y
dCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0
ekNvcmVTUEkuaD4KIApAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIHJldHVyblZpZGVvQ29udGVu
dExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRW50ZXJG
dWxsc2NyZWVuKGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbEV4aXRG
dWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1t
CmluZGV4IDg1YzcwYjJiYmI1MDQ3ZWY4ZWRkYTc0Mjk0NjY1OWE0YjI3ZTE3Y2UuLmY0NDYxZGQ3
ZTg5ZjQxZjczYjdkNjZiMDc1NWQ1ZGQ3YTg3MWQwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQpA
QCAtOTUsNiArOTUsNyBAQCB1c2luZyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbDsKIAog
ZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAgTm90SW5QSVAsCisgICAgRW50ZXJpbmdQSVAsCiAg
ICAgSW5QSVAsCiAgICAgRXhpdGluZ1BJUAogfTsKQEAgLTIxMCwxMiArMjExLDEyIEBAIGVudW0g
Y2xhc3MgUElQU3RhdGUgewogCiAtICh2b2lkKWVudGVyUElQCiB7Ci0gICAgaWYgKF9waXBTdGF0
ZSA9PSBQSVBTdGF0ZTo6SW5QSVApCisgICAgaWYgKF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6RW50
ZXJpbmdQSVAgfHwgX3BpcFN0YXRlID09IFBJUFN0YXRlOjpJblBJUCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgW192aWRlb1ZpZXdDb250YWluZXJDb250cm9sbGVyIHZpZXddLmxheWVyLmJhY2tn
cm91bmRDb2xvciA9IENHQ29sb3JHZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQmxhY2spOwogICAg
IFtfcGlwVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyQXNQaWN0dXJlSW5QaWN0
dXJlOl92aWRlb1ZpZXdDb250YWluZXJDb250cm9sbGVyLmdldCgpXTsKLSAgICBfcGlwU3RhdGUg
PSBQSVBTdGF0ZTo6SW5QSVA7CisgICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkVudGVyaW5nUElQ
OwogfQogCiAtICh2b2lkKWV4aXRQSVAKQEAgLTI0OCw4ICsyNDksMjIgQEAgZW51bSBjbGFzcyBQ
SVBTdGF0ZSB7CiAKICAgICBBU1NFUlRfVU5VU0VEKHZpZGVvVmlld0NvbnRhaW5lciwgdmlkZW9W
aWV3Q29udGFpbmVyID09IF92aWRlb1ZpZXdDb250YWluZXIpOwogCi0gICAgaWYgKF92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMgJiYgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKSkKLSAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3
Q29udGFpbmVyIGJvdW5kc10pOworICAgIGlmICghX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
YykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6RW50
ZXJpbmdQSVApIHsKKyAgICAgICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkluUElQOworCisgICAg
ICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzQyMjUwOTUyKQorICAgICAgICBpZiAoYXV0byog
bW9kZWwgPSBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCgpKQorICAgICAgICAgICAgbW9kZWwtPmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOworCisg
ICAgICAgIGlmIChhdXRvKiBvYnNlcnZlciA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMt
PnZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCkpCisgICAgICAgICAgICBvYnNlcnZlci0+
ZGlkRW50ZXJGdWxsc2NyZWVuKChXZWJDb3JlOjpGbG9hdFNpemUpW192aWRlb1ZpZXdDb250YWlu
ZXIgYm91bmRzXS5zaXplKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byogbW9kZWwgPSBfdmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQorICAgICAgICBt
b2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5kc10pOwog
fQogCiAtICh2b2lkKXN1cGVydmlld0RpZENoYW5nZUZvclZpZGVvVmlld0NvbnRhaW5lcjooV2Vi
VmlkZW9WaWV3Q29udGFpbmVyICopdmlkZW9WaWV3Q29udGFpbmVyCkBAIC00NTYsMTEgKzQ3MSw2
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxzY3JlZW4oKQog
I2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICAgICAgW21fcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5QmFja0NvbnRyb2xzTWFuYWdlcigpIHNldFBpY3R1
cmVJblBpY3R1cmVBY3RpdmU6WUVTXTsKICNlbmRpZgotCi0gICAgICAgIC8vIEZJWE1FKHJkYXI6
Ly9wcm9ibGVtLzQyMjUwOTUyKTogTW92ZSB0aGlzIGNhbGwgaW50byBhIGNvbXBsZXRpb24gaGFu
ZGxlciBvciBkZWxlZ2F0ZSBjYWxsYmFjay4KLSAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgICAgIGlmIChtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcikKLSAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5k
aWRFbnRlckZ1bGxzY3JlZW4oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5k
ZXggMjljZmYyMzFjNjkzYzdiNTM2NjVmMTFhYzkxZWRmYzgwZmY1N2U1NS4uMDE5YmVkYzYxNjIz
MzA4Y2I4MDIwZWZhMTUyODlkMjE4Nzk2Yjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAg
LTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKCkgZmluYWw7CiAgICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwog
ICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1
bGxzY3JlZW4oKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmKSBmaW5hbDsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbigpIGZp
bmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZENs
ZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7
CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllcik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCk7CiAgICAgdm9pZCBzZXRWaWRlb0xh
eWVyR3Jhdml0eShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRl
eCBkYzQzZWZmMmIzODQwZGRhYTI0YjY4NmM4ZTE0ZmQ0NzRhMWE4NTY3Li5hZmM5MDcxNzVkZjg1
ZmZhYWI5NDgzZTNlMjczYjBiYjE3OWE5YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBA
IC0yNDQsMTAgKzI0NCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlk
U2V0dXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tYW5hZ2VyLT5kaWRTZXR1cEZ1bGxzY3JlZW4o
bV9jb250ZXh0SWQpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlk
RW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRF
bnRlckZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQogewogICAgIGlm
IChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKG1fY29u
dGV4dElkKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5kaWRFbnRlckZ1bGxzY3JlZW4obV9jb250ZXh0
SWQsIHNpemUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEV4
aXRGdWxsc2NyZWVuKCkKQEAgLTU5OCw4ICs1OTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgaWYgKG1fbW9j
a1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpIHsKLSAgICAgICAgZGlkRW50ZXJGdWxsc2Ny
ZWVuKGNvbnRleHRJZCk7Ci0gICAgICAgIHNldFZpZGVvTGF5ZXJGcmFtZShjb250ZXh0SWQsIHsw
LCAwLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZS53aWR0aCgpLCBtX21vY2tQaWN0
dXJlSW5QaWN0dXJlV2luZG93U2l6ZS5oZWlnaHQoKX0pOworICAgICAgICBkaWRFbnRlckZ1bGxz
Y3JlZW4oY29udGV4dElkLCB7IG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLndpZHRo
KCksIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLmhlaWdodCgpIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC03NzQsOSArNzczLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpCiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxz
Y3JlZW4oY29udGV4dElkKSk7CisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQsIFdURjo6bnVsbG9wdCkpOworICAgIGVsc2UKKyAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3Jl
ZW4oY29udGV4dElkLCBzaXplKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZTgyM2QyMGM0ZDFiOTI0NGEyZWNlYmI5YzM5MWQ1YWYz
NzAyZDU0My4uYjhjNzE4ZTgxYWNmNzNlNmRiZDRlODhhMGQ2NDRmNWJlNTEwZTg3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkU2V0
dXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lk
IHdpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+KTsKICAgICB2b2lk
IGRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZl
bmNlUG9ydCk7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIsIHVuc2lnbmVkIGdyYXZpdHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tZXNzYWdlcy5pbgppbmRleCAwNzZmZmY1Nzc2MWU1OTc0NGFjZWI4N2Q0ZGEzNjUxYzI1
YWMwYjY3Li4zMjViM2NkMmY0NTkyZTQxYzRkZGQ4MTE4ZGIyYjZkODk2OGY1YzM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjksNyArMjksNyBAQCBtZXNzYWdlcyAt
PiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIHsKICAgICBEaWRTZXR1cEZ1bGxzY3JlZW4oV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgV2lsbEV4
aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQogICAgIERpZEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkKQotICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6
OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBEaWRFbnRl
ckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKICAgICBEaWRDbGVhbnVw
RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCkKICAgICBTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMs
IElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiAgICAgU2V0VmlkZW9MYXllckdyYXZpdHlFbnVt
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNp
Z25lZCBncmF2aXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCAwZmJjZjg2ZTljZGMzNGMwOWFkZjkx
N2FiNjRmMDkxZjE1ZGQ2NjZmLi5jYTIzNWM0OWM3MzcyYzNjZDg0MzZiMGRiZjNkNWVlNzZjMDQz
M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMzQyLDcgKzM0Miw5IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVD
aGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNj
cmVlbk1vZGUpCiB7Ci0gICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgYXV0byBbbW9kZWwsIGludGVyZmFjZV0g
PSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOworICAgIG1vZGVsLT5mdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgaW50ZXJmYWNlLT5zZXRG
dWxsc2NyZWVuTW9kZSh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCkBAIC00MjgsNyArNDMwLDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIKICAgICB9KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBPcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFNpemU+IHNpemUpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7
CiAKQEAgLTQ0MSw3ICs0NDMsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICBpZiAo
IXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlkZW9FbGVtZW50LT5kaWRC
ZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOworICAgIGlmIChzaXplKQorICAgICAgICB2aWRlb0Vs
ZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZShzaXplLnZhbHVlKCkp
OworICAgIGVsc2UKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBp
Y3R1cmVJblBpY3R1cmUoeyB9KTsKIAogICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElzRnVsbHNj
cmVlbigpKQogICAgICAgICByZXR1cm47CkBAIC00ODMsNyArNDg4LDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllcgogICAgIH0pOwogI2VuZGlmCiB9Ci0gICAgCisKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJ
ZCk7CkBAIC01MDQsNyArNTA5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRD
bGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmkKICAgICBtb2Rl
bC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxl
bWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICh2aWRl
b0VsZW1lbnQpCi0gICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVs
ZW1lbnQoKTsKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVy
ZUluUGljdHVyZSgpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBpbnRlcmZhY2Ut
PnNldEZ1bGxzY3JlZW5TdGFuZGJ5KGZhbHNlKTsKQEAgLTUxOCwxMiArNTIzLDEyIEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpCiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5lbnRlclZpZGVv
RnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBtb2RlLCBzdGFuZGJ5KTsK
ICAgICB9KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRl
b0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkLCB1bnNpZ25lZCBncmF2aXR5KQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0
VmlkZW9MYXllckdyYXZpdHkoKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSlncmF2aXR5
KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuV2ls
bFJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogewogICAgIGlmICghbV9wYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407615</attachid>
            <date>2020-08-31 12:26:48 -0700</date>
            <delta_ts>2020-09-02 00:06:52 -0700</delta_ts>
            <desc>WIP - add changelogs</desc>
            <filename>bug-215972-20200831122648.patch</filename>
            <type>text/plain</type>
            <size>42640</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uYjEzOWI1YzIwNmIxOTExYjVlNDc3NzM5MjljZjky
N2EwMTliYjY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIwLTA4LTI4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cCBmdW5jdGlvbnMg
YW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIHJlbGF0ZWQg
dG8gY2hhbmdpbmcgdmlkZW8gcHJlc2VudGF0aW9uIG1vZGUKKyAgICAgICAgaW4gSFRNTFZpZGVv
RWxlbWVudCBhbmQgSFRNTE1lZGlhRWxlbWVudC4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNo
IHNpbXBsaWZpZXMgdGhlIHByb2Nlc3Mgb2YgZW50ZXJpbmcgdGhlIHBpY3R1cmUtaW4tcGljdHVy
ZSBtb2RlLgorICAgICAgICBUaGUgWFBDIG1lc3NhZ2UgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpEaWRFbnRlckZ1bGxzY3JlZW4gZnJvbSB0aGUgVUkgcHJvY2VzcworICAgICAgICB3aWxs
IHByb3ZpZGUgdGhlIHBpY3R1cmUtaW4tcGljdHVyZSB3aW5kb3cgc2l6ZSBpZiB0aGUgdmlkZW8g
aXMgZW50ZXJpbmcgcGljdHVyZS1pbi1waWN0dXJlLAorICAgICAgICBzbyB0aGF0IHdlIGNhbiBn
ZXQgcmlkIG9mIHRoZSBpbnRlcm1lZGlhdGUgc3RhdGUgKHdhaXRpbmcgZm9yIHRoZSBpbml0aWFs
IHBpY3R1cmUtaW4tcGljdHVyZQorICAgICAgICB3aW5kb3cgZnJhbWUpLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KToKKyAgICAgICAgU2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklubGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3Jl
ZW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRGdWxsc2Ny
ZWVuTW9kZSk6CisgICAgICAgIERlbGV0ZSBmdW5jdGlvbiBIVE1MVmlkZW9FbGVtZW50OjpmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoKSBhbmQgbW92ZSBpdHMgY29kZQorICAgICAgICB0byB0aGlzIGZ1
bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKTogRGVsZXRlZC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGUgY29u
c3QpOgorICAgICAgICBSZXBsYWNlIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCgpIHdpdGggYSBwcml2
YXRlIGZ1bmN0aW9uIHNldEZ1bGxzY3JlZW5Nb2RlKCkuCisgICAgICAgIENoYW5nZSAidm9pZCBz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIiB0byAidm9pZCBzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKSIuCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0
RGlzcGxheWluZ0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dDo6dG9QcmVzZW50YXRpb25Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1
cmVJblBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9QcmVzZW50YXRpb25Nb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldEZ1bGxz
Y3JlZW5Nb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxl
bWVudCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAg
ICAgIE9ubHkgSFRNTFZJZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uTW9kZSgpIGNhbiBiZSB1
c2VkIGJ5IG90aGVyIG1vZHVsZXMgKFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKKyAgICAgICAgb3Ig
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcikgdG8gY2hhbmdlIHRoZSB2aWRlbyBwcmVzZW50YXRpb24g
bW9kZS4KKyAgICAgICAgVGhpcyBwYXRjaCBkZWZpbmVzIGRpZmZlcmVudCBjYWxsYmFja3MgcmVn
YXJkaW5nIHRoZSBmdWxsc2NyZWVuIG1vZGUgY2hhbmdlIHRyYW5zaXRpb24KKyAgICAgICAgZm9y
IEZ1bGxzY3JlZW5NYW5hZ2VyIGFuZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLgorICAgICAgICAt
IGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50IGZvciBGdWxsc2NyZWVuTWFuYWdlci4KKyAgICAg
ICAgLSBkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUgYW5kIGRpZEV4aXRGdWxs
c2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlIGZvcgorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgbV9pc1dhaXRpbmdGb3JQaWN0dXJlSW5Q
aWN0dXJlV2luZG93RnJhbWUgYW5kIHJlbmFtZXMgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9k
ZQorICAgICAgICB0byBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlLgorCisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10p
OgorICAgICAgICAoV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgQWRkIGEgcHJvcGVydHkgaXNQaWN0dXJlSW5QaWN0dXJlIHRvIFdlYkFWUGxh
eWVyTGF5ZXIsIHdoaWNoIHdpbGwgc2V0IHRvIFlFUyBpZgorICAgICAgICBhIGxheWVyIGlzIGNy
ZWF0ZWQgZm9yIHBpY3R1cmUtaW4tcGljdHVyZS4KKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBpcyB1
c2VkIGluIC1bV2ViQVZQbGF5ZXJMYXllciBsYXlvdXRTdWJsYXllcnNdIHRvIHNraXAKKyAgICAg
ICAgdGhlIHVubmVjZXNzYXJ5IGNhbGN1bGF0aW9uIG9mICJ0YXJnZXRWaWRlb0ZyYW1lIiBiZWNh
dXNlIHRoZSBQaVAgd2luZG93IHdpbGwKKyAgICAgICAgYWx3YXlzIGhhdmUgdGhlIHNhbWUgYXNw
ZWN0IHJhdGlvIGFzIHRoZSB2aWRlbyBjb250ZW50LCBzbyB3ZSBjYW4gc2V0CisgICAgICAgICJ0
YXJnZXRWaWRlb0ZyYW1lIiB0byBiZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4gTW9yZW92ZXIs
IHRoZSBjYWxjdWxhdGlvbiBtYXkKKyAgICAgICAgbGVhZCB0byByb3VuZGluZyBlcnJvcnMgZm9y
IHNvbWUgbnVtYmVycyBhbmQgdGhlIGVycm9ycyBtYXkgdHJpZ2dlciB1bm5lY2Vzc2FyeQorICAg
ICAgICBwaWN0dXJlLWluLXBpY3R1cmUgd2luZG93IHJlc2l6ZSBldmVudHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAg
ICAgICBUaGlzIGZpbGUgaGFzIGJlZW4gbW92ZWQgdG8gV2ViQ29yZSBzbyB3ZSBkb24ndCBuZWVk
IHRvIGluY2x1ZGUgV2ViQ29yZSBoZWFkZXJzCisgICAgICAgIGluIGEgd2F5IGxpa2UgIiNpbmNs
dWRlIDxXZWJDb3JlL1hYWC5oPiIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWNPYmpDIGVudGVyUElQXSk6CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hY09iakMgYm91bmRzRGlkQ2hhbmdlRm9yVmlkZW9WaWV3Q29udGFpbmVyOl0pOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICBBZGQgUElQU3RhdGU6OkVudGVyaW5nUElQLiBOb3RpZnkgdGhlIG9i
c2VydmVyIHRoYXQgdGhlIHZpZGVvIGhhcyBlbnRlcmVkCisgICAgICAgIHBpY3R1cmUtaW4tcGlj
dHVyZSBhZnRlciB0aGUgUGlQIHdpbmRvdyBzaXplIGlzIGZpbmFsaXplZC4KKwogMjAyMC0wOC0y
NSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRm9udCBsb2Fk
cyBxdWlja2x5IGZvbGxvd2VkIGJ5IG5hdmlnYXRpb25zIG1heSBmYWlsIGluZGVmaW5pdGVseQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiNTM3ZTFiNDllY2NiNzQ1NTJhYWFkYjA4MDVmODk1Njk4MmQ3N2QzLi4wOTJi
Yjg3MDg2NGQ5ZmVjNmU4ZGM1MGVhNjI2ZDZkNGRjYzYwMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDIwLTA4LTI4ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ2xlYW51cCBmdW5jdGlvbnMgYW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRo
ZSBwaWN0dXJlLWluLXBpY3R1cmUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBvcHRpb25hbCBG
bG9hdFNpemUgcGFyYW1ldGVyIHRvIHRoZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRl
ckZ1bGxzY3JlZW4gbWVzc2FnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZCk6CisgICAgICAgIFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBmdWxsc2NyZWVuIG1vZGUg
aW4gdGhlIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQgaW5zdGFuY2UgYXMgd2VsbC4K
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51
cEZ1bGxzY3JlZW4pOgorICAgICAgICBDYWxsIGRpZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5Q
aWN0dXJlKCkgaW5zdGVhZCBvZiBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpLCB3aGlj
aAorICAgICAgICBpcyBmb3IgdGhlIEZ1bGxzY3JlZW5NYW5hZ2VyLgorCiAyMDIwLTA4LTI1ICBN
ZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5aW5n
IHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4gYSBwb3BvdmVyIGNhdXNlcyBwcm9jZXNzIHRv
IGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAxNjAzNDVhNWFjMjE4YjM1MzVkMDJmMDdmZWFlNmViNmQ3ZWEx
ZGY4Li5jNmYxN2I5NWQ4MzA5ZTdlNDVkYWZkMDZhNjE2MGQwNjFjMmU1MDAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU3ODAsNyArNTc4MCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgLy8g
dG8gY2hhbmdlIHRoZSBwb3NpdGlvbi9zaXplIGJhY2sgKmJlZm9yZSogZXhpdGluZyBmdWxsc2Ny
ZWVuLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIGV4aXQgZnVsbHNjcmVlbiBhbmltYXRpb24gd2ls
bCBiZSBpbmNvcnJlY3QuCiAgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgZXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpIHsKLSAg
ICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAg
ICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAg
ICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZpZGVvRnVsbHNjcmVl
bkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpOwogICAg
IH0KIH0KQEAgLTU5NzMsNyArNTk3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJG
dWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIAogICAgICAgICAgICAgICAgIG1f
dGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgbV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4gPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKKyAgICAgICAgICAgICAg
ICBzZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKICAgICAgICAgICAgICAgICBjb25maWd1cmVNZWRp
YUNvbnRyb2xzKCk7CiAKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoYXNWaWRlbywg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOwpAQCAtNjAy
NCwxMSArNjAyNCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkK
ICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCkgfHwgZG9jdW1lbnQoKS5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKSB7Ci0gICAgICAg
IGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAg
IHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9j
dW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01v
ZGVXaXRob3V0QW5pbWF0aW9uKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgVmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5wYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKG9sZFZpZGVvRnVsbHNj
cmVlbk1vZGUpKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpIHsKLSAg
ICAgICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7
CisgICAgICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7
CiAgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4o
KnRoaXMpLCBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUsIG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSk7
CiAgICAgICAgIH0KIApAQCAtNjA3NywyMCArNjA3NywxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiAgICAgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUgPSBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGU7CiAjZW5kaWYKIAotICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUg
IT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBzZXRGdWxsc2NyZWVuTW9k
ZShWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgc3dpdGNoIChvbGRWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKSB7Ci0gICAgY2FzZSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZToKLSAgICBjYXNl
IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDoKLSAgICAgICAgLy8gRG9uJ3QgbmVlZCB0byBk
byBhbnl0aGluZyBpZiB3ZSBhcmUgbm90IGluIGFueSBzcGVjaWFsIGZ1bGxzY3JlZW4gbW9kZSBv
ciBpdCdzIGFscmVhZHkKLSAgICAgICAgLy8gaW4gc3RhbmRhcmQgZnVsbHNjcmVlbiBtb2RlLgot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlOgotICAgICAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKQotICAgICAgICAg
ICAgZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2Rl
V2l0aG91dEFuaW1hdGlvbklmUG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGlmIChv
bGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0
dXJlICYmIGlzPEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlv
bklmUG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKTsKICNlbmRpZgogCiAgICAgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCk7CkBAIC02MTA2LDcgKzYwOTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJl
Y29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BC
ZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKIHsKICAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBW
aWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCi0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZChWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIH0KIAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxl
bWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CkBAIC02MTQ2LDcgKzYxMzgsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OndpbGxFeGl0RnVsbHNjcmVlbigpCiBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmlzVmlkZW9MYXllcklubGluZSgpCiB7CiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyOwotfTsKK30KIAogUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1l
bnQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkKIHsKQEAgLTYxNjksNyArNjE2MSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllciwgV1RGCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCBmcmFtZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJh
bWUoY29uc3QgRmxvYXRSZWN0JiBmcmFtZSkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1l
ID0gZnJhbWU7CiAgICAgaWYgKG1fcGxheWVyKQpAQCAtNzkxNSwxMSArNzkwNywyNCBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmlj
dGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1
bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1v
ZGUpCiB7CisgICAgQVNTRVJUKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBtb2RlKTsKICAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IG1vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZyb20gIiwgZnVsbHNjcmVlbk1vZGUo
KSwgIiwgdG8gIiwgbW9kZSk7CisjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQor
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFu
Z2VkRXZlbnQpOworI2VuZGlmCisKKyAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRv
SW5saW5lKG1vZGUgIT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
UGljdHVyZUluUGljdHVyZSk7CisKKyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
CisgICAgaWYgKHBsYXllcigpKQorICAgICAgICBwbGF5ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVu
TW9kZShtb2RlKTsKKyNlbmRpZgorCiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlID0gbW9kZTsK
ICAgICB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgc2NoZWR1bGVQbGF5YmFja0NvbnRy
b2xzTWFuYWdlclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA2OTVlYTcwZWU3NzZkNGQ1ODljYzQwNWI5OTQ0MzU5NGI2Y2U1NGE5Li40MGEwNjgxY2M0
OTVkNjFjNTk0NTExYTQyMGU0MjM2YjUxMjQ4YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICNpZmRlZiBfX09CSkNf
XwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KTsKICAgICBN
ZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSBjb25zdCB7
IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7IH0KICNlbmRpZgpAQCAtNDMwLDcgKzQz
MCw2IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGU7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVuTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsgfQotICAgIHZpcnR1YWwgdm9pZCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICB2b2lkIGVudGVy
RnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwpAQCAtNjI1LDYgKzYyNCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKICAgICBi
b29sIGlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHNl
dEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOworCiAgICAgdm9pZCB3aWxsQmVj
b21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTdG9wQmVpbmdG
dWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAppbmRleCBjNzYyYzE2MmQ5NzA5YjMxMWZlYTAzNDI5MjkzYjFlNzFmNTc4
YWUxLi5lYjdkMzYyYmQxYmFkMTlkYzg3ZWM3OGI5Y2NlMTMxODdmZmQyYTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM1MywxMSArMzUzLDExIEBAIGJv
b2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuKCkKIGJvb2wgSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQogewogICAgIGlmIChk
b2N1bWVudCgpLnF1aXJrcygpLm5lZWRzQWthbWFpTWVkaWFQbGF5ZXJRdWlyaygqdGhpcykpCi0g
ICAgICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKSB8fCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25N
b2RlOworICAgICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nVmlkZW9G
dWxsc2NyZWVuTW9kZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc3RhcnRzIHRvIHJldHVybiB0
cnVlIGFmdGVyIHRoZSB2aWRlbyBlbGVtZW50IGhhcyBlbnRlcmVkCiAgICAgLy8gZnVsbHNjcmVl
bi9waWN0dXJlLWluLXBpY3R1cmUgdW50aWwgaXQgaGFzIGV4aXRlZCBmdWxsc2NyZWVuL3BpY3R1
cmUtaW4tcGljdHVyZQotICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYgIXdhaXRpbmdUb0Vu
dGVyRnVsbHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ByZXNl
bnRhdGlvbk1vZGUpOworICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYgIXdhaXRpbmdUb0Vu
dGVyRnVsbHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ZpZGVv
RnVsbHNjcmVlbk1vZGUpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmFuY2VzdG9yV2ls
bEVudGVyRnVsbHNjcmVlbigpCkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIGlubGluZSBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdG9GdWxsc2NyZWVuTW9kZShI
VE1MVmkKICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlTm9uZTsKIH0KIAotc3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNl
bnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQorSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRp
b25Nb2RlIEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKICAgICAg
ICAgcmV0dXJuIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6RnVsbHNj
cmVlbjsKQEAgLTQ2OSwzOCArNDY5LDM3IEBAIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVu
dDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkCiB2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50
YXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiwgbW9kZSA9
ICIsICBtb2RlKTsKLSAgICBzZXRGdWxsc2NyZWVuTW9kZSh0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUp
KTsKKyAgICBzZXRQcmVzZW50YXRpb25Nb2RlKG1vZGUpOwogfQogCi12b2lkIEhUTUxWaWRlb0Vs
ZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25N
b2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQogewotICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICIsIG1vZGUgPSAiLCBtb2RlKTsKLQotICAgIGlmIChtX2lzQ2hhbmdpbmdQcmVzZW50
YXRpb25Nb2RlKQorICAgIGlmIChtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHx8IHRv
UHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBtb2RlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgeworICAgIFZp
ZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRvRnVsbHNjcmVlbk1vZGUo
bW9kZSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiwgdmlkZW9GdWxsc2NyZWVuTW9k
ZSA9ICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUpOworCisgICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1v
ZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKICAgICAgICAgaWYgKGlzRnVsbHNjcmVl
bigpKSB7CiAgICAgICAgICAgICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2Rl
KCkpID09IFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKICAgICAgICAg
ICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKIAot
ICAgICAgICAgICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IHRydWU7CisgICAgICAg
ICAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gdHJ1ZTsKICAgICAgICAgICAg
IGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1cHBv
cnRzRnVsbHNjcmVlbihtb2RlKSkKKyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5Q
ZXJtaXR0ZWQoKSB8fCAhc3VwcG9ydHNGdWxsc2NyZWVuKHZpZGVvRnVsbHNjcmVlbk1vZGUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGlj
dHVyZUluUGljdHVyZSkKKyAgICBpZiAodmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxz
Y3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkKICAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5n
UGljdHVyZUluUGljdHVyZSA9IHRydWU7CiAKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVuTW9k
ZSgpKSB7Ci0gICAgICAgIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOwotICAg
ICAgICBlbnRlckZ1bGxzY3JlZW4obW9kZSk7Ci0gICAgfQorICAgIG1faXNDaGFuZ2luZ1ZpZGVv
RnVsbHNjcmVlbk1vZGUgPSB0cnVlOworICAgIGVudGVyRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3Jl
ZW5Nb2RlKTsKIH0KIAogYXV0byBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRQcmVzZW50YXRpb25N
b2RlKCkgY29uc3QgLT4gVmlkZW9QcmVzZW50YXRpb25Nb2RlCkBAIC01MDgsMzIgKzUwNywyNSBA
QCBhdXRvIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdCAt
PiBWaWRlb1ByZXNlbnRhdGlvbk1vZGUKICAgICByZXR1cm4gdG9QcmVzZW50YXRpb25Nb2RlKGZ1
bGxzY3JlZW5Nb2RlKCkpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCit2b2lkIEhUTUxWaWRlb0VsZW1l
bnQ6OmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZShjb25zdCBGbG9hdFNpemUm
IHNpemUpCiB7Ci0gICAgaWYgKG1vZGUgIT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY2hhbmdlZCBmcm9tICIsIGZ1bGxzY3JlZW5Nb2RlKCks
ICIsIHRvICIsIG1vZGUpOwotICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJr
aXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZEV2ZW50KTsKLSAgICAgICAgc2V0UHJlcGFyZWRUb1Jl
dHVyblZpZGVvTGF5ZXJUb0lubGluZShtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgIG1faXNDaGFuZ2luZ1ZpZGVv
RnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsKKyAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGlj
dHVyZUluUGljdHVyZSkgeworICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5Q
aWN0dXJlID0gZmFsc2U7CisjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCisgICAg
ICAgIGlmIChtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlcikKKyAgICAgICAgICAgIG1fcGljdHVy
ZUluUGljdHVyZU9ic2VydmVyLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoSW50U2l6ZShzaXpl
KSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisjZW5kaWYKICAgICB9CiAK
LSAgICBpZiAocGxheWVyKCkpCi0gICAgICAgIHBsYXllcigpLT5zZXRWaWRlb0Z1bGxzY3JlZW5N
b2RlKG1vZGUpOwotCi0gICAgSFRNTE1lZGlhRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KG1vZGUpOwotfQotCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCkKLXsKLSAgICBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlID0gZmFsc2U7Ci0g
ICAgaWYgKG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUpCi0gICAgICAgIG1f
aXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lID0gdHJ1ZTsKLQogICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQordm9pZCBI
VE1MVmlkZW9FbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpCiB7
Ci0gICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IGZhbHNlOworICAgIG1faXNDaGFu
Z2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsKICAgICBpZiAobV9pc0VudGVyaW5nT3JF
eGl0aW5nUGljdHVyZUluUGljdHVyZSkgewogICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQ
aWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9B
UEkpCkBAIC01NDMsMTkgKzUzNSwxNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZFN0b3BC
ZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFKFZJREVPX1VTRVNfRUxFTUVOVF9GVUxMU0NSRUVOKQor
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiB7Ci0g
ICAgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwotCi0g
ICAgaWYgKG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lKSB7Ci0gICAg
ICAgIG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lID0gZmFsc2U7Ci0g
ICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKLSNp
ZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKLSAgICAgICAgaWYgKG1fcGljdHVyZUlu
UGljdHVyZU9ic2VydmVyKQotICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIt
PmRpZEVudGVyUGljdHVyZUluUGljdHVyZShJbnRTaXplKGZyYW1lLnNpemUoKSkpOworICAgIG1f
aXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsKKyAgICBIVE1MTWVkaWFFbGVt
ZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOworfQogI2VuZGlmCi0gICAgICAgIHJl
dHVybjsKLSAgICB9CisKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVu
RnJhbWUoY29uc3QgRmxvYXRSZWN0JiBmcmFtZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShmcmFtZSk7CiAKICAgICBpZiAodG9QcmVzZW50YXRpb25N
b2RlKGZ1bGxzY3JlZW5Nb2RlKCkpICE9IFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUlu
UGljdHVyZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaAppbmRleCA3ZmE2ZjU5MDhhM2RmZGFjZmM2MTA1ZDg5ZjgwZWY2YjU4Y2I1YWUzLi4wY2Jh
MDRjZGFiNTkxYWExMDczMjU5NjRiYzU5ZDZiNjE0MDgyMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtODMsMTUgKzgzLDIxIEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBlbnVtIGNsYXNzIFZpZGVvUHJlc2Vu
dGF0aW9uTW9kZSB7IElubGluZSwgRnVsbHNjcmVlbiwgUGljdHVyZUluUGljdHVyZX07CisgICAg
c3RhdGljIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUp
IGNvbnN0OwotICAgIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUpOwogICAgIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB3ZWJraXRQcmVzZW50YXRpb25N
b2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5N
b2RlKTsKLSAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBmaW5hbDsKKyAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50
YXRpb25Nb2RlKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJlc2VudGF0aW9uTW9k
ZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRW50
ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoKTsK
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFKFZJREVPX1VTRVNfRUxFTUVO
VF9GVUxMU0NSRUVOKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVl
bkVsZW1lbnQoKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0b3BCZWluZ0Z1
bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7Ci0gICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpIGZpbmFsOworI2VuZGlmCisKKyAgICAvLyBIVE1MTWVkaWFFbGVtZW50Cisg
ICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsK
IAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogICAgIHZvaWQgc2V0UGljdHVy
ZUluUGljdHVyZU9ic2VydmVyKFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlciopOwpAQCAtMTMzLDEx
ICsxMzksMTAgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlkZW9X
aWR0aCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xhc3RSZXBvcnRlZFZpZGVvSGVpZ2h0IHsgMCB9
OwotICAgIGJvb2wgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHsgZmFsc2UgfTsKIAogI2lmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKICAgICBib29sIG1faXNFbnRlcmluZ09yRXhp
dGluZ1BpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JQ
aWN0dXJlSW5QaWN0dXJlV2luZG93RnJhbWUgeyBmYWxzZSB9OwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
bW0KaW5kZXggZjJiM2Q4N2Q0YjQ4YjUxMWUzYmVlYWZiZDJkOTM3MDg4NDk5ZGM3OC4uNmUzNjJk
ZTgxODdlYWNiODdhMDQ0ZWQ1NWM3Yzc4NjE1MWI4ZmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW0KQEAgLTMyNSw5ICszMjUsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGF1dG8mIGVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbV9tZWRpYUVsZW1lbnQpOwogICAg
IGlmIChlbGVtZW50LmZ1bGxzY3JlZW5Nb2RlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCi0gICAgICAgIGVsZW1lbnQuc2V0RnVsbHNj
cmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAg
ICAgICBlbGVtZW50LnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpJbmxpbmUpOwogICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC5zZXRG
dWxsc2NyZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZSk7CisgICAgICAgIGVsZW1lbnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlk
ZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCmluZGV4IGIxM2QxOWIzZTVjY2YxZjZk
N2QyNjNjMmUzMGY3ZTdmOGZkOGU4NDMuLjU0ZWVmMzk5OGI4YzIwYWIzNWFhYjg2N2ZjNDEzOGQw
MTFkNDNkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3Jl
ZW4oY29uc3QgRmxvYXRTaXplJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1bGxz
Y3JlZW4oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggM2FkNjliN2U3NDNjZWExODFkNGNmZmM1OGJmMmQy
YmU3ODY2NDc0Ni4uYjc0ZjRlYjc5Y2FhMjdkMzFhOTkzODFmNjk4MmNjYWVjZThkNmJhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1Miw4ICsxNTIsOCBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxp
bmVUaGVuKFdURjo6RnVuY3RpbwogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7Ci0gICAgaWYgKG1f
dmlkZW9FbGVtZW50ICYmIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZSgpICE9IG1vZGUp
Ci0gICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKKyAgICBp
ZiAobV92aWRlb0VsZW1lbnQpCisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50YXRp
b25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShtb2RlKSk7CiAKICAg
ICBpZiAobV92aWRlb0VsZW1lbnQgJiYgZmluaXNoZWRXaXRoTWVkaWEgJiYgbW9kZSA9PSBNZWRp
YVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKICAgICAgICAgaWYgKG1fdmlkZW9F
bGVtZW50LT5kb2N1bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpKSB7CkBAIC0xOTEsNyArMTkxLDcg
QEAgY29uc3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2
ZW50TmFtZUFsbCgpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAg
ICAgICBtX3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVl
bk1vZGUpOworICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0UHJlc2VudGF0aW9uTW9kZShIVE1M
VmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUodmlkZW9GdWxsc2NyZWVuTW9kZSkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0Um91dGVT
aGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJvdXRlU2hh
cmluZ1BvbGljeSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbQppbmRleCA4ZTZkMzZiNzhiODliNmQ3MDNlOGJmYjI4NWVjNjlhMWQ1M2Y2ZjQyLi44
NDBkNTg5ODkyNTQxZDFlMDFlNzY3ZTZjYjNjOTlkOTQzZTU2ZGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFNjcmUKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNEaWN0aW9uYXJ5ICpwaXhlbEJ1
ZmZlckF0dHJpYnV0ZXM7CiBAcHJvcGVydHkgQ0dTaXplIHZpZGVvRGltZW5zaW9uczsKIEBwcm9w
ZXJ0eSBDR1JlY3QgbW9kZWxWaWRlb0xheWVyRnJhbWU7CitAcHJvcGVydHkgQk9PTCBpc1BpY3R1
cmVJblBpY3R1cmU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllckxheWVyIHsK
QEAgLTI4Myw3ICsyODQsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogICAgIGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemUgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAgICBpZiAoc2Vs
Zi5pc1BpY3R1cmVJblBpY3R1cmUgfHwgW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUgaXNFcXVh
bFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKICAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9
IHNlbGYuYm91bmRzOwogICAgIGVsc2UgaWYgKFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0IGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCiAgICAgICAgIHRhcmdldFZp
ZGVvRnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3Bl
Y3RSYXRpbywgc2VsZi5ib3VuZHMpOwpAQCAtNDc5LDYgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWCiAgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJM
YXllci52aWRlb0RpbWVuc2lvbnNdOwogICAgIFtwaXBQbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZp
dHk6cGxheWVyTGF5ZXIudmlkZW9HcmF2aXR5XTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0TW9k
ZWxWaWRlb0xheWVyRnJhbWU6cGxheWVyTGF5ZXIubW9kZWxWaWRlb0xheWVyRnJhbWVdOworICAg
IFtwaXBQbGF5ZXJMYXllciBzZXRJc1BpY3R1cmVJblBpY3R1cmU6WUVTXTsKICAgICBbcGlwUGxh
eWVyTGF5ZXIgc2V0UGxheWVyQ29udHJvbGxlcjpwbGF5ZXJMYXllci5wbGF5ZXJDb250cm9sbGVy
XTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0RnVsbHNjcmVlbkludGVyZmFjZTpwbGF5ZXJMYXll
ci5mdWxsc2NyZWVuSW50ZXJmYWNlXTsKICAgICBbcGlwVmlldyBhZGRTdWJ2aWV3OnBsYXllckxh
eWVyVmlldy52aWRlb1ZpZXddOwpAQCAtMTExOSw5ICsxMTIxLDEwIEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBp
ZiAobV9lbnRlckZ1bGxzY3JlZW5OZWVkc0VudGVyUGljdHVyZUluUGljdHVyZSkKICAgICAgICAg
ZG9FbnRlckZ1bGxzY3JlZW4oKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEVudGVyRnVsbHNjcmVlbigpOworICAgIGVsc2UgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyKSB7CisgICAgICAgIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAq
cGlwVmlldyA9IChXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9wbGF5
ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgICAgIFdl
YkFWUGxheWVyTGF5ZXIgKnBpcFBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGlw
VmlldyBsYXllcl07CisgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKEZsb2F0U2l6ZSlwaXBQbGF5ZXJMYXllci5mcmFtZS5zaXplKTsKICAgICB9
CiAKICAgICBtX2VudGVyaW5nUGljdHVyZUluUGljdHVyZSA9IGZhbHNlOwpAQCAtMTEzNiw5ICsx
MTM5LDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFy
dFBpY3R1cmVJblBpY3R1cmUoKQogICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KQotICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVu
KCk7Ci0KICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbC0+ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIApAQCAtMTQ0
OSw4ICsxNDQ5LDE1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvRW50
ZXJGdWxsc2NyZWVuKCkKICAgICB9CiAgICAgbV9lbnRlckZ1bGxzY3JlZW5OZWVkc0V4aXRQaWN0
dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAKLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3Jl
ZW4oKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsKKyAgICAgICAgRmxv
YXRTaXplIHNpemU7CisgICAgICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1
cmUoKSkgeworICAgICAgICAgICAgV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3
ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVttX3Bs
YXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3XTsKKyAgICAgICAg
ICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBpcFBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIg
KilbcGlwVmlldyBsYXllcl07CisgICAgICAgICAgICBzaXplID0gRmxvYXRTaXplKHBpcFBsYXll
ckxheWVyLmZyYW1lLnNpemUpOworICAgICAgICB9CisgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oc2l6ZSk7CisgICAgfQogfQogCiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb0V4aXRGdWxsc2NyZWVuKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDRmY2Q5YTJlZjk5ZjA1YWI4ZDhjMzI2YTAyNjIz
MDQ0OTJiODhjOWQuLmY4MzFkNmI4NDQ4YTNkODQ0ZjI0YzhiNDhlMGZjYmViZmQwOTA3ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMjgsMjAgKzI4LDIwIEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlh
U2VsZWN0aW9uT3B0aW9uLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5oIgogI2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCIKKyNpbXBv
cnQgIlJlbmRlclZpZGVvLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
LmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0Nv
cmVBbmltYXRpb24uaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJWaWRlby5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkUnVuLmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQg
cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIGRpZFNldHVwRnVsbHNj
cmVlbigpIGZpbmFsOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCkgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgRmxvYXRTaXplJikgZmluYWwgeyB9CiAg
ICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4aXRGdWxs
c2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWMubW0KaW5kZXggODVjNzBiMmJiYjUwNDdlZjhlZGRhNzQyOTQ2NjU5YTRi
MjdlMTdjZS4uZjQ0NjFkZDdlODlmNDFmNzNiN2Q2NmIwNzU1ZDVkZDdhODcxZDA5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLm1tCkBAIC05NSw2ICs5NSw3IEBAIHVzaW5nIFdlYkNvcmU6OlBsYXliYWNr
U2Vzc2lvbk1vZGVsOwogCiBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBOb3RJblBJUCwKKyAg
ICBFbnRlcmluZ1BJUCwKICAgICBJblBJUCwKICAgICBFeGl0aW5nUElQCiB9OwpAQCAtMjEwLDEy
ICsyMTEsMTIgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAKIC0gKHZvaWQpZW50ZXJQSVAKIHsK
LSAgICBpZiAoX3BpcFN0YXRlID09IFBJUFN0YXRlOjpJblBJUCkKKyAgICBpZiAoX3BpcFN0YXRl
ID09IFBJUFN0YXRlOjpFbnRlcmluZ1BJUCB8fCBfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQ
KQogICAgICAgICByZXR1cm47CiAKICAgICBbX3ZpZGVvVmlld0NvbnRhaW5lckNvbnRyb2xsZXIg
dmlld10ubGF5ZXIuYmFja2dyb3VuZENvbG9yID0gQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NH
Q29sb3JCbGFjayk7CiAgICAgW19waXBWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xs
ZXJBc1BpY3R1cmVJblBpY3R1cmU6X3ZpZGVvVmlld0NvbnRhaW5lckNvbnRyb2xsZXIuZ2V0KCld
OwotICAgIF9waXBTdGF0ZSA9IFBJUFN0YXRlOjpJblBJUDsKKyAgICBfcGlwU3RhdGUgPSBQSVBT
dGF0ZTo6RW50ZXJpbmdQSVA7CiB9CiAKIC0gKHZvaWQpZXhpdFBJUApAQCAtMjQ4LDggKzI0OSwy
MiBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIAogICAgIEFTU0VSVF9VTlVTRUQodmlkZW9WaWV3
Q29udGFpbmVyLCB2aWRlb1ZpZXdDb250YWluZXIgPT0gX3ZpZGVvVmlld0NvbnRhaW5lcik7CiAK
LSAgICBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQotICAgICAgICBfdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVy
RnJhbWUoW192aWRlb1ZpZXdDb250YWluZXIgYm91bmRzXSk7CisgICAgaWYgKCFfdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX3BpcFN0YXRl
ID09IFBJUFN0YXRlOjpFbnRlcmluZ1BJUCkgeworICAgICAgICBfcGlwU3RhdGUgPSBQSVBTdGF0
ZTo6SW5QSVA7CisKKyAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5NTIpCisg
ICAgICAgIGlmIChhdXRvKiBtb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgICAgICBtb2RlbC0+ZGlkRW50ZXJQaWN0dXJl
SW5QaWN0dXJlKCk7CisKKyAgICAgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIoKSkKKyAgICAg
ICAgICAgIG9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKFdlYkNvcmU6OkZsb2F0U2l6ZSlb
X3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdLnNpemUpOworICAgIH0KKworICAgIGlmIChhdXRv
KiBtb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCkpCisgICAgICAgIG1vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUoW192aWRlb1ZpZXdDb250
YWluZXIgYm91bmRzXSk7CiB9CiAKIC0gKHZvaWQpc3VwZXJ2aWV3RGlkQ2hhbmdlRm9yVmlkZW9W
aWV3Q29udGFpbmVyOihXZWJWaWRlb1ZpZXdDb250YWluZXIgKil2aWRlb1ZpZXdDb250YWluZXIK
QEAgLTQ1NiwxMSArNDcxLDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVu
dGVyRnVsbHNjcmVlbigpCiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VS
KQogICAgICAgICBbbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXlCYWNrQ29udHJvbHNN
YW5hZ2VyKCkgc2V0UGljdHVyZUluUGljdHVyZUFjdGl2ZTpZRVNdOwogI2VuZGlmCi0KLSAgICAg
ICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5NTIpOiBNb3ZlIHRoaXMgY2FsbCBpbnRv
IGEgY29tcGxldGlvbiBoYW5kbGVyIG9yIGRlbGVnYXRlIGNhbGxiYWNrLgotICAgICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICAgICAg
aWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgbV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaAppbmRleCAyOWNmZjIzMWM2OTNjN2I1MzY2NWYxMWFjOTFlZGZjODBmZjU3
ZTU1Li4wMTliZWRjNjE2MjMzMDhjYjgwMjBlZmExNTI4OWQyMTg3OTZiODlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIHJldHVyblZpZGVvQ29udGVu
dExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZvaWQgZGlkRW50ZXJGdWxs
c2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGZpbmFsOwogICAgIHZvaWQgd2lsbEV4
aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIGZpbmFs
OwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBmaW5hbDsKQEAgLTE4NSw3ICsxODUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxz
Y3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRW50
ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0KTsKICAg
ICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCmluZGV4IGRjNDNlZmYyYjM4NDBkZGFhMjRiNjg2YzhlMTRmZDQ3NGExYTg1
NjcuLmFmYzkwNzE3NWRmODVmZmFhYjk0ODNlM2UyNzNiMGJiMTc5YTljNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KQEAgLTI0NCwxMCArMjQ0LDEwIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogICAgICAgICBtX21hbmFnZXItPmRp
ZFNldHVwRnVsbHNjcmVlbihtX2NvbnRleHRJZCk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3JlZW4oKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHNpemUpCiB7CiAgICAgaWYgKG1fbWFuYWdlcikKLSAgICAgICAgbV9tYW5hZ2VyLT5kaWRFbnRl
ckZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOworICAgICAgICBtX21hbmFnZXItPmRpZEVudGVyRnVs
bHNjcmVlbihtX2NvbnRleHRJZCwgc2l6ZSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0Ojp3aWxsRXhpdEZ1bGxzY3JlZW4oKQpAQCAtNTk4LDggKzU5OCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0RpbWVuc2lvbnMoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50
ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
IHsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkgewotICAgICAg
ICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKTsKLSAgICAgICAgc2V0VmlkZW9MYXllckZy
YW1lKGNvbnRleHRJZCwgezAsIDAsIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLndp
ZHRoKCksIG1fbW9ja1BpY3R1cmVJblBpY3R1cmVXaW5kb3dTaXplLmhlaWdodCgpfSk7CisgICAg
ICAgIGRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIHsgbV9tb2NrUGljdHVyZUluUGljdHVy
ZVdpbmRvd1NpemUud2lkdGgoKSwgbV9tb2NrUGljdHVyZUluUGljdHVyZVdpbmRvd1NpemUuaGVp
Z2h0KCkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3NCw5ICs3NzMsMTIgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGkKICAgICBtX3BhZ2UtPmRpZEV4aXRGdWxsc2NyZWVuKCk7
CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQordm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
c2l6ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKKyAgICBpZiAoc2l6ZS5pc0VtcHR5
KCkpCisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCwgV1RGOjpudWxsb3B0KSk7CisgICAgZWxz
ZQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQsIHNpemUpKTsKICAgICBtX3BhZ2UtPmRpZEVu
dGVyRnVsbHNjcmVlbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlODIzZDIwYzRkMWI5MjQ0
YTJlY2ViYjljMzkxZDVhZjM3MDJkNTQzLi5iOGM3MThlODFhY2Y3M2U2ZGJkNGU4OGEwZDY0NGY1
YmU1MTBlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4pOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzLCBJ
UEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKICAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5
RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdW5zaWduZWQgZ3Jhdml0eSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDA3NmZmZjU3NzYxZTU5NzQ0
YWNlYjg3ZDRkYTM2NTFjMjVhYzBiNjcuLjMyNWIzY2QyZjQ1OTJlNDFjNGRkZDgxMThkYjJiNmQ4
OTY4ZjVjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsy
OSw3IEBAIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgewogICAgIERpZFNldHVw
RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCkKICAgICBXaWxsRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCi0gICAgRGlkRW50ZXJG
dWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQorICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBzaXpl
KQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6
RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKICAgICBTZXRWaWRl
b0xheWVyR3Jhdml0eUVudW0oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDBmYmNm
ODZlOWNkYzM0YzA5YWRmOTE3YWI2NGYwOTFmMTVkZDY2NmYuLmNhMjM1YzQ5YzczNzJjM2NkODQz
NmIwZGJmM2Q1ZWU3NmMwNDMzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0zNDIsNyArMzQyLDkg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWYKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKLSAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQp
LmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAgICBhdXRvIFtt
b2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7Cisg
ICAgbW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAg
ICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2RlKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKQEAgLTQyOCw3ICs0MzAs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogfQogCi12b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKIHsKICAgICBMT0coRnVsbHNjcmVl
biwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbiglcCwgJXgpIiwg
dGhpcywgY29udGV4dElkKTsKIApAQCAtNDQxLDcgKzQ0MywxMCBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllcgogICAgIGlmICghdmlkZW9FbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICB2
aWRlb0VsZW1lbnQtPmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAgaWYgKHNpemUp
CisgICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0
dXJlKHNpemUudmFsdWUoKSk7CisgICAgZWxzZQorICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEVu
dGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSh7IH0pOwogCiAgICAgaWYgKGludGVyZmFj
ZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Myw3ICs0ODgs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgfSk7CiAjZW5kaWYKIH0KLSAgICAKKwog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgTE9HKEZ1bGxzY3Jl
ZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgp
IiwgdGhpcywgY29udGV4dElkKTsKQEAgLTUwNCw3ICs1MDksNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwogICAgIFJl
ZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2RlbC0+dmlkZW9FbGVtZW50
KCk7CiAgICAgaWYgKHZpZGVvRWxlbWVudCkKLSAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRTdG9w
QmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEV4aXRG
dWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxz
Y3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
OwogICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlblN0YW5kYnkoZmFsc2UpOwpAQCAtNTE4LDEy
ICs1MjMsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmkKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRlb0VsZW1lbnQs
IG1vZGUsIHN0YW5kYnkpOwogICAgIH0pOwogfQotICAgIAorCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCiB7CiAgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5zZXRWaWRlb0xheWVyR3Jhdml0eSgoTWVkaWFQbGF5ZXJFbnVtczo6Vmlk
ZW9HcmF2aXR5KWdyYXZpdHkpOwogfQotICAgIAorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmZ1bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407745</attachid>
            <date>2020-09-02 00:06:54 -0700</date>
            <delta_ts>2020-09-02 12:17:01 -0700</delta_ts>
            <desc>WIP - revise the patch according to Darin&apos;s comments and fix some issues found in stress test</desc>
            <filename>bug-215972-20200902000653.patch</filename>
            <type>text/plain</type>
            <size>53867</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uOTQyMTgxOWE5NmRiYzFjOTZmNTNiNDc3YTRmODBl
NTRjNjA2ZmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAyMC0wOS0wMSAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIGZ1bmN0aW9u
cyBhbmQgc3RhdGUgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlIHBpY3R1cmUtaW4tcGljdHVyZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgcmVsYXRl
ZCB0byBjaGFuZ2luZyB2aWRlbyBwcmVzZW50YXRpb24gbW9kZQorICAgICAgICBpbiBIVE1MVmlk
ZW9FbGVtZW50IGFuZCBIVE1MTWVkaWFFbGVtZW50LiBJdCBjbGVhbnMgdXAgc29tZSBldmVudC1y
ZWxhdGVkIGNvZGUgYXMgd2VsbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc2ltcGxpZmll
cyB0aGUgcHJvY2VzcyBvZiBlbnRlcmluZyB0aGUgcGljdHVyZS1pbi1waWN0dXJlIG1vZGUuCisg
ICAgICAgIFRoZSBYUEMgbWVzc2FnZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkRpZEVu
dGVyRnVsbHNjcmVlbiBmcm9tIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHdpbGwgcHJvdmlkZSB0
aGUgcGljdHVyZS1pbi1waWN0dXJlIHdpbmRvdyBzaXplIGlmIHRoZSB2aWRlbyBpcyBlbnRlcmlu
ZyBwaWN0dXJlLWluLXBpY3R1cmUsCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGdldCByaWQgb2Yg
dGhlIGludGVybWVkaWF0ZSBzdGF0ZSAod2FpdGluZyBmb3IgdGhlIGluaXRpYWwgcGljdHVyZS1p
bi1waWN0dXJlCisgICAgICAgIHdpbmRvdyBmcmFtZSkuCisKKyAgICAgICAgV2l0aCB0aGlzIHBh
dGNoLCBhbGwgcHJlc2VudGF0aW9uIG1vZGUgY2hhbmdlIHJlcXVlc3RzIG5lZWQgdG8gZ28gdGhy
b3VnaCB0aGUgSFRNTFZpZGVvRWxlbWVudC4KKyAgICAgICAgTm9ybWFsbHksIHZpZGVvIHByZXNl
bnRhdGlvbiBtb2RlIGNoYW5nZSByZXF1ZXN0cyBjb21lIGZyb20gdGhlIHdlYiBwcm9jZXNzIHdo
ZXJlIGEgcGFnZQorICAgICAgICBjYWxscyB0aGUgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1
cmUgQVBJIG9yIGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgbW9kZXJuIG1lZGlhIGNvbnRyb2xz
LgorICAgICAgICBIb3dldmVyLCB0aHJvdWdoIGdlc3R1cmVzLCB0aGUgVUkgcHJvY2VzcyBtYXkg
cmVxdWVzdCB0byBjaGFuZ2UgdGhlIHByZXNlbnRhdGlvbiBtb2RlCisgICAgICAgIChlLmcuLCBm
cm9tIGZ1bGxzY3JlZW4gdG8gcGljdHVyZS1pbi1waWN0dXJlKS4gVGhlIHdlYiBwcm9jZXNzIHNp
ZGUgd2lsbCBiZSBsaWtlIGEgZHJ5IHJ1bgorICAgICAgICBiZWNhdXNlIHRoZSB0YXNrcyBpbiB0
aGUgVUkgcHJvY2VzcyBhcmUgbW9zdGx5IGNvbXBsZXRlZCBiZWZvcmUgdGhlIHdlYiBwcm9jZXNz
IHJlY2VpdmVzCisgICAgICAgIHRoZSByZXF1ZXN0LiBUaGUgbW90aXZhdGlvbiB0byBkbyB0aGF0
IGlzIHRvIGd1YXJhbnRlZSBjb3JyZWN0IGV2ZW50cyB0byBiZSBmaXJlZC4KKyAgICAgICAgQWxs
IHNjZW5hcmlvcyBzaGFyaW5nIHRoZSBzYW1lIGNvZGUgcGF0aCBhbHNvIGhlbHAgdXMgYXZvaWQg
cmVncmVzc2lvbnMgYmVjYXVzZSB3ZSBkb24ndAorICAgICAgICBoYXZlIGEgZ29vZCB3YXkgdG8g
Y3JlYXRlIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIHRoZSBzY2VuYXJpb3MgdGhhdCBwcmVzZW50YXRp
b24gbW9kZSBjaGFuZ2UKKyAgICAgICAgcmVxdWVzdHMgY29tZSBmcm9tIHRoZSBVSSBwcm9jZXNz
LgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
bnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhp
dEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Vmlk
ZW9GdWxsc2NyZWVuU3RhbmRieSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQpOgorICAgICAgICBTaW1wbGlmeSB0aGUgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3Rv
cEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6aXNWaWRlb0xheWVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKToKKyAgICAgICAgRGVsZXRlIGZ1bmN0aW9u
IEhUTUxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCgpIGFuZCBtb3ZlIGl0cyBj
b2RlCisgICAgICAgIHRvIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOiBEZWxldGVkLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpmdWxsc2NyZWVuTW9kZSBjb25zdCk6CisgICAgICAgIFJlcGxhY2UgZnVsbHNjcmVlbk1v
ZGVDaGFuZ2VkKCkgd2l0aCBhIHByaXZhdGUgZnVuY3Rpb24gc2V0RnVsbHNjcmVlbk1vZGUoKS4K
KyAgICAgICAgQ2hhbmdlICJ2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCki
IHRvICJ2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpIi4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25Nb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZEVudGVyRnVsbHNjcmVlbk9y
UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojpk
aWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlkZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b1ByZXNlbnRhdGlvbk1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZFN0b3BCZWlu
Z0Z1bGxzY3JlZW5FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaDoKKyAgICAgICAgT25seSBIVE1MVklkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25N
b2RlKCkgY2FuIGJlIHVzZWQgYnkgb3RoZXIgbW9kdWxlcyAoUGxheWJhY2tTZXNzaW9uTWFuYWdl
cgorICAgICAgICBvciBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKSB0byBjaGFuZ2UgdGhlIHZpZGVv
IHByZXNlbnRhdGlvbiBtb2RlLgorICAgICAgICBUaGlzIHBhdGNoIGRlZmluZXMgZGlmZmVyZW50
IGNhbGxiYWNrcyByZWdhcmRpbmcgdGhlIGZ1bGxzY3JlZW4gbW9kZSBjaGFuZ2UgdHJhbnNpdGlv
bgorICAgICAgICBmb3IgRnVsbHNjcmVlbk1hbmFnZXIgYW5kIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuCisgICAgICAgIC0gZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQgZm9yIEZ1bGxzY3JlZW5N
YW5hZ2VyLgorICAgICAgICAtIGRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSBh
bmQgZGlkRXhpdEZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUgZm9yCisgICAgICAgIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBtX2lzV2FpdGlu
Z0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSBhbmQgcmVuYW1lcyBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlCisgICAgICAgIHRvIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1v
ZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVuTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJMYXllciBj
YWxjdWxhdGVUYXJnZXRWaWRlb0ZyYW1lXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyTGF5ZXIg
bGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld19zdGFydFJv
dXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyk6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVy
ZSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFy
dFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRvU2V0dXApOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRv
RW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Ojp3aWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorICAgICAg
ICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdpbGxFbnRlclN0YW5kYnlGcm9t
UGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIEFkZCBhIHByb3BlcnR5IGlzUGlj
dHVyZUluUGljdHVyZSB0byBXZWJBVlBsYXllckxheWVyLCB3aGljaCB3aWxsIHNldCB0byBZRVMg
aWYKKyAgICAgICAgYSBsYXllciBpcyBjcmVhdGVkIGZvciBwaWN0dXJlLWluLXBpY3R1cmUuCisg
ICAgICAgIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBpbiAtW1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0
U3VibGF5ZXJzXSB0byBza2lwCisgICAgICAgIHRoZSB1bm5lY2Vzc2FyeSBjYWxjdWxhdGlvbiBv
ZiAidGFyZ2V0VmlkZW9GcmFtZSIgYmVjYXVzZSB0aGUgUGlQIHdpbmRvdyB3aWxsCisgICAgICAg
IGFsd2F5cyBoYXZlIHRoZSBzYW1lIGFzcGVjdCByYXRpbyBhcyB0aGUgdmlkZW8gY29udGVudCwg
c28gd2UgY2FuIHNldAorICAgICAgICAidGFyZ2V0VmlkZW9GcmFtZSIgdG8gYmUgdGhlIGJvdW5k
cyBvZiB0aGUgbGF5ZXIuIE1vcmVvdmVyLCB0aGUgY2FsY3VsYXRpb24gbWF5CisgICAgICAgIGxl
YWQgdG8gcm91bmRpbmcgZXJyb3JzIGZvciBzb21lIG51bWJlcnMgYW5kIHRoZSBlcnJvcnMgbWF5
IHRyaWdnZXIgdW5uZWNlc3NhcnkKKyAgICAgICAgcGljdHVyZS1pbi1waWN0dXJlIHdpbmRvdyBy
ZXNpemUgZXZlbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgVGhpcyBmaWxlIGhhcyBiZWVuIG1vdmVkIHRv
IFdlYkNvcmUgc28gd2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIFdlYkNvcmUgaGVhZGVycworICAg
ICAgICBpbiBhIHdheSBsaWtlICIjaW5jbHVkZSA8V2ViQ29yZS9YWFguaD4iLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbToKKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyBlbnRlclBJUF0pOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpDIGJvdW5kc0RpZENoYW5nZUZv
clZpZGVvVmlld0NvbnRhaW5lcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYzo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgQWRkIFBJUFN0YXRlOjpF
bnRlcmluZ1BJUC4gTm90aWZ5IHRoZSBvYnNlcnZlciB0aGF0IHRoZSB2aWRlbyBoYXMgZW50ZXJl
ZAorICAgICAgICBwaWN0dXJlLWluLXBpY3R1cmUgYWZ0ZXIgdGhlIFBpUCB3aW5kb3cgc2l6ZSBp
cyBmaW5hbGl6ZWQuCisKIDIwMjAtMDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZvbnQgbG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0aW9u
cyBtYXkgZmFpbCBpbmRlZmluaXRlbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjUzN2UxYjQ5ZWNjYjc0NTUyYWFh
ZGIwODA1Zjg5NTY5ODJkNzdkMy4uOTk3ODFiZDljZjJhNWRhZGJkYmM3NjM1ZDM2NjVmNzhiOWM0
MDkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wOS0wMSAgUGVuZyBMaXUgIDxw
ZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIGZ1bmN0aW9ucyBhbmQgc3Rh
dGUgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlIHBpY3R1cmUtaW4tcGljdHVyZSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1
OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGFuIG9wdGlvbmFsIEZsb2F0U2l6ZSBwYXJhbWV0ZXIgdG8gdGhlIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbiBtZXNzYWdlLgorICAgICAgICBB
bHNvLCBpdCBlbmFibGVzIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUgYW5kIGZ1bGxzY3JlZW4gZXZl
bnRzIHdoZW4gYSB2aWRlbyBlbGVtZW50IGVudGVycyBwaWN0dXJlLWluLXBpY3R1cmUKKyAgICAg
ICAgZnJvbSB0aGUgZnVsbHNjcmVlbiBtb2RlLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnN1cmVDbGllbnRGb3JDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1
bGxzY3JlZW5XaXRoSUQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgVXNlIGVuc3VyZUNs
aWVudEZvckNvbnRleHQoKSBpbnN0ZWFkIG9mIGFkZENsaWVudEZvckNvbnRleHQoKSBpbiBzZXR1
cEZ1bGxzY3JlZW5XaXRoSUQoKQorICAgICAgICB0byBhdm9pZCBsZWFraW5nIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0IGluc3RhbmNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAo
LVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0
dXJlXSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgV2UgbmVlZCB0byBjaGFuZ2UgdGhlIGZ1bGxzY3Jl
ZW4gbW9kZSBpbiB0aGUgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCBpbnN0YW5jZSBh
cyB3ZWxsLgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRl
ckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRDbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIENhbGwgZGlkRXhpdEZ1bGxzY3JlZW5PclBp
Y3R1cmVJblBpY3R1cmUoKSBpbnN0ZWFkIG9mIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50
KCksIHdoaWNoCisgICAgICAgIGlzIGZvciB0aGUgRnVsbHNjcmVlbk1hbmFnZXIuCisKIDIwMjAt
MDgtMjUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUcnlpbmcgdG8gbG9va3VwIHdoZW4gV2ViVmlldyBpcyBpbiBhIHBvcG92ZXIgY2F1c2VzIHBy
b2Nlc3MgdG8gaGFuZy4gRml4IGZvciBMZWdhY3kgV2ViVmlldy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDE2MDM0NWE1YWMyMThiMzUzNWQwMmYwN2ZlYWU2
ZWI2ZDdlYTFkZjguLjM1NWNkMTU3MWZlYWM1ODcwMmMwNjE0ZDE1Mzk0NWY3YTYzMDU0MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTc3OSw4ICs1Nzc5
LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkK
ICAgICAvLyBXZSBuZWVkIHRvIGZpcmUgdGhlIGVuZCBmdWxsc2NyZWVuIGV2ZW50IHRvIG5vdGlm
eSB0aGUgcGFnZQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9zaXRpb24vc2l6ZSBiYWNrICpiZWZv
cmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBleGl0IGZ1bGxz
Y3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0LgotICAgIGlmICghbV92aWRlb0Z1bGxz
Y3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2Via2l0ZW5kZnVs
bHNjcmVlbkV2ZW50KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgJiYgIW1f
d2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
d2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KSB7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93bmNhc3Q8
SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKICAgICB9CiB9CkBAIC01OTczLDExICs1OTczLDE4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVl
bk1vZGUgbW9kZSkKIAogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJpbHlBbGxvd2luZ0lubGlu
ZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV93YWl0
aW5nVG9FbnRlckZ1bGxzY3JlZW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZChtb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9sZE1vZGUgPSBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGU7CisgICAgICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7
CiAgICAgICAgICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogCiAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxs
c2NyZWVuRm9yVmlkZW9FbGVtZW50KGFzVmlkZW8sIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSwgbV92
aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKLSAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CisgICAgICAgICAgICAgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKQorICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJr
aXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob2xkTW9k
ZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgICAgICAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTYwMjQsMTUgKzYwMzEsMjMgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAgaWYgKGRv
Y3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCkuYWN0
aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewotICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShW
aWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihk
b3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25l
KTsKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5z
dXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewogICAgICAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7Ci0gICAgICAgICAgICBmdWxsc2NyZWVu
TW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAgc2V0RnVs
bHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAgZG9jdW1l
bnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlk
ZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSB7CisgICAgICAgICAgICAvLyBUaGUgZXhpdCBmdWxs
c2NyZWVuIHJlcXVlc3Qgd2lsbCBiZSBzZW50IGluIGRpc3BhdGNoRXZlbnQoKS4KKyAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpOworICAgICAgICBzZXRGdWxs
c2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIGRvY3VtZW50KCku
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSk7CiAgICAgfQogfQogCkBAIC02
MDY2LDcgKzYwODEsNyBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFZpZGVvRnVsbHNjcmVlblN0YW5kYnkoYm9vbCB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
LCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93
bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwg
bV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCku
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSk7CiB9CkBAIC02MDc3LDIwICs2
MDkyLDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCkKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgb2xk
VmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsKICNlbmRpZgogCi0g
ICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7Cisg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRh
cmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkKLSAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKLSAgICBjYXNlIFZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lOgotICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
OgotICAgICAgICAvLyBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGlmIHdlIGFyZSBub3QgaW4g
YW55IHNwZWNpYWwgZnVsbHNjcmVlbiBtb2RlIG9yIGl0J3MgYWxyZWFkeQotICAgICAgICAvLyBp
biBzdGFuZGFyZCBmdWxsc2NyZWVuIG1vZGUuCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU6Ci0gICAgICAgIGlmIChpczxIVE1MVmlk
ZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50
Pih0aGlzKS0+ZXhpdFRvRnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShv
bGRWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwotICAg
ICAgICBicmVhazsKLSAgICB9CisgICAgaWYgKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUgJiYgaXM8SFRNTFZpZGVvRWxlbWVudD4o
KnRoaXMpKQorICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykuZXhpdFRv
RnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogI2VuZGlmCiAKICAgICBFbGVt
ZW50Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKQEAgLTYxMDYsNyArNjExMyw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogewog
ICAgIGlmIChmdWxsc2NyZWVuTW9kZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkK
LSAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
KyAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogfQog
CiBQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QK
QEAgLTYxNDYsNyArNjE1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEV4aXRGdWxs
c2NyZWVuKCkKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5lKCkKIHsK
ICAgICByZXR1cm4gIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Ci19OworfQogCiBSZXRhaW5QdHI8
UGxhdGZvcm1MYXllcj4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5
ZXIoKQogewpAQCAtNjE2OSw3ICs2MTc2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBXVEYKICAg
ICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQog
ewogICAgIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUgPSBmcmFtZTsKICAgICBpZiAobV9wbGF5ZXIp
CkBAIC03OTE1LDEwICs3OTIyLDE5IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3Zl
cnJpZGVCYWNrZ3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV92
aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEZ1bGxzY3Jl
ZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAobV92aWRlb0Z1bGxz
Y3JlZW5Nb2RlID09IG1vZGUpCi0gICAgICAgIHJldHVybjsKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAiY2hhbmdlZCBmcm9tICIsIGZ1bGxzY3JlZW5Nb2RlKCksICIsIHRvICIsIG1vZGUp
OworI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS53ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZEV2ZW50KTsKKyNlbmRp
ZgorCisgICAgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShtb2RlICE9IEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUp
OworCisjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIGlmIChwbGF5ZXIo
KSkKKyAgICAgICAgcGxheWVyKCktPnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7CisjZW5k
aWYKIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1vZGU7CiAgICAgdmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2
OTVlYTcwZWU3NzZkNGQ1ODljYzQwNWI5OTQ0MzU5NGI2Y2U1NGE5Li40MGEwNjgxY2M0OTVkNjFj
NTk0NTExYTQyMGU0MjM2YjUxMjQ4YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICNpZmRlZiBfX09CSkNfXwogICAg
IFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc2V0VmlkZW9G
dWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KTsKICAgICBNZWRpYVBs
YXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7IH0KICNlbmRpZgpAQCAtNDMwLDcgKzQzMCw2IEBA
IHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGU7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVuTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsgfQotICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVu
TW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICB2b2lkIGVudGVyRnVsbHNj
cmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVudGVy
RnVsbHNjcmVlbigpIG92ZXJyaWRlOwpAQCAtNjI1LDYgKzYyNCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKICAgICBib29sIGlz
SW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHNldEZ1bGxz
Y3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOworCiAgICAgdm9pZCB3aWxsQmVjb21lRnVs
bHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTdG9wQmVpbmdGdWxsc2Ny
ZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAppbmRleCBjNzYyYzE2MmQ5NzA5YjMxMWZlYTAzNDI5MjkzYjFlNzFmNTc4YWUxLi44
ZGZhYmIzMjJjNDAwMGJhNjY5ODYxNTg4YzFiYWRjN2FkZjM5ODJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM1MywxMSArMzUzLDExIEBAIGJvb2wgSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuKCkKIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQogewogICAgIGlmIChkb2N1bWVu
dCgpLnF1aXJrcygpLm5lZWRzQWthbWFpTWVkaWFQbGF5ZXJRdWlyaygqdGhpcykpCi0gICAgICAg
IHJldHVybiBpc0Z1bGxzY3JlZW4oKSB8fCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25Nb2RlOwor
ICAgICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2Ny
ZWVuTW9kZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc3RhcnRzIHRvIHJldHVybiB0cnVlIGFm
dGVyIHRoZSB2aWRlbyBlbGVtZW50IGhhcyBlbnRlcmVkCiAgICAgLy8gZnVsbHNjcmVlbi9waWN0
dXJlLWluLXBpY3R1cmUgdW50aWwgaXQgaGFzIGV4aXRlZCBmdWxsc2NyZWVuL3BpY3R1cmUtaW4t
cGljdHVyZQotICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYgIXdhaXRpbmdUb0VudGVyRnVs
bHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlv
bk1vZGUpOworICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYgIXdhaXRpbmdUb0VudGVyRnVs
bHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNj
cmVlbk1vZGUpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmFuY2VzdG9yV2lsbEVudGVy
RnVsbHNjcmVlbigpCkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIGlubGluZSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdG9GdWxsc2NyZWVuTW9kZShIVE1MVmkK
ICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9u
ZTsKIH0KIAotc3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlv
bk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlKQorSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2Rl
IEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKICAgICAgICAgcmV0
dXJuIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6RnVsbHNjcmVlbjsK
QEAgLTQ2OSwzOCArNDY5LDM5IEBAIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6Vmlk
ZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkCiB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25N
b2RlIG1vZGUpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiwgbW9kZSA9ICIsICBt
b2RlKTsKLSAgICBzZXRGdWxsc2NyZWVuTW9kZSh0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpKTsKKyAg
ICBzZXRQcmVzZW50YXRpb25Nb2RlKG1vZGUpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6
OnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25Nb2RlKFZp
ZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQogewotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICIsIG1vZGUgPSAiLCBtb2RlKTsKLQotICAgIGlmIChtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25N
b2RlKQorICAgIGlmIChtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHx8IHRvUHJlc2Vu
dGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgeworICAgIGF1dG8gdmlk
ZW9GdWxsc2NyZWVuTW9kZSA9IHRvRnVsbHNjcmVlbk1vZGUobW9kZSk7CisgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUiwgIiwgdmlkZW9GdWxsc2NyZWVuTW9kZSA9ICIsIHZpZGVvRnVsbHNjcmVl
bk1vZGUpOworCisgICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpIHsKICAgICAgICAgaWYgKGlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAgICBp
ZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2RlKCkpID09IFZpZGVvUHJlc2VudGF0
aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgICAgICAgICBtX2lzRW50ZXJpbmdP
ckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2lzRXhp
dGluZ1BpY3R1cmVJblBpY3R1cmUgPSB0cnVlOwogCi0gICAgICAgICAgICBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1faXNDaGFuZ2luZ1ZpZGVvRnVs
bHNjcmVlbk1vZGUgPSB0cnVlOwogICAgICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1lZGlhU2Vzc2lvbigp
LmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAhc3VwcG9ydHNGdWxsc2NyZWVuKG1vZGUpKQorICAg
IGlmICghbWVkaWFTZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBwb3J0c0Z1
bGxzY3JlZW4odmlkZW9GdWxsc2NyZWVuTW9kZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQotICAgICAgICBt
X2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKKyAgICBpZiAodmlk
ZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkK
KyAgICAgICAgbV9pc0VudGVyaW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CisgICAgZWxzZSBp
ZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVy
ZSkKKyAgICAgICAgbV9pc0V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKIAotICAgIGlm
IChtb2RlICE9IGZ1bGxzY3JlZW5Nb2RlKCkpIHsKLSAgICAgICAgbV9pc0NoYW5naW5nUHJlc2Vu
dGF0aW9uTW9kZSA9IHRydWU7Ci0gICAgICAgIGVudGVyRnVsbHNjcmVlbihtb2RlKTsKLSAgICB9
CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CisgICAgZW50ZXJG
dWxsc2NyZWVuKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCiBhdXRvIEhUTUxWaWRlb0VsZW1l
bnQ6OndlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdCAtPiBWaWRlb1ByZXNlbnRhdGlvbk1v
ZGUKQEAgLTUwOCwzNCArNTA5LDMyIEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UHJl
c2VudGF0aW9uTW9kZSgpIGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAgIHJldHVy
biB0b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9k
ZSkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5Q
aWN0dXJlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBmdWxsc2Ny
ZWVuTW9kZSgpKSB7Ci0gICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFuZ2VkIGZy
b20gIiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNjaGVkdWxl
RXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZlbnQpOwot
ICAgICAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUgIT0gSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7
CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlmICht
X2lzRW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlIHx8IG1faXNFeGl0aW5nUGljdHVyZUluUGljdHVy
ZSkgeworI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQorICAgICAgICBpZiAobV9w
aWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX2lzRW50ZXJpbmdQ
aWN0dXJlSW5QaWN0dXJlKQorICAgICAgICAgICAgICAgIG1fcGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoZmxvb3JlZEludFNpemUoc2l6ZSkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVy
LT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBV
TlVTRURfUEFSQU0oc2l6ZSk7CisjZW5kaWYKKyAgICAgICAgbV9pc0VudGVyaW5nUGljdHVyZUlu
UGljdHVyZSA9IGZhbHNlOworICAgICAgICBtX2lzRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAocGxheWVyKCkpCi0gICAgICAgIHBsYXllcigpLT5zZXRW
aWRlb0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOwotCi0gICAgSFRNTE1lZGlhRWxlbWVudDo6ZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwotfQotCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEJl
Y29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKLXsKLSAgICBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25N
b2RlID0gZmFsc2U7Ci0gICAgaWYgKG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1
cmUpCi0gICAgICAgIG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lID0g
dHJ1ZTsKLQogICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVs
ZW1lbnQoKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVy
ZUluUGljdHVyZSgpCiB7Ci0gICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IGZhbHNl
OwotICAgIGlmIChtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7Ci0gICAg
ICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyAgICBt
X2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gZmFsc2U7CisgICAgaWYgKG1faXNFeGl0
aW5nUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICBtX2lzRXhpdGluZ1BpY3R1cmVJblBpY3R1
cmUgPSBmYWxzZTsKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICAgICAg
aWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQogICAgICAgICAgICAgbV9waWN0dXJlSW5Q
aWN0dXJlT2JzZXJ2ZXItPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CkBAIC01NDMsMjUgKzU0
MiwyMyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVt
ZW50KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2Ny
ZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYg
RU5BQkxFKFZJREVPX1VTRVNfRUxFTUVOVF9GVUxMU0NSRUVOKQordm9pZCBIVE1MVmlkZW9FbGVt
ZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwotCi0gICAgaWYgKG1faXNXYWl0aW5n
Rm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lKSB7Ci0gICAgICAgIG1faXNXYWl0aW5nRm9y
UGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgIG1faXNFbnRlcmlu
Z09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKLSNpZiBFTkFCTEUoUElDVFVSRV9J
Tl9QSUNUVVJFX0FQSSkKLSAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQot
ICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGljdHVyZUlu
UGljdHVyZShJbnRTaXplKGZyYW1lLnNpemUoKSkpOworICAgIG1faXNDaGFuZ2luZ1ZpZGVvRnVs
bHNjcmVlbk1vZGUgPSBmYWxzZTsKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRCZWNvbWVGdWxs
c2NyZWVuRWxlbWVudCgpOworfQogI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9CisKK3Zv
aWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRS
ZWN0JiBmcmFtZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5G
cmFtZShmcmFtZSk7CiAKICAgICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2Rl
KCkpICE9IFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCi0gICAgaWYgKCFt
X2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlICYmIG1fcGljdHVyZUluUGljdHVy
ZU9ic2VydmVyKQorICAgIGlmICghbV9pc0VudGVyaW5nUGljdHVyZUluUGljdHVyZSAmJiAhbV9p
c0V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlICYmIG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQog
ICAgICAgICBtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlci0+cGljdHVyZUluUGljdHVyZVdpbmRv
d1Jlc2l6ZWQoSW50U2l6ZShmcmFtZS5zaXplKCkpKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA3ZmE2ZjU5MDhhM2RmZGFjZmM2MTA1ZDg5Zjgw
ZWY2YjU4Y2I1YWUzLi5lZDM0ZGQzNmRjZTdjNmRjYWVlZGI0M2Y3MzI0NWNkOWNmYTA5MzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtODIsMTYgKzgyLDIxIEBA
IHB1YmxpYzoKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAj
aWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIGVudW0gY2xhc3MgVmlkZW9Q
cmVzZW50YXRpb25Nb2RlIHsgSW5saW5lLCBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0dXJlfTsK
KyAgICBlbnVtIGNsYXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwgRnVsbHNjcmVl
biwgUGljdHVyZUluUGljdHVyZSB9OworICAgIHN0YXRpYyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUg
dG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlv
bk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKSBjb25zdDsKLSAgICB2b2lkIHdlYmtpdFNldFBy
ZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKICAgICBWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgd2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RnVs
bHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZSk7Ci0gICAgdm9pZCBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9pZCB3ZWJraXRTZXRQ
cmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVy
ZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEV4aXRGdWxs
c2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
ICYmIEVOQUJMRShWSURFT19VU0VTX0VMRU1FTlRfRlVMTFNDUkVFTikKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwotICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyNlbmRpZgor
CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKSBmaW5h
bDsKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogICAgIHZvaWQgc2V0UGlj
dHVyZUluUGljdHVyZU9ic2VydmVyKFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlciopOwpAQCAtMTMz
LDExICsxMzgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlk
ZW9XaWR0aCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xhc3RSZXBvcnRlZFZpZGVvSGVpZ2h0IHsg
MCB9OwotICAgIGJvb2wgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHsgZmFsc2UgfTsKIAogI2lm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBib29sIG1faXNFbnRlcmluZ09y
RXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1dhaXRpbmdG
b3JQaWN0dXJlSW5QaWN0dXJlV2luZG93RnJhbWUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Vu
dGVyaW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRXhpdGluZ1Bp
Y3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUElDVFVSRV9J
Tl9QSUNUVVJFX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggZjJi
M2Q4N2Q0YjQ4YjUxMWUzYmVlYWZiZDJkOTM3MDg4NDk5ZGM3OC4uNmUzNjJkZTgxODdlYWNiODdh
MDQ0ZWQ1NWM3Yzc4NjE1MWI4ZmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
bW0KQEAgLTMyNSw5ICszMjUsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGF1dG8mIGVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbV9tZWRpYUVsZW1lbnQpOwogICAgIGlmIChlbGVtZW50
LmZ1bGxzY3JlZW5Nb2RlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVBpY3R1cmVJblBpY3R1cmUpCi0gICAgICAgIGVsZW1lbnQuc2V0RnVsbHNjcmVlbk1vZGUoTWVk
aWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBlbGVtZW50
LnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25N
b2RlOjpJbmxpbmUpOwogICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC5zZXRGdWxsc2NyZWVuTW9k
ZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7
CisgICAgICAgIGVsZW1lbnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50OjpW
aWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci5oCmluZGV4IGIxM2QxOWIzZTVjY2YxZjZkN2QyNjNjMmUzMGY3
ZTdmOGZkOGU4NDMuLjU0ZWVmMzk5OGI4YzIwYWIzNWFhYjg2N2ZjNDEzOGQwMTFkNDNkODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNldHVwRnVsbHNjcmVlbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2Ny
ZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgRmxv
YXRTaXplJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0KaW5kZXggM2FkNjliN2U3NDNjZWExODFkNGNmZmM1OGJmMmQyYmU3ODY2NDc0Ni4u
Yjc0ZjRlYjc5Y2FhMjdkMzFhOTkzODFmNjk4MmNjYWVjZThkNmJhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1Miw4ICsxNTIsOCBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6
RnVuY3RpbwogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7Ci0gICAgaWYgKG1fdmlkZW9FbGVtZW50
ICYmIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZSgpICE9IG1vZGUpCi0gICAgICAgIG1f
dmlkZW9FbGVtZW50LT5zZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKKyAgICBpZiAobV92aWRlb0Vs
ZW1lbnQpCisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxW
aWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShtb2RlKSk7CiAKICAgICBpZiAobV92aWRl
b0VsZW1lbnQgJiYgZmluaXNoZWRXaXRoTWVkaWEgJiYgbW9kZSA9PSBNZWRpYVBsYXllcjo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKICAgICAgICAgaWYgKG1fdmlkZW9FbGVtZW50LT5kb2N1
bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpKSB7CkBAIC0xOTEsNyArMTkxLDcgQEAgY29uc3QgQXRv
bVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCgp
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVs
bHNjcmVlbk1vZGUpCiB7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAgICBtX3ZpZGVv
RWxlbWVudC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOworICAg
ICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50
Ojp0b1ByZXNlbnRhdGlvbk1vZGUodmlkZW9GdWxsc2NyZWVuTW9kZSkpOwogfQogCiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5
QW5kQ29udGV4dFVJRChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJvdXRlU2hhcmluZ1BvbGljeSwg
U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXgg
OGU0NDEwZmQyYzE2MzNkZjRmZTdlMmM2MDJjZGM2NzlhNDQ3ZjNhYy4uOGJlZjdlNGM2MDFkOTZk
Mjk3NzMwYzM5ZDQ4MmI2ZDRlMmFiYWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTE0
Nyw4ICsxNDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5IYW5kbGVyKEJP
T0wgc3VjY2VzcywgTlNFcnJvciAqKTsKICAgICBib29sIGlzUGxheWluZ1ZpZGVvSW5FbmhhbmNl
ZEZ1bGxzY3JlZW4oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlYWR5VG9T
dG9wUGljdHVyZUluUGljdHVyZShCT09MKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdpbGxF
bnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0V2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0dXJlKEJPT0wpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKQEAgLTIyNSw3ICsyMjMsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2VudGVyaW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVhZHlUb1N0
b3BQaWN0dXJlSW5QaWN0dXJlIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV93aWxsRW50ZXJTdGFuZGJ5
RnJvbVBpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCmluZGV4IDhlNmQzNmI3OGI4OWI2ZDcwM2U4YmZiMjg1ZWM2OWExZDUzZjZmNDIuLjM2
MWJlOTRjMTIyNWY5MWEyZjQwNzRiNzk2YjUwNDdlNWVhODc2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0RpY3Rpb25hcnkgKnBpeGVsQnVm
ZmVyQXR0cmlidXRlczsKIEBwcm9wZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNpb25zOwogQHByb3Bl
cnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKKy0gKEZsb2F0UmVjdCljYWxjdWxhdGVU
YXJnZXRWaWRlb0ZyYW1lOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZQbGF5ZXJMYXll
ciB7CkBAIC0yNTcsNiArMjU4LDIzIEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3JlCiAgICAgcmV0
dXJuIF92aWRlb1N1YmxheWVyLmdldCgpOwogfQogCistIChGbG9hdFJlY3QpY2FsY3VsYXRlVGFy
Z2V0VmlkZW9GcmFtZQoreworICAgIEZsb2F0UmVjdCB0YXJnZXRWaWRlb0ZyYW1lOworICAgIGZs
b2F0IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYu
dmlkZW9EaW1lbnNpb25zLmhlaWdodDsKKworICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgICAgICB0YXJnZXRW
aWRlb0ZyYW1lID0gc2VsZi5ib3VuZHM7CisgICAgZWxzZSBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemVBc3BlY3QgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAgICAg
ICAgdGFyZ2V0VmlkZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVj
dCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CisgICAgZWxzZSBpZiAoW0FWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jh
dml0eV0pCisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0
UmF0aW9Bcm91bmRSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuIHRhcmdldFZpZGVv
RnJhbWU7Cit9CisKIC0gKHZvaWQpbGF5b3V0U3VibGF5ZXJzCiB7CiAgICAgaWYgKFtfdmlkZW9T
dWJsYXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQpAQCAtMjgzLDE0ICszMDEsNyBAQCBzdGF0aWMg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZl
cnRUb0V4aXRGdWxsU2NyZQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUgaXNFcXVhbFRvU3RyaW5nOnNl
bGYudmlkZW9HcmF2aXR5XSkKLSAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IHNlbGYuYm91bmRz
OwotICAgIGVsc2UgaWYgKFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IGlzRXF1YWxU
b1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCi0gICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBs
YXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2Vs
Zi5ib3VuZHMpOwotICAgIGVsc2UgaWYgKFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQotICAgICAgICB0YXJnZXRW
aWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0Fz
cGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7Ci0gICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB0YXJnZXRWaWRlb0ZyYW1lID0gW3NlbGYgY2FsY3VsYXRlVGFyZ2V0Vmlk
ZW9GcmFtZV07CiAKICAgICBVSVZpZXcgKnZpZXcgPSAoVUlWaWV3ICopW192aWRlb1N1YmxheWVy
IGRlbGVnYXRlXTsKICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybU1ha2VTY2FsZSh0YXJnZXRWaWRlb0ZyYW1lLndpZHRoKCkgLyBzb3VyY2VWaWRlb0Zy
YW1lLndpZHRoKCksIHRhcmdldFZpZGVvRnJhbWUuaGVpZ2h0KCkgLyBzb3VyY2VWaWRlb0ZyYW1l
LmhlaWdodCgpKTsKQEAgLTQ3MCwxMCArNDgxLDEwIEBAIHN0YXRpYyB2b2lkIFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwgU0VMLCBVSVZpZXcgKnZpZGVvVmlldykK
IHN0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0
dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCiB7CiAgICAgV2ViQVZQ
bGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOwotICAgIFdlYkFWUGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IChXZWJBVlBpY3R1cmVJblBpY3R1
cmVQbGF5ZXJMYXllclZpZXcgKilbcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXddOworICAgIGF1dG8gKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJlSW5QaWN0dXJl
UGxheWVyTGF5ZXJWaWV3ICopW3BsYXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3XTsKIAotICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVyID0gKFdlYkFW
UGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKLSAgICBXZWJBVlBs
YXllckxheWVyICpwaXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcg
bGF5ZXJdOworICAgIGF1dG8gKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxh
eWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKKyAgICBhdXRvICpwaXBQbGF5ZXJMYXllciA9IChX
ZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOwogICAgIFtwbGF5ZXJMYXllciBzZXRW
aWRlb0dyYXZpdHk6QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdF07CiAgICAgW3BpcFBs
YXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJsYXllcl07CiAg
ICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJMYXllci52aWRlb0Rp
bWVuc2lvbnNdOwpAQCAtOTk4LDcgKzEwMDksNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCiAgICAgW3BsYXllckNvbnRyb2xsZXIoKSBz
ZXRIYXNFbmFibGVkVmlkZW86ZmFsc2VdOwogICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0SGFz
VmlkZW86ZmFsc2VdOwogCi0gICAgbV93aWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1
cmUgPSBmYWxzZTsKICAgICBpZiAobV9leGl0aW5nUGljdHVyZUluUGljdHVyZSkgewogICAgICAg
ICBtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAgICAgICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsKQpAQCAtMTExOSwxMCArMTEyOSw2IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBpZiAo
bV9lbnRlckZ1bGxzY3JlZW5OZWVkc0VudGVyUGljdHVyZUluUGljdHVyZSkKICAgICAgICAgZG9F
bnRlckZ1bGxzY3JlZW4oKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRp
ZEVudGVyRnVsbHNjcmVlbigpOwotICAgIH0KIAogICAgIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0
dXJlID0gZmFsc2U7CiB9CkBAIC0xMTM2LDkgKzExNDIsNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAgICAgaWYg
KG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLQogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVy
UGljdHVyZUluUGljdHVyZSgpOwogCkBAIC0xMjk1LDcgKzEyOTgsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb1NldHVwKCkKIHsKICAgICBNb2RlIGNoYW5nZXMgeyBt
X2N1cnJlbnRNb2RlLm1vZGUoKSBeIG1fdGFyZ2V0TW9kZS5tb2RlKCkgfTsKIAotICAgIGlmICht
X2N1cnJlbnRNb2RlLmhhc1ZpZGVvKCkgJiYgbV90YXJnZXRNb2RlLmhhc1ZpZGVvKCkgJiYgKG1f
c3RhbmRieSAhPSBtX3RhcmdldFN0YW5kYnkpKSB7CisgICAgaWYgKG1fY3VycmVudE1vZGUuaGFz
VmlkZW8oKSAmJiBtX3RhcmdldE1vZGUuaGFzVmlkZW8oKSkgewogICAgICAgICBtX3N0YW5kYnkg
PSBtX3RhcmdldFN0YW5kYnk7CiAgICAgICAgIGZpbmFsaXplU2V0dXAoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTQ0OSw4ICsxNDUyLDE2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVuKCkKICAgICB9CiAgICAgbV9lbnRlckZ1bGxzY3JlZW5O
ZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAKLSAgICBpZiAobV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRF
bnRlckZ1bGxzY3JlZW4oKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpIHsK
KyAgICAgICAgRmxvYXRTaXplIHNpemU7CisgICAgICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc1Bp
Y3R1cmVJblBpY3R1cmUoKSkgeworICAgICAgICAgICAgYXV0byAqcGlwVmlldyA9IChXZWJBVlBp
Y3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9wbGF5ZXJMYXllclZpZXcgcGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgICAgICAgICBhdXRvICpwaXBQbGF5ZXJM
YXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOworICAgICAgICAgICAg
YXV0byB2aWRlb0ZyYW1lID0gW3BpcFBsYXllckxheWVyIGNhbGN1bGF0ZVRhcmdldFZpZGVvRnJh
bWVdOworICAgICAgICAgICAgc2l6ZSA9IEZsb2F0U2l6ZSh2aWRlb0ZyYW1lLnNpemUoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVs
bHNjcmVlbihzaXplKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmRvRXhpdEZ1bGxzY3JlZW4oKQpAQCAtMTU5OCwxNiArMTYwOSw2IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVy
ZShCT09MIHJlYWR5KQogICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZnVsbHNj
cmVlbldpbGxSZXR1cm5Ub0lubGluZSgpOwogfQogCi1ib29sIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojp3aWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUoKQotewotICAg
IHJldHVybiBtX3dpbGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZTsKLX0KLQotdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2lsbEVudGVyU3RhbmRieUZyb21Q
aWN0dXJlSW5QaWN0dXJlKEJPT0wgdmFsdWUpCi17Ci0gICAgbV93aWxsRW50ZXJTdGFuZGJ5RnJv
bVBpY3R1cmVJblBpY3R1cmUgPSB2YWx1ZTsKLX0KLQogc3RhdGljIE9wdGlvbmFsPGJvb2w+IGlz
UGljdHVyZUluUGljdHVyZVN1cHBvcnRlZDsKIAogdm9pZCBXZWJDb3JlOjpzZXRTdXBwb3J0c1Bp
Y3R1cmVJblBpY3R1cmUoYm9vbCBpc1N1cHBvcnRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tCmluZGV4IDRmY2Q5YTJlZjk5ZjA1YWI4ZDhjMzI2YTAyNjIzMDQ0OTJiODhjOWQuLmY4
MzFkNmI4NDQ4YTNkODQ0ZjI0YzhiNDhlMGZjYmViZmQwOTA3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbQpAQCAtMjgsMjAgKzI4LDIwIEBACiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhUTUxWaWRlb0VsZW1l
bnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2VsZWN0aW9uT3B0aW9u
LmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgogI2ltcG9ydCAi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCIKKyNpbXBvcnQgIlJlbmRlclZpZGVv
LmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCIK
ICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgiCisjaW1wb3J0ICJX
ZWJDb3JlVGhyZWFkUnVuLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4K
ICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJWaWRlby5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjaW1w
b3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVh
cnR6Q29yZVNQSS5oPgogCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
cXVlc3RWaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgcmV0dXJuVmlkZW9Db250
ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbigpIGZpbmFsOwot
ICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCkgZmluYWwgeyB9CisgICAgdm9pZCBkaWRFbnRl
ckZ1bGxzY3JlZW4oY29uc3QgRmxvYXRTaXplJikgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsRXhp
dEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7
CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMu
bW0KaW5kZXggODVjNzBiMmJiYjUwNDdlZjhlZGRhNzQyOTQ2NjU5YTRiMjdlMTdjZS4uMzNmNGQ0
YThmMjRmNTlhMTM3MTFiYjBiNWU0MDAyOGU2YjAyZThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1t
CkBAIC05NSw2ICs5NSw3IEBAIHVzaW5nIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsOwog
CiBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBOb3RJblBJUCwKKyAgICBFbnRlcmluZ1BJUCwK
ICAgICBJblBJUCwKICAgICBFeGl0aW5nUElQCiB9OwpAQCAtMjEwLDEyICsyMTEsMTIgQEAgZW51
bSBjbGFzcyBQSVBTdGF0ZSB7CiAKIC0gKHZvaWQpZW50ZXJQSVAKIHsKLSAgICBpZiAoX3BpcFN0
YXRlID09IFBJUFN0YXRlOjpJblBJUCkKKyAgICBpZiAoX3BpcFN0YXRlID09IFBJUFN0YXRlOjpF
bnRlcmluZ1BJUCB8fCBfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQKQogICAgICAgICByZXR1
cm47CiAKICAgICBbX3ZpZGVvVmlld0NvbnRhaW5lckNvbnRyb2xsZXIgdmlld10ubGF5ZXIuYmFj
a2dyb3VuZENvbG9yID0gQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjayk7CiAg
ICAgW19waXBWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXJBc1BpY3R1cmVJblBp
Y3R1cmU6X3ZpZGVvVmlld0NvbnRhaW5lckNvbnRyb2xsZXIuZ2V0KCldOwotICAgIF9waXBTdGF0
ZSA9IFBJUFN0YXRlOjpJblBJUDsKKyAgICBfcGlwU3RhdGUgPSBQSVBTdGF0ZTo6RW50ZXJpbmdQ
SVA7CiB9CiAKIC0gKHZvaWQpZXhpdFBJUApAQCAtMjQ4LDggKzI0OSwyNSBAQCBlbnVtIGNsYXNz
IFBJUFN0YXRlIHsKIAogICAgIEFTU0VSVF9VTlVTRUQodmlkZW9WaWV3Q29udGFpbmVyLCB2aWRl
b1ZpZXdDb250YWluZXIgPT0gX3ZpZGVvVmlld0NvbnRhaW5lcik7CiAKLSAgICBpZiAoX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQotICAgICAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyRnJhbWUoW192aWRlb1Zp
ZXdDb250YWluZXIgYm91bmRzXSk7CisgICAgaWYgKCFfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX3BpcFN0YXRlID09IFBJUFN0YXRlOjpF
bnRlcmluZ1BJUCkgeworICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS80MjI1MDk1MikK
KyAgICAgICAgLy8gQ3VycmVudGx5LCAtW1BJUFZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29u
dHJvbGxlckFzUGljdHVyZUluUGljdHVyZTpdIGRvZXMgbm90CisgICAgICAgIC8vIHRha2UgYSBj
b21wbGV0aW9uSGFuZGxlciBwYXJhbWV0ZXIsIHNvIHdlIHVzZSB0aGUgZmlyc3QgYm91bmRzIGNo
YW5nZSBldmVudAorICAgICAgICAvLyBhcyBhbiBpbmRpY2F0aW9uIHRoYXQgZW50ZXJpbmcgcGlj
dHVyZS1pbi1waWN0dXJlIGlzIGNvbXBsZXRlZC4KKyAgICAgICAgX3BpcFN0YXRlID0gUElQU3Rh
dGU6OkluUElQOworCisgICAgICAgIGlmIChhdXRvKiBtb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgICAgICBtb2RlbC0+
ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisKKyAgICAgICAgaWYgKGF1dG8qIG9ic2VydmVy
ID0gX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoKSkKKyAgICAgICAgICAgIG9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKFdlYkNv
cmU6OkZsb2F0U2l6ZSlbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdLnNpemUpOworICAgIH0K
KworICAgIGlmIChhdXRvKiBtb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZp
ZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgIG1vZGVsLT5zZXRWaWRlb0xheWVyRnJhbWUo
W192aWRlb1ZpZXdDb250YWluZXIgYm91bmRzXSk7CiB9CiAKIC0gKHZvaWQpc3VwZXJ2aWV3RGlk
Q2hhbmdlRm9yVmlkZW9WaWV3Q29udGFpbmVyOihXZWJWaWRlb1ZpZXdDb250YWluZXIgKil2aWRl
b1ZpZXdDb250YWluZXIKQEAgLTQ1NiwxMSArNDc0LDYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbigpCiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19D
T05UUk9MU19NQU5BR0VSKQogICAgICAgICBbbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBs
YXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0UGljdHVyZUluUGljdHVyZUFjdGl2ZTpZRVNdOwog
I2VuZGlmCi0KLSAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5NTIpOiBNb3Zl
IHRoaXMgY2FsbCBpbnRvIGEgY29tcGxldGlvbiBoYW5kbGVyIG9yIGRlbGVnYXRlIGNhbGxiYWNr
LgotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1
cmUoKTsKLSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAg
ICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAyOWNmZjIzMWM2OTNjN2I1MzY2NWYx
MWFjOTFlZGZjODBmZjU3ZTU1Li5hZDhlZmUzZWE1YWQwZjRmOTQ2ZDdhNGE1NTk0MDRiNzY0NGM1
NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIHJl
dHVyblZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3Jl
ZW4oKSBmaW5hbDsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZpbmFsOworICAgIHZv
aWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFeGl0RnVs
bHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBmaW5hbDsK
QEAgLTE1OSw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dCYgZW5zdXJlTW9kZWwoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAg
IFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlJiBlbnN1cmVJbnRlcmZhY2UoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGVuc3VyZUNsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOwogICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKIApAQCAtMTg1LDcgKzE4Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFbnRlckZ1bGxz
Y3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwogICAgIHZvaWQg
c2V0VmlkZW9MYXllckdyYXZpdHkoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KaW5kZXggZGM0M2VmZjJiMzg0MGRkYWEyNGI2ODZjOGUxNGZkNDc0YTFhODU2Ny4uODQ4
OTY3ZmZiM2QwOTc3MmU4NzRkZTc5ZjlhYzhiMDQyOGYwZDk4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbQpAQCAtMjQ0LDEwICsyNDQsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigpCiAgICAgICAgIG1fbWFuYWdlci0+ZGlkU2V0dXBG
dWxsc2NyZWVuKG1fY29udGV4dElkKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbigpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmRpZEVudGVyRnVsbHNj
cmVlbihtX2NvbnRleHRJZCk7CisgICAgICAgIG1fbWFuYWdlci0+ZGlkRW50ZXJGdWxsc2NyZWVu
KG1fY29udGV4dElkLCBzaXplKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ6OndpbGxFeGl0RnVsbHNjcmVlbigpCkBAIC00NjEsNiArNDYxLDExIEBAIFBsYXRmb3JtVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZpbmRJ
bnRlcmZhY2UoUGxhCiAgICAgcmV0dXJuIHN0ZDo6Z2V0PDE+KGl0LT52YWx1ZSkuZ2V0KCk7CiB9
CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnN1cmVDbGllbnRGb3JDb250
ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKK3sKKyAgICBt
X2NsaWVudENvdW50cy5hZGQoY29udGV4dElkLCAxKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmFkZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jbGllbnRD
b3VudHMuYWRkKGNvbnRleHRJZCwgMSk7CkBAIC01MjQsMTIgKzUyOSw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkCiAgICAgTUVTU0FHRV9DSEVDSyh2aWRlb0xheWVySUQpOwogCiAgICAgYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElk
KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChpbnRlcmZhY2UtPndpbGxFbnRl
clN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICBpbnRlcmZhY2UtPnNldFdp
bGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZShOTyk7Ci0gICAgZWxzZSBpZiAodmlk
ZW9GdWxsc2NyZWVuTW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlIHx8ICFzdGFuZGJ5KQotICAgICAgICBhZGRDbGllbnRGb3JD
b250ZXh0KGNvbnRleHRJZCk7Ci0jZW5kaWYKKyAgICBlbnN1cmVDbGllbnRGb3JDb250ZXh0KGNv
bnRleHRJZCk7CiAKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkg
ewogICAgICAgICBpZiAoIXZpZGVvRGltZW5zaW9ucy5pc0VtcHR5KCkpCkBAIC01OTgsOCArNTk4
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvRGltZW5zaW9u
cyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnQKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjplbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkKQogewogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVk
KSB7Ci0gICAgICAgIGRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpOwotICAgICAgICBzZXRW
aWRlb0xheWVyRnJhbWUoY29udGV4dElkLCB7MCwgMCwgbV9tb2NrUGljdHVyZUluUGljdHVyZVdp
bmRvd1NpemUud2lkdGgoKSwgbV9tb2NrUGljdHVyZUluUGljdHVyZVdpbmRvd1NpemUuaGVpZ2h0
KCl9KTsKKyAgICAgICAgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCwgbV9tb2NrUGljdHVy
ZUluUGljdHVyZVdpbmRvd1NpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NzQs
OSArNzczLDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5kaWRFeGl0
RnVsbHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlk
RW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CisgICAgT3B0
aW9uYWw8RmxvYXRTaXplPiBvcHRpb25hbFNpemU7CisgICAgaWYgKCFzaXplLmlzRW1wdHkoKSkK
KyAgICAgICAgb3B0aW9uYWxTaXplID0gc2l6ZTsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCwg
b3B0aW9uYWxTaXplKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggNjg5
OTQzYjRmNmY4M2FhMzUyMzJmZmNmYjEyNGZiODhhNDE1MTExMi4uZDNhODdkOWIyYjI4MmEyMjVj
ODk0MTVlZmRjMDY1MjhjYmNkMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVySU9TLm1tCkBAIC05NTAsNyArOTUwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW50ZXJmYWNlLT5zZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUo
Tk8pOwotICAgIGludGVyZmFjZS0+c2V0V2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0
dXJlKFlFUyk7CiAgICAgX3JldHVyblRvRnVsbHNjcmVlbkZyb21QaWN0dXJlSW5QaWN0dXJlID0g
WUVTOwogCiAgICAgaWYgKCFfZXhpdGluZ0Z1bGxTY3JlZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBl
ODIzZDIwYzRkMWI5MjQ0YTJlY2ViYjljMzkxZDVhZjM3MDJkNTQzLi5iOGM3MThlODFhY2Y3M2U2
ZGJkNGU4OGEwZDY0NGY1YmU1MTBlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTE0OSw3ICsxNDks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEVudGVyRnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0U2l6ZT4pOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZy
YW1lRmVuY2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9h
dFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKICAgICB2b2lkIHNldFZp
ZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdW5z
aWduZWQgZ3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDA3
NmZmZjU3NzYxZTU5NzQ0YWNlYjg3ZDRkYTM2NTFjMjVhYzBiNjcuLjMyNWIzY2QyZjQ1OTJlNDFj
NGRkZDgxMThkYjJiNmQ4OTY4ZjVjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
ewogICAgIERpZFNldHVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBXaWxsRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxz
Y3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQp
Ci0gICAgRGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQorICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRTaXplPiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNldFZpZGVvTGF5ZXJG
cmFtZUZlbmNlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9y
dCkKICAgICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IDBmYmNmODZlOWNkYzM0YzA5YWRmOTE3YWI2NGYwOTFmMTVkZDY2NmYuLjNjYzY2
NDliNDIzNDFjYTk2OTc4MGYxZjBlMTFkYTE2YmUxMzRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBA
IC0zNDIsNyArMzQyLDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWYKIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKLSAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKKyAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2RlKHZpZGVvRnVsbHNj
cmVlbk1vZGUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRh
dGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
QEAgLTQyOCw3ICs0MzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogfQog
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKIHsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNj
cmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNDQxLDcgKzQ0Myw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHZpZGVvRWxlbWVudC0+ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsK
KyAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZShz
aXplLnZhbHVlT3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpKTsKIAogICAgIGlmIChpbnRlcmZhY2Ut
PnRhcmdldElzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CkBAIC00ODMsNyArNDg1LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogI2VuZGlmCiB9Ci0gICAgCisKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVu
LCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oJXAsICV4KSIs
IHRoaXMsIGNvbnRleHRJZCk7CkBAIC01MDQsNyArNTA2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKICAgICBSZWZQ
dHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgp
OwogICAgIGlmICh2aWRlb0VsZW1lbnQpCi0gICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkU3RvcEJl
aW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFeGl0RnVs
bHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5TdGFuZGJ5KGZhbHNlKTsKQEAgLTUxOCwxMiAr
NTIwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBt
b2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQogewogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdyYXZpdHkoKE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
R3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogewogICAgIGlmICghbV9wYWdl
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407785</attachid>
            <date>2020-09-02 12:17:02 -0700</date>
            <delta_ts>2020-09-02 12:19:58 -0700</delta_ts>
            <desc>Revise the patch according to Eric&apos;s comments and fix some issues found in stress tests</desc>
            <filename>bug-215972-20200902121702.patch</filename>
            <type>text/plain</type>
            <size>60076</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uZGVkNzQyN2Q1MjM5ODg3MWRlY2RkNDA5NDIwOWRl
NjFkNjNiMGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNCBAQAorMjAyMC0wOS0wMiAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIGZ1bmN0aW9u
cyBhbmQgc3RhdGUgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlIHBpY3R1cmUtaW4tcGljdHVyZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgcmVsYXRl
ZCB0byBjaGFuZ2luZyB2aWRlbyBwcmVzZW50YXRpb24gbW9kZQorICAgICAgICBpbiBIVE1MVmlk
ZW9FbGVtZW50IGFuZCBIVE1MTWVkaWFFbGVtZW50LiBJdCBjbGVhbnMgdXAgc29tZSBldmVudC1y
ZWxhdGVkIGNvZGUgYXMgd2VsbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc2ltcGxpZmll
cyB0aGUgcHJvY2VzcyBvZiBlbnRlcmluZyB0aGUgcGljdHVyZS1pbi1waWN0dXJlIG1vZGUuCisg
ICAgICAgIFRoZSBYUEMgbWVzc2FnZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkRpZEVu
dGVyRnVsbHNjcmVlbiBmcm9tIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHdpbGwgcHJvdmlkZSB0
aGUgcGljdHVyZS1pbi1waWN0dXJlIHdpbmRvdyBzaXplIGlmIHRoZSB2aWRlbyBpcyBlbnRlcmlu
ZyBwaWN0dXJlLWluLXBpY3R1cmUsCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGdldCByaWQgb2Yg
dGhlIGludGVybWVkaWF0ZSBzdGF0ZSAod2FpdGluZyBmb3IgdGhlIGluaXRpYWwgcGljdHVyZS1p
bi1waWN0dXJlCisgICAgICAgIHdpbmRvdyBmcmFtZSkuCisKKyAgICAgICAgV2l0aCB0aGlzIHBh
dGNoLCBhbGwgcHJlc2VudGF0aW9uIG1vZGUgY2hhbmdlIHJlcXVlc3RzIG5lZWQgdG8gZ28gdGhy
b3VnaCB0aGUgSFRNTFZpZGVvRWxlbWVudC4KKyAgICAgICAgTm9ybWFsbHksIHZpZGVvIHByZXNl
bnRhdGlvbiBtb2RlIGNoYW5nZSByZXF1ZXN0cyBjb21lIGZyb20gdGhlIHdlYiBwcm9jZXNzIHdo
ZXJlIGEgcGFnZQorICAgICAgICBjYWxscyB0aGUgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1
cmUgQVBJIG9yIGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgbW9kZXJuIG1lZGlhIGNvbnRyb2xz
LgorICAgICAgICBIb3dldmVyLCB0aHJvdWdoIGdlc3R1cmVzLCB0aGUgVUkgcHJvY2VzcyBtYXkg
cmVxdWVzdCB0byBjaGFuZ2UgdGhlIHByZXNlbnRhdGlvbiBtb2RlCisgICAgICAgIChlLmcuLCBm
cm9tIGZ1bGxzY3JlZW4gdG8gcGljdHVyZS1pbi1waWN0dXJlKS4gVGhlIHdlYiBwcm9jZXNzIHNp
ZGUgd2lsbCBiZSBsaWtlIGEgZHJ5IHJ1bgorICAgICAgICBiZWNhdXNlIHRoZSB0YXNrcyBpbiB0
aGUgVUkgcHJvY2VzcyBhcmUgbW9zdGx5IGNvbXBsZXRlZCBiZWZvcmUgdGhlIHdlYiBwcm9jZXNz
IHJlY2VpdmVzCisgICAgICAgIHRoZSByZXF1ZXN0LiBUaGUgbW90aXZhdGlvbiB0byBkbyB0aGF0
IGlzIHRvIGd1YXJhbnRlZSBjb3JyZWN0IGV2ZW50cyBhcmUgZmlyZWQuCisgICAgICAgIEFsbCBz
Y2VuYXJpb3Mgc2hhcmluZyB0aGUgc2FtZSBjb2RlIHBhdGggYWxzbyBoZWxwIHVzIGF2b2lkIHJl
Z3Jlc3Npb25zIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgaGF2ZSBhIGdvb2Qgd2F5IHRvIGNy
ZWF0ZSByZWdyZXNzaW9uIHRlc3RzIGZvciB0aGUgc2NlbmFyaW9zIHdoZXJlIHByZXNlbnRhdGlv
biBtb2RlIGNoYW5nZQorICAgICAgICByZXF1ZXN0cyBjb21lIGZyb20gdGhlIFVJIHByb2Nlc3Mu
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIFNpbXBsaWZ5IHRoZSBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9w
QmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICBEZWxldGUgZnVuY3Rpb24g
SFRNTFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKCkgYW5kIG1vdmUgaXRzIGNv
ZGUKKyAgICAgICAgdG8gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmZ1bGxzY3JlZW5Nb2RlIGNvbnN0KToKKyAgICAgICAgUmVwbGFjZSBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoKSB3aXRoIGEgcHJpdmF0ZSBmdW5jdGlvbiBzZXRGdWxsc2NyZWVuTW9kZSgpLgor
ICAgICAgICBDaGFuZ2UgInZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSIg
dG8gInZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JikiLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbk1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQ
aWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRp
ZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvUHJlc2VudGF0aW9uTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5n
RnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5oOgorICAgICAgICBPbmx5IEhUTUxWSWRlb0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbk1v
ZGUoKSBjYW4gYmUgdXNlZCBieSBvdGhlciBtb2R1bGVzIChQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
CisgICAgICAgIG9yIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpIHRvIGNoYW5nZSB0aGUgdmlkZW8g
cHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyBkaWZmZXJlbnQg
Y2FsbGJhY2tzIHJlZ2FyZGluZyB0aGUgZnVsbHNjcmVlbiBtb2RlIGNoYW5nZSB0cmFuc2l0aW9u
CisgICAgICAgIGZvciBGdWxsc2NyZWVuTWFuYWdlciBhbmQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci4KKyAgICAgICAgLSBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCBmb3IgRnVsbHNjcmVlbk1h
bmFnZXIuCisgICAgICAgIC0gZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlIGFu
ZCBkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSBmb3IKKyAgICAgICAgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci4KKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIG1faXNXYWl0aW5n
Rm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lIGFuZCByZW5hbWVzIG1faXNDaGFuZ2luZ1By
ZXNlbnRhdGlvbk1vZGUKKyAgICAgICAgdG8gbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9k
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OnNldEhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OndpbGxFbnRlclBp
Y3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmRpZEVudGVyUGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZmFpbGVkVG9FbnRlclBpY3R1cmVJ
blBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OndpbGxFeGl0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUpOgor
ICAgICAgICBJdGVyYXRlIGEgY29weSBvZiB0aGUgSGFzaFNldCBvZiBWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudCBwb2ludGVycyBiZWNhdXNlIGEgY2FsbGJhY2sgbWF5CisgICAgICAgIHJlbW92
ZSB0aGUgY2xpZW50IGl0c2VsZiBkdXJpbmcgdGhlIGl0ZXJhdGlvbi4KKworICAgICAgICAqIHBs
YXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKC1b
V2ViQVZQbGF5ZXJMYXllciBjYWxjdWxhdGVUYXJnZXRWaWRlb0ZyYW1lXSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSk6CisgICAgICAgIChXZWJBVlBsYXll
ckxheWVyVmlld19zdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVy
Vmlldyk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1
bGxzY3JlZW4pOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0
YXJ0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXApOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUp
OiBEZWxldGVkLgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFdp
bGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIEFk
ZCBhIHByb3BlcnR5IGlzUGljdHVyZUluUGljdHVyZSB0byBXZWJBVlBsYXllckxheWVyLCB3aGlj
aCB3aWxsIHNldCB0byBZRVMgaWYKKyAgICAgICAgYSBsYXllciBpcyBjcmVhdGVkIGZvciBwaWN0
dXJlLWluLXBpY3R1cmUuCisgICAgICAgIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBpbiAtW1dlYkFW
UGxheWVyTGF5ZXIgbGF5b3V0U3VibGF5ZXJzXSB0byBza2lwCisgICAgICAgIHRoZSB1bm5lY2Vz
c2FyeSBjYWxjdWxhdGlvbiBvZiAidGFyZ2V0VmlkZW9GcmFtZSIgYmVjYXVzZSB0aGUgUGlQIHdp
bmRvdyB3aWxsCisgICAgICAgIGFsd2F5cyBoYXZlIHRoZSBzYW1lIGFzcGVjdCByYXRpbyBhcyB0
aGUgdmlkZW8gY29udGVudCwgc28gd2UgY2FuIHNldAorICAgICAgICAidGFyZ2V0VmlkZW9GcmFt
ZSIgdG8gYmUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuIE1vcmVvdmVyLCB0aGUgY2FsY3VsYXRp
b24gbWF5CisgICAgICAgIGxlYWQgdG8gcm91bmRpbmcgZXJyb3JzIGZvciBzb21lIG51bWJlcnMg
YW5kIHRoZSBlcnJvcnMgbWF5IHRyaWdnZXIgdW5uZWNlc3NhcnkKKyAgICAgICAgcGljdHVyZS1p
bi1waWN0dXJlIHdpbmRvdyByZXNpemUgZXZlbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIG1vdmVkIHRvIFdlYkNvcmUgc28gd2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIFdl
YkNvcmUgaGVhZGVycworICAgICAgICBpbiBhIHdheSBsaWtlICIjaW5jbHVkZSA8V2ViQ29yZS9Y
WFguaD4iLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQyBl
bnRlclBJUF0pOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWNPYmpD
IGJvdW5kc0RpZENoYW5nZUZvclZpZGVvVmlld0NvbnRhaW5lcjpdKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAg
ICAgQWRkIFBJUFN0YXRlOjpFbnRlcmluZ1BJUC4gTm90aWZ5IHRoZSBvYnNlcnZlciB0aGF0IHRo
ZSB2aWRlbyBoYXMgZW50ZXJlZAorICAgICAgICBwaWN0dXJlLWluLXBpY3R1cmUgYWZ0ZXIgdGhl
IFBpUCB3aW5kb3cgc2l6ZSBpcyBmaW5hbGl6ZWQuCisKIDIwMjAtMDgtMjUgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQgbG9hZHMgcXVpY2tseSBmb2xs
b3dlZCBieSBuYXZpZ2F0aW9ucyBtYXkgZmFpbCBpbmRlZmluaXRlbHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjUz
N2UxYjQ5ZWNjYjc0NTUyYWFhZGIwODA1Zjg5NTY5ODJkNzdkMy4uOTNmZjVlOWZiMjhkNGNlYWVl
ZGE0YmQ5MDFlZDhmMmY4M2UxMTk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMC0w
OS0wMiAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IGZ1bmN0aW9ucyBhbmQgc3RhdGUgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlIHBpY3R1cmUtaW4t
cGljdHVyZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGFuIG9wdGlvbmFsIEZsb2F0U2l6ZSBwYXJh
bWV0ZXIgdG8gdGhlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbiBt
ZXNzYWdlLgorICAgICAgICBBbHNvLCBpdCBlbmFibGVzIHRoZSBwaWN0dXJlLWluLXBpY3R1cmUg
YW5kIGZ1bGxzY3JlZW4gZXZlbnRzIHdoZW4gYSB2aWRlbyBlbGVtZW50IGVudGVycyBwaWN0dXJl
LWluLXBpY3R1cmUKKyAgICAgICAgZnJvbSB0aGUgZnVsbHNjcmVlbiBtb2RlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwcmVw
YXJlVG9FeGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpmYWlsZWRUb0Vu
dGVyUGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5zdXJlQ2xpZW50
Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIFVz
ZSBlbnN1cmVDbGllbnRGb3JDb250ZXh0KCkgaW5zdGVhZCBvZiBhZGRDbGllbnRGb3JDb250ZXh0
KCkgaW4gc2V0dXBGdWxsc2NyZWVuV2l0aElEKCkKKyAgICAgICAgdG8gYXZvaWQgbGVha2luZyBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCBpbnN0YW5jZXMuCisgICAgICAgIEl0ZXJhdGUg
YSBjb3B5IG9mIHRoZSBIYXNoU2V0IG9mIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHBvaW50
ZXJzIGJlY2F1c2UgYSBjYWxsYmFjayBtYXkKKyAgICAgICAgcmVtb3ZlIHRoZSBjbGllbnQgaXRz
ZWxmIGR1cmluZyB0aGUgaXRlcmF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgcHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmVd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZGlkRXhpdFBpY3R1
cmVJblBpY3R1cmVdKToKKyAgICAgICAgRml4IGxlYWtpbmcgb2YgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgV2UgbmVlZCB0byBjaGFuZ2UgdGhlIGZ1
bGxzY3JlZW4gbW9kZSBpbiB0aGUgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCBpbnN0
YW5jZSBhcyB3ZWxsLgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIENhbGwgZGlkRXhpdEZ1bGxzY3Jl
ZW5PclBpY3R1cmVJblBpY3R1cmUoKSBpbnN0ZWFkIG9mIGRpZFN0b3BCZWluZ0Z1bGxzY3JlZW5F
bGVtZW50KCksIHdoaWNoCisgICAgICAgIGlzIGZvciB0aGUgRnVsbHNjcmVlbk1hbmFnZXIuCisK
IDIwMjAtMDgtMjUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUcnlpbmcgdG8gbG9va3VwIHdoZW4gV2ViVmlldyBpcyBpbiBhIHBvcG92ZXIgY2F1
c2VzIHByb2Nlc3MgdG8gaGFuZy4gRml4IGZvciBMZWdhY3kgV2ViVmlldy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDE2MDM0NWE1YWMyMThiMzUzNWQwMmYw
N2ZlYWU2ZWI2ZDdlYTFkZjguLjM1NWNkMTU3MWZlYWM1ODcwMmMwNjE0ZDE1Mzk0NWY3YTYzMDU0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTc3OSw4
ICs1Nzc5LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKICAgICAvLyBXZSBuZWVkIHRvIGZpcmUgdGhlIGVuZCBmdWxsc2NyZWVuIGV2ZW50IHRv
IG5vdGlmeSB0aGUgcGFnZQogICAgIC8vIHRvIGNoYW5nZSB0aGUgcG9zaXRpb24vc2l6ZSBiYWNr
ICpiZWZvcmUqIGV4aXRpbmcgZnVsbHNjcmVlbi4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBleGl0
IGZ1bGxzY3JlZW4gYW5pbWF0aW9uIHdpbGwgYmUgaW5jb3JyZWN0LgotICAgIGlmICghbV92aWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5ICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2Via2l0
ZW5kZnVsbHNjcmVlbkV2ZW50KSB7Ci0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkg
JiYgIW1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuICYmIGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KSB7CisgICAgICAgIHNldEZ1bGxzY3JlZW5N
b2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoZG93
bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKTsKICAgICB9CiB9CkBAIC01OTczLDExICs1
OTczLDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSkKIAogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJpbHlBbGxvd2lu
Z0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
bV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIGZ1bGxz
Y3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIG9sZE1vZGUgPSBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGU7CisgICAgICAgICAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUo
bW9kZSk7CiAgICAgICAgICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogCiAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KGFzVmlkZW8sIG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKLSAgICAgICAgICAgICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CisgICAgICAgICAg
ICAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9k
ZVN0YW5kYXJkKQorICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMo
KS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
b2xkTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCisgICAgICAgICAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTYwMjQsMTUgKzYwMzEsMjMg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAg
aWYgKGRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50
KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewotICAgICAgICBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBzZXRGdWxsc2NyZWVu
TW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1h
dGlvbihkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIFZpZGVvRnVsbHNjcmVlbk1v
ZGVOb25lKTsKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGll
bnQoKS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSkgewog
ICAgICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KSB7Ci0gICAgICAgICAgICBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICAgICAg
c2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICAgICAg
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUg
PT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSB7CisgICAgICAgICAgICAvLyBUaGUgZXhp
dCBmdWxsc2NyZWVuIHJlcXVlc3Qgd2lsbCBiZSBzZW50IGluIGRpc3BhdGNoRXZlbnQoKS4KKyAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5F
dmVudCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpOworICAgICAgICBz
ZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIGRvY3Vt
ZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSk7CiAgICAgfQogfQog
CkBAIC02MDY2LDcgKzYwODEsNyBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFZpZGVvRnVsbHNjcmVlblN0YW5kYnkoYm9vbCB2YWx1ZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkKLSAgICAgICAgZG9jdW1lbnQo
KS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlLCBtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpOworICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpLCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKICAgICBlbHNlCiAgICAgICAgIGRvY3Vt
ZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSk7CiB9CkBAIC02MDc3
LDIwICs2MDkyLDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3Jl
ZW5FbGVtZW50KCkKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGUgb2xkVmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsKICNlbmRp
ZgogCi0gICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQpCisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZCk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKLSAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKLSAgICBjYXNl
IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lOgotICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkOgotICAgICAgICAvLyBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGlmIHdlIGFyZSBu
b3QgaW4gYW55IHNwZWNpYWwgZnVsbHNjcmVlbiBtb2RlIG9yIGl0J3MgYWxyZWFkeQotICAgICAg
ICAvLyBpbiBzdGFuZGFyZCBmdWxsc2NyZWVuIG1vZGUuCi0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU6Ci0gICAgICAgIGlmIChpczxI
VE1MVmlkZW9FbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9F
bGVtZW50Pih0aGlzKS0+ZXhpdFRvRnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3Nz
aWJsZShvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQp
OwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgaWYgKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUg
PT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUgJiYgaXM8SFRNTFZpZGVvRWxl
bWVudD4oKnRoaXMpKQorICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyku
ZXhpdFRvRnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRWaWRlb0Z1
bGxzY3JlZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOwogI2VuZGlmCiAKICAg
ICBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKQEAgLTYxMDYsNyArNjEx
Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQo
KQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQo
KQogewogICAgIGlmIChmdWxsc2NyZWVuTW9kZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCkKLSAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKKyAgICAgICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
OwogfQogCiBQbGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKQEAgLTYxNDYsNyArNjE1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEV4
aXRGdWxsc2NyZWVuKCkKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNWaWRlb0xheWVySW5saW5l
KCkKIHsKICAgICByZXR1cm4gIW1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Ci19OworfQogCiBSZXRh
aW5QdHI8UGxhdGZvcm1MYXllcj4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoKQogewpAQCAtNjE2OSw3ICs2MTc2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyLCBX
VEYKICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmIGZy
YW1lKQogewogICAgIG1fdmlkZW9GdWxsc2NyZWVuRnJhbWUgPSBmcmFtZTsKICAgICBpZiAobV9w
bGF5ZXIpCkBAIC03OTE1LDEwICs3OTIyLDE5IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6c2hv
dWxkT3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5Q
aWN0dXJlOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZChWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldEZ1
bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlID09IG1vZGUpCi0gICAgICAgIHJldHVybjsKKyAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAiY2hhbmdlZCBmcm9tICIsIGZ1bGxzY3JlZW5Nb2RlKCksICIsIHRvICIs
IG1vZGUpOworI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZEV2ZW50KTsK
KyNlbmRpZgorCisgICAgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShtb2Rl
ICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUpOworCisjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIGlmIChw
bGF5ZXIoKSkKKyAgICAgICAgcGxheWVyKCktPnNldFZpZGVvRnVsbHNjcmVlbk1vZGUobW9kZSk7
CisjZW5kaWYKIAogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1vZGU7CiAgICAgdmlzaWJp
bGl0eVN0YXRlQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA2OTVlYTcwZWU3NzZkNGQ1ODljYzQwNWI5OTQ0MzU5NGI2Y2U1NGE5Li40MGEwNjgxY2M0
OTVkNjFjNTk0NTExYTQyMGU0MjM2YjUxMjQ4YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICNpZmRlZiBfX09CSkNf
XwogICAgIFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKTsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCk7CisgICAgdmlydHVhbCB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5KTsKICAgICBN
ZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5IHZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoKSBjb25zdCB7
IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHk7IH0KICNlbmRpZgpAQCAtNDMwLDcgKzQz
MCw2IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGU7CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9kZSBmdWxsc2NyZWVuTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsgfQotICAgIHZpcnR1YWwgdm9pZCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICB2b2lkIGVudGVy
RnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwpAQCAtNjI1LDYgKzYyNCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKICAgICBi
b29sIGlzSW50ZXJhY3RpdmVDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHNl
dEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOworCiAgICAgdm9pZCB3aWxsQmVj
b21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTdG9wQmVpbmdG
dWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAppbmRleCBjNzYyYzE2MmQ5NzA5YjMxMWZlYTAzNDI5MjkzYjFlNzFmNTc4
YWUxLi44ZGZhYmIzMjJjNDAwMGJhNjY5ODYxNTg4YzFiYWRjN2FkZjM5ODJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTM1MywxMSArMzUzLDExIEBAIGJv
b2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuKCkKIGJvb2wgSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQogewogICAgIGlmIChk
b2N1bWVudCgpLnF1aXJrcygpLm5lZWRzQWthbWFpTWVkaWFQbGF5ZXJRdWlyaygqdGhpcykpCi0g
ICAgICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKSB8fCBtX2lzQ2hhbmdpbmdQcmVzZW50YXRpb25N
b2RlOworICAgICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nVmlkZW9G
dWxsc2NyZWVuTW9kZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gc3RhcnRzIHRvIHJldHVybiB0
cnVlIGFmdGVyIHRoZSB2aWRlbyBlbGVtZW50IGhhcyBlbnRlcmVkCiAgICAgLy8gZnVsbHNjcmVl
bi9waWN0dXJlLWluLXBpY3R1cmUgdW50aWwgaXQgaGFzIGV4aXRlZCBmdWxsc2NyZWVuL3BpY3R1
cmUtaW4tcGljdHVyZQotICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYgIXdhaXRpbmdUb0Vu
dGVyRnVsbHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ByZXNl
bnRhdGlvbk1vZGUpOworICAgIHJldHVybiAoaXNGdWxsc2NyZWVuKCkgJiYgIXdhaXRpbmdUb0Vu
dGVyRnVsbHNjcmVlbigpKSB8fCAoIWlzRnVsbHNjcmVlbigpICYmIG1faXNDaGFuZ2luZ1ZpZGVv
RnVsbHNjcmVlbk1vZGUpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmFuY2VzdG9yV2ls
bEVudGVyRnVsbHNjcmVlbigpCkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIGlubGluZSBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdG9GdWxsc2NyZWVuTW9kZShI
VE1MVmkKICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlTm9uZTsKIH0KIAotc3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNl
bnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQorSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRp
b25Nb2RlIEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKICAgICAg
ICAgcmV0dXJuIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6RnVsbHNj
cmVlbjsKQEAgLTQ2OSwzOCArNDY5LDM5IEBAIHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVu
dDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkCiB2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50
YXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiwgbW9kZSA9
ICIsICBtb2RlKTsKLSAgICBzZXRGdWxsc2NyZWVuTW9kZSh0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUp
KTsKKyAgICBzZXRQcmVzZW50YXRpb25Nb2RlKG1vZGUpOwogfQogCi12b2lkIEhUTUxWaWRlb0Vs
ZW1lbnQ6OnNldEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRQcmVzZW50YXRpb25N
b2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKQogewotICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICIsIG1vZGUgPSAiLCBtb2RlKTsKLQotICAgIGlmIChtX2lzQ2hhbmdpbmdQcmVzZW50
YXRpb25Nb2RlKQorICAgIGlmIChtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHx8IHRv
UHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBtb2RlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkgeworICAgIGF1
dG8gdmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRvRnVsbHNjcmVlbk1vZGUobW9kZSk7CisgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgIiwgdmlkZW9GdWxsc2NyZWVuTW9kZSA9ICIsIHZpZGVvRnVs
bHNjcmVlbk1vZGUpOworCisgICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxs
c2NyZWVuTW9kZU5vbmUpIHsKICAgICAgICAgaWYgKGlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAg
ICAgICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2RlKCkpID09IFZpZGVvUHJl
c2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgICAgICAgICBtX2lzRW50
ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBt
X2lzRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSB0cnVlOwogCi0gICAgICAgICAgICBtX2lzQ2hh
bmdpbmdQcmVzZW50YXRpb25Nb2RlID0gdHJ1ZTsKKyAgICAgICAgICAgIG1faXNDaGFuZ2luZ1Zp
ZGVvRnVsbHNjcmVlbk1vZGUgPSB0cnVlOwogICAgICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1lZGlhU2Vz
c2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAhc3VwcG9ydHNGdWxsc2NyZWVuKG1vZGUp
KQorICAgIGlmICghbWVkaWFTZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgpIHx8ICFzdXBw
b3J0c0Z1bGxzY3JlZW4odmlkZW9GdWxsc2NyZWVuTW9kZSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQotICAg
ICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKKyAgICBp
ZiAodmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSkKKyAgICAgICAgbV9pc0VudGVyaW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CisgICAg
ZWxzZSBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSkKKyAgICAgICAgbV9pc0V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKIAot
ICAgIGlmIChtb2RlICE9IGZ1bGxzY3JlZW5Nb2RlKCkpIHsKLSAgICAgICAgbV9pc0NoYW5naW5n
UHJlc2VudGF0aW9uTW9kZSA9IHRydWU7Ci0gICAgICAgIGVudGVyRnVsbHNjcmVlbihtb2RlKTsK
LSAgICB9CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IHRydWU7CisgICAg
ZW50ZXJGdWxsc2NyZWVuKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwogfQogCiBhdXRvIEhUTUxWaWRl
b0VsZW1lbnQ6OndlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdCAtPiBWaWRlb1ByZXNlbnRh
dGlvbk1vZGUKQEAgLTUwOCwzNCArNTA5LDMyIEBAIGF1dG8gSFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0IC0+IFZpZGVvUHJlc2VudGF0aW9uTW9kZQogICAg
IHJldHVybiB0b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSk7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0
dXJlSW5QaWN0dXJlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAobW9kZSAhPSBm
dWxsc2NyZWVuTW9kZSgpKSB7Ci0gICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJjaGFu
Z2VkIGZyb20gIiwgZnVsbHNjcmVlbk1vZGUoKSwgIiwgdG8gIiwgbW9kZSk7Ci0gICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkRXZl
bnQpOwotICAgICAgICBzZXRQcmVwYXJlZFRvUmV0dXJuVmlkZW9MYXllclRvSW5saW5lKG1vZGUg
IT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSk7CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAg
IGlmIChtX2lzRW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlIHx8IG1faXNFeGl0aW5nUGljdHVyZUlu
UGljdHVyZSkgeworI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQorICAgICAgICBp
ZiAobV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX2lzRW50
ZXJpbmdQaWN0dXJlSW5QaWN0dXJlKQorICAgICAgICAgICAgICAgIG1fcGljdHVyZUluUGljdHVy
ZU9ic2VydmVyLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoZmxvb3JlZEludFNpemUoc2l6ZSkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcGljdHVyZUluUGljdHVyZU9i
c2VydmVyLT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgICAgICB9CisjZWxzZQorICAg
ICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisjZW5kaWYKKyAgICAgICAgbV9pc0VudGVyaW5nUGlj
dHVyZUluUGljdHVyZSA9IGZhbHNlOworICAgICAgICBtX2lzRXhpdGluZ1BpY3R1cmVJblBpY3R1
cmUgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocGxheWVyKCkpCi0gICAgICAgIHBsYXllcigp
LT5zZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOwotCi0gICAgSFRNTE1lZGlhRWxlbWVudDo6
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwotfQotCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6
OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKLXsKLSAgICBtX2lzQ2hhbmdpbmdQcmVzZW50
YXRpb25Nb2RlID0gZmFsc2U7Ci0gICAgaWYgKG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJ
blBpY3R1cmUpCi0gICAgICAgIG1faXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0Zy
YW1lID0gdHJ1ZTsKLQogICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5nRnVsbHNj
cmVlbkVsZW1lbnQoKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRFeGl0RnVsbHNjcmVlbk9y
UGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9
IGZhbHNlOwotICAgIGlmIChtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7
Ci0gICAgICAgIG1faXNFbnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsK
KyAgICBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gZmFsc2U7CisgICAgaWYgKG1f
aXNFeGl0aW5nUGljdHVyZUluUGljdHVyZSkgeworICAgICAgICBtX2lzRXhpdGluZ1BpY3R1cmVJ
blBpY3R1cmUgPSBmYWxzZTsKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAg
ICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKQogICAgICAgICAgICAgbV9waWN0
dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CkBAIC01NDMs
MjUgKzU0MiwyMyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZFN0b3BCZWluZ0Z1bGxzY3Jl
ZW5FbGVtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkgJiYgRU5BQkxFKFZJREVPX1VTRVNfRUxFTUVOVF9GVUxMU0NSRUVOKQordm9pZCBIVE1MVmlk
ZW9FbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCiB7Ci0gICAgSFRNTE1lZGlh
RWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoZnJhbWUpOwotCi0gICAgaWYgKG1faXNX
YWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lKSB7Ci0gICAgICAgIG1faXNXYWl0
aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgIG1faXNF
bnRlcmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKLSNpZiBFTkFCTEUoUElD
VFVSRV9JTl9QSUNUVVJFX0FQSSkKLSAgICAgICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyKQotICAgICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPmRpZEVudGVyUGlj
dHVyZUluUGljdHVyZShJbnRTaXplKGZyYW1lLnNpemUoKSkpOworICAgIG1faXNDaGFuZ2luZ1Zp
ZGVvRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRCZWNv
bWVGdWxsc2NyZWVuRWxlbWVudCgpOworfQogI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9
CisKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3Qg
RmxvYXRSZWN0JiBmcmFtZSkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRlb0Z1bGxz
Y3JlZW5GcmFtZShmcmFtZSk7CiAKICAgICBpZiAodG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3Jl
ZW5Nb2RlKCkpICE9IFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkKICAg
ICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCi0gICAg
aWYgKCFtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlICYmIG1fcGljdHVyZUlu
UGljdHVyZU9ic2VydmVyKQorICAgIGlmICghbV9pc0VudGVyaW5nUGljdHVyZUluUGljdHVyZSAm
JiAhbV9pc0V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlICYmIG1fcGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyKQogICAgICAgICBtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlci0+cGljdHVyZUluUGljdHVy
ZVdpbmRvd1Jlc2l6ZWQoSW50U2l6ZShmcmFtZS5zaXplKCkpKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA3ZmE2ZjU5MDhhM2RmZGFjZmM2MTA1
ZDg5ZjgwZWY2YjU4Y2I1YWUzLi5lZDM0ZGQzNmRjZTdjNmRjYWVlZGI0M2Y3MzI0NWNkOWNmYTA5
MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtODIsMTYgKzgy
LDIxIEBAIHB1YmxpYzoKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFs
OwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotICAgIGVudW0gY2xhc3Mg
VmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgSW5saW5lLCBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0
dXJlfTsKKyAgICBlbnVtIGNsYXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwgRnVs
bHNjcmVlbiwgUGljdHVyZUluUGljdHVyZSB9OworICAgIHN0YXRpYyBWaWRlb1ByZXNlbnRhdGlv
bk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3ZWJraXRTdXBwb3J0c1ByZXNl
bnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKSBjb25zdDsKLSAgICB2b2lkIHdlYmtp
dFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKICAgICBWaWRlb1By
ZXNlbnRhdGlvbk1vZGUgd2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZSk7Ci0gICAgdm9pZCBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7CisgICAgdm9pZCB3ZWJr
aXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2Rl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUlu
UGljdHVyZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEV4
aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpICYmIEVOQUJMRShWSURFT19VU0VTX0VMRU1FTlRfRlVMTFNDUkVFTikKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgZmluYWw7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFs
OwotICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBmaW5hbDsKKyNl
bmRpZgorCisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3Qm
KSBmaW5hbDsKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQogICAgIHZvaWQg
c2V0UGljdHVyZUluUGljdHVyZU9ic2VydmVyKFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlciopOwpA
QCAtMTMzLDExICsxMzgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9y
dGVkVmlkZW9XaWR0aCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xhc3RSZXBvcnRlZFZpZGVvSGVp
Z2h0IHsgMCB9OwotICAgIGJvb2wgbV9pc0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2lzQ2hhbmdpbmdWaWRlb0Z1bGxzY3JlZW5Nb2RlIHsgZmFsc2UgfTsK
IAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBib29sIG1faXNFbnRl
cmluZ09yRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1dh
aXRpbmdGb3JQaWN0dXJlSW5QaWN0dXJlV2luZG93RnJhbWUgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc0VudGVyaW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRXhp
dGluZ1BpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUElD
VFVSRV9JTl9QSUNUVVJFX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5k
ZXggZjJiM2Q4N2Q0YjQ4YjUxMWUzYmVlYWZiZDJkOTM3MDg4NDk5ZGM3OC4uNmUzNjJkZTgxODdl
YWNiODdhMDQ0ZWQ1NWM3Yzc4NjE1MWI4ZmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0KQEAgLTMyNSw5ICszMjUsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGF1dG8mIGVsZW1lbnQg
PSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbV9tZWRpYUVsZW1lbnQpOwogICAgIGlmIChl
bGVtZW50LmZ1bGxzY3JlZW5Nb2RlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpCi0gICAgICAgIGVsZW1lbnQuc2V0RnVsbHNjcmVlbk1v
ZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBl
bGVtZW50LnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50
YXRpb25Nb2RlOjpJbmxpbmUpOwogICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC5zZXRGdWxsc2Ny
ZWVuTW9kZShNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGlj
dHVyZSk7CisgICAgICAgIGVsZW1lbnQuc2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9FbGVt
ZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCmluZGV4IGIxM2QxOWIzZTVjY2YxZjZkN2QyNjNj
MmUzMGY3ZTdmOGZkOGU4NDMuLjU0ZWVmMzk5OGI4YzIwYWIzNWFhYjg2N2ZjNDEzOGQwMTFkNDNk
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFNldHVwRnVsbHNjcmVlbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJG
dWxsc2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oY29u
c3QgRmxvYXRTaXplJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4o
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQubW0KaW5kZXggM2FkNjliN2U3NDNjZWExODFkNGNmZmM1OGJmMmQyYmU3ODY2
NDc0Ni4uOGY2YmE5OGY4ODRhMGUwMGNiODY4ZWQyMjA4MmU5MTU5NWU4MzkwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTE1Miw4ICsxNTIsOCBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVu
KFdURjo6RnVuY3RpbwogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpy
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7Ci0gICAgaWYgKG1fdmlkZW9F
bGVtZW50ICYmIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9kZSgpICE9IG1vZGUpCi0gICAg
ICAgIG1fdmlkZW9FbGVtZW50LT5zZXRGdWxsc2NyZWVuTW9kZShtb2RlKTsKKyAgICBpZiAobV92
aWRlb0VsZW1lbnQpCisgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRQcmVzZW50YXRpb25Nb2Rl
KEhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZShtb2RlKSk7CiAKICAgICBpZiAo
bV92aWRlb0VsZW1lbnQgJiYgZmluaXNoZWRXaXRoTWVkaWEgJiYgbW9kZSA9PSBNZWRpYVBsYXll
cjo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKICAgICAgICAgaWYgKG1fdmlkZW9FbGVtZW50
LT5kb2N1bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpKSB7CkBAIC0xOTEsNyArMTkxLDcgQEAgY29u
c3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFt
ZUFsbCgpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVu
TW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZp
ZGVvRnVsbHNjcmVlbk1vZGUpCiB7CiAgICAgaWYgKG1fdmlkZW9FbGVtZW50KQotICAgICAgICBt
X3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUp
OworICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0UHJlc2VudGF0aW9uTW9kZShIVE1MVmlkZW9F
bGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUodmlkZW9GdWxsc2NyZWVuTW9kZSkpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpyZXF1ZXN0Um91dGVTaGFyaW5n
UG9saWN5QW5kQ29udGV4dFVJRChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJvdXRlU2hhcmluZ1Bv
bGljeSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIxOSw3ICsyMTksNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRIYXNWaWRlbyhib29sIGhh
c1ZpZGVvKQogCiAgICAgbV9oYXNWaWRlbyA9IGhhc1ZpZGVvOwogCi0gICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3Io
bV9jbGllbnRzKSkKICAgICAgICAgY2xpZW50LT5oYXNWaWRlb0NoYW5nZWQobV9oYXNWaWRlbyk7
CiB9CiAKQEAgLTIzMCwzNyArMjMwLDM3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQ6OnNldFZpZGVvRGltZW5zaW9ucyhjb25zdCBGbG9hdFNpemUmIHZpZGVvCiAKICAg
ICBtX3ZpZGVvRGltZW5zaW9ucyA9IHZpZGVvRGltZW5zaW9uczsKIAotICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChtX3Zp
ZGVvRGltZW5zaW9ucyk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9jbGllbnRzKQorICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xp
ZW50cykpCiAgICAgICAgIGNsaWVudC0+d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpkaWRFbnRlclBpY3R1cmVJ
blBpY3R1cmUoKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgIGZv
ciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVu
dC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6
IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPmZhaWxlZFRvRW50ZXJQ
aWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtX2NsaWVudHMpCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9j
bGllbnRzKSkKICAgICAgICAgY2xpZW50LT53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZGlkRXhpdFBpY3R1cmVJ
blBpY3R1cmUoKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgIGZv
ciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVu
dC0+ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApp
bmRleCA4ZTQ0MTBmZDJjMTYzM2RmNGZlN2UyYzYwMmNkYzY3OWE0NDdmM2FjLi44YmVmN2U0YzYw
MWQ5NmQyOTc3MzBjMzlkNDgyYjZkNGUyYWJhY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaApA
QCAtMTQ3LDggKzE0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbkhhbmRs
ZXIoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopOwogICAgIGJvb2wgaXNQbGF5aW5nVmlkZW9JbkVu
aGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVh
ZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlKEJPT0wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
d2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0dXJlKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRXaWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUoQk9PTCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwpAQCAtMjI1LDcgKzIyMyw2IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIG1fZW50ZXJpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fZXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZWFk
eVRvU3RvcFBpY3R1cmVJblBpY3R1cmUgeyB0cnVlIH07Ci0gICAgYm9vbCBtX3dpbGxFbnRlclN0
YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KaW5kZXggOGU2ZDM2Yjc4Yjg5YjZkNzAzZThiZmIyODVlYzY5YTFkNTNmNmY0
Mi4uMzYxYmU5NGMxMjI1ZjkxYTJmNDA3NGI3OTZiNTA0N2U1ZWE4NzZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQpAQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3Jl
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIE5TRGljdGlvbmFyeSAqcGl4
ZWxCdWZmZXJBdHRyaWJ1dGVzOwogQHByb3BlcnR5IENHU2l6ZSB2aWRlb0RpbWVuc2lvbnM7CiBA
cHJvcGVydHkgQ0dSZWN0IG1vZGVsVmlkZW9MYXllckZyYW1lOworLSAoRmxvYXRSZWN0KWNhbGN1
bGF0ZVRhcmdldFZpZGVvRnJhbWU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXll
ckxheWVyIHsKQEAgLTI1Nyw2ICsyNTgsMjMgQEAgc3RhdGljIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFNjcmUKICAg
ICByZXR1cm4gX3ZpZGVvU3VibGF5ZXIuZ2V0KCk7CiB9CiAKKy0gKEZsb2F0UmVjdCljYWxjdWxh
dGVUYXJnZXRWaWRlb0ZyYW1lCit7CisgICAgRmxvYXRSZWN0IHRhcmdldFZpZGVvRnJhbWU7Cisg
ICAgZmxvYXQgdmlkZW9Bc3BlY3RSYXRpbyA9IHNlbGYudmlkZW9EaW1lbnNpb25zLndpZHRoIC8g
c2VsZi52aWRlb0RpbWVuc2lvbnMuaGVpZ2h0OworCisgICAgaWYgKFtBVkxheWVyVmlkZW9HcmF2
aXR5UmVzaXplIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCisgICAgICAgIHRh
cmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsKKyAgICBlbHNlIGlmIChbQVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZUFzcGVjdCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQor
ICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNp
ZGVSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKKyAgICBlbHNlIGlmIChbQVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlk
ZW9HcmF2aXR5XSkKKyAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IHNtYWxsZXN0UmVjdFdpdGhB
c3BlY3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gdGFyZ2V0
VmlkZW9GcmFtZTsKK30KKwogLSAodm9pZClsYXlvdXRTdWJsYXllcnMKIHsKICAgICBpZiAoW192
aWRlb1N1YmxheWVyIHN1cGVybGF5ZXJdICE9IHNlbGYpCkBAIC0yODMsMTQgKzMwMSw3IEBAIHN0
YXRpYyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24g
Y29udmVydFRvRXhpdEZ1bGxTY3JlCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAotICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJp
bmc6c2VsZi52aWRlb0dyYXZpdHldKQotICAgICAgICB0YXJnZXRWaWRlb0ZyYW1lID0gc2VsZi5i
b3VuZHM7Ci0gICAgZWxzZSBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgaXNF
cXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKLSAgICAgICAgdGFyZ2V0VmlkZW9GcmFt
ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh2aWRlb0FzcGVjdFJhdGlv
LCBzZWxmLmJvdW5kcyk7Ci0gICAgZWxzZSBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3RGaWxsIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCi0gICAgICAgIHRh
cmdldFZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZp
ZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHRhcmdldFZpZGVvRnJhbWUgPSBbc2VsZiBjYWxjdWxhdGVUYXJn
ZXRWaWRlb0ZyYW1lXTsKIAogICAgIFVJVmlldyAqdmlldyA9IChVSVZpZXcgKilbX3ZpZGVvU3Vi
bGF5ZXIgZGVsZWdhdGVdOwogICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtTWFrZVNjYWxlKHRhcmdldFZpZGVvRnJhbWUud2lkdGgoKSAvIHNvdXJjZVZp
ZGVvRnJhbWUud2lkdGgoKSwgdGFyZ2V0VmlkZW9GcmFtZS5oZWlnaHQoKSAvIHNvdXJjZVZpZGVv
RnJhbWUuaGVpZ2h0KCkpOwpAQCAtNDcwLDEwICs0ODEsMTAgQEAgc3RhdGljIHZvaWQgV2ViQVZQ
bGF5ZXJMYXllclZpZXdfc2V0VmlkZW9WaWV3KGlkIGFTZWxmLCBTRUwsIFVJVmlldyAqdmlkZW9W
aWV3KQogc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcoaWQgYVNlbGYsIFNFTCkKIHsKICAgICBX
ZWJBVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJWaWV3ID0gYVNlbGY7Ci0gICAgV2ViQVZQ
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICpwaXBWaWV3ID0gKFdlYkFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyAqKVtwbGF5ZXJMYXllclZpZXcgcGljdHVyZUluUGljdHVy
ZVBsYXllckxheWVyVmlld107CisgICAgYXV0byAqcGlwVmlldyA9IChXZWJBVlBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcgKilbcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclZpZXddOwogCi0gICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAo
V2ViQVZQbGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwotICAgIFdl
YkFWUGxheWVyTGF5ZXIgKnBpcFBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGlw
VmlldyBsYXllcl07CisgICAgYXV0byAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAq
KVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOworICAgIGF1dG8gKnBpcFBsYXllckxheWVy
ID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGlwVmlldyBsYXllcl07CiAgICAgW3BsYXllckxheWVy
IHNldFZpZGVvR3Jhdml0eTpBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0XTsKICAgICBb
cGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9TdWJsYXllcjpwbGF5ZXJMYXllci52aWRlb1N1YmxheWVy
XTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOnBsYXllckxheWVyLnZp
ZGVvRGltZW5zaW9uc107CkBAIC05OTgsNyArMTAwOSw2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2NyZWVuKCkKICAgICBbcGxheWVyQ29udHJvbGxl
cigpIHNldEhhc0VuYWJsZWRWaWRlbzpmYWxzZV07CiAgICAgW3BsYXllckNvbnRyb2xsZXIoKSBz
ZXRIYXNWaWRlbzpmYWxzZV07CiAKLSAgICBtX3dpbGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUlu
UGljdHVyZSA9IGZhbHNlOwogICAgIGlmIChtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlKSB7CiAg
ICAgICAgIG1fZXhpdGluZ1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKICAgICAgICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwpCkBAIC0xMTE5LDEwICsxMTI5LDYgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAg
IGlmIChtX2VudGVyRnVsbHNjcmVlbk5lZWRzRW50ZXJQaWN0dXJlSW5QaWN0dXJlKQogICAgICAg
ICBkb0VudGVyRnVsbHNjcmVlbigpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgfQogCiAgICAgbV9lbnRlcmluZ1BpY3R1cmVJ
blBpY3R1cmUgPSBmYWxzZTsKIH0KQEAgLTExMzYsOSArMTE0Miw2IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKICAg
ICBpZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwotCiAgICAgaWYgKG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZhaWxlZFRv
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiAKQEAgLTEyOTUsNyArMTI5OCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXAoKQogewogICAgIE1vZGUgY2hhbmdl
cyB7IG1fY3VycmVudE1vZGUubW9kZSgpIF4gbV90YXJnZXRNb2RlLm1vZGUoKSB9OwogCi0gICAg
aWYgKG1fY3VycmVudE1vZGUuaGFzVmlkZW8oKSAmJiBtX3RhcmdldE1vZGUuaGFzVmlkZW8oKSAm
JiAobV9zdGFuZGJ5ICE9IG1fdGFyZ2V0U3RhbmRieSkpIHsKKyAgICBpZiAobV9jdXJyZW50TW9k
ZS5oYXNWaWRlbygpICYmIG1fdGFyZ2V0TW9kZS5oYXNWaWRlbygpKSB7CiAgICAgICAgIG1fc3Rh
bmRieSA9IG1fdGFyZ2V0U3RhbmRieTsKICAgICAgICAgZmluYWxpemVTZXR1cCgpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNDQ5LDggKzE0NTIsMTYgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZG9FbnRlckZ1bGxzY3JlZW4oKQogICAgIH0KICAgICBtX2VudGVyRnVsbHNj
cmVlbk5lZWRzRXhpdFBpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKIAotICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIt
PmRpZEVudGVyRnVsbHNjcmVlbigpOworICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cikgeworICAgICAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgaWYgKG1fY3VycmVudE1vZGUu
aGFzUGljdHVyZUluUGljdHVyZSgpKSB7CisgICAgICAgICAgICBhdXRvICpwaXBWaWV3ID0gKFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqKVttX3BsYXllckxheWVyVmlldyBw
aWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3XTsKKyAgICAgICAgICAgIGF1dG8gKnBpcFBs
YXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGlwVmlldyBsYXllcl07CisgICAgICAg
ICAgICBhdXRvIHZpZGVvRnJhbWUgPSBbcGlwUGxheWVyTGF5ZXIgY2FsY3VsYXRlVGFyZ2V0Vmlk
ZW9GcmFtZV07CisgICAgICAgICAgICBzaXplID0gRmxvYXRTaXplKHZpZGVvRnJhbWUuc2l6ZSgp
KTsKKyAgICAgICAgfQorICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50
ZXJGdWxsc2NyZWVuKHNpemUpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZG9FeGl0RnVsbHNjcmVlbigpCkBAIC0xNTk4LDE2ICsxNjA5LDYgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0UmVhZHlUb1N0b3BQaWN0dXJlSW5Q
aWN0dXJlKEJPT0wgcmVhZHkpCiAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5m
dWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKCk7CiB9CiAKLWJvb2wgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OndpbGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSgpCi17
Ci0gICAgcmV0dXJuIG1fd2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0dXJlOwotfQot
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRXaWxsRW50ZXJTdGFuZGJ5
RnJvbVBpY3R1cmVJblBpY3R1cmUoQk9PTCB2YWx1ZSkKLXsKLSAgICBtX3dpbGxFbnRlclN0YW5k
YnlGcm9tUGljdHVyZUluUGljdHVyZSA9IHZhbHVlOwotfQotCiBzdGF0aWMgT3B0aW9uYWw8Ym9v
bD4gaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkOwogCiB2b2lkIFdlYkNvcmU6OnNldFN1cHBv
cnRzUGljdHVyZUluUGljdHVyZShib29sIGlzU3VwcG9ydGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0KaW5kZXggNGZjZDlhMmVmOTlmMDVhYjhkOGMzMjZhMDI2MjMwNDQ5MmI4OGM5
ZC4uZjgzMWQ2Yjg0NDhhM2Q4NDRmMjRjOGI0OGUwZmNiZWJmZDA5MDdkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0yOCwyMCArMjgsMjAgQEAKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiSFRNTFZpZGVv
RWxlbWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25P
cHRpb24uaCIKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgiCiAjaW1w
b3J0ICJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIgorI2ltcG9ydCAiUmVuZGVy
VmlkZW8uaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCIKKyNpbXBv
cnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlv
bi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1JlbmRlclZpZGVvLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4K
ICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9RdWFydHpDb3JlU1BJLmg+CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCByZXR1cm5WaWRl
b0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgZmlu
YWw7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRp
ZEVudGVyRnVsbHNjcmVlbihjb25zdCBGbG9hdFNpemUmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdp
bGxFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oKSBm
aW5hbDsKICAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbQppbmRleCA4NWM3MGIyYmJiNTA0N2VmOGVkZGE3NDI5NDY2NTlhNGIyN2UxN2NlLi4z
M2Y0ZDRhOGYyNGY1OWExMzcxMWJiMGI1ZTQwMDI4ZTZiMDJlOGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW0KQEAgLTk1LDYgKzk1LDcgQEAgdXNpbmcgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9k
ZWw7CiAKIGVudW0gY2xhc3MgUElQU3RhdGUgewogICAgIE5vdEluUElQLAorICAgIEVudGVyaW5n
UElQLAogICAgIEluUElQLAogICAgIEV4aXRpbmdQSVAKIH07CkBAIC0yMTAsMTIgKzIxMSwxMiBA
QCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIAogLSAodm9pZCllbnRlclBJUAogewotICAgIGlmIChf
cGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQKQorICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3Rh
dGU6OkVudGVyaW5nUElQIHx8IF9waXBTdGF0ZSA9PSBQSVBTdGF0ZTo6SW5QSVApCiAgICAgICAg
IHJldHVybjsKIAogICAgIFtfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxlciB2aWV3XS5sYXll
ci5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNr
KTsKICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlckFzUGljdHVy
ZUluUGljdHVyZTpfdmlkZW9WaWV3Q29udGFpbmVyQ29udHJvbGxlci5nZXQoKV07Ci0gICAgX3Bp
cFN0YXRlID0gUElQU3RhdGU6OkluUElQOworICAgIF9waXBTdGF0ZSA9IFBJUFN0YXRlOjpFbnRl
cmluZ1BJUDsKIH0KIAogLSAodm9pZClleGl0UElQCkBAIC0yNDgsOCArMjQ5LDI1IEBAIGVudW0g
Y2xhc3MgUElQU3RhdGUgewogCiAgICAgQVNTRVJUX1VOVVNFRCh2aWRlb1ZpZXdDb250YWluZXIs
IHZpZGVvVmlld0NvbnRhaW5lciA9PSBfdmlkZW9WaWV3Q29udGFpbmVyKTsKIAotICAgIGlmIChf
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCi0gICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5ZXJGcmFtZShbX3Zp
ZGVvVmlld0NvbnRhaW5lciBib3VuZHNdKTsKKyAgICBpZiAoIV92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfcGlwU3RhdGUgPT0gUElQU3Rh
dGU6OkVudGVyaW5nUElQKSB7CisgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzQyMjUw
OTUyKQorICAgICAgICAvLyBDdXJyZW50bHksIC1bUElQVmlld0NvbnRyb2xsZXIgcHJlc2VudFZp
ZXdDb250cm9sbGVyQXNQaWN0dXJlSW5QaWN0dXJlOl0gZG9lcyBub3QKKyAgICAgICAgLy8gdGFr
ZSBhIGNvbXBsZXRpb25IYW5kbGVyIHBhcmFtZXRlciwgc28gd2UgdXNlIHRoZSBmaXJzdCBib3Vu
ZHMgY2hhbmdlIGV2ZW50CisgICAgICAgIC8vIGFzIGFuIGluZGljYXRpb24gdGhhdCBlbnRlcmlu
ZyBwaWN0dXJlLWluLXBpY3R1cmUgaXMgY29tcGxldGVkLgorICAgICAgICBfcGlwU3RhdGUgPSBQ
SVBTdGF0ZTo6SW5QSVA7CisKKyAgICAgICAgaWYgKGF1dG8qIG1vZGVsID0gX3ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAgICAgICAgICAgIG1v
ZGVsLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKKworICAgICAgICBpZiAoYXV0byogb2Jz
ZXJ2ZXIgPSBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcigpKQorICAgICAgICAgICAgb2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigo
V2ViQ29yZTo6RmxvYXRTaXplKVtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5kc10uc2l6ZSk7Cisg
ICAgfQorCisgICAgaWYgKGF1dG8qIG1vZGVsID0gX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAgICAgICAgbW9kZWwtPnNldFZpZGVvTGF5ZXJG
cmFtZShbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdKTsKIH0KIAogLSAodm9pZClzdXBlcnZp
ZXdEaWRDaGFuZ2VGb3JWaWRlb1ZpZXdDb250YWluZXI6KFdlYlZpZGVvVmlld0NvbnRhaW5lciAq
KXZpZGVvVmlld0NvbnRhaW5lcgpAQCAtNDU2LDExICs0NzQsNiBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYzo6ZW50ZXJGdWxsc2NyZWVuKCkKICNpZiBFTkFCTEUoV0VCX1BMQVlC
QUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgICAgIFttX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZS0+cGxheUJhY2tDb250cm9sc01hbmFnZXIoKSBzZXRQaWN0dXJlSW5QaWN0dXJlQWN0aXZlOllF
U107CiAjZW5kaWYKLQotICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS80MjI1MDk1Mik6
IE1vdmUgdGhpcyBjYWxsIGludG8gYSBjb21wbGV0aW9uIGhhbmRsZXIgb3IgZGVsZWdhdGUgY2Fs
bGJhY2suCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmRpZEVudGVyUGljdHVyZUlu
UGljdHVyZSgpOwotICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAg
ICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDI5Y2ZmMjMxYzY5M2M3YjUz
NjY1ZjExYWM5MWVkZmM4MGZmNTdlNTUuLmFkOGVmZTNlYTVhZDBmNGY5NDZkN2E0YTU1OTQwNGI3
NjQ0YzU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZv
aWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIGRpZFNldHVwRnVs
bHNjcmVlbigpIGZpbmFsOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgZmlu
YWw7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4
aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZp
bmFsOwpAQCAtMTU5LDYgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0JiBlbnN1cmVNb2RlbChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7
CiAgICAgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmIGVuc3VyZUludGVyZmFjZShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgUGxhdGZvcm1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UqIGZpbmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIpOworICAgIHZvaWQgZW5zdXJlQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRDbGllbnRGb3JDb250ZXh0KFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRl
eHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogCkBAIC0xODUsNyArMTg2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEVudGVy
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCk7CiAgICAg
dm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBkYzQzZWZmMmIzODQwZGRhYTI0YjY4NmM4ZTE0ZmQ0NzRhMWE4NTY3
Li44MTM3NWUzODZkMDNhNmYwN2U3YTg4NzA2NDkxMWMyZDViZjQyMjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC0yNDQsMTAgKzI0NCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9tYW5hZ2VyLT5kaWRT
ZXR1cEZ1bGxzY3JlZW4obV9jb250ZXh0SWQpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0OjpkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplKQogewogICAgIGlmIChtX21hbmFnZXIpCi0gICAgICAgIG1fbWFuYWdlci0+ZGlkRW50ZXJG
dWxsc2NyZWVuKG1fY29udGV4dElkKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5kaWRFbnRlckZ1bGxz
Y3JlZW4obV9jb250ZXh0SWQsIHNpemUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6d2lsbEV4aXRGdWxsc2NyZWVuKCkKQEAgLTI5MCwxMyArMjkwLDEzIEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5k
Q29udGV4dFVJRChDb21wbGV0CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojpw
cmVwYXJlVG9FeGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Ns
aWVudHMpCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkK
ICAgICAgICAgY2xpZW50LT5wcmVwYXJlVG9FeGl0UGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVy
ZSgpCiB7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgZm9yIChhdXRv
JiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKICAgICAgICAgY2xpZW50LT53aWxs
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKQEAgLTMwNSwxOSArMzA1LDE5IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpkaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKQog
ICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+aGFzVmlkZW9JblBpY3R1cmVJ
blBpY3R1cmVEaWRDaGFuZ2UodHJ1ZSk7CiAKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xp
ZW50cykKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQog
ICAgICAgICBjbGllbnQtPmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUo
KQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgIGZvciAoYXV0byYg
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+ZmFpbGVk
VG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ6OndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgZm9yIChhdXRvJiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3Io
bV9jbGllbnRzKSkKICAgICAgICAgY2xpZW50LT53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsK
IH0KIApAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpCiAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAg
bV9tYW5hZ2VyLT5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShmYWxzZSk7CiAK
LSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPmRpZEV4aXRQaWN0
dXJlSW5QaWN0dXJlKCk7CiB9CiAKQEAgLTQ2MSw2ICs0NjEsMTEgQEAgUGxhdGZvcm1WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UqIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZmluZEludGVy
ZmFjZShQbGEKICAgICByZXR1cm4gc3RkOjpnZXQ8MT4oaXQtPnZhbHVlKS5nZXQoKTsKIH0KIAor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuc3VyZUNsaWVudEZvckNvbnRleHQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQoreworICAgIG1fY2xp
ZW50Q291bnRzLmFkZChjb250ZXh0SWQsIDEpOworfQorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NsaWVudENvdW50
cy5hZGQoY29udGV4dElkLCAxKTsKQEAgLTUyNCwxMiArNTI5LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRChQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWQKICAgICBNRVNTQUdFX0NIRUNLKHZpZGVvTGF5ZXJJRCk7CiAKICAgICBhdXRvJiBb
bW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKGludGVyZmFjZS0+d2lsbEVudGVyU3Rh
bmRieUZyb21QaWN0dXJlSW5QaWN0dXJlKCkpCi0gICAgICAgIGludGVyZmFjZS0+c2V0V2lsbEVu
dGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0dXJlKE5PKTsKLSAgICBlbHNlIGlmICh2aWRlb0Z1
bGxzY3JlZW5Nb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZVBpY3R1cmVJblBpY3R1cmUgfHwgIXN0YW5kYnkpCi0gICAgICAgIGFkZENsaWVudEZvckNvbnRl
eHQoY29udGV4dElkKTsKLSNlbmRpZgorICAgIGVuc3VyZUNsaWVudEZvckNvbnRleHQoY29udGV4
dElkKTsKIAogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkKSB7CiAg
ICAgICAgIGlmICghdmlkZW9EaW1lbnNpb25zLmlzRW1wdHkoKSkKQEAgLTU5OCw4ICs1OTgsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpIHsK
LSAgICAgICAgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCk7Ci0gICAgICAgIHNldFZpZGVv
TGF5ZXJGcmFtZShjb250ZXh0SWQsIHswLCAwLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93
U2l6ZS53aWR0aCgpLCBtX21vY2tQaWN0dXJlSW5QaWN0dXJlV2luZG93U2l6ZS5oZWlnaHQoKX0p
OworICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCBtX21vY2tQaWN0dXJlSW5Q
aWN0dXJlV2luZG93U2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3NCw5ICs3
NzMsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGkKICAgICBtX3BhZ2UtPmRpZEV4aXRGdWxs
c2NyZWVuKCk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRl
ckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKKyAgICBPcHRpb25h
bDxGbG9hdFNpemU+IG9wdGlvbmFsU2l6ZTsKKyAgICBpZiAoIXNpemUuaXNFbXB0eSgpKQorICAg
ICAgICBvcHRpb25hbFNpemUgPSBzaXplOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkLCBvcHRp
b25hbFNpemUpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1
bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCA2ODk5NDNi
NGY2ZjgzYWEzNTIzMmZmY2ZiMTI0ZmI4OGE0MTUxMTEyLi5kM2E4N2Q5YjJiMjgyYTIyNWM4OTQx
NWVmZGMwNjUyOGNiY2QwMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXJJT1MubW0KQEAgLTk1MCw3ICs5NTAsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm47CiAKICAgICBpbnRlcmZhY2UtPnNldFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZShOTyk7
Ci0gICAgaW50ZXJmYWNlLT5zZXRXaWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUo
WUVTKTsKICAgICBfcmV0dXJuVG9GdWxsc2NyZWVuRnJvbVBpY3R1cmVJblBpY3R1cmUgPSBZRVM7
CiAKICAgICBpZiAoIV9leGl0aW5nRnVsbFNjcmVlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCmluZGV4
IGI5NDA3ZjEzMDQ0YWU4NTE4NTVjYjgxMjY4NGIxY2NiYWMwN2YzMTIuLjdhNjQzY2E2MGRiNjQw
NzAyMTM3NTM5ZTMwMzY5MDNjNjYxM2U1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtODgs
NiArODgsNyBAQCB0eXBlZGVmIGVudW0gRnVsbFNjcmVlblN0YXRlIDogTlNJbnRlZ2VyIEZ1bGxT
Y3JlZW5TdGF0ZTsKIAogLSAodm9pZCl2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZTsKIC0g
KHZvaWQpZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlOworLSAodm9pZClkaWRFeGl0UGljdHVyZUlu
UGljdHVyZTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IGQyNzk2MWZkNDll
NTFlZTZlODQyYzg3YzYyOWYxMjA3ZWQxNGFiNWEuLjQ4NWJkOTBmM2UwOWI1Y2RjNDBiNzljMDJi
MWZkNThkYTAyYmE1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC04MCw2ICs4MCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIFttX3BhcmVudCBkaWRFbnRlclBpY3R1cmVJblBpY3R1cmVdOwog
ICAgIH0KIAorICAgIHZvaWQgZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgW21fcGFyZW50IGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlXTsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAqbV9wYXJlbnQgeyBudWxs
cHRyIH07CiAgICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4g
bV9pbnRlcmZhY2U7CkBAIC02NjEsNiArNjY2LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gdGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBib29sIGNhcHR1
CiAgICAgW3NlbGYgcmVxdWVzdEV4aXRGdWxsU2NyZWVuXTsKIH0KIAorLSAodm9pZClkaWRFeGl0
UGljdHVyZUluUGljdHVyZQoreworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldEludGVy
ZmFjZShudWxscHRyKTsKK30KKwogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBDdXN0b20g
TlNXaW5kb3cgRnVsbCBTY3JlZW4gQW5pbWF0aW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGU4MjNk
MjBjNGQxYjkyNDRhMmVjZWJiOWMzOTFkNWFmMzcwMmQ1NDMuLmI4YzcxOGU4MWFjZjczZTZkYmQ0
ZTg4YTBkNjQ0ZjViZTUxMGU4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtMTQ5LDcgKzE0OSw3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEVudGVy
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgT3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRTaXplPik7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWVG
ZW5jZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVj
dCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpOwogICAgIHZvaWQgc2V0VmlkZW9M
YXllckdyYXZpdHlFbnVtKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCB1bnNpZ25l
ZCBncmF2aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMDc2ZmZm
NTc3NjFlNTk3NDRhY2ViODdkNGRhMzY1MWMyNWFjMGI2Ny4uMzI1YjNjZDJmNDU5MmU0MWM0ZGRk
ODExOGRiMmI2ZDg5NjhmNWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlciB7CiAg
ICAgRGlkU2V0dXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkKQogICAgIFdpbGxFeGl0RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBEaWRFeGl0RnVsbHNjcmVl
bihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKLSAg
ICBEaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCisgICAgRGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFNpemU+IHNpemUpCiAgICAgRGlkQ2xlYW51cEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgU2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
LCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KQog
ICAgIFNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
aW5kZXggMGZiY2Y4NmU5Y2RjMzRjMDlhZGY5MTdhYjY0ZjA5MWYxNWRkNjY2Zi4uM2NjNjY0OWI0
MjM0MWNhOTY5NzgwZjFmMGUxMWRhMTZiZTEzNGM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTM0
Miw3ICszNDIsOSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxsc2Ny
ZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZgogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewotICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwor
ICAgIGF1dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29u
dGV4dElkKTsKKyAgICBtb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVl
bk1vZGUpOworICAgIGludGVyZmFjZS0+c2V0RnVsbHNjcmVlbk1vZGUodmlkZW9GdWxsc2NyZWVu
TW9kZSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGF0ZUlu
bGluZVJlY3QoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQpAQCAt
NDI4LDcgKzQzMCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxs
c2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgfSk7CiB9CiAKLXZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBzaXplKQogewogICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVu
KCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwogCkBAIC00NDEsNyArNDQzLDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdmlkZW9FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOworICAg
IHZpZGVvRWxlbWVudC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKHNpemUu
dmFsdWVPcihXZWJDb3JlOjpGbG9hdFNpemUoKSkpOwogCiAgICAgaWYgKGludGVyZmFjZS0+dGFy
Z2V0SXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Myw3ICs0ODUsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgfSk7CiAjZW5kaWYKIH0KLSAgICAKKwogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhp
cywgY29udGV4dElkKTsKQEAgLTUwNCw3ICs1MDYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwogICAgIFJlZlB0cjxI
VE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2RlbC0+dmlkZW9FbGVtZW50KCk7CiAg
ICAgaWYgKHZpZGVvRWxlbWVudCkKLSAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRTdG9wQmVpbmdG
dWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEV4aXRGdWxsc2Ny
ZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCk7CiAKICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5N
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAg
IGludGVyZmFjZS0+c2V0RnVsbHNjcmVlblN0YW5kYnkoZmFsc2UpOwpAQCAtNTE4LDEyICs1MjAs
MTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmkKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCp2aWRlb0VsZW1lbnQsIG1vZGUs
IHN0YW5kYnkpOwogICAgIH0pOwogfQotICAgIAorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29u
dGV4dElkKS5zZXRWaWRlb0xheWVyR3Jhdml0eSgoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2
aXR5KWdyYXZpdHkpOwogfQotICAgIAorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1
bGxzY3JlZW5XaWxsUmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407786</attachid>
            <date>2020-09-02 12:20:00 -0700</date>
            <delta_ts>2020-09-08 10:38:31 -0700</delta_ts>
            <desc>Revise the patch according to Eric&apos;s comments and fix some issues found in stress tests</desc>
            <filename>bug-215972-20200902121959.patch</filename>
            <type>text/plain</type>
            <size>60080</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc0MDA2ZjZjZDkxZGQ2
OTg3NDU5ODhlZWM2ZTBlNzJkZjMwOGEzYi4uNmU5YjkzMjE4NjdiYWVkZjY2NzFlMzlhOWE3N2Nh
MmEzODk5MTBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0wOS0wMiAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIGZ1bmN0aW9u
cyBhbmQgc3RhdGUgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlIHBpY3R1cmUtaW4tcGljdHVyZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgcmVsYXRl
ZCB0byBjaGFuZ2luZyB2aWRlbyBwcmVzZW50YXRpb24gbW9kZQorICAgICAgICBpbiBIVE1MVmlk
ZW9FbGVtZW50IGFuZCBIVE1MTWVkaWFFbGVtZW50LiBJdCBjbGVhbnMgdXAgc29tZSBldmVudC1y
ZWxhdGVkIGNvZGUgYXMgd2VsbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc2ltcGxpZmll
cyB0aGUgcHJvY2VzcyBvZiBlbnRlcmluZyB0aGUgcGljdHVyZS1pbi1waWN0dXJlIG1vZGUuCisg
ICAgICAgIFRoZSBYUEMgbWVzc2FnZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkRpZEVu
dGVyRnVsbHNjcmVlbiBmcm9tIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHdpbGwgcHJvdmlkZSB0
aGUgcGljdHVyZS1pbi1waWN0dXJlIHdpbmRvdyBzaXplIGlmIHRoZSB2aWRlbyBpcyBlbnRlcmlu
ZyBwaWN0dXJlLWluLXBpY3R1cmUsCisgICAgICAgIHNvIHRoYXQgd2UgY2FuIGdldCByaWQgb2Yg
dGhlIGludGVybWVkaWF0ZSBzdGF0ZSAod2FpdGluZyBmb3IgdGhlIGluaXRpYWwgcGljdHVyZS1p
bi1waWN0dXJlCisgICAgICAgIHdpbmRvdyBmcmFtZSkuCisKKyAgICAgICAgV2l0aCB0aGlzIHBh
dGNoLCBhbGwgcHJlc2VudGF0aW9uIG1vZGUgY2hhbmdlIHJlcXVlc3RzIG5lZWQgdG8gZ28gdGhy
b3VnaCB0aGUgSFRNTFZpZGVvRWxlbWVudC4KKyAgICAgICAgTm9ybWFsbHksIHZpZGVvIHByZXNl
bnRhdGlvbiBtb2RlIGNoYW5nZSByZXF1ZXN0cyBjb21lIGZyb20gdGhlIHdlYiBwcm9jZXNzIHdo
ZXJlIGEgcGFnZQorICAgICAgICBjYWxscyB0aGUgZnVsbHNjcmVlbi9waWN0dXJlLWluLXBpY3R1
cmUgQVBJIG9yIGEgdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgbW9kZXJuIG1lZGlhIGNvbnRyb2xz
LgorICAgICAgICBIb3dldmVyLCB0aHJvdWdoIGdlc3R1cmVzLCB0aGUgVUkgcHJvY2VzcyBtYXkg
cmVxdWVzdCB0byBjaGFuZ2UgdGhlIHByZXNlbnRhdGlvbiBtb2RlCisgICAgICAgIChlLmcuLCBm
cm9tIGZ1bGxzY3JlZW4gdG8gcGljdHVyZS1pbi1waWN0dXJlKS4gVGhlIHdlYiBwcm9jZXNzIHNp
ZGUgd2lsbCBiZSBsaWtlIGEgZHJ5IHJ1bgorICAgICAgICBiZWNhdXNlIHRoZSB0YXNrcyBpbiB0
aGUgVUkgcHJvY2VzcyBhcmUgbW9zdGx5IGNvbXBsZXRlZCBiZWZvcmUgdGhlIHdlYiBwcm9jZXNz
IHJlY2VpdmVzCisgICAgICAgIHRoZSByZXF1ZXN0LiBUaGUgbW90aXZhdGlvbiB0byBkbyB0aGF0
IGlzIHRvIGd1YXJhbnRlZSBjb3JyZWN0IGV2ZW50cyBhcmUgZmlyZWQuCisgICAgICAgIEFsbCBz
Y2VuYXJpb3Mgc2hhcmluZyB0aGUgc2FtZSBjb2RlIHBhdGggYWxzbyBoZWxwIHVzIGF2b2lkIHJl
Z3Jlc3Npb25zIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgaGF2ZSBhIGdvb2Qgd2F5IHRvIGNy
ZWF0ZSByZWdyZXNzaW9uIHRlc3RzIGZvciB0aGUgc2NlbmFyaW9zIHdoZXJlIHByZXNlbnRhdGlv
biBtb2RlIGNoYW5nZQorICAgICAgICByZXF1ZXN0cyBjb21lIGZyb20gdGhlIFVJIHByb2Nlc3Mu
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVu
dGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpleGl0
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWaWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIFNpbXBsaWZ5IHRoZSBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9w
QmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojppc1ZpZGVvTGF5ZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICBEZWxldGUgZnVuY3Rpb24g
SFRNTFZpZGVvRWxlbWVudDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKCkgYW5kIG1vdmUgaXRzIGNv
ZGUKKyAgICAgICAgdG8gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmZ1bGxzY3JlZW5Nb2RlIGNvbnN0KToKKyAgICAgICAgUmVwbGFjZSBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoKSB3aXRoIGEgcHJpdmF0ZSBmdW5jdGlvbiBzZXRGdWxsc2NyZWVuTW9kZSgpLgor
ICAgICAgICBDaGFuZ2UgInZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSIg
dG8gInZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0JikiLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnRvUHJlc2VudGF0aW9uTW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbk1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJGdWxsc2NyZWVuT3JQ
aWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRp
ZEV4aXRGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvUHJlc2VudGF0aW9uTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkU3RvcEJlaW5n
RnVsbHNjcmVlbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5oOgorICAgICAgICBPbmx5IEhUTUxWSWRlb0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbk1v
ZGUoKSBjYW4gYmUgdXNlZCBieSBvdGhlciBtb2R1bGVzIChQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
CisgICAgICAgIG9yIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIpIHRvIGNoYW5nZSB0aGUgdmlkZW8g
cHJlc2VudGF0aW9uIG1vZGUuCisgICAgICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyBkaWZmZXJlbnQg
Y2FsbGJhY2tzIHJlZ2FyZGluZyB0aGUgZnVsbHNjcmVlbiBtb2RlIGNoYW5nZSB0cmFuc2l0aW9u
CisgICAgICAgIGZvciBGdWxsc2NyZWVuTWFuYWdlciBhbmQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci4KKyAgICAgICAgLSBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCBmb3IgRnVsbHNjcmVlbk1h
bmFnZXIuCisgICAgICAgIC0gZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlIGFu
ZCBkaWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSBmb3IKKyAgICAgICAgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci4KKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIG1faXNXYWl0aW5n
Rm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lIGFuZCByZW5hbWVzIG1faXNDaGFuZ2luZ1By
ZXNlbnRhdGlvbk1vZGUKKyAgICAgICAgdG8gbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9k
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUpOgorCisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaDoKKworICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RGdWxsc2NyZWVu
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRIYXNWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9EaW1lbnNpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3aWxsRW50
ZXJQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50OjpkaWRFbnRlclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZhaWxlZFRvRW50ZXJQaWN0
dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Ojp3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJl
KToKKyAgICAgICAgSXRlcmF0ZSBhIGNvcHkgb2YgdGhlIEhhc2hTZXQgb2YgVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDbGllbnQgcG9pbnRlcnMgYmVjYXVzZSBhIGNhbGxiYWNrIG1heQorICAgICAgICBy
ZW1vdmUgdGhlIGNsaWVudCBpdHNlbGYgZHVyaW5nIHRoZSBpdGVyYXRpb24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAg
ICgtW1dlYkFWUGxheWVyTGF5ZXIgY2FsY3VsYXRlVGFyZ2V0VmlkZW9GcmFtZV0pOgorICAgICAg
ICAoLVtXZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10pOgorICAgICAgICAoV2ViQVZQ
bGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJM
YXllclZpZXcpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFu
dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpk
aWRTdGFydFBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb1NldHVwKToKKyAgICAgICAgKFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojpkb0VudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpz
ZXRXaWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUpOiBEZWxldGVkLgorICAgICAg
ICBBZGQgYSBwcm9wZXJ0eSBpc1BpY3R1cmVJblBpY3R1cmUgdG8gV2ViQVZQbGF5ZXJMYXllciwg
d2hpY2ggd2lsbCBzZXQgdG8gWUVTIGlmCisgICAgICAgIGEgbGF5ZXIgaXMgY3JlYXRlZCBmb3Ig
cGljdHVyZS1pbi1waWN0dXJlLgorICAgICAgICBUaGlzIHByb3BlcnR5IGlzIHVzZWQgaW4gLVtX
ZWJBVlBsYXllckxheWVyIGxheW91dFN1YmxheWVyc10gdG8gc2tpcAorICAgICAgICB0aGUgdW5u
ZWNlc3NhcnkgY2FsY3VsYXRpb24gb2YgInRhcmdldFZpZGVvRnJhbWUiIGJlY2F1c2UgdGhlIFBp
UCB3aW5kb3cgd2lsbAorICAgICAgICBhbHdheXMgaGF2ZSB0aGUgc2FtZSBhc3BlY3QgcmF0aW8g
YXMgdGhlIHZpZGVvIGNvbnRlbnQsIHNvIHdlIGNhbiBzZXQKKyAgICAgICAgInRhcmdldFZpZGVv
RnJhbWUiIHRvIGJlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLiBNb3Jlb3ZlciwgdGhlIGNhbGN1
bGF0aW9uIG1heQorICAgICAgICBsZWFkIHRvIHJvdW5kaW5nIGVycm9ycyBmb3Igc29tZSBudW1i
ZXJzIGFuZCB0aGUgZXJyb3JzIG1heSB0cmlnZ2VyIHVubmVjZXNzYXJ5CisgICAgICAgIHBpY3R1
cmUtaW4tcGljdHVyZSB3aW5kb3cgcmVzaXplIGV2ZW50cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBtb3ZlZCB0byBXZWJDb3JlIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVk
ZSBXZWJDb3JlIGhlYWRlcnMKKyAgICAgICAgaW4gYSB3YXkgbGlrZSAiI2luY2x1ZGUgPFdlYkNv
cmUvWFhYLmg+Ii4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09i
akMgZW50ZXJQSVBdKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
T2JqQyBib3VuZHNEaWRDaGFuZ2VGb3JWaWRlb1ZpZXdDb250YWluZXI6XSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbik6Cisg
ICAgICAgIEFkZCBQSVBTdGF0ZTo6RW50ZXJpbmdQSVAuIE5vdGlmeSB0aGUgb2JzZXJ2ZXIgdGhh
dCB0aGUgdmlkZW8gaGFzIGVudGVyZWQKKyAgICAgICAgcGljdHVyZS1pbi1waWN0dXJlIGFmdGVy
IHRoZSBQaVAgd2luZG93IHNpemUgaXMgZmluYWxpemVkLgorCiAyMDIwLTA4LTI1ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IGxvYWRzIHF1aWNrbHkg
Zm9sbG93ZWQgYnkgbmF2aWdhdGlvbnMgbWF5IGZhaWwgaW5kZWZpbml0ZWx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGI1MzdlMWI0OWVjY2I3NDU1MmFhYWRiMDgwNWY4OTU2OTgyZDc3ZDMuLjkzZmY1ZTlmYjI4ZDRj
ZWFlZWRhNGJkOTAxZWQ4ZjJmODNlMTE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIw
MjAtMDktMDIgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVh
biB1cCBmdW5jdGlvbnMgYW5kIHN0YXRlIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZSBwaWN0dXJl
LWluLXBpY3R1cmUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNTk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBvcHRpb25hbCBGbG9hdFNpemUg
cGFyYW1ldGVyIHRvIHRoZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3Jl
ZW4gbWVzc2FnZS4KKyAgICAgICAgQWxzbywgaXQgZW5hYmxlcyB0aGUgcGljdHVyZS1pbi1waWN0
dXJlIGFuZCBmdWxsc2NyZWVuIGV2ZW50cyB3aGVuIGEgdmlkZW8gZWxlbWVudCBlbnRlcnMgcGlj
dHVyZS1pbi1waWN0dXJlCisgICAgICAgIGZyb20gdGhlIGZ1bGxzY3JlZW4gbW9kZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyUGljdHVyZUluUGljdHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZmFpbGVk
VG9FbnRlclBpY3R1cmVJblBpY3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OndpbGxFeGl0UGljdHVyZUluUGljdHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuc3VyZUNs
aWVudEZvckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldHVwRnVsbHNjcmVlbldpdGhJRCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorICAgICAg
ICBVc2UgZW5zdXJlQ2xpZW50Rm9yQ29udGV4dCgpIGluc3RlYWQgb2YgYWRkQ2xpZW50Rm9yQ29u
dGV4dCgpIGluIHNldHVwRnVsbHNjcmVlbldpdGhJRCgpCisgICAgICAgIHRvIGF2b2lkIGxlYWtp
bmcgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQgaW5zdGFuY2VzLgorICAgICAgICBJdGVy
YXRlIGEgY29weSBvZiB0aGUgSGFzaFNldCBvZiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCBw
b2ludGVycyBiZWNhdXNlIGEgY2FsbGJhY2sgbWF5CisgICAgICAgIHJlbW92ZSB0aGUgY2xpZW50
IGl0c2VsZiBkdXJpbmcgdGhlIGl0ZXJhdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAgICAgICAo
LVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHByZXBhcmVUb0V4aXRQaWN0dXJlSW5QaWN0
dXJlXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRpZEV4aXRQ
aWN0dXJlSW5QaWN0dXJlXSk6CisgICAgICAgIEZpeCBsZWFraW5nIG9mIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCk6CisgICAgICAgIFdlIG5lZWQgdG8gY2hhbmdlIHRo
ZSBmdWxsc2NyZWVuIG1vZGUgaW4gdGhlIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQg
aW5zdGFuY2UgYXMgd2VsbC4KKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorICAgICAgICBDYWxsIGRpZEV4aXRGdWxs
c2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKCkgaW5zdGVhZCBvZiBkaWRTdG9wQmVpbmdGdWxsc2Ny
ZWVuRWxlbWVudCgpLCB3aGljaAorICAgICAgICBpcyBmb3IgdGhlIEZ1bGxzY3JlZW5NYW5hZ2Vy
LgorCiAyMDIwLTA4LTI1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+
CiAKICAgICAgICAgVHJ5aW5nIHRvIGxvb2t1cCB3aGVuIFdlYlZpZXcgaXMgaW4gYSBwb3BvdmVy
IGNhdXNlcyBwcm9jZXNzIHRvIGhhbmcuIEZpeCBmb3IgTGVnYWN5IFdlYlZpZXcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxNjAzNDVhNWFjMjE4YjM1MzVk
MDJmMDdmZWFlNmViNmQ3ZWExZGY4Li4zNTVjZDE1NzFmZWFjNTg3MDJjMDYxNGQxNTM5NDVmN2E2
MzA1NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU3
NzksOCArNTc3OSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVu
dCYgZXZlbnQpCiAgICAgLy8gV2UgbmVlZCB0byBmaXJlIHRoZSBlbmQgZnVsbHNjcmVlbiBldmVu
dCB0byBub3RpZnkgdGhlIHBhZ2UKICAgICAvLyB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uL3NpemUg
YmFjayAqYmVmb3JlKiBleGl0aW5nIGZ1bGxzY3JlZW4uCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUg
ZXhpdCBmdWxsc2NyZWVuIGFuaW1hdGlvbiB3aWxsIGJlIGluY29ycmVjdC4KLSAgICBpZiAoIW1f
dmlkZW9GdWxsc2NyZWVuU3RhbmRieSAmJiBldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLndl
YmtpdGVuZGZ1bGxzY3JlZW5FdmVudCkgewotICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQo
VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5TdGFu
ZGJ5ICYmICFtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiAmJiBldmVudC50eXBlKCkgPT0gZXZl
bnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCkgeworICAgICAgICBzZXRGdWxsc2Ny
ZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgICAgIGRvY3VtZW50KCkucGFn
ZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSk7CiAgICAgfQogfQpAQCAtNTk3Mywx
MSArNTk3MywxOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiAKICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyaWx5QWxs
b3dpbmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBm
dWxsc2NyZWVuTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgICAgICAgICAgYXV0byBvbGRNb2Rl
ID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlOworICAgICAgICAgICAgICAgIHNldEZ1bGxzY3JlZW5N
b2RlKG1vZGUpOwogICAgICAgICAgICAgICAgIGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsKIAog
ICAgICAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChhc1ZpZGVvLCBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGUsIG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSk7Ci0gICAgICAgICAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQpOworICAgICAg
ICAgICAgICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChtb2RlID09IFZpZGVvRnVsbHNjcmVl
bk1vZGVTdGFuZGFyZCkKKyAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQpOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG9sZE1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICAgICAg
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZl
bnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7CkBAIC02MDI0LDE1ICs2MDMx
LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIH0KIAog
ICAgIGlmIChkb2N1bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1
bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpIHsKLSAgICAgICAgZnVsbHNjcmVl
bk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgc2V0RnVsbHNj
cmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgICAgICBkb2N1bWVudCgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24oZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpLCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4ob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSkp
IHsKICAgICAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSkgewotICAgICAgICAgICAg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAg
ICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICAgICAg
ICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbnRlclZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvbGRWaWRlb0Z1bGxzY3JlZW5N
b2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkgeworICAgICAgICAgICAgLy8gVGhl
IGV4aXQgZnVsbHNjcmVlbiByZXF1ZXN0IHdpbGwgYmUgc2VudCBpbiBkaXNwYXRjaEV2ZW50KCku
CisgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2Ny
ZWVuRXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKKyAgICAg
ICAgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICBk
b2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpOwogICAgIH0K
IH0KIApAQCAtNjA2Niw3ICs2MDgxLDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KGJvb2wgdmFsdWUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlblN0YW5kYnkpCi0gICAgICAgIGRvY3Vt
ZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyksIG1fdmlkZW9GdWxs
c2NyZWVuTW9kZSwgbV92aWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KTsKKyAgICAgICAgZG9jdW1lbnQo
KS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSwgVmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUsIG1fdmlkZW9GdWxsc2NyZWVuU3RhbmRieSk7CiAgICAgZWxzZQogICAgICAgICBk
b2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZpZGVvRnVsbHNjcmVlbkZv
clZpZGVvRWxlbWVudChkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpOwogfQpAQCAt
NjA3NywyMCArNjA5MiwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxs
c2NyZWVuRWxlbWVudCgpCiAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7CiAj
ZW5kaWYKIAotICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkKQorICAgICAgICBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5N
b2RlU3RhbmRhcmQpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCi0gICAgc3dpdGNoIChvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlKSB7Ci0gICAg
Y2FzZSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZToKLSAgICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZDoKLSAgICAgICAgLy8gRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBpZiB3ZSBh
cmUgbm90IGluIGFueSBzcGVjaWFsIGZ1bGxzY3JlZW4gbW9kZSBvciBpdCdzIGFscmVhZHkKLSAg
ICAgICAgLy8gaW4gc3RhbmRhcmQgZnVsbHNjcmVlbiBtb2RlLgotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOgotICAgICAgICBpZiAo
aXM8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKQotICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFZp
ZGVvRWxlbWVudD4odGhpcyktPmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlvbklm
UG9zc2libGUob2xkVmlkZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5k
YXJkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGlmIChvbGRWaWRlb0Z1bGxzY3JlZW5N
b2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlICYmIGlzPEhUTUxWaWRl
b0VsZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRo
aXMpLmV4aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlvbklmUG9zc2libGUob2xkVmlk
ZW9GdWxsc2NyZWVuTW9kZSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKICNlbmRpZgog
CiAgICAgRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC02MTA2LDcg
KzYxMTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVt
ZW50KCkKIHsKICAgICBpZiAoZnVsbHNjcmVlbk1vZGUoKSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
U3RhbmRhcmQpCi0gICAgICAgIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5N
b2RlTm9uZSk7CisgICAgICAgIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKIH0KIAogUGxhdGZvcm1MYXllciogSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1MYXll
cigpIGNvbnN0CkBAIC02MTQ2LDcgKzYxNTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Ondp
bGxFeGl0RnVsbHNjcmVlbigpCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlkZW9MYXllcklu
bGluZSgpCiB7CiAgICAgcmV0dXJuICFtX3ZpZGVvRnVsbHNjcmVlbkxheWVyOwotfTsKK30KIAog
UmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVZpZGVvRnVs
bHNjcmVlbkxheWVyKCkKIHsKQEAgLTYxNjksNyArNjE3Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
ciwgV1RGCiAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRSZWN0
JiBmcmFtZSkKIHsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkZyYW1lID0gZnJhbWU7CiAgICAgaWYg
KG1fcGxheWVyKQpAQCAtNzkxNSwxMCArNzkyMiwxOSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVy
ZUluUGljdHVyZTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7Ci0gICAgaWYgKG1f
dmlkZW9GdWxsc2NyZWVuTW9kZSA9PSBtb2RlKQotICAgICAgICByZXR1cm47CisgICAgSU5GT19M
T0coTE9HSURFTlRJRklFUiwgImNoYW5nZWQgZnJvbSAiLCBmdWxsc2NyZWVuTW9kZSgpLCAiLCB0
byAiLCBtb2RlKTsKKyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9ubW9kZWNoYW5nZWRFdmVu
dCk7CisjZW5kaWYKKworICAgIHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUo
bW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKTsKKworI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICBp
ZiAocGxheWVyKCkpCisgICAgICAgIHBsYXllcigpLT5zZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKG1v
ZGUpOworI2VuZGlmCiAKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBtb2RlOwogICAgIHZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggNjk1ZWE3MGVlNzc2ZDRkNTg5Y2M0MDViOTk0NDM1OTRiNmNlNTRhOS4uNDBhMDY4
MWNjNDk1ZDYxYzU5NDUxMWE0MjBlNDIzNmI1MTI0OGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAjaWZkZWYgX19P
QkpDX18KICAgICBQbGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIHZpcnR1
YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSk7CiAg
ICAgTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eSB2aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KCkgY29u
c3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5OyB9CiAjZW5kaWYKQEAgLTQzMCw3
ICs0MzAsNiBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlOwogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGUgZnVsbHNjcmVlbk1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKQEAgLTYyNSw2ICs2MjQsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpc0ludGVyYWN0aXZlQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9p
ZCBzZXRGdWxsc2NyZWVuTW9kZShWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKwogICAgIHZvaWQgd2ls
bEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU3RvcEJl
aW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYzc2MmMxNjJkOTcwOWIzMTFmZWEwMzQyOTI5M2IxZTcx
ZjU3OGFlMS4uOGRmYWJiMzIyYzQwMDBiYTY2OTg2MTU4OGMxYmFkYzdhZGYzOTgyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zNTMsMTEgKzM1MywxMSBA
QCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpCiBib29s
IEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKIHsKICAgICBp
ZiAoZG9jdW1lbnQoKS5xdWlya3MoKS5uZWVkc0FrYW1haU1lZGlhUGxheWVyUXVpcmsoKnRoaXMp
KQotICAgICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCkgfHwgbV9pc0NoYW5naW5nUHJlc2VudGF0
aW9uTW9kZTsKKyAgICAgICAgcmV0dXJuIGlzRnVsbHNjcmVlbigpIHx8IG1faXNDaGFuZ2luZ1Zp
ZGVvRnVsbHNjcmVlbk1vZGU7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyB0byByZXR1
cm4gdHJ1ZSBhZnRlciB0aGUgdmlkZW8gZWxlbWVudCBoYXMgZW50ZXJlZAogICAgIC8vIGZ1bGxz
Y3JlZW4vcGljdHVyZS1pbi1waWN0dXJlIHVudGlsIGl0IGhhcyBleGl0ZWQgZnVsbHNjcmVlbi9w
aWN0dXJlLWluLXBpY3R1cmUKLSAgICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5n
VG9FbnRlckZ1bGxzY3JlZW4oKSkgfHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdQ
cmVzZW50YXRpb25Nb2RlKTsKKyAgICByZXR1cm4gKGlzRnVsbHNjcmVlbigpICYmICF3YWl0aW5n
VG9FbnRlckZ1bGxzY3JlZW4oKSkgfHwgKCFpc0Z1bGxzY3JlZW4oKSAmJiBtX2lzQ2hhbmdpbmdW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3Rv
cldpbGxFbnRlckZ1bGxzY3JlZW4oKQpAQCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1v
ZGUoSFRNTFZpCiAgICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK0hUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2Vu
dGF0aW9uTW9kZSBIVE1MVmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUg
PT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpCiAg
ICAgICAgIHJldHVybiBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OkZ1
bGxzY3JlZW47CkBAIC00NjksMzggKzQ2OSwzOSBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0Vs
ZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSB0b1ByZXNlbnRhdGlvbk1vZGUoSFRNTE1lZAog
dm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJl
c2VudGF0aW9uTW9kZSBtb2RlKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIG1v
ZGUgPSAiLCAgbW9kZSk7Ci0gICAgc2V0RnVsbHNjcmVlbk1vZGUodG9GdWxsc2NyZWVuTW9kZSht
b2RlKSk7CisgICAgc2V0UHJlc2VudGF0aW9uTW9kZShtb2RlKTsKIH0KIAotdm9pZCBIVE1MVmlk
ZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgbW9kZSkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0UHJlc2VudGF0
aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAiLCBtb2RlID0gIiwgbW9kZSk7Ci0KLSAgICBpZiAobV9pc0NoYW5naW5nUHJl
c2VudGF0aW9uTW9kZSkKKyAgICBpZiAobV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB8
fCB0b1ByZXNlbnRhdGlvbk1vZGUoZnVsbHNjcmVlbk1vZGUoKSkgPT0gbW9kZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpIHsKKyAg
ICBhdXRvIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0b0Z1bGxzY3JlZW5Nb2RlKG1vZGUpOworICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICIsIHZpZGVvRnVsbHNjcmVlbk1vZGUgPSAiLCB2aWRl
b0Z1bGxzY3JlZW5Nb2RlKTsKKworICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5Nb2RlID09IFZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAg
ICAgICAgICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxsc2NyZWVuTW9kZSgpKSA9PSBWaWRl
b1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUpCi0gICAgICAgICAgICAgICAgbV9p
c0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgbV9pc0V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gdHJ1ZTsKIAotICAgICAgICAgICAgbV9p
c0NoYW5naW5nUHJlc2VudGF0aW9uTW9kZSA9IHRydWU7CisgICAgICAgICAgICBtX2lzQ2hhbmdp
bmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gdHJ1ZTsKICAgICAgICAgICAgIGV4aXRGdWxsc2NyZWVu
KCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtZWRp
YVNlc3Npb24oKS5mdWxsc2NyZWVuUGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbiht
b2RlKSkKKyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAh
c3VwcG9ydHNGdWxsc2NyZWVuKHZpZGVvRnVsbHNjcmVlbk1vZGUpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkK
LSAgICAgICAgbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7Cisg
ICAgaWYgKHZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpCisgICAgICAgIG1faXNFbnRlcmluZ1BpY3R1cmVJblBpY3R1cmUgPSB0cnVlOwor
ICAgIGVsc2UgaWYgKGZ1bGxzY3JlZW5Nb2RlKCkgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpCisgICAgICAgIG1faXNFeGl0aW5nUGljdHVyZUluUGljdHVyZSA9IHRydWU7
CiAKLSAgICBpZiAobW9kZSAhPSBmdWxsc2NyZWVuTW9kZSgpKSB7Ci0gICAgICAgIG1faXNDaGFu
Z2luZ1ByZXNlbnRhdGlvbk1vZGUgPSB0cnVlOwotICAgICAgICBlbnRlckZ1bGxzY3JlZW4obW9k
ZSk7Ci0gICAgfQorICAgIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSB0cnVlOwor
ICAgIGVudGVyRnVsbHNjcmVlbih2aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKIH0KIAogYXV0byBIVE1M
VmlkZW9FbGVtZW50Ojp3ZWJraXRQcmVzZW50YXRpb25Nb2RlKCkgY29uc3QgLT4gVmlkZW9QcmVz
ZW50YXRpb25Nb2RlCkBAIC01MDgsMzQgKzUwOSwzMiBAQCBhdXRvIEhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdCAtPiBWaWRlb1ByZXNlbnRhdGlvbk1vZGUK
ICAgICByZXR1cm4gdG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2RlKCkpOwogfQogCi12
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG1vZGUpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEVudGVyRnVsbHNjcmVlbk9y
UGljdHVyZUluUGljdHVyZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKG1vZGUg
IT0gZnVsbHNjcmVlbk1vZGUoKSkgewotICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAi
Y2hhbmdlZCBmcm9tICIsIGZ1bGxzY3JlZW5Nb2RlKCksICIsIHRvICIsIG1vZGUpOwotICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdl
ZEV2ZW50KTsKLSAgICAgICAgc2V0UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZSht
b2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpOworICAgIG1faXNDaGFuZ2luZ1ZpZGVvRnVsbHNjcmVlbk1vZGUgPSBmYWxzZTsK
KyAgICBpZiAobV9pc0VudGVyaW5nUGljdHVyZUluUGljdHVyZSB8fCBtX2lzRXhpdGluZ1BpY3R1
cmVJblBpY3R1cmUpIHsKKyNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKKyAgICAg
ICAgaWYgKG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyKSB7CisgICAgICAgICAgICBpZiAobV9p
c0VudGVyaW5nUGljdHVyZUluUGljdHVyZSkKKyAgICAgICAgICAgICAgICBtX3BpY3R1cmVJblBp
Y3R1cmVPYnNlcnZlci0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKGZsb29yZWRJbnRTaXplKHNp
emUpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3BpY3R1cmVJblBpY3R1
cmVPYnNlcnZlci0+ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICAgICAgfQorI2Vsc2UK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHNpemUpOworI2VuZGlmCisgICAgICAgIG1faXNFbnRlcmlu
Z1BpY3R1cmVJblBpY3R1cmUgPSBmYWxzZTsKKyAgICAgICAgbV9pc0V4aXRpbmdQaWN0dXJlSW5Q
aWN0dXJlID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHBsYXllcigpKQotICAgICAgICBwbGF5
ZXIoKS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZShtb2RlKTsKLQotICAgIEhUTUxNZWRpYUVsZW1l
bnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtb2RlKTsKLX0KLQotdm9pZCBIVE1MVmlkZW9FbGVt
ZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCi17Ci0gICAgbV9pc0NoYW5naW5nUHJl
c2VudGF0aW9uTW9kZSA9IGZhbHNlOwotICAgIGlmIChtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0
dXJlSW5QaWN0dXJlKQotICAgICAgICBtX2lzV2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5k
b3dGcmFtZSA9IHRydWU7Ci0KICAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRCZWNvbWVGdWxsc2Ny
ZWVuRWxlbWVudCgpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZFN0b3BCZWluZ0Z1
bGxzY3JlZW5FbGVtZW50KCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkRXhpdEZ1bGxzY3Jl
ZW5PclBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlvbk1v
ZGUgPSBmYWxzZTsKLSAgICBpZiAobV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVy
ZSkgewotICAgICAgICBtX2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFs
c2U7CisgICAgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSA9IGZhbHNlOworICAgIGlm
IChtX2lzRXhpdGluZ1BpY3R1cmVJblBpY3R1cmUpIHsKKyAgICAgICAgbV9pc0V4aXRpbmdQaWN0
dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAjaWYgRU5BQkxFKFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkp
CiAgICAgICAgIGlmIChtX3BpY3R1cmVJblBpY3R1cmVPYnNlcnZlcikKICAgICAgICAgICAgIG1f
cGljdHVyZUluUGljdHVyZU9ic2VydmVyLT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwpAQCAt
NTQzLDI1ICs1NDIsMjMgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRTdG9wQmVpbmdGdWxs
c2NyZWVuRWxlbWVudCgpCiAgICAgfQogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpICYmIEVOQUJMRShWSURFT19VU0VTX0VMRU1FTlRfRlVMTFNDUkVFTikKK3ZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKQogewotICAgIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGZyYW1lKTsKLQotICAgIGlmICht
X2lzV2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSkgewotICAgICAgICBtX2lz
V2FpdGluZ0ZvclBpY3R1cmVJblBpY3R1cmVXaW5kb3dGcmFtZSA9IGZhbHNlOwotICAgICAgICBt
X2lzRW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7Ci0jaWYgRU5BQkxF
KFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCi0gICAgICAgIGlmIChtX3BpY3R1cmVJblBpY3R1cmVP
YnNlcnZlcikKLSAgICAgICAgICAgIG1fcGljdHVyZUluUGljdHVyZU9ic2VydmVyLT5kaWRFbnRl
clBpY3R1cmVJblBpY3R1cmUoSW50U2l6ZShmcmFtZS5zaXplKCkpKTsKKyAgICBtX2lzQ2hhbmdp
bmdWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gZmFsc2U7CisgICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlk
QmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKK30KICNlbmRpZgotICAgICAgICByZXR1cm47Ci0g
ICAgfQorCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKGNv
bnN0IEZsb2F0UmVjdCYgZnJhbWUpCit7CisgICAgSFRNTE1lZGlhRWxlbWVudDo6c2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUoZnJhbWUpOwogCiAgICAgaWYgKHRvUHJlc2VudGF0aW9uTW9kZShmdWxs
c2NyZWVuTW9kZSgpKSAhPSBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmUp
CiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShQSUNUVVJFX0lOX1BJQ1RVUkVfQVBJKQot
ICAgIGlmICghbV9pc0VudGVyaW5nT3JFeGl0aW5nUGljdHVyZUluUGljdHVyZSAmJiBtX3BpY3R1
cmVJblBpY3R1cmVPYnNlcnZlcikKKyAgICBpZiAoIW1faXNFbnRlcmluZ1BpY3R1cmVJblBpY3R1
cmUgJiYgIW1faXNFeGl0aW5nUGljdHVyZUluUGljdHVyZSAmJiBtX3BpY3R1cmVJblBpY3R1cmVP
YnNlcnZlcikKICAgICAgICAgbV9waWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXItPnBpY3R1cmVJblBp
Y3R1cmVXaW5kb3dSZXNpemVkKEludFNpemUoZnJhbWUuc2l6ZSgpKSk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggN2ZhNmY1OTA4YTNkZmRhY2Zj
NjEwNWQ4OWY4MGVmNmI1OGNiNWFlMy4uZWQzNGRkMzZkY2U3YzZkY2FlZWRiNDNmNzMyNDVjZDlj
ZmEwOTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTgyLDE2
ICs4MiwyMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLSAgICBlbnVtIGNs
YXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IElubGluZSwgRnVsbHNjcmVlbiwgUGljdHVyZUlu
UGljdHVyZX07CisgICAgZW51bSBjbGFzcyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgeyBJbmxpbmUs
IEZ1bGxzY3JlZW4sIFBpY3R1cmVJblBpY3R1cmUgfTsKKyAgICBzdGF0aWMgVmlkZW9QcmVzZW50
YXRpb25Nb2RlIHRvUHJlc2VudGF0aW9uTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd2Via2l0U3VwcG9ydHNQ
cmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSkgY29uc3Q7Ci0gICAgdm9pZCB3
ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CiAgICAgVmlk
ZW9QcmVzZW50YXRpb25Nb2RlIHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKLSAgICB2
b2lkIHNldEZ1bGxzY3JlZW5Nb2RlKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAgIHZvaWQgZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGUpIGZpbmFsOworICAgIHZvaWQg
d2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9u
TW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1
cmVJblBpY3R1cmUoY29uc3QgRmxvYXRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRFeGl0RnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEUoVklERU9fVVNFU19FTEVNRU5UX0ZVTExTQ1JFRU4pCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBm
aW5hbDsKLSAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgZmluYWw7
CisjZW5kaWYKKworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoY29uc3QgRmxvYXRS
ZWN0JikgZmluYWw7CiAKICNpZiBFTkFCTEUoUElDVFVSRV9JTl9QSUNUVVJFX0FQSSkKICAgICB2
b2lkIHNldFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcihQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIq
KTsKQEAgLTEzMywxMSArMTM4LDExIEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX2xhc3RS
ZXBvcnRlZFZpZGVvV2lkdGggeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRl
b0hlaWdodCB7IDAgfTsKLSAgICBib29sIG1faXNDaGFuZ2luZ1ByZXNlbnRhdGlvbk1vZGUgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9pc0NoYW5naW5nVmlkZW9GdWxsc2NyZWVuTW9kZSB7IGZhbHNl
IH07CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgYm9vbCBtX2lz
RW50ZXJpbmdPckV4aXRpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKLSAgICBib29sIG1f
aXNXYWl0aW5nRm9yUGljdHVyZUluUGljdHVyZVdpbmRvd0ZyYW1lIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNFbnRlcmluZ1BpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFBJQ1RVUkVfSU5fUElDVFVSRV9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1t
CmluZGV4IGYyYjNkODdkNGI0OGI1MTFlM2JlZWFmYmQyZDkzNzA4ODQ5OWRjNzguLjZlMzYyZGU4
MTg3ZWFjYjg3YTA0NGVkNTVjN2M3ODYxNTFiOGZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCkBAIC0zMjUsOSArMzI1LDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpCiAKICAgICBhdXRvJiBlbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKm1fbWVkaWFFbGVtZW50KTsKICAgICBp
ZiAoZWxlbWVudC5mdWxsc2NyZWVuTW9kZSgpID09IE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKQotICAgICAgICBlbGVtZW50LnNldEZ1bGxzY3Jl
ZW5Nb2RlKE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAg
ICAgZWxlbWVudC5zZXRQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJl
c2VudGF0aW9uTW9kZTo6SW5saW5lKTsKICAgICBlbHNlCi0gICAgICAgIGVsZW1lbnQuc2V0RnVs
bHNjcmVlbk1vZGUoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJ
blBpY3R1cmUpOworICAgICAgICBlbGVtZW50LnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVv
RWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKTsKICNlbmRp
ZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaAppbmRleCBiMTNkMTliM2U1Y2NmMWY2ZDdk
MjYzYzJlMzBmN2U3ZjhmZDhlODQzLi41NGVlZjM5OThiOGMyMGFiMzVhYWI4NjdmYzQxMzhkMDEx
ZDQzZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVu
dGVyRnVsbHNjcmVlbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVu
KGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4aXRGdWxsc2Ny
ZWVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDNhZDY5YjdlNzQzY2VhMTgxZDRjZmZjNThiZjJkMmJl
Nzg2NjQ3NDYuLjhmNmJhOThmODg0YTBlMDBjYjg2OGVkMjIwODJlOTE1OTVlODM5MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0xNTIsOCArMTUyLDggQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6d2FpdEZvclByZXBhcmVkRm9ySW5saW5l
VGhlbihXVEY6OkZ1bmN0aW8KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIGlmIChtX3Zp
ZGVvRWxlbWVudCAmJiBtX3ZpZGVvRWxlbWVudC0+ZnVsbHNjcmVlbk1vZGUoKSAhPSBtb2RlKQot
ICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0RnVsbHNjcmVlbk1vZGUobW9kZSk7CisgICAgaWYg
KG1fdmlkZW9FbGVtZW50KQorICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0UHJlc2VudGF0aW9u
TW9kZShIVE1MVmlkZW9FbGVtZW50Ojp0b1ByZXNlbnRhdGlvbk1vZGUobW9kZSkpOwogCiAgICAg
aWYgKG1fdmlkZW9FbGVtZW50ICYmIGZpbmlzaGVkV2l0aE1lZGlhICYmIG1vZGUgPT0gTWVkaWFQ
bGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKSB7CiAgICAgICAgIGlmIChtX3ZpZGVvRWxl
bWVudC0+ZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkgewpAQCAtMTkxLDcgKzE5MSw3IEBA
IGNvbnN0IEF0b21TdHJpbmcmIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpldmVu
dE5hbWVBbGwoKQogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIGlmIChtX3ZpZGVvRWxlbWVudCkKLSAgICAg
ICAgbV92aWRlb0VsZW1lbnQtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5N
b2RlKTsKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFByZXNlbnRhdGlvbk1vZGUoSFRNTFZp
ZGVvRWxlbWVudDo6dG9QcmVzZW50YXRpb25Nb2RlKHZpZGVvRnVsbHNjcmVlbk1vZGUpKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVxdWVzdFJvdXRlU2hh
cmluZ1BvbGljeUFuZENvbnRleHRVSUQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSb3V0ZVNoYXJp
bmdQb2xpY3ksIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0SGFzVmlkZW8oYm9v
bCBoYXNWaWRlbykKIAogICAgIG1faGFzVmlkZW8gPSBoYXNWaWRlbzsKIAotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVj
dG9yKG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+aGFzVmlkZW9DaGFuZ2VkKG1faGFzVmlk
ZW8pOwogfQogCkBAIC0yMzAsMzcgKzIzMCwzNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVuc2lvbnMoY29uc3QgRmxvYXRTaXplJiB2aWRlbwog
CiAgICAgbV92aWRlb0RpbWVuc2lvbnMgPSB2aWRlb0RpbWVuc2lvbnM7CiAKLSAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlUb1Zl
Y3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPnZpZGVvRGltZW5zaW9uc0NoYW5nZWQo
bV92aWRlb0RpbWVuc2lvbnMpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Ojp3aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3Rvciht
X2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZGlkRW50ZXJQaWN0
dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBj
bGllbnQtPmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50OjpmYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpCiB7
Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0Vu
dGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Ojp3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9y
KG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmRpZEV4aXRQaWN0
dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAg
ICBmb3IgKGF1dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBj
bGllbnQtPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKaW5kZXggOGU0NDEwZmQyYzE2MzNkZjRmZTdlMmM2MDJjZGM2NzlhNDQ3ZjNhYy4uOGJlZjdl
NGM2MDFkOTZkMjk3NzMwYzM5ZDQ4MmI2ZDRlMmFiYWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
LmgKQEAgLTE0Nyw4ICsxNDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5I
YW5kbGVyKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKTsKICAgICBib29sIGlzUGxheWluZ1ZpZGVv
SW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFJlYWR5VG9TdG9wUGljdHVyZUluUGljdHVyZShCT09MKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHdpbGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0V2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0dXJlKEJPT0wp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAgICAgdm9pZCBjbGVhck1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKQEAgLTIyNSw3ICsyMjMsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBtX2VudGVyaW5nUGljdHVyZUluUGljdHVyZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
cmVhZHlUb1N0b3BQaWN0dXJlSW5QaWN0dXJlIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV93aWxsRW50
ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDhlNmQzNmI3OGI4OWI2ZDcwM2U4YmZiMjg1ZWM2OWExZDUz
ZjZmNDIuLjM2MWJlOTRjMTIyNWY5MWEyZjQwNzRiNzk2YjUwNDdlNWVhODc2ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0KQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxs
U2NyZQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0RpY3Rpb25hcnkg
KnBpeGVsQnVmZmVyQXR0cmlidXRlczsKIEBwcm9wZXJ0eSBDR1NpemUgdmlkZW9EaW1lbnNpb25z
OwogQHByb3BlcnR5IENHUmVjdCBtb2RlbFZpZGVvTGF5ZXJGcmFtZTsKKy0gKEZsb2F0UmVjdClj
YWxjdWxhdGVUYXJnZXRWaWRlb0ZyYW1lOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQVZQ
bGF5ZXJMYXllciB7CkBAIC0yNTcsNiArMjU4LDIzIEBAIHN0YXRpYyBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24gY29udmVydFRvRXhpdEZ1bGxTY3Jl
CiAgICAgcmV0dXJuIF92aWRlb1N1YmxheWVyLmdldCgpOwogfQogCistIChGbG9hdFJlY3QpY2Fs
Y3VsYXRlVGFyZ2V0VmlkZW9GcmFtZQoreworICAgIEZsb2F0UmVjdCB0YXJnZXRWaWRlb0ZyYW1l
OworICAgIGZsb2F0IHZpZGVvQXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0
aCAvIHNlbGYudmlkZW9EaW1lbnNpb25zLmhlaWdodDsKKworICAgIGlmIChbQVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgICAg
ICB0YXJnZXRWaWRlb0ZyYW1lID0gc2VsZi5ib3VuZHM7CisgICAgZWxzZSBpZiAoW0FWTGF5ZXJW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3QgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5
XSkKKyAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlv
SW5zaWRlUmVjdCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7CisgICAgZWxzZSBpZiAo
W0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIGlzRXF1YWxUb1N0cmluZzpzZWxm
LnZpZGVvR3Jhdml0eV0pCisgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RX
aXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsK
KyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuIHRh
cmdldFZpZGVvRnJhbWU7Cit9CisKIC0gKHZvaWQpbGF5b3V0U3VibGF5ZXJzCiB7CiAgICAgaWYg
KFtfdmlkZW9TdWJsYXllciBzdXBlcmxheWVyXSAhPSBzZWxmKQpAQCAtMjgzLDE0ICszMDEsNyBA
QCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVh
c29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAKLSAgICBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUgaXNFcXVhbFRv
U3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKLSAgICAgICAgdGFyZ2V0VmlkZW9GcmFtZSA9IHNl
bGYuYm91bmRzOwotICAgIGVsc2UgaWYgKFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
IGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCi0gICAgICAgIHRhcmdldFZpZGVv
RnJhbWUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3BlY3RS
YXRpbywgc2VsZi5ib3VuZHMpOwotICAgIGVsc2UgaWYgKFtBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQotICAgICAg
ICB0YXJnZXRWaWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVj
dCh2aWRlb0FzcGVjdFJhdGlvLCBzZWxmLmJvdW5kcyk7Ci0gICAgZWxzZQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB0YXJnZXRWaWRlb0ZyYW1lID0gW3NlbGYgY2FsY3VsYXRl
VGFyZ2V0VmlkZW9GcmFtZV07CiAKICAgICBVSVZpZXcgKnZpZXcgPSAoVUlWaWV3ICopW192aWRl
b1N1YmxheWVyIGRlbGVnYXRlXTsKICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBD
R0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSh0YXJnZXRWaWRlb0ZyYW1lLndpZHRoKCkgLyBzb3Vy
Y2VWaWRlb0ZyYW1lLndpZHRoKCksIHRhcmdldFZpZGVvRnJhbWUuaGVpZ2h0KCkgLyBzb3VyY2VW
aWRlb0ZyYW1lLmhlaWdodCgpKTsKQEAgLTQ3MCwxMCArNDgxLDEwIEBAIHN0YXRpYyB2b2lkIFdl
YkFWUGxheWVyTGF5ZXJWaWV3X3NldFZpZGVvVmlldyhpZCBhU2VsZiwgU0VMLCBVSVZpZXcgKnZp
ZGVvVmlldykKIHN0YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1Zp
ZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KGlkIGFTZWxmLCBTRUwpCiB7CiAg
ICAgV2ViQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOwotICAgIFdl
YkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqcGlwVmlldyA9IChXZWJBVlBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbcGxheWVyTGF5ZXJWaWV3IHBpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXddOworICAgIGF1dG8gKnBpcFZpZXcgPSAoV2ViQVZQaWN0dXJl
SW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3ICopW3BsYXllckxheWVyVmlldyBwaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3XTsKIAotICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVy
ID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKLSAg
ICBXZWJBVlBsYXllckxheWVyICpwaXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICop
W3BpcFZpZXcgbGF5ZXJdOworICAgIGF1dG8gKnBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5
ZXIgKilbcGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKKyAgICBhdXRvICpwaXBQbGF5ZXJM
YXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOwogICAgIFtwbGF5ZXJM
YXllciBzZXRWaWRlb0dyYXZpdHk6QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdF07CiAg
ICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvU3VibGF5ZXI6cGxheWVyTGF5ZXIudmlkZW9TdWJs
YXllcl07CiAgICAgW3BpcFBsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpwbGF5ZXJMYXll
ci52aWRlb0RpbWVuc2lvbnNdOwpAQCAtOTk4LDcgKzEwMDksNiBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpjbGVhbnVwRnVsbHNjcmVlbigpCiAgICAgW3BsYXllckNvbnRy
b2xsZXIoKSBzZXRIYXNFbmFibGVkVmlkZW86ZmFsc2VdOwogICAgIFtwbGF5ZXJDb250cm9sbGVy
KCkgc2V0SGFzVmlkZW86ZmFsc2VdOwogCi0gICAgbV93aWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1
cmVJblBpY3R1cmUgPSBmYWxzZTsKICAgICBpZiAobV9leGl0aW5nUGljdHVyZUluUGljdHVyZSkg
ewogICAgICAgICBtX2V4aXRpbmdQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAgICAgICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQpAQCAtMTExOSwxMCArMTEyOSw2IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAK
ICAgICBpZiAobV9lbnRlckZ1bGxzY3JlZW5OZWVkc0VudGVyUGljdHVyZUluUGljdHVyZSkKICAg
ICAgICAgZG9FbnRlckZ1bGxzY3JlZW4oKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fZnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKQotICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVlbigpOwotICAgIH0KIAogICAgIG1fZW50ZXJpbmdQaWN0
dXJlSW5QaWN0dXJlID0gZmFsc2U7CiB9CkBAIC0xMTM2LDkgKzExNDIsNiBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpmYWlsZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSgp
CiAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKLQogICAgIGlmIChtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWls
ZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwogCkBAIC0xMjk1LDcgKzEyOTgsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb1NldHVwKCkKIHsKICAgICBNb2RlIGNo
YW5nZXMgeyBtX2N1cnJlbnRNb2RlLm1vZGUoKSBeIG1fdGFyZ2V0TW9kZS5tb2RlKCkgfTsKIAot
ICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc1ZpZGVvKCkgJiYgbV90YXJnZXRNb2RlLmhhc1ZpZGVv
KCkgJiYgKG1fc3RhbmRieSAhPSBtX3RhcmdldFN0YW5kYnkpKSB7CisgICAgaWYgKG1fY3VycmVu
dE1vZGUuaGFzVmlkZW8oKSAmJiBtX3RhcmdldE1vZGUuaGFzVmlkZW8oKSkgewogICAgICAgICBt
X3N0YW5kYnkgPSBtX3RhcmdldFN0YW5kYnk7CiAgICAgICAgIGZpbmFsaXplU2V0dXAoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ0OSw4ICsxNDUyLDE2IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmRvRW50ZXJGdWxsc2NyZWVuKCkKICAgICB9CiAgICAgbV9lbnRlckZ1
bGxzY3JlZW5OZWVkc0V4aXRQaWN0dXJlSW5QaWN0dXJlID0gZmFsc2U7CiAKLSAgICBpZiAobV9m
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIpIHsKKyAgICAgICAgRmxvYXRTaXplIHNpemU7CisgICAgICAgIGlmIChtX2N1cnJlbnRN
b2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKSkgeworICAgICAgICAgICAgYXV0byAqcGlwVmlldyA9
IChXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcgKilbbV9wbGF5ZXJMYXllclZp
ZXcgcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlld107CisgICAgICAgICAgICBhdXRvICpw
aXBQbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW3BpcFZpZXcgbGF5ZXJdOworICAg
ICAgICAgICAgYXV0byB2aWRlb0ZyYW1lID0gW3BpcFBsYXllckxheWVyIGNhbGN1bGF0ZVRhcmdl
dFZpZGVvRnJhbWVdOworICAgICAgICAgICAgc2l6ZSA9IEZsb2F0U2l6ZSh2aWRlb0ZyYW1lLnNp
emUoKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRp
ZEVudGVyRnVsbHNjcmVlbihzaXplKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmRvRXhpdEZ1bGxzY3JlZW4oKQpAQCAtMTU5OCwxNiArMTYwOSw2IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldFJlYWR5VG9TdG9wUGljdHVy
ZUluUGljdHVyZShCT09MIHJlYWR5KQogICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci0+ZnVsbHNjcmVlbldpbGxSZXR1cm5Ub0lubGluZSgpOwogfQogCi1ib29sIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Ojp3aWxsRW50ZXJTdGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUo
KQotewotICAgIHJldHVybiBtX3dpbGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZTsK
LX0KLQotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0V2lsbEVudGVyU3Rh
bmRieUZyb21QaWN0dXJlSW5QaWN0dXJlKEJPT0wgdmFsdWUpCi17Ci0gICAgbV93aWxsRW50ZXJT
dGFuZGJ5RnJvbVBpY3R1cmVJblBpY3R1cmUgPSB2YWx1ZTsKLX0KLQogc3RhdGljIE9wdGlvbmFs
PGJvb2w+IGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZDsKIAogdm9pZCBXZWJDb3JlOjpzZXRT
dXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoYm9vbCBpc1N1cHBvcnRlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCmluZGV4IDRmY2Q5YTJlZjk5ZjA1YWI4ZDhjMzI2YTAyNjIzMDQ0OTJi
ODhjOWQuLmY4MzFkNmI4NDQ4YTNkODQ0ZjI0YzhiNDhlMGZjYmViZmQwOTA3ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMjgsMjAgKzI4LDIwIEBACiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIkhUTUxW
aWRlb0VsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2VsZWN0
aW9uT3B0aW9uLmgiCiAjaW1wb3J0ICJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIgog
I2ltcG9ydCAiUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCIKKyNpbXBvcnQgIlJl
bmRlclZpZGVvLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgiCisj
aW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmlt
YXRpb24uaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZVZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxlbWVudC5oPgotI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJWaWRlby5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVu
Lmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oPgogCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigpIGZpbmFsOwogICAgIHZvaWQgcmV0dXJu
VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbigp
IGZpbmFsOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKCkgZmluYWwgeyB9CisgICAgdm9p
ZCBkaWRFbnRlckZ1bGxzY3JlZW4oY29uc3QgRmxvYXRTaXplJikgZmluYWwgeyB9CiAgICAgdm9p
ZCB3aWxsRXhpdEZ1bGxzY3JlZW4oKSBmaW5hbDsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVu
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW0KaW5kZXggODVjNzBiMmJiYjUwNDdlZjhlZGRhNzQyOTQ2NjU5YTRiMjdlMTdj
ZS4uMzNmNGQ0YThmMjRmNTlhMTM3MTFiYjBiNWU0MDAyOGU2YjAyZThlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLm1tCkBAIC05NSw2ICs5NSw3IEBAIHVzaW5nIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lv
bk1vZGVsOwogCiBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBOb3RJblBJUCwKKyAgICBFbnRl
cmluZ1BJUCwKICAgICBJblBJUCwKICAgICBFeGl0aW5nUElQCiB9OwpAQCAtMjEwLDEyICsyMTEs
MTIgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAKIC0gKHZvaWQpZW50ZXJQSVAKIHsKLSAgICBp
ZiAoX3BpcFN0YXRlID09IFBJUFN0YXRlOjpJblBJUCkKKyAgICBpZiAoX3BpcFN0YXRlID09IFBJ
UFN0YXRlOjpFbnRlcmluZ1BJUCB8fCBfcGlwU3RhdGUgPT0gUElQU3RhdGU6OkluUElQKQogICAg
ICAgICByZXR1cm47CiAKICAgICBbX3ZpZGVvVmlld0NvbnRhaW5lckNvbnRyb2xsZXIgdmlld10u
bGF5ZXIuYmFja2dyb3VuZENvbG9yID0gQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JC
bGFjayk7CiAgICAgW19waXBWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXJBc1Bp
Y3R1cmVJblBpY3R1cmU6X3ZpZGVvVmlld0NvbnRhaW5lckNvbnRyb2xsZXIuZ2V0KCldOwotICAg
IF9waXBTdGF0ZSA9IFBJUFN0YXRlOjpJblBJUDsKKyAgICBfcGlwU3RhdGUgPSBQSVBTdGF0ZTo6
RW50ZXJpbmdQSVA7CiB9CiAKIC0gKHZvaWQpZXhpdFBJUApAQCAtMjQ4LDggKzI0OSwyNSBAQCBl
bnVtIGNsYXNzIFBJUFN0YXRlIHsKIAogICAgIEFTU0VSVF9VTlVTRUQodmlkZW9WaWV3Q29udGFp
bmVyLCB2aWRlb1ZpZXdDb250YWluZXIgPT0gX3ZpZGVvVmlld0NvbnRhaW5lcik7CiAKLSAgICBp
ZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQotICAgICAgICBfdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5zZXRWaWRlb0xheWVyRnJhbWUo
W192aWRlb1ZpZXdDb250YWluZXIgYm91bmRzXSk7CisgICAgaWYgKCFfdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX3BpcFN0YXRlID09IFBJ
UFN0YXRlOjpFbnRlcmluZ1BJUCkgeworICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS80
MjI1MDk1MikKKyAgICAgICAgLy8gQ3VycmVudGx5LCAtW1BJUFZpZXdDb250cm9sbGVyIHByZXNl
bnRWaWV3Q29udHJvbGxlckFzUGljdHVyZUluUGljdHVyZTpdIGRvZXMgbm90CisgICAgICAgIC8v
IHRha2UgYSBjb21wbGV0aW9uSGFuZGxlciBwYXJhbWV0ZXIsIHNvIHdlIHVzZSB0aGUgZmlyc3Qg
Ym91bmRzIGNoYW5nZSBldmVudAorICAgICAgICAvLyBhcyBhbiBpbmRpY2F0aW9uIHRoYXQgZW50
ZXJpbmcgcGljdHVyZS1pbi1waWN0dXJlIGlzIGNvbXBsZXRlZC4KKyAgICAgICAgX3BpcFN0YXRl
ID0gUElQU3RhdGU6OkluUElQOworCisgICAgICAgIGlmIChhdXRvKiBtb2RlbCA9IF92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgICAg
ICBtb2RlbC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisKKyAgICAgICAgaWYgKGF1dG8q
IG9ic2VydmVyID0gX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVu
Q2hhbmdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIG9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3Jl
ZW4oKFdlYkNvcmU6OkZsb2F0U2l6ZSlbX3ZpZGVvVmlld0NvbnRhaW5lciBib3VuZHNdLnNpemUp
OworICAgIH0KKworICAgIGlmIChhdXRvKiBtb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgIG1vZGVsLT5zZXRWaWRlb0xh
eWVyRnJhbWUoW192aWRlb1ZpZXdDb250YWluZXIgYm91bmRzXSk7CiB9CiAKIC0gKHZvaWQpc3Vw
ZXJ2aWV3RGlkQ2hhbmdlRm9yVmlkZW9WaWV3Q29udGFpbmVyOihXZWJWaWRlb1ZpZXdDb250YWlu
ZXIgKil2aWRlb1ZpZXdDb250YWluZXIKQEAgLTQ1NiwxMSArNDc0LDYgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmVudGVyRnVsbHNjcmVlbigpCiAjaWYgRU5BQkxFKFdFQl9Q
TEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgICAgICBbbV9wbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2UtPnBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0UGljdHVyZUluUGljdHVyZUFjdGl2
ZTpZRVNdOwogI2VuZGlmCi0KLSAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNDIyNTA5
NTIpOiBNb3ZlIHRoaXMgY2FsbCBpbnRvIGEgY29tcGxldGlvbiBoYW5kbGVyIG9yIGRlbGVnYXRl
IGNhbGxiYWNrLgotICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBpY3R1
cmVJblBpY3R1cmUoKTsKLSAgICAgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQot
ICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVudGVyRnVsbHNjcmVl
bigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAyOWNmZjIzMWM2OTNj
N2I1MzY2NWYxMWFjOTFlZGZjODBmZjU3ZTU1Li5hZDhlZmUzZWE1YWQwZjRmOTQ2ZDdhNGE1NTk0
MDRiNzY0NGM1NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTA3LDcgKzEwNyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoKSBmaW5hbDsKICAg
ICB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZXR1
cEZ1bGxzY3JlZW4oKSBmaW5hbDsKLSAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbigpIGZpbmFs
OworICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
IGZpbmFsOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKCkgZmluYWw7CiAgICAgdm9pZCBk
aWRFeGl0RnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4o
KSBmaW5hbDsKQEAgLTE1OSw2ICsxNTksNyBAQCBwcml2YXRlOgogICAgIFZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dCYgZW5zdXJlTW9kZWwoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIpOwogICAgIFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlJiBlbnN1cmVJbnRlcmZh
Y2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIFBsYXRmb3JtVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGVuc3VyZUNsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVDbGllbnRGb3JD
b250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKIApAQCAtMTg1LDcgKzE4
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEVudGVyRnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1l
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwog
ICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHkoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KaW5kZXggZGM0M2VmZjJiMzg0MGRkYWEyNGI2ODZjOGUxNGZkNDc0YTFh
ODU2Ny4uODEzNzVlMzg2ZDAzYTZmMDdlN2E4ODcwNjQ5MTFjMmQ1YmY0MjIyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbQpAQCAtMjQ0LDEwICsyNDQsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigpCiAgICAgICAgIG1fbWFuYWdlci0+
ZGlkU2V0dXBGdWxsc2NyZWVuKG1fY29udGV4dElkKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyRnVsbHNjcmVlbigpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgc2l6ZSkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQotICAgICAgICBtX21hbmFnZXItPmRpZEVu
dGVyRnVsbHNjcmVlbihtX2NvbnRleHRJZCk7CisgICAgICAgIG1fbWFuYWdlci0+ZGlkRW50ZXJG
dWxsc2NyZWVuKG1fY29udGV4dElkLCBzaXplKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OndpbGxFeGl0RnVsbHNjcmVlbigpCkBAIC0yOTAsMTMgKzI5MCwxMyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGlj
eUFuZENvbnRleHRVSUQoQ29tcGxldAogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6cHJlcGFyZVRvRXhpdEZ1bGxzY3JlZW4oKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDog
bV9jbGllbnRzKQorICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50
cykpCiAgICAgICAgIGNsaWVudC0+cHJlcGFyZVRvRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OndpbGxFbnRlclBpY3R1cmVJblBp
Y3R1cmUoKQogewotICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgIGZvciAo
YXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+
d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCkBAIC0zMDUsMTkgKzMwNSwxOSBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KCkKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPmhhc1ZpZGVvSW5QaWN0
dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKHRydWUpOwogCi0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRz
KSkKICAgICAgICAgY2xpZW50LT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICBmb3IgKGF1
dG8mIGNsaWVudCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPmZh
aWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0Ojp3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIGZvciAoYXV0
byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVj
dG9yKG1fY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJl
KCk7CiB9CiAKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogICAgIGlmIChtX21hbmFnZXIpCiAgICAg
ICAgIG1fbWFuYWdlci0+aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoZmFsc2Up
OwogCi0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgZm9yIChhdXRvJiBj
bGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGllbnRzKSkKICAgICAgICAgY2xpZW50LT5kaWRFeGl0
UGljdHVyZUluUGljdHVyZSgpOwogfQogCkBAIC00NjEsNiArNDYxLDExIEBAIFBsYXRmb3JtVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZpbmRJ
bnRlcmZhY2UoUGxhCiAgICAgcmV0dXJuIHN0ZDo6Z2V0PDE+KGl0LT52YWx1ZSkuZ2V0KCk7CiB9
CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnN1cmVDbGllbnRGb3JDb250
ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKK3sKKyAgICBt
X2NsaWVudENvdW50cy5hZGQoY29udGV4dElkLCAxKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmFkZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jbGllbnRD
b3VudHMuYWRkKGNvbnRleHRJZCwgMSk7CkBAIC01MjQsMTIgKzUyOSw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkCiAgICAgTUVTU0FHRV9DSEVDSyh2aWRlb0xheWVySUQpOwogCiAgICAgYXV0
byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElk
KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChpbnRlcmZhY2UtPndpbGxFbnRl
clN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZSgpKQotICAgICAgICBpbnRlcmZhY2UtPnNldFdp
bGxFbnRlclN0YW5kYnlGcm9tUGljdHVyZUluUGljdHVyZShOTyk7Ci0gICAgZWxzZSBpZiAodmlk
ZW9GdWxsc2NyZWVuTW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlIHx8ICFzdGFuZGJ5KQotICAgICAgICBhZGRDbGllbnRGb3JD
b250ZXh0KGNvbnRleHRJZCk7Ci0jZW5kaWYKKyAgICBlbnN1cmVDbGllbnRGb3JDb250ZXh0KGNv
bnRleHRJZCk7CiAKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkg
ewogICAgICAgICBpZiAoIXZpZGVvRGltZW5zaW9ucy5pc0VtcHR5KCkpCkBAIC01OTgsOCArNTk4
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvRGltZW5zaW9u
cyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnQKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjplbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkKQogewogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVk
KSB7Ci0gICAgICAgIGRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpOwotICAgICAgICBzZXRW
aWRlb0xheWVyRnJhbWUoY29udGV4dElkLCB7MCwgMCwgbV9tb2NrUGljdHVyZUluUGljdHVyZVdp
bmRvd1NpemUud2lkdGgoKSwgbV9tb2NrUGljdHVyZUluUGljdHVyZVdpbmRvd1NpemUuaGVpZ2h0
KCl9KTsKKyAgICAgICAgZGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCwgbV9tb2NrUGljdHVy
ZUluUGljdHVyZVdpbmRvd1NpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NzQs
OSArNzczLDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpCiAgICAgbV9wYWdlLT5kaWRFeGl0
RnVsbHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlk
RW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CisgICAgT3B0
aW9uYWw8RmxvYXRTaXplPiBvcHRpb25hbFNpemU7CisgICAgaWYgKCFzaXplLmlzRW1wdHkoKSkK
KyAgICAgICAgb3B0aW9uYWxTaXplID0gc2l6ZTsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCwg
b3B0aW9uYWxTaXplKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggNjg5
OTQzYjRmNmY4M2FhMzUyMzJmZmNmYjEyNGZiODhhNDE1MTExMi4uZDNhODdkOWIyYjI4MmEyMjVj
ODk0MTVlZmRjMDY1MjhjYmNkMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVySU9TLm1tCkBAIC05NTAsNyArOTUwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW50ZXJmYWNlLT5zZXRSZWFkeVRvU3RvcFBpY3R1cmVJblBpY3R1cmUo
Tk8pOwotICAgIGludGVyZmFjZS0+c2V0V2lsbEVudGVyU3RhbmRieUZyb21QaWN0dXJlSW5QaWN0
dXJlKFlFUyk7CiAgICAgX3JldHVyblRvRnVsbHNjcmVlbkZyb21QaWN0dXJlSW5QaWN0dXJlID0g
WUVTOwogCiAgICAgaWYgKCFfZXhpdGluZ0Z1bGxTY3JlZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApp
bmRleCBiOTQwN2YxMzA0NGFlODUxODU1Y2I4MTI2ODRiMWNjYmFjMDdmMzEyLi43YTY0M2NhNjBk
YjY0MDcwMjEzNzUzOWUzMDM2OTAzYzY2MTNlNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKQEAg
LTg4LDYgKzg4LDcgQEAgdHlwZWRlZiBlbnVtIEZ1bGxTY3JlZW5TdGF0ZSA6IE5TSW50ZWdlciBG
dWxsU2NyZWVuU3RhdGU7CiAKIC0gKHZvaWQpdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2U7
CiAtICh2b2lkKWRpZEVudGVyUGljdHVyZUluUGljdHVyZTsKKy0gKHZvaWQpZGlkRXhpdFBpY3R1
cmVJblBpY3R1cmU7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCBkMjc5NjFm
ZDQ5ZTUxZWU2ZTg0MmM4N2M2MjlmMTIwN2VkMTRhYjVhLi40ODViZDkwZjNlMDliNWNkYzQwYjc5
YzAyYjFmZDU4ZGEwMmJhNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtODAsNiArODAs
MTEgQEAgcHVibGljOgogICAgICAgICBbbV9wYXJlbnQgZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJl
XTsKICAgICB9CiAKKyAgICB2b2lkIGRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWwKKyAg
ICB7CisgICAgICAgIFttX3BhcmVudCBkaWRFeGl0UGljdHVyZUluUGljdHVyZV07CisgICAgfQor
CiBwcml2YXRlOgogICAgIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKm1fcGFyZW50IHsg
bnVsbHB0ciB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM+IG1faW50ZXJmYWNlOwpAQCAtNjYxLDYgKzY2NiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5kb3dJRCB3aW5kb3dJRCwgYm9vbCBj
YXB0dQogICAgIFtzZWxmIHJlcXVlc3RFeGl0RnVsbFNjcmVlbl07CiB9CiAKKy0gKHZvaWQpZGlk
RXhpdFBpY3R1cmVJblBpY3R1cmUKK3sKKyAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRJ
bnRlcmZhY2UobnVsbHB0cik7Cit9CisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQ3Vz
dG9tIE5TV2luZG93IEZ1bGwgU2NyZWVuIEFuaW1hdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBl
ODIzZDIwYzRkMWI5MjQ0YTJlY2ViYjljMzkxZDVhZjM3MDJkNTQzLi5iOGM3MThlODFhY2Y3M2U2
ZGJkNGU4OGEwZDY0NGY1YmU1MTBlODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTE0OSw3ICsxNDks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZEVudGVyRnVs
bHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRF
bnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0U2l6ZT4pOwogICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZy
YW1lRmVuY2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpGbG9h
dFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKICAgICB2b2lkIHNldFZp
ZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdW5z
aWduZWQgZ3Jhdml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDA3
NmZmZjU3NzYxZTU5NzQ0YWNlYjg3ZDRkYTM2NTFjMjVhYzBiNjcuLjMyNWIzY2QyZjQ1OTJlNDFj
NGRkZDgxMThkYjJiNmQ4OTY4ZjVjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIg
ewogICAgIERpZFNldHVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICBXaWxsRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgRGlkRXhpdEZ1bGxz
Y3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQp
Ci0gICAgRGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQorICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgT3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRTaXplPiBzaXplKQogICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIFNldFZpZGVvTGF5ZXJG
cmFtZUZlbmNlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9y
dCkKICAgICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IDBmYmNmODZlOWNkYzM0YzA5YWRmOTE3YWI2NGYwOTFmMTVkZDY2NmYuLjNjYzY2
NDliNDIzNDFjYTk2OTc4MGYxZjBlMTFkYTE2YmUxMzRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBA
IC0zNDIsNyArMzQyLDkgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWYKIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsKLSAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKKyAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CisgICAgbW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1bGxz
Y3JlZW5Nb2RlKTsKKyAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5Nb2RlKHZpZGVvRnVsbHNj
cmVlbk1vZGUpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRh
dGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
QEAgLTQyOCw3ICs0MzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogfQog
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2l6ZSkKIHsKICAg
ICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNj
cmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNDQxLDcgKzQ0Myw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHZpZGVvRWxlbWVudC0+ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsK
KyAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZShz
aXplLnZhbHVlT3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpKTsKIAogICAgIGlmIChpbnRlcmZhY2Ut
PnRhcmdldElzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CkBAIC00ODMsNyArNDg1LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIH0pOwogI2VuZGlmCiB9Ci0gICAgCisKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVu
LCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oJXAsICV4KSIs
IHRoaXMsIGNvbnRleHRJZCk7CkBAIC01MDQsNyArNTA2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKICAgICBSZWZQ
dHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgp
OwogICAgIGlmICh2aWRlb0VsZW1lbnQpCi0gICAgICAgIHZpZGVvRWxlbWVudC0+ZGlkU3RvcEJl
aW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRFeGl0RnVs
bHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRGdWxsc2Ny
ZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICBpbnRlcmZhY2UtPnNldEZ1bGxzY3JlZW5TdGFuZGJ5KGZhbHNlKTsKQEAgLTUxOCwxMiAr
NTIwLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgqdmlkZW9FbGVtZW50LCBt
b2RlLCBzdGFuZGJ5KTsKICAgICB9KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQogewogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdyYXZpdHkoKE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
R3Jhdml0eSlncmF2aXR5KTsKIH0KLSAgICAKKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmdWxsc2NyZWVuV2lsbFJldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKQogewogICAgIGlmICghbV9wYWdl
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>