<?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>161503</bug_id>
          
          <creation_ts>2016-09-01 12:43:55 -0700</creation_ts>
          <short_desc>Refactor the heuristic for showing media controls to take all media sessions into account</short_desc>
          <delta_ts>2016-09-03 17:26:15 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225469</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-01 12:43:55 -0700</bug_when>
    <thetext>Refactor the heuristic for showing media controls to take all media sessions into account</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225512</commentid>
    <comment_count>1</comment_count>
      <attachid>287672</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-01 13:55:42 -0700</bug_when>
    <thetext>Created attachment 287672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225513</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-01 13:58:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/28033783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225818</commentid>
    <comment_count>3</comment_count>
      <attachid>287776</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-02 10:36:43 -0700</bug_when>
    <thetext>Created attachment 287776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225843</commentid>
    <comment_count>4</comment_count>
      <attachid>287785</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-02 11:11:32 -0700</bug_when>
    <thetext>Created attachment 287785
Add missing ifdef guards to fix other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225913</commentid>
    <comment_count>5</comment_count>
      <attachid>287805</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-02 13:10:20 -0700</bug_when>
    <thetext>Created attachment 287805
Move main content sizing helpers back into MediaElementSession.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226135</commentid>
    <comment_count>6</comment_count>
      <attachid>287805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 08:03:32 -0700</bug_when>
    <thetext>Comment on attachment 287805
Move main content sizing helpers back into MediaElementSession.cpp

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

The patch generally looks good, but the mediaSessionInfo() and currentSessionInfos() functions have design problems. See my comments below.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:359
&gt; +static bool mediaSessionMayBeConfusedForMainContent(const MediaSessionInfo&amp; session)

&quot;confused with&quot; is probably good grammar, but I don’t think &quot;confused for&quot; is

&gt; Source/WebCore/html/HTMLMediaElement.cpp:372
&gt; +static const PlatformMediaSession* bestMediaSessionForShowingPlaybackControlsManager()

This function should return a MediaElementSession*; it will never return any other kind of PlatformMediaSession, and the single caller downcasts to MediaElementSession.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:376
&gt; +    for (MediaSessionInfo info : PlatformMediaSessionManager::sharedManager().currentSessionInfos()) {

This unnecessarily makes a copy of each MediaSessionInfo as we iterate the vector. Instead the type should be MediaSessionInfo&amp; or, better, just auto&amp;, to use the objects in place within the vector.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7233
&gt; +    const PlatformMediaSession* bestMediaSession = bestMediaSessionForShowingPlaybackControlsManager();

auto* would be better than writing out the type here

&gt; Source/WebCore/html/MediaElementSession.cpp:221
&gt; +    RenderElement* renderer = m_element.renderer();

It’s generally incorrect to access the renderer for an element without having a guarantee that the code is only called when style is updated and layout is up to date. Putting calls to renderer behind abstractions like the session increases the risk that we will do that incorrectly. We should keep calls from the session to the renderer to the absolute minimum. Ideally the element calls its own renderer, not through an intermediary object, and it should do so only in functions called when renderer is known to be up to date.

There’s also a type problem here. Putting a renderer into a local variable that is specifically RenderElement* throws away type information. The renderer of an HTMLMediaElement is guaranteed to be a RenderMedia*, which both has more operations than what RenderElement* has, and might even have more efficient less polymorphic versions of some functions that RenderElement has. That’s why best style is to use auto* rather than RenderElement* in a case like this.

&gt; Source/WebCore/platform/audio/PlatformMediaSession.h:170
&gt; +    virtual void resetPlaybackSessionState() { };

No semicolon after a function body like this (see other functions above and below).

&gt; Source/WebCore/platform/audio/PlatformMediaSession.h:192
&gt; +struct MediaSessionInfo {

&quot;info&quot; is typically not a great name for any class; it’s mostly vacuous since all objects contain information. And this class is more than just some information about a media session; it contains a pointer to a specific media session object. It’s sort of “a media session with some precomputed attributes of that session”, which is only good because we happen to know the exact set that one particular algorithm needs. This is kind of a peculiar API. It has all the things that one particular caller happens to need, so it’s quite specific to its one use, but it masquerades as a general purpose collection of information.

It’s a poor design pattern to vend objects with raw pointers; keeping one around too long and using the pointer can lead to a serious bug, and really there is no reason to do that here.

There is a kind of false abstraction here, because MediaSession objects that are not MediaElementSession return an info structure but these never are used for anything; just immediately ruled out. The code in HTMLMediaElement already knows it’s specifically only interested in MediaElementSession.

A better design would be to add member functions to MediaElementSession that answer any of these questions as needed to make that code clear, then any structure needed to collect these and sort them would be something that the file defining bestMediaSessionForShowingPlaybackControlsManager would define locally for its purposes as needed.

&gt; Source/WebCore/platform/audio/PlatformMediaSession.h:201
&gt; +    MediaSessionInfo(const PlatformMediaSession* session, bool canShowControlsManager, bool isVisibleInViewport, bool isPlayingWithAudio, bool isLargeEnoughForMainContent, double timeOfLastUserInteraction)
&gt; +        : session(session)
&gt; +        , canShowControlsManager(canShowControlsManager)
&gt; +        , isVisibleInViewport(isVisibleInViewport)
&gt; +        , isPlayingWithAudio(isPlayingWithAudio)
&gt; +        , isLargeEnoughForMainContent(isLargeEnoughForMainContent)
&gt; +        , timeOfLastUserInteraction(timeOfLastUserInteraction)
&gt; +    {
&gt; +    }

A struct does not need a constructor like this; callers can simply use aggregate initialization even without this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226178</commentid>
    <comment_count>7</comment_count>
      <attachid>287805</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-03 15:37:39 -0700</bug_when>
    <thetext>Comment on attachment 287805
Move main content sizing helpers back into MediaElementSession.cpp

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:359
&gt;&gt; +static bool mediaSessionMayBeConfusedForMainContent(const MediaSessionInfo&amp; session)
&gt; 
&gt; &quot;confused with&quot; is probably good grammar, but I don’t think &quot;confused for&quot; is

True -- changed to &quot;mediaSessionMayBeConfusedWithMainContent&quot;

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:372
&gt;&gt; +static const PlatformMediaSession* bestMediaSessionForShowingPlaybackControlsManager()
&gt; 
&gt; This function should return a MediaElementSession*; it will never return any other kind of PlatformMediaSession, and the single caller downcasts to MediaElementSession.

Changed to return a MediaElementSession*.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:376
&gt;&gt; +    for (MediaSessionInfo info : PlatformMediaSessionManager::sharedManager().currentSessionInfos()) {
&gt; 
&gt; This unnecessarily makes a copy of each MediaSessionInfo as we iterate the vector. Instead the type should be MediaSessionInfo&amp; or, better, just auto&amp;, to use the objects in place within the vector.

Sounds good -- changed to use auto&amp;.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:387
&gt; +    MediaSessionInfo strongestSessionCandidate = candidateSessionInfos.first();

MediaSessionInfo -&gt; auto

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:7233
&gt;&gt; +    const PlatformMediaSession* bestMediaSession = bestMediaSessionForShowingPlaybackControlsManager();
&gt; 
&gt; auto* would be better than writing out the type here

Changed to use auto.

&gt;&gt; Source/WebCore/html/MediaElementSession.cpp:221
&gt;&gt; +    RenderElement* renderer = m_element.renderer();
&gt; 
&gt; It’s generally incorrect to access the renderer for an element without having a guarantee that the code is only called when style is updated and layout is up to date. Putting calls to renderer behind abstractions like the session increases the risk that we will do that incorrectly. We should keep calls from the session to the renderer to the absolute minimum. Ideally the element calls its own renderer, not through an intermediary object, and it should do so only in functions called when renderer is known to be up to date.
&gt; 
&gt; There’s also a type problem here. Putting a renderer into a local variable that is specifically RenderElement* throws away type information. The renderer of an HTMLMediaElement is guaranteed to be a RenderMedia*, which both has more operations than what RenderElement* has, and might even have more efficient less polymorphic versions of some functions that RenderElement has. That’s why best style is to use auto* rather than RenderElement* in a case like this.

I see -- this is concerning! Our current heuristic for determining whether autoplaying videos should present media controls goes through a main content check that uses the element renderer (asking for width, height, etc.) so the renderer being out of date when updating the controls manager is a problem we may have today; perhaps what we need to do when scheduling an update is to check if the renderer needs to be updated, and defer the update until after the renderer updates. I&apos;ll add a comment describing this.

To the second point, changed RenderElement* to auto.

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSession.h:170
&gt;&gt; +    virtual void resetPlaybackSessionState() { };
&gt; 
&gt; No semicolon after a function body like this (see other functions above and below).

Whoops, good catch. Fixed!

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSession.h:192
&gt;&gt; +struct MediaSessionInfo {
&gt; 
&gt; &quot;info&quot; is typically not a great name for any class; it’s mostly vacuous since all objects contain information. And this class is more than just some information about a media session; it contains a pointer to a specific media session object. It’s sort of “a media session with some precomputed attributes of that session”, which is only good because we happen to know the exact set that one particular algorithm needs. This is kind of a peculiar API. It has all the things that one particular caller happens to need, so it’s quite specific to its one use, but it masquerades as a general purpose collection of information.
&gt; 
&gt; It’s a poor design pattern to vend objects with raw pointers; keeping one around too long and using the pointer can lead to a serious bug, and really there is no reason to do that here.
&gt; 
&gt; There is a kind of false abstraction here, because MediaSession objects that are not MediaElementSession return an info structure but these never are used for anything; just immediately ruled out. The code in HTMLMediaElement already knows it’s specifically only interested in MediaElementSession.
&gt; 
&gt; A better design would be to add member functions to MediaElementSession that answer any of these questions as needed to make that code clear, then any structure needed to collect these and sort them would be something that the file defining bestMediaSessionForShowingPlaybackControlsManager would define locally for its purposes as needed.

This makes sense. I&apos;ve changed MediaElementSession to have member functions that answer questions asked when determining which session is the best candidate. To ensure that we don&apos;t keep asking the session for the same thing, I&apos;ve moved session info MediaElementSessionInfo to be defined in the implementation, so it&apos;s only used when computing the best candidate session.

&gt;&gt; Source/WebCore/platform/audio/PlatformMediaSession.h:201
&gt;&gt; +    }
&gt; 
&gt; A struct does not need a constructor like this; callers can simply use aggregate initialization even without this.

Removed, since I&apos;m not relying on a copy constructor here anymore.

&gt; Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm:422
&gt; +    HTMLMediaElement *element = ensureModel(contextId).mediaElement();

HTMLMediaElement * -&gt; auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226180</commentid>
    <comment_count>8</comment_count>
      <attachid>287872</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-03 15:52:27 -0700</bug_when>
    <thetext>Created attachment 287872
Addresses review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226185</commentid>
    <comment_count>9</comment_count>
      <attachid>287872</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 16:17:27 -0700</bug_when>
    <thetext>Comment on attachment 287872
Addresses review feedback

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

&gt; Source/WebCore/html/MediaElementSession.cpp:294
&gt; +bool MediaElementSession::isVisibleInViewportOrFullscreen() const
&gt; +{
&gt; +    if (m_element.isFullscreen())
&gt; +        return true;
&gt; +
&gt; +    auto renderer = m_element.renderer();
&gt; +    return renderer &amp;&amp; renderer-&gt;visibleInViewportState() == RenderElement::VisibleInViewport;
&gt; +}

Not sure we need this function to be a member of session. It’s a question about the media element, not something specific to the session, and there is not any logic shared with other functions in the session class. I think it could be done inside HTMLMediaElement.cpp. This would have the benefit of moving the renderer access into the element class rather than hiding it under a layer of abstraction.

But I am not sure about this suggestion.

&gt; Source/WebCore/html/MediaElementSession.cpp:299
&gt; +bool MediaElementSession::isPlayingAudio() const
&gt; +{
&gt; +    return m_element.isPlaying() &amp;&amp; m_element.hasAudio() &amp;&amp; !m_element.muted();
&gt; +}

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226190</commentid>
    <comment_count>10</comment_count>
      <attachid>287872</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-03 16:54:48 -0700</bug_when>
    <thetext>Comment on attachment 287872
Addresses review feedback

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

&gt;&gt; Source/WebCore/html/MediaElementSession.cpp:294
&gt;&gt; +}
&gt; 
&gt; Not sure we need this function to be a member of session. It’s a question about the media element, not something specific to the session, and there is not any logic shared with other functions in the session class. I think it could be done inside HTMLMediaElement.cpp. This would have the benefit of moving the renderer access into the element class rather than hiding it under a layer of abstraction.
&gt; 
&gt; But I am not sure about this suggestion.

I think this makes sense, especially since the helper that uses this is in HTMLMediaElement in the first place. Moved to HTMLMediaElement.

&gt;&gt; Source/WebCore/html/MediaElementSession.cpp:299
&gt;&gt; +}
&gt; 
&gt; Ditto.

Moved to HTMLMediaElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226192</commentid>
    <comment_count>11</comment_count>
      <attachid>287874</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-09-03 16:56:13 -0700</bug_when>
    <thetext>Created attachment 287874
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226196</commentid>
    <comment_count>12</comment_count>
      <attachid>287874</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-03 17:26:11 -0700</bug_when>
    <thetext>Comment on attachment 287874
Patch for landing

Clearing flags on attachment: 287874

Committed r205412: &lt;http://trac.webkit.org/changeset/205412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226197</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-03 17:26:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287672</attachid>
            <date>2016-09-01 13:55:42 -0700</date>
            <delta_ts>2016-09-02 10:36:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161503-20160901135328.patch</filename>
            <type>text/plain</type>
            <size>44051</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNjE4YWM0YTcwNTI5
ODdjNGNhNGE1YmU0MmU5NzczMjAyZWRlZi4uNzg0NzQwYjJkMDkzZTNkNWVmNjI3ZDk2MzA1OWMw
MDg3MTM4NjNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE2LTA5LTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSwgd2hlbiBzZWxlY3RpbmcgYSBtZWRpYSBzZXNzaW9uIHRvIHNob3cgcGxheWJhY2sgY29udHJv
bHMgZm9yLCB3ZSBncmFiIHRoZSBmaXJzdCBtZWRpYSBzZXNzaW9uIHRoYXQKKyAgICAgICAgcGFz
c2VzIG91ciBoZXVyaXN0aWMuIFVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBhcmUgdW5hYmxlIHRvIHRh
a2UgYWRkaXRpb25hbCBmYWN0b3JzIGludG8gYWNjb3VudCwgc3VjaCBhcyB3aGV0aGVyCisgICAg
ICAgIGFub3RoZXIgbWVkaWEgc2Vzc2lvbidzIGVsZW1lbnQgaXMgc2Nyb2xsZWQgaW4gdmlldywg
b3IgaWYgYW5vdGhlciBtZWRpYSBzZXNzaW9uIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aCBtb3Jl
CisgICAgICAgIHJlY2VudGx5LiBUbyBhZGRyZXNzIHRoaXMsIHdlIG1ha2UgdGhlIGZvbGxvd2lu
ZyBjaGFuZ2VzOgorCisgICAgICAgICAgICAxLiAgTWFrZSBlYWNoIGFjdGl2ZSBtZWRpYSBzZXNz
aW9uIHZlbmQgYSBNZWRpYVNlc3Npb25JbmZvLCB3aGljaCBhY3RzIGFzIGEgdm91Y2hlciBmb3Ig
dGhhdCBtZWRpYSBzZXNzaW9uCisgICAgICAgICAgICAgICAgd2hlbiBkZXRlcm1pbmluZyB3aGlj
aCBtZWRpYSBzZXNzaW9uIHNob3VsZCBzaG93IGNvbnRyb2xzLiBXaGVuIHVwZGF0aW5nIHRoZSBw
bGF5YmFjayBjb250cm9scyBtYW5hZ2VyLAorICAgICAgICAgICAgICAgIHdlIGNvbGxlY3QgTWVk
aWFTZXNzaW9uSW5mb3MgZnJvbSBhbGwgYWN0aXZlIHNlc3Npb25zLgorCisgICAgICAgICAgICAy
LiAgV2UgdGhlbiBzZWxlY3Qgb25seSB0aGUgTWVkaWFTZXNzaW9uSW5mb3MgY2FwYWJsZSBvZiBz
aG93aW5nIG1lZGlhIGNvbnRyb2xzIGFuZCBzb3J0IHRoZSBsaXN0IGJ5IGEKKyAgICAgICAgICAg
ICAgICBzcGVjaWFsIGhldXJpc3RpYyB0aGF0IHRha2VzIHZpc2liaWxpdHkgYW5kIHRpbWUgb2Yg
bGFzdCB1c2VyIGludGVyYWN0aW9uIGludG8gYWNjb3VudC4gVGhlIGZpcnN0CisgICAgICAgICAg
ICAgICAgZWxlbWVudCBvbiB0aGlzIGxpc3QgaXMgdGhlIHN0cm9uZ2VzdCBjYW5kaWRhdGUgZm9y
IG1haW4gY29udGVudC4KKworICAgICAgICAgICAgMy4gIElmIHRoaXMgc3Ryb25nZXN0IGNhbmRp
ZGF0ZSBpcyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgb3IgaXQgaXMgcGxheWluZyB3aXRoIGF1
ZGlvLCB3ZSByZXR1cm4gdGhpcworICAgICAgICAgICAgICAgIGFzIHRoZSBjaG9zZW4gY2FuZGlk
YXRlLiBPdGhlcndpc2UsIHdlIHJldHVybiB0aGlzIHNlc3Npb24gb25seSBpZiBubyBvdGhlciBu
b24tY2FuZGlkYXRlIHZpZGVvIGNvdWxkIGJlCisgICAgICAgICAgICAgICAgY29uZnVzZWQgYXMg
dGhlIG1haW4gY29udGVudCAoaS5lLiB0aGUgbm9uLWNhbmRpZGF0ZSB2aWRlbyBpcyBub3Qgb25s
eSB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgYnV0IGFsc28KKyAgICAgICAgICAgICAgICBsYXJn
ZSBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQpLgorCisgICAgICAgIFVzaW5n
IHRoaXMgbmV3IG1ldGhvZCBvZiBkZXRlcm1pbmluZyB0aGUgdmlkZW8gdG8gc2hvdyBjb250cm9s
cyBmb3IsIHdlIHJldGFpbiBwcmV2aW91cyBiZWhhdmlvciBmb3IgcGFnZXMgd2l0aAorICAgICAg
ICBhIHNpbmdsZSB2aWRlby4gT24gcGFnZXMgd2l0aCBtdWx0aXBsZSB2aWRlb3MsIHRoZSBhYm92
ZSBsb2dpYyBlbnN1cmVzIHRoYXQgaWYgdGhlIGN1cnJlbnQgY29udHJvbGxlZCB2aWRlbyBpcwor
ICAgICAgICBwYXVzZWQsIHNjcm9sbGVkIG91dCBvZiB2aWV3LCBhbmQgdGhlbiBhIG5ldyB2aWRl
byBpcyBzY3JvbGxlZCBpbnRvIHZpZXcsIHdlIHdpbGwgZWl0aGVyIGhpZGUgbWVkaWEgY29udHJv
bHMgdG8KKyAgICAgICAgYXZvaWQgY29uZnVzaW9uIGlmIHRoYXQgdmlkZW8gY291bGQgYmUgY29u
ZnVzZWQgZm9yIG1haW4gY29udGVudCAodXNpbmcgdGhlIG1lY2hhbmlzbSBpbiBzdGVwIDMpLCBv
ciB3ZQorICAgICAgICBob29rIHVwIHRoZSBtZWRpYSBjb250cm9scyB0byB0aGUgbmV3IHZpZGVv
IGlmIGl0IHNhdGlzZmllcyBtYWluIGNvbnRlbnQgKHVzaW5nIHRoZSBtZWNoYW5pc20gaW4gc3Rl
cCAyKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyAzIG5ldyBUZXN0V2ViS2l0QVBJ
IHVuaXQgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVy
T3RoZXJDYW5kaWRhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2Vzc2lvbk1h
eUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFT
ZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdp
c3RyYXRpb25Gb3JBdXRvcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojppc1Zpc2libGVJblZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojppc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnJlc2V0UGxheWJhY2tTZXNzaW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYWluQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudExhcmdlUmVsYXRpdmVUb01haW5GcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbyk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkluZm86Ok1lZGlhU2Vzc2lvbklu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhbkNvbnRyb2xD
b250cm9sc01hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uSW5mb3MpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorCiAyMDE2LTA4LTMwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIHR5cG8gaW50cm9kdWNlZCBp
biByMjA1MTg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MTE5OTJkZjU1NTA2NmMyODY2NDBhMTNmZDFjYTY0YTg4Yzk1ZmM1Ni4uNGU3M2MwN2FmZmZjYjFm
MTIzNzJmYzI2ZmY0YWNkMjViMDFjOGVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC0zNDYsNiArMzQ2LDUxIEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0RWxl
bWVudElEKCkKIH0KICNlbmRpZgogCitzdGF0aWMgYm9vbCBwcmVmZXJNZWRpYUNvbnRyb2xzRm9y
Q2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Npb24oY29uc3QgTWVkaWFTZXNz
aW9uSW5mbyYgc2Vzc2lvbiwgY29uc3QgTWVkaWFTZXNzaW9uSW5mbyYgb3RoZXJTZXNzaW9uKQor
eworICAgIC8vIFByaW9yaXRpemUgdmlzaWJsZSBtZWRpYSBvdmVyIG9mZnNjcmVlbiBtZWRpYS4K
KyAgICBpZiAoc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0ICE9IG90aGVyU2Vzc2lvbi5pc1Zp
c2libGVJblZpZXdwb3J0KQorICAgICAgICByZXR1cm4gc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdw
b3J0OworCisgICAgLy8gQXMgYSB0aWVicmVha2VyLCBwcmlvcml0aXplIGVsZW1lbnRzIHRoYXQg
dGhlIHVzZXIgcmVjZW50bHkgaW50ZXJhY3RlZCB3aXRoLgorICAgIHJldHVybiBzZXNzaW9uLnRp
bWVPZkxhc3RVc2VySW50ZXJhY3Rpb24gPiBvdGhlclNlc3Npb24udGltZU9mTGFzdFVzZXJJbnRl
cmFjdGlvbjsKK30KKworc3RhdGljIGJvb2wgbWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZEZvck1h
aW5Db250ZW50KGNvbnN0IE1lZGlhU2Vzc2lvbkluZm8mIHNlc3Npb24pCit7CisgICAgaWYgKCFz
ZXNzaW9uLmlzVmlzaWJsZUluVmlld3BvcnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghc2Vzc2lvbi5pc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEV2ZW4gaWYgdGhpcyB2aWRlbyBpcyBub3QgYSBjYW5kaWRhdGUs
IGlmIGl0IGlzIHZpc2libGUgdG8gdGhlIHVzZXIgYW5kIGxhcmdlIGVub3VnaAorICAgIC8vIHRv
IGJlIG1haW4gY29udGVudCwgaXQgcG9zZXMgYSByaXNrIGZvciBiZWluZyBjb25mdXNlZCB3aXRo
IG1haW4gY29udGVudC4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGNvbnN0IFBsYXRm
b3JtTWVkaWFTZXNzaW9uKiBiZXN0TWVkaWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCkKK3sKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uSW5mbz4gY2FuZGlkYXRlU2Vz
c2lvbkluZm9zOworICAgIGJvb2wgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRG
b3JNYWluQ29udGVudCA9IGZhbHNlOworICAgIGZvciAoTWVkaWFTZXNzaW9uSW5mbyBpbmZvIDog
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Np
b25JbmZvcygpKSB7CisgICAgICAgIGlmIChpbmZvLmNhblNob3dDb250cm9sc01hbmFnZXIpCisg
ICAgICAgICAgICBjYW5kaWRhdGVTZXNzaW9uSW5mb3MuYXBwZW5kKGluZm8pOworICAgICAgICBl
bHNlIGlmIChtZWRpYVNlc3Npb25NYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQoaW5mbykpCisg
ICAgICAgICAgICBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250
ZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIWNhbmRpZGF0ZVNlc3Npb25JbmZvcy5zaXpl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjpzb3J0KGNhbmRpZGF0ZVNl
c3Npb25JbmZvcy5iZWdpbigpLCBjYW5kaWRhdGVTZXNzaW9uSW5mb3MuZW5kKCksIHByZWZlck1l
ZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbik7
CisgICAgTWVkaWFTZXNzaW9uSW5mbyBzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlID0gY2FuZGlk
YXRlU2Vzc2lvbkluZm9zLmZpcnN0KCk7CisgICAgaWYgKCFzdHJvbmdlc3RTZXNzaW9uQ2FuZGlk
YXRlLmlzVmlzaWJsZUluVmlld3BvcnQgJiYgIXN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuaXNQ
bGF5aW5nV2l0aEF1ZGlvICYmIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9y
TWFpbkNvbnRlbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0cm9u
Z2VzdFNlc3Npb25DYW5kaWRhdGUuc2Vzc2lvbjsKK30KKwogSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiAgICAgLCBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQpAQCAtODM3LDggKzg4
Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKIHsKICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAgICAgICAgIHJlbmRl
cmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPmhh
c0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6SW52aXNpYmxlQXV0b3Bs
YXlOb3RQZXJtaXR0ZWQpCi0gICAgICAgICAgICB8fCBtX21lZGlhU2Vzc2lvbi0+aGFzQmVoYXZp
b3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpPdmVycmlkZVVzZXJHZXN0dXJlUmVx
dWlyZW1lbnRGb3JNYWluQ29udGVudCkpCisgICAgICAgIGlmICh3YW50c1Zpc2libGVJblZpZXdw
b3J0Q2FsbGJhY2tSZWdpc3RyYXRpb25Gb3JBdXRvcGxheSgpKQogICAgICAgICAgICAgcmVuZGVy
ZXItPnJlZ2lzdGVyRm9yVmlzaWJsZUluVmlld3BvcnRDYWxsYmFjaygpOwogICAgIH0KICAgICB1
cGRhdGVTaG91bGRBdXRvcGxheSgpOwpAQCAtNDAyMSw2ICs0MDY1LDExIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bGF5b3V0U2l6ZUNoYW5nZWQoKQogICAgICAgICBtX3JlY2VpdmVkTGF5b3V0
U2l6ZUNoYW5nZWQgPSB0cnVlOwogICAgICAgICBzY2hlZHVsZVVwZGF0ZVBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCk7CiAgICAgfQorCisgICAgLy8gSWYgdGhlIHZpZGVvIGlzIGEgY2FuZGlkYXRl
IGZvciBtYWluIGNvbnRlbnQsIHdlIHNob3VsZCByZWdpc3RlciBpdCBmb3Igdmlld3BvcnQgdmlz
aWJpbGl0eSBjYWxsYmFja3MKKyAgICAvLyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIHJlZ2lz
dGVyZWQuCisgICAgaWYgKHJlbmRlcmVyKCkgJiYgaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50
KCkgJiYgIXdhbnRzVmlzaWJsZUluVmlld3BvcnRDYWxsYmFja1JlZ2lzdHJhdGlvbkZvckF1dG9w
bGF5KCkpCisgICAgICAgIHJlbmRlcmVyKCktPnJlZ2lzdGVyRm9yVmlzaWJsZUluVmlld3BvcnRD
YWxsYmFjaygpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpc2liaWxpdHlEaWRDaGFu
Z2UoKQpAQCAtNDQ0Nyw2ICs0NDk2LDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQmVo
YXZpb3JSZXN0cmljdGlvbnNPbkVuZElmTmVjZXNzYXJ5KCkKICAgICBtX21lZGlhU2Vzc2lvbi0+
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGxheWJh
Y2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIgfCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJl
VXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogfQogCitib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OndhbnRzVmlzaWJsZUluVmlld3BvcnRDYWxsYmFja1JlZ2lzdHJhdGlvbkZvckF1
dG9wbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmhhc0JlaGF2aW9y
UmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJt
aXR0ZWQpCisgICAgICAgIHx8IG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3RyaWN0aW9u
KE1lZGlhRWxlbWVudFNlc3Npb246Ok92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1h
aW5Db250ZW50KTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVt
ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZCglcCkiLCB0aGlzKTsKQEAgLTcxNDAsNiArNzE5
NSw3IEBAIHN0YXRpYyBib29sIG1lZGlhRWxlbWVudElzQWxsb3dlZFRvQXV0b3BsYXkoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aXNWaXNp
YmxlSW5WaWV3cG9ydENoYW5nZWQoKQogewogICAgIHVwZGF0ZVNob3VsZEF1dG9wbGF5KCk7Cisg
ICAgc2NoZWR1bGVVcGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogfQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZEF1dG9wbGF5KCkKQEAgLTcxNjgsMjAgKzcyMjQs
NjkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRQbGF5KCkKICAgICAgICAg
cGxheSgpOwogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzTGFyZ2VFbm91Z2hGb3JNYWlu
Q29udGVudCgpIGNvbnN0Cit7CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBlbGVtZW50TWFpbkNv
bnRlbnRBcmVhTWluaW11bSA9IDQwMCAqIDMwMDsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1h
eGltdW1Bc3BlY3RSYXRpbyA9IDEuODsgLy8gU2xpZ2h0bHkgbGFyZ2VyIHRoYW4gMTY6OS4KKyAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIG1pbmltdW1Bc3BlY3RSYXRpbyA9IC41OyAvLyBTbGlnaHRs
eSBzbWFsbGVyIHRoYW4gOToxNi4KKworICAgIC8vIEVsZW1lbnRzIHdoaWNoIGhhdmUgbm90IHll
dCBiZWVuIGxhaWQgb3V0LCBvciB3aGljaCBhcmUgbm90IHlldCBpbiB0aGUgRE9NLCBjYW5ub3Qg
YmUgbWFpbiBjb250ZW50LgorICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkb3VibGUg
d2lkdGggPSByZW5kZXJlci0+Y2xpZW50V2lkdGgoKTsKKyAgICBkb3VibGUgaGVpZ2h0ID0gcmVu
ZGVyZXItPmNsaWVudEhlaWdodCgpOworICAgIGRvdWJsZSBhcmVhID0gd2lkdGggKiBoZWlnaHQ7
CisgICAgZG91YmxlIGFzcGVjdFJhdGlvID0gd2lkdGggLyBoZWlnaHQ7CisKKyAgICBpZiAoYXJl
YSA8IGVsZW1lbnRNYWluQ29udGVudEFyZWFNaW5pbXVtKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoYXNwZWN0UmF0aW8gPj0gbWluaW11bUFzcGVjdFJhdGlvICYmIGFzcGVjdFJh
dGlvIDw9IG1heGltdW1Bc3BlY3RSYXRpbykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gaXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoKTsKK30KKworYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc0xhcmdlUmVsYXRpdmVUb01haW5GcmFtZSgpIGNvbnN0Cit7CisgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBtaW5pbXVtUGVyY2VudGFnZU9mTWFpbkZyYW1lQXJlYUZvck1haW5Db250
ZW50ID0gMC45OworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiBkb2N1bWVu
dEZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZG9jdW1lbnRGcmFtZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkb2N1bWVudEZyYW1lLT5tYWluRnJhbWUo
KS52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIG1haW5GcmFtZVZp
ZXcgPSAqZG9jdW1lbnRGcmFtZS0+bWFpbkZyYW1lKCkudmlldygpOworICAgIGF1dG8gbWF4Vmlz
aWJsZUNsaWVudFdpZHRoID0gc3RkOjptaW4ocmVuZGVyZXItPmNsaWVudFdpZHRoKCkudG9JbnQo
KSwgbWFpbkZyYW1lVmlldy52aXNpYmxlV2lkdGgoKSk7CisgICAgYXV0byBtYXhWaXNpYmxlQ2xp
ZW50SGVpZ2h0ID0gc3RkOjptaW4ocmVuZGVyZXItPmNsaWVudEhlaWdodCgpLnRvSW50KCksIG1h
aW5GcmFtZVZpZXcudmlzaWJsZUhlaWdodCgpKTsKKworICAgIHJldHVybiBtYXhWaXNpYmxlQ2xp
ZW50V2lkdGggKiBtYXhWaXNpYmxlQ2xpZW50SGVpZ2h0ID4gbWluaW11bVBlcmNlbnRhZ2VPZk1h
aW5GcmFtZUFyZWFGb3JNYWluQ29udGVudCAqIG1haW5GcmFtZVZpZXcudmlzaWJsZVdpZHRoKCkg
KiBtYWluRnJhbWVWaWV3LnZpc2libGVIZWlnaHQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKK3sKKyAgICBpZiAobV9tZWRpYVNlc3Np
b24pCisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5yZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCk7
Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKQogewogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBzZXNzaW9u
ID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNl
c3Npb25NYXRjaGluZyhbXSAoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIHsK
LSAgICAgICAgcmV0dXJuIHNlc3Npb24uY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpOwotICAg
IH0pOwotCi0gICAgaWYgKCFpczxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKSkKKyAgICBj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYmVzdE1lZGlhU2Vzc2lvbiA9IGJlc3RNZWRpYVNl
c3Npb25Gb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKKyAgICBpZiAoIWlzPE1l
ZGlhRWxlbWVudFNlc3Npb24+KGJlc3RNZWRpYVNlc3Npb24pKQogICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5jbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAgZWxzZQot
ICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKGRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+KHNlc3Npb24pLT5lbGVtZW50KCkpOwor
ICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKGRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+KGJlc3RNZWRpYVNlc3Npb24pLT5lbGVt
ZW50KCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlUGxheWJh
Y2tDb250cm9sc01hbmFnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA5OGYzYjA4ODk4NmE5OTZmNGVhNmI3NWFlYTc0ZTk2M2Q1YjYyMTlhLi5hMzc0Yzk1N2Rm
YmM4MjNkNzY4ZmRkZTNhZmI5MTQzZmE4NTllNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNDY1LDkgKzQ2NSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0NoYW5nZWQoKTsKICAgICB2b2lkIHVwZGF0
ZVNob3VsZFBsYXkoKTsKKyAgICBib29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgpIGNv
bnN0OworICAgIGJvb2wgaXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoKSBjb25zdDsKIAogICAg
IFJlbmRlck1lZGlhKiByZW5kZXJlcigpIGNvbnN0OwogCisgICAgdm9pZCByZXNldFBsYXliYWNr
U2Vzc2lvblN0YXRlKCk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2
aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC03OTUsNiArNzk5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldENvbnRyb2xsZXJKU1Byb3BlcnR5KGNvbnN0IGNoYXIqLCBKU0M6OkpTVmFs
dWUpOwogCiAgICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uc09uRW5kSWZOZWNlc3Nhcnko
KTsKKyAgICBib29sIHdhbnRzVmlzaWJsZUluVmlld3BvcnRDYWxsYmFja1JlZ2lzdHJhdGlvbkZv
ckF1dG9wbGF5KCkgY29uc3Q7CiAKICAgICBUaW1lciBtX3BlbmRpbmdBY3Rpb25UaW1lcjsKICAg
ICBUaW1lciBtX3Byb2dyZXNzRXZlbnRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uY3BwCmluZGV4IGU5Yjk3YjlhMTJhYWQ2MzEyOGJhYjlmNTQxNWE0Y2Q4
NDZiNjA5ZmEuLmJiYjk3YThiMDlmMDk5YTMyN2IxOTczNmQ3ZjgyNWIzMzU5NDI3NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCkBAIC01
OSw3ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBkb3VibGUgZWxl
bWVudE1haW5Db250ZW50Q2hlY2tJbnRlcnZhbCA9IC4yNTA7CiAKIHN0YXRpYyBib29sIGlzTWFp
bkNvbnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwotc3RhdGljIGJvb2wgaXNFbGVtZW50
TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICNp
ZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFtZShNZWRpYUVsZW1l
bnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKQEAgLTEzNyw2ICsx
MzcsOSBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3RpbwogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Np
b246OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb24pCiB7CisgICAgaWYgKHJlc3RyaWN0aW9uICYgUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250
cm9sQ29udHJvbHNNYW5hZ2VyKQorICAgICAgICBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKICAgICBMT0coTWVkaWEsICJN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uIC0gcmVtb3Zpbmcg
JXMiLCByZXN0cmljdGlvbk5hbWUocmVzdHJpY3Rpb24pLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1f
cmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsKIH0KQEAgLTIxMiw2NiArMjE1LDc5IEBAIGJv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhj
b25zdCBIVE1MTWVkaWFFbGVtZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpIGNvbnN0CitNZWRpYVNl
c3Npb25JbmZvIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhU2Vzc2lvbkluZm8oKSBjb25zdAor
eworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gbV9lbGVtZW50LnJlbmRlcmVyKCk7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgdGhpcywKKyAgICAgICAgY2FuU2hvd0NvbnRyb2xzTWFuYWdl
cigpLAorICAgICAgICByZW5kZXJlciAmJiByZW5kZXJlci0+dmlzaWJsZUluVmlld3BvcnRTdGF0
ZSgpID09IFJlbmRlckVsZW1lbnQ6OlZpc2libGVJblZpZXdwb3J0LAorICAgICAgICBtX2VsZW1l
bnQuaXNQbGF5aW5nKCkgJiYgbV9lbGVtZW50Lmhhc0F1ZGlvKCkgJiYgIW1fZWxlbWVudC5tdXRl
ZCgpLAorICAgICAgICBtX2VsZW1lbnQuaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCksCisg
ICAgICAgIG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUKKyAgICB9OworfQorCitib29s
IE1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIoKSBjb25zdAogewog
ICAgIGlmIChtX2VsZW1lbnQuaXNGdWxsc2NyZWVuKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmlu
ZyBUUlVFOiBJcyBmdWxsc2NyZWVuIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVu
dFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgZnVs
bHNjcmVlbiIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZWxl
bWVudC5oYXNBdWRpbygpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIGF1ZGlv
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBpZiAobV9lbGVtZW50LmRv
Y3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKSB7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSBy
ZXR1cm5pbmcgRkFMU0U6IGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSIpOworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghcGxheWJhY2tQZXJtaXR0ZWQo
bV9lbGVtZW50KSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpj
YW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBQbGF5YmFjayBub3Qg
cGVybWl0dGVkIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNh
blNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IFBsYXliYWNrIG5vdCBwZXJt
aXR0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghaGFzQmVo
YXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFn
ZXIpIHx8IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkp
IHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENv
bnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBObyB1c2VyIGdlc3R1cmUgcmVxdWlyZWQi
KTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRy
b2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBObyB1c2VyIGdlc3R1cmUgcmVxdWlyZWQiKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGhhc0JlaGF2aW9yUmVzdHJp
Y3Rpb24oUmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKSAmJiAhbV9lbGVt
ZW50LmlzUGxheWluZygpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5lZWRzIHRv
IGJlIHBsYXlpbmciKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6
Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTmVlZHMgdG8gYmUgcGxh
eWluZyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVu
dC5tdXRlZCgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNh
bkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE11dGVkIik7CisgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFn
ZXIgLSByZXR1cm5pbmcgRkFMU0U6IE11dGVkIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIW1fZWxlbWVudC5oYXNBdWRpbygpKSB7CisgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5p
bmcgRkFMU0U6IE5vIGF1ZGlvIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICBpZiAobV9lbGVtZW50LmlzVmlkZW8oKSkgewogICAgICAgICBpZiAoIW1fZWxlbWVudC5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpj
YW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyByZW5kZXJlciIp
OworICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0Nv
bnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gcmVuZGVyZXIiKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2VsZW1lbnQuZG9j
dW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBU
UlVFOiBJcyBtZWRpYSBkb2N1bWVudCIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJ
cyBtZWRpYSBkb2N1bWVudCIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIW1fZWxlbWVudC5oYXNWaWRlbygpKSB7Ci0gICAgICAgICAgICBMT0co
TWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0g
cmV0dXJuaW5nIEZBTFNFOiBObyB2aWRlbyIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxT
RTogTm8gdmlkZW8iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChpc0VsZW1lbnRMYXJnZUVub3VnaEZvck1haW5Db250ZW50KG1fZWxlbWVudCkp
IHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRy
b2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgbWFpbiBjb250ZW50Iik7Cisg
ICAgICAgIGlmIChtX2VsZW1lbnQuaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCkpIHsKKyAg
ICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9s
c01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgbWFpbiBjb250ZW50Iik7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlh
RWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFM
U0U6IE5vIHVzZXIgZ2VzdHVyZSIpOworICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHVzZXIgZ2Vz
dHVyZSIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTAyLDYgKzUxOCwxMiBAQCB2b2lk
IE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZChjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50KQogICAgIAogfQogCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnJl
c2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKQoreworICAgIG1fbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUgPSAwOworICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0
dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyIHwgUmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29u
dHJvbHNNYW5hZ2VyKTsKK30KKwogYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQaWN0
dXJlSW5QaWN0dXJlKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7CiAg
ICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCk7CkBA
IC01NTcsNyArNTc5LDcgQEAgc3RhdGljIGJvb2wgaXNNYWluQ29udGVudChjb25zdCBIVE1MTWVk
aWFFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghaXNFbGVtZW50TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChlbGVt
ZW50KSkKKyAgICBpZiAoIWVsZW1lbnQuaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEVsZW1lbnRzIHdoaWNoIGFyZSBoaWRkZW4g
Ynkgc3R5bGUsIG9yIGhhdmUgYmVlbiBzY3JvbGxlZCBvdXQgb2YgdmlldywgY2Fubm90IGJlIG1h
aW4gY29udGVudC4KQEAgLTU5Niw1MiArNjE4LDYgQEAgc3RhdGljIGJvb2wgaXNNYWluQ29udGVu
dChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgYm9vbCBpc0VsZW1lbnRMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1pbmlt
dW1QZXJjZW50YWdlT2ZNYWluRnJhbWVBcmVhRm9yTWFpbkNvbnRlbnQgPSAwLjk7Ci0gICAgYXV0
byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byogZG9jdW1lbnRGcmFtZSA9IGVsZW1lbnQu
ZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIGlmICghZG9jdW1lbnRGcmFtZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKCFkb2N1bWVudEZyYW1lLT5tYWluRnJhbWUoKS52aWV3KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIG1haW5GcmFtZVZpZXcgPSAqZG9j
dW1lbnRGcmFtZS0+bWFpbkZyYW1lKCkudmlldygpOwotICAgIGF1dG8gbWF4VmlzaWJsZUNsaWVu
dFdpZHRoID0gc3RkOjptaW4ocmVuZGVyZXItPmNsaWVudFdpZHRoKCkudG9JbnQoKSwgbWFpbkZy
YW1lVmlldy52aXNpYmxlV2lkdGgoKSk7Ci0gICAgYXV0byBtYXhWaXNpYmxlQ2xpZW50SGVpZ2h0
ID0gc3RkOjptaW4ocmVuZGVyZXItPmNsaWVudEhlaWdodCgpLnRvSW50KCksIG1haW5GcmFtZVZp
ZXcudmlzaWJsZUhlaWdodCgpKTsKLQotICAgIHJldHVybiBtYXhWaXNpYmxlQ2xpZW50V2lkdGgg
KiBtYXhWaXNpYmxlQ2xpZW50SGVpZ2h0ID4gbWluaW11bVBlcmNlbnRhZ2VPZk1haW5GcmFtZUFy
ZWFGb3JNYWluQ29udGVudCAqIG1haW5GcmFtZVZpZXcudmlzaWJsZVdpZHRoKCkgKiBtYWluRnJh
bWVWaWV3LnZpc2libGVIZWlnaHQoKTsKLX0KLQotc3RhdGljIGJvb2wgaXNFbGVtZW50TGFyZ2VF
bm91Z2hGb3JNYWluQ29udGVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQotewot
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZWxlbWVudE1haW5Db250ZW50QXJlYU1pbmltdW0gPSA0
MDAgKiAzMDA7Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtQXNwZWN0UmF0aW8gPSAx
Ljg7IC8vIFNsaWdodGx5IGxhcmdlciB0aGFuIDE2OjkuCi0gICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBtaW5pbXVtQXNwZWN0UmF0aW8gPSAuNTsgLy8gU2xpZ2h0bHkgc21hbGxlciB0aGFuIDk6MTYu
Ci0KLSAgICAvLyBFbGVtZW50cyB3aGljaCBoYXZlIG5vdCB5ZXQgYmVlbiBsYWlkIG91dCwgb3Ig
d2hpY2ggYXJlIG5vdCB5ZXQgaW4gdGhlIERPTSwgY2Fubm90IGJlIG1haW4gY29udGVudC4KLSAg
ICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVy
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkb3VibGUgd2lkdGggPSByZW5kZXJlci0+
Y2xpZW50V2lkdGgoKTsKLSAgICBkb3VibGUgaGVpZ2h0ID0gcmVuZGVyZXItPmNsaWVudEhlaWdo
dCgpOwotICAgIGRvdWJsZSBhcmVhID0gd2lkdGggKiBoZWlnaHQ7Ci0gICAgZG91YmxlIGFzcGVj
dFJhdGlvID0gd2lkdGggLyBoZWlnaHQ7Ci0KLSAgICBpZiAoYXJlYSA8IGVsZW1lbnRNYWluQ29u
dGVudEFyZWFNaW5pbXVtKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXNwZWN0
UmF0aW8gPj0gbWluaW11bUFzcGVjdFJhdGlvICYmIGFzcGVjdFJhdGlvIDw9IG1heGltdW1Bc3Bl
Y3RSYXRpbykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gaXNFbGVtZW50TGFy
Z2VSZWxhdGl2ZVRvTWFpbkZyYW1lKGVsZW1lbnQpOwotfQotCiB2b2lkIE1lZGlhRWxlbWVudFNl
c3Npb246Om1haW5Db250ZW50Q2hlY2tUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIWhhc0JlaGF2
aW9yUmVzdHJpY3Rpb24oT3ZlcnJpZGVVc2VyR2VzdHVyZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRl
bnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCBkYThk
MTU4NGNhODBmN2M1ZDExODIyODZiZGVmNTAyMjY4MWU5ZDlhLi4xMmFjZWIwN2VjYzUyYTRjNmQ5
ZThjMWUxMGNjMmFmOTAwNmU2NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYWdlQWxsb3dz
RGF0YUxvYWRpbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIGJvb2wgcGFn
ZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29u
c3Q7CiAKLSAgICBib29sIGNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBNZWRpYVNlc3Npb25JbmZvIG1lZGlhU2Vzc2lvbkluZm8oKSBjb25zdCBvdmVycmlk
ZTsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCBzaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwpAQCAtNzgsNiAr
NzgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1lZGlhRW5naW5lVXBkYXRlZChjb25zdCBIVE1M
TWVkaWFFbGVtZW50Jik7CiAKKyAgICB2b2lkIHJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKSBv
dmVycmlkZTsKKwogICAgIC8vIFJlc3RyaWN0aW9ucyB0byBtb2RpZnkgZGVmYXVsdCBiZWhhdmlv
cnMuCiAgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgOiB1bnNpZ25lZCB7CiAgICAg
ICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKQEAgLTEyNyw2ICsxMjksOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgdXBkYXRlSXNNYWluQ29udGVudCgpIGNvbnN0OwogICAgIHZvaWQgbWFpbkNvbnRlbnRD
aGVja1RpbWVyRmlyZWQoKTsKIAorICAgIGJvb2wgY2FuU2hvd0NvbnRyb2xzTWFuYWdlcigpIGNv
bnN0OworCiAgICAgSFRNTE1lZGlhRWxlbWVudCYgbV9lbGVtZW50OwogICAgIEJlaGF2aW9yUmVz
dHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOwogCkBAIC0xNDAsNiArMTQ0LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxz
ZSB9OwogI2VuZGlmCiAKKyAgICBkb3VibGUgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSB7IDAgfTsKKwogICAgIG11dGFibGUgYm9vbCBtX2lzTWFpbkNvbnRlbnQgeyBmYWxzZSB9Owog
ICAgIFRpbWVyIG1fbWFpbkNvbnRlbnRDaGVja1RpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCBk
ZTVkODdmNmRjNDY1NDQyYmQ4ZTA3Yjk1MDVmMDM1ZjEyOTIxMDFjLi4zMDllMjkzNjdhMmZjMGI4
ZmFhZDkzMzkxMzRjYTU2NDAwM2VlMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0yOTksNiArMjk5LDEx
IEBAIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZExv
YWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZE92ZXJy
aWRlQmFja2dyb3VuZExvYWRpbmdSZXN0cmljdGlvbigpOwogfQogCitNZWRpYVNlc3Npb25JbmZv
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjptZWRpYVNlc3Npb25JbmZvKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4geyB0aGlzLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCB9OworfQorCiB2b2lk
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjppc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXRD
aGFuZ2VkKGJvb2wgaXNXaXJlbGVzcykKIHsKICAgICBpZiAoaXNXaXJlbGVzcyA9PSBtX2lzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IGJmY2UyZGZhNDYzOTc3
MDYzMzM3Mjk5YTFlZGZiYTNkYzAyN2E2NmYuLjUwNGVmZjdkODQ0YzQyZDcwOWY3NmJjMDRmNTJm
MGU2OGZiZjZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDsKK3N0cnVjdCBNZWRpYVNlc3Npb25JbmZvOwogCiBj
bGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRPdmVy
cmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbkluZm8gbWVkaWFTZXNzaW9uSW5mbygpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXQ7IH0KICAgICB2b2lkIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENo
YW5nZWQoYm9vbCk7CkBAIC0xNjYsNiArMTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2Fu
UHJvZHVjZUF1ZGlvKGJvb2wpOwogCiAgICAgdm9pZCBzY2hlZHVsZUNsaWVudERhdGFCdWZmZXJp
bmdDaGVjaygpOworICAgIHZpcnR1YWwgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkg
eyB9OwogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CkBAIC0xODcsNiArMTg5LDI2IEBAIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIH07CiAK
K3N0cnVjdCBNZWRpYVNlc3Npb25JbmZvIHsKKyAgICBNZWRpYVNlc3Npb25JbmZvKGNvbnN0IFBs
YXRmb3JtTWVkaWFTZXNzaW9uKiBzZXNzaW9uLCBib29sIGNhblNob3dDb250cm9sc01hbmFnZXIs
IGJvb2wgaXNWaXNpYmxlSW5WaWV3cG9ydCwgYm9vbCBpc1BsYXlpbmdXaXRoQXVkaW8sIGJvb2wg
aXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50LCBkb3VibGUgdGltZU9mTGFzdFVzZXJJbnRlcmFj
dGlvbikKKyAgICAgICAgOiBzZXNzaW9uKHNlc3Npb24pCisgICAgICAgICwgY2FuU2hvd0NvbnRy
b2xzTWFuYWdlcihjYW5TaG93Q29udHJvbHNNYW5hZ2VyKQorICAgICAgICAsIGlzVmlzaWJsZUlu
Vmlld3BvcnQoaXNWaXNpYmxlSW5WaWV3cG9ydCkKKyAgICAgICAgLCBpc1BsYXlpbmdXaXRoQXVk
aW8oaXNQbGF5aW5nV2l0aEF1ZGlvKQorICAgICAgICAsIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29u
dGVudChpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQpCisgICAgICAgICwgdGltZU9mTGFzdFVz
ZXJJbnRlcmFjdGlvbih0aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vzc2lvbjsKKworICAgIGJvb2wgY2Fu
U2hvd0NvbnRyb2xzTWFuYWdlcjsKKyAgICBib29sIGlzVmlzaWJsZUluVmlld3BvcnQ7CisgICAg
Ym9vbCBpc1BsYXlpbmdXaXRoQXVkaW87CisgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNv
bnRlbnQ7CisgICAgZG91YmxlIHRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247Cit9OworCiBjbGFz
cyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAKaW5kZXggZWViYTE1YTA1ZDgwNDE4MzVmMjc2ZDFiZmFjMWNiYjc0YTZhOTc5NS4uZDNi
MjUyN2E0YzY5MzI3NmY1MjYyODllM2JhMWZjMDYwMjMyNmMzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCkBAIC0yODAsMTMgKzI4MCwxMyBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fc2Vzc2lvbnNbMF07CiB9CiAKLVBsYXRmb3JtTWVkaWFTZXNzaW9uKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uTWF0Y2hpbmcoc3RkOjpmdW5jdGlvbjxi
b29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uICYpPiBmaWx0ZXIpCitWZWN0b3I8TWVkaWFT
ZXNzaW9uSW5mbz4gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbklu
Zm9zKCkKIHsKLSAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX3Nlc3Npb25zKSB7Ci0gICAgICAg
IGlmIChmaWx0ZXIoKnNlc3Npb24pKQotICAgICAgICAgICAgcmV0dXJuIHNlc3Npb247Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOworICAgIFZlY3RvcjxNZWRpYVNlc3Npb25JbmZvPiBtYXRj
aGluZ1Nlc3Npb25JbmZvczsKKyAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBtX3Nlc3Npb25zKQor
ICAgICAgICBtYXRjaGluZ1Nlc3Npb25JbmZvcy5hcHBlbmQoc2Vzc2lvbi0+bWVkaWFTZXNzaW9u
SW5mbygpKTsKKworICAgIHJldHVybiBtYXRjaGluZ1Nlc3Npb25JbmZvczsKIH0KICAgICAKIGJv
b2wgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0
IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aAppbmRleCA1ZDE3YWJkNGUyNzU2NWZhYjBkN2EwYTNhNDk1YzY2OTI4YTJlOTY4Li5lYjI0NjM2
MTdlMjA2MzgxOGZjNWZiZTkxNjA5YTU3MGQ5MmU3NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50
U2Vzc2lvbigpIGNvbnN0OwogCi0gICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNz
aW9uTWF0Y2hpbmcoc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
Jik+KTsKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uSW5mbz4gY3VycmVudFNlc3Npb25JbmZvcygp
OwogCiAgICAgdm9pZCBzZXNzaW9uSXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hh
bmdlZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VB
dWRpb0NoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggZGIwOTcwOTQyOGJlM2E4OGQzODVhYjgwZjkyNTI5NzMy
NDcyNjk5Ni4uNzUzNmJjODAzOTg3MzRkNDhlODg4YTU2YTBhNzk5YWEwN2I0MjA0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTkxLDYgKzkxLDkgQEAgdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGkKICAgICB9CiAgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOwog
CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVzZXRQ
bGF5YmFja1Nlc3Npb25TdGF0ZSgpOworCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1l
bnQ7CiAKICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFiYTE0YWFhZjQxODdlODA0YjBhODM4MDEyODlk
OGMwZTRjMzU1NDUuLmU1MDg1NWU2MDhlMmNlMTE0OWI3OWMzMmIxOGM1MTFlZjYwMTc1NzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNi0wOS0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBSZWZhY3RvciB0aGUgaGV1cmlzdGljIGZvciBzaG93aW5nIG1lZGlhIGNv
bnRyb2xzIHRvIHRha2UgYWxsIG1lZGlhIHNlc3Npb25zIGludG8gYWNjb3VudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTAzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yODAzMzc4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIG5ldyB1bml0IHRlc3RzIHZlcmlmeWluZyB0aGUgYmVoYXZp
b3Igb2YgbWVkaWEgcGxheWJhY2sgY29udHJvbHMgd2hlbiBzY3JvbGxpbmcgYW5vdGhlciB2aWRl
byBpbnRvIHZpZXcuCisgICAgICAgIFBsZWFzZSBzZWUgdGhlIFdlYkNvcmUgQ2hhbmdlTG9nIGZv
ciBtb3JlIGRldGFpbHMgYWJvdXQgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJv
bHMuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Ut
dmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbDogQWRkZWQuCisKIDIwMTYt
MDgtMjkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVX
UyBwYXRjaCBzdGF0dXMgcGFnZSBzaG91bGQgaW5kaWNhdGUgYm90IGNvcnJlc3BvbmRpbmcgdG8g
ZWFjaCBzdGF0dXMgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNzBiOTAyZTM0
ODgxZGU1NGNhNmFjOTRjMGU0YTY5NDZmNmRhOTY3Li4xODE0NGY4ZjZiY2FiN2VhZWM0ZGZiOTRh
NzljMmNlM2Q3MmJjZjhmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIsNiArNjIsOSBA
QAogCQkyRTFERkRFRDFENDJBNTExMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTFERkRFQzFENDJBNDFDMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRt
bCAqLzsgfTsKIAkJMkUxREZERUYxRDQyQTZGMjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRo
LWF1ZGlvLWF1dG9wbGF5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkUxREZERUUxRDQyQTZFQjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVv
cy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwgKi87IH07CiAJCTJFMURGREYxMUQ0MkUxRTQwMDcx
NEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRp
bmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdp
bm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CisJCTJFNjkxQUVBMUQ3OEI1
MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlk
ZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKKwkJMkU2OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8qIGxh
cmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTkxRDc4QjUy
QjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0
bWwgKi87IH07CisJCTJFNjkxQUVEMUQ3OEI5MTAwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxh
eWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQw
NyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1s
ICovOyB9OwogCQkyRTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNDMTZDNEQ4MEEw
MEJBMkJCMSAvKiBtYWluSU9TLm1tICovOyB9OwogCQkyRTc3NjVDRjE2QzREODExMDBCQTJCQjEg
LyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tICovOyB9OwogCQkzM0JF
NUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTVBRjgxMzdC
NUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKQEAg
LTUxNiw2ICs1MTksOSBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwog
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkyRTY5MUFFRDFENzhC
OTEwMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29u
dHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFFQTFENzhCNTM2MDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFNjkxQUVCMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8q
IGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgx
ODcxQzg5MjVBMDAwQTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAt
NzM2LDYgKzc0Miw5IEBACiAJCTJFMURGREVDMUQ0MkE0MUMwMDcxNEEwMCAvKiBsYXJnZS12aWRl
b3Mtd2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZp
ZGVvcy13aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTFE
RkRFRTFENDJBNkVCMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXku
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3Mtd2l0aC1hdWRp
by1hdXRvcGxheS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxREZERjAx
RDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5
LWFmdGVyLWVuZGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZp
ZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdl
LXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFFOTFENzhCNTJCMDAxMjk0
MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVw
cy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRUMx
RDc4QjkwMjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVz
LWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9z
LXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFpbklPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5N
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBtYWluTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMg
LyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMzg3LDYgKzEzOTYsOSBAQAogCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQg
LyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0
ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLywKKwkJCQkyRTY5MUFFODFENzhCNTJCMDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICov
LAorCQkJCTJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12
aWRlby1rZWVwcy1jb250cm9scy5odG1sICovLAogCQkJCTVDOUU1OTNFMUQzRUIxREUwMEUzQzYy
RSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiICovLAogCQkJCTVDOUU1OTNGMUQzRUIxREUwMEUzQzYy
RSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLywKIAkJCQk1QzlFNTk0MDFEM0VCMURFMDBF
M0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5h
Z2VyLm1tCmluZGV4IGZhZDVhM2FlNDhmYjA2MWNmYWM4ZWI2M2VkOWE2N2Y0ZDczYmJhMmYuLjMz
NzJmMmUwYzE4Yzg0NTM3Y2ViZmFmNmZlMGZlOTZkZmQwMGE1YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJv
bHNNYW5hZ2VyLm1tCkBAIC0yMzQsNiArMjM0LDYzIEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NXaXRoQXVkaW9BbmRBdXRvcGxh
CiAgICAgRVhQRUNUX1RSVUUoZGlkU2hvd01lZGlhQ29udHJvbHMpOwogfQogCitURVNUKFZpZGVv
Q29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xs
UGF1c2VkVmlkZW9PdXRPZlZpZXcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cg
PSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcg
ZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5n
U3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRT
dWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2Fn
ZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmlu
ZzpAInBhdXNlZCJdKTsKKyAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFu
YWdlcjpOT107CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIi
XTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVv
cy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVk
Q29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5aW5nVmlkZW9X
aXRoU291bmRPdXRPZlZpZXcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1Vz
ZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIFJl
dGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBh
ZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJh
bWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2
aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhh
bmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpA
InBsYXlpbmciXSk7CisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFn
ZXI6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJd
OworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW9z
LXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVk
Q29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5aW5nTXV0ZWRW
aWRlb091dE9mVmlldykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFj
dGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0
TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0g
c3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6
d2ViVmlldy5nZXQoKV07CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxh
eWluZyJdKTsKKyAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpO
T107CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKKwor
ICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvcy1wbGF5
aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3Rl
ZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCiBURVNUKFZpZGVvQ29udHJvbHNNYW5h
Z2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3BsYXlpbmdWaWRlbykKIHsK
ICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1
c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2M1ZjI1ZTc0NWE0Y2Q1YzhlNzMwNDNjY2I2MjI2Y2FkOTkwYWEwMQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L2xhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbApAQCAtMCwwICsx
LDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorICAgIHZpZGVvIHsKKyAg
ICAgICAgd2lkdGg6IDQ4MHB4OworICAgICAgICBoZWlnaHQ6IDMyMHB4OworICAgIH0KKyAgICAj
YmFyIHsKKyAgICAgICAgbWFyZ2luLXRvcDogNTAwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2Ny
aXB0PgorICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWRlZCgpIHsKKyAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiI2JhciIpLnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNmb28iKS5wYXVzZSgpOworICAgIH0KKyAgICBmdW5jdGlvbiBoYW5kbGVQ
YXVzZWQoKSB7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlp
bmdIYW5kbGVyLnBvc3RNZXNzYWdlKCJwYXVzZWQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkg
eyB9CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWhhbmRs
ZUxvYWRlZCgpPgorICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmb28iIG9ucGF1c2U9aGFu
ZGxlUGF1c2VkKCk+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3Zp
ZGVvPgorICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZp
ZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJv
bHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZp
ZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmFiY2ZmNDA1YjEyYjliZGZiZGRiYjZjNWFiNGMzNjY2MGUwZGIwNQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1w
bGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwyOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICB2aWRlbyB7CisgICAgICAgIHdp
ZHRoOiA0ODBweDsKKyAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICB9CisgICAgI2JhciB7Cisg
ICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAg
ICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIiNmb28iKS5tdXRlZCA9IHRydWU7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
IiNiYXIiKS5zY3JvbGxJbnRvVmlldygpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGxheWluZyIpOworICAgICAg
ICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICAgICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8
Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9
ImZvbyI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgor
ICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdp
dGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5n
LXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzExMGJiNzcxYWI3ZGE5ZjA5
ZmQ0NDJlOWY1OTIxNTg3MWIyMmY2MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBz
LWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxzdHlsZT4KKyAgICB2aWRlbyB7CisgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMjBweDsKKyAgICB9CisgICAgI2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQo
KSB7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmll
dygpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFu
ZGxlci5wb3N0TWVzc2FnZSgicGxheWluZyIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0K
KyAgICAgICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9aGFuZGxlTG9h
ZGVkKCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZvbyI+PHNvdXJjZSBzcmM9Imxh
cmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlkZW8g
aWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVv
PgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287776</attachid>
            <date>2016-09-02 10:36:43 -0700</date>
            <delta_ts>2016-09-02 11:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161503-20160902103429.patch</filename>
            <type>text/plain</type>
            <size>94820</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNjE4YWM0YTcwNTI5
ODdjNGNhNGE1YmU0MmU5NzczMjAyZWRlZi4uMDZhZDI0M2Q1ZTQyMzAxYmZjYTZjNTc4ODViOTg2
ZThlNzA4MmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE2LTA5LTAyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSwgd2hlbiBzZWxlY3RpbmcgYSBtZWRpYSBzZXNzaW9uIHRvIHNob3cgcGxheWJhY2sgY29udHJv
bHMgZm9yLCB3ZSBncmFiIHRoZSBmaXJzdCBtZWRpYSBzZXNzaW9uIHRoYXQKKyAgICAgICAgcGFz
c2VzIG91ciBoZXVyaXN0aWMuIFVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBhcmUgdW5hYmxlIHRvIHRh
a2UgYWRkaXRpb25hbCBmYWN0b3JzIGludG8gYWNjb3VudCwgc3VjaCBhcyB3aGV0aGVyCisgICAg
ICAgIGFub3RoZXIgbWVkaWEgc2Vzc2lvbidzIGVsZW1lbnQgaXMgc2Nyb2xsZWQgaW4gdmlldywg
b3IgaWYgYW5vdGhlciBtZWRpYSBzZXNzaW9uIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aCBtb3Jl
CisgICAgICAgIHJlY2VudGx5LiBUbyBhZGRyZXNzIHRoaXMsIHdlIG1ha2UgdGhlIGZvbGxvd2lu
ZyBjaGFuZ2VzOgorCisgICAgICAgICAgICAxLiAgTWFrZSBlYWNoIGFjdGl2ZSBtZWRpYSBzZXNz
aW9uIHZlbmQgYSBNZWRpYVNlc3Npb25JbmZvLCB3aGljaCBhY3RzIGFzIGEgdm91Y2hlciBmb3Ig
dGhhdCBtZWRpYSBzZXNzaW9uCisgICAgICAgICAgICAgICAgd2hlbiBkZXRlcm1pbmluZyB3aGlj
aCBtZWRpYSBzZXNzaW9uIHNob3VsZCBzaG93IGNvbnRyb2xzLiBXaGVuIHVwZGF0aW5nIHRoZSBw
bGF5YmFjayBjb250cm9scyBtYW5hZ2VyLAorICAgICAgICAgICAgICAgIHdlIGNvbGxlY3QgTWVk
aWFTZXNzaW9uSW5mb3MgZnJvbSBhbGwgYWN0aXZlIHNlc3Npb25zLgorCisgICAgICAgICAgICAy
LiAgV2UgdGhlbiBzZWxlY3Qgb25seSB0aGUgTWVkaWFTZXNzaW9uSW5mb3MgY2FwYWJsZSBvZiBz
aG93aW5nIG1lZGlhIGNvbnRyb2xzIGFuZCBzb3J0IHRoZSBsaXN0IGJ5IGEKKyAgICAgICAgICAg
ICAgICBzcGVjaWFsIGhldXJpc3RpYyB0aGF0IHRha2VzIHZpc2liaWxpdHkgYW5kIHRpbWUgb2Yg
bGFzdCB1c2VyIGludGVyYWN0aW9uIGludG8gYWNjb3VudC4gVGhlIGZpcnN0CisgICAgICAgICAg
ICAgICAgZWxlbWVudCBvbiB0aGlzIGxpc3QgaXMgdGhlIHN0cm9uZ2VzdCBjYW5kaWRhdGUgZm9y
IG1haW4gY29udGVudC4KKworICAgICAgICAgICAgMy4gIElmIHRoaXMgc3Ryb25nZXN0IGNhbmRp
ZGF0ZSBpcyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgb3IgaXQgaXMgcGxheWluZyB3aXRoIGF1
ZGlvLCB3ZSByZXR1cm4gdGhpcworICAgICAgICAgICAgICAgIGFzIHRoZSBjaG9zZW4gY2FuZGlk
YXRlLiBPdGhlcndpc2UsIHdlIHJldHVybiB0aGlzIHNlc3Npb24gb25seSBpZiBubyBvdGhlciBu
b24tY2FuZGlkYXRlIHZpZGVvIGNvdWxkIGJlCisgICAgICAgICAgICAgICAgY29uZnVzZWQgYXMg
dGhlIG1haW4gY29udGVudCAoaS5lLiB0aGUgbm9uLWNhbmRpZGF0ZSB2aWRlbyBpcyBub3Qgb25s
eSB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgYnV0IGFsc28KKyAgICAgICAgICAgICAgICBsYXJn
ZSBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQpLgorCisgICAgICAgIFVzaW5n
IHRoaXMgbmV3IG1ldGhvZCBvZiBkZXRlcm1pbmluZyB0aGUgdmlkZW8gdG8gc2hvdyBjb250cm9s
cyBmb3IsIHdlIHJldGFpbiBwcmV2aW91cyBiZWhhdmlvciBmb3IgcGFnZXMgd2l0aAorICAgICAg
ICBhIHNpbmdsZSB2aWRlby4gT24gcGFnZXMgd2l0aCBtdWx0aXBsZSB2aWRlb3MsIHRoZSBhYm92
ZSBsb2dpYyBlbnN1cmVzIHRoYXQgaWYgdGhlIGN1cnJlbnQgY29udHJvbGxlZCB2aWRlbyBpcwor
ICAgICAgICBwYXVzZWQsIHNjcm9sbGVkIG91dCBvZiB2aWV3LCBhbmQgdGhlbiBhIG5ldyB2aWRl
byBpcyBzY3JvbGxlZCBpbnRvIHZpZXcsIHdlIHdpbGwgZWl0aGVyIGhpZGUgbWVkaWEgY29udHJv
bHMgdG8KKyAgICAgICAgYXZvaWQgY29uZnVzaW9uIGlmIHRoYXQgdmlkZW8gY291bGQgYmUgY29u
ZnVzZWQgZm9yIG1haW4gY29udGVudCAodXNpbmcgdGhlIG1lY2hhbmlzbSBpbiBzdGVwIDMpLCBv
ciB3ZQorICAgICAgICBob29rIHVwIHRoZSBtZWRpYSBjb250cm9scyB0byB0aGUgbmV3IHZpZGVv
IGlmIGl0IHNhdGlzZmllcyBtYWluIGNvbnRlbnQgKHVzaW5nIHRoZSBtZWNoYW5pc20gaW4gc3Rl
cCAyKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyA1IG5ldyBUZXN0V2ViS2l0QVBJ
IHVuaXQgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVy
T3RoZXJDYW5kaWRhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2Vzc2lvbk1h
eUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFT
ZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdp
c3RyYXRpb25Gb3JBdXRvcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojppc1Zpc2libGVJblZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojppc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnJlc2V0UGxheWJhY2tTZXNzaW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYWluQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudExhcmdlUmVsYXRpdmVUb01haW5GcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbyk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkluZm86Ok1lZGlhU2Vzc2lvbklu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhbkNvbnRyb2xD
b250cm9sc01hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uSW5mb3MpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorCiAyMDE2LTA4LTMwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIHR5cG8gaW50cm9kdWNlZCBp
biByMjA1MTg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNlZTE1OTNhNDg0Y2M3ZjBkZjMxNTY5NTg1NGViZDQ0
NWU5ZjUzMWIuLjdkMGIyNjE4ODY3NGU4ZmI4MGIzNmY2OTMyYmY5YmE3ZjcxNTY0ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNi0wOS0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciB0aGUgaGV1cmlzdGljIGZvciBz
aG93aW5nIG1lZGlhIGNvbnRyb2xzIHRvIHRha2UgYWxsIG1lZGlhIHNlc3Npb25zIGludG8gYWNj
b3VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODAzMzc4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGFuIFNQSSB0ZXN0aW5nIGhvb2sg
Zm9yIHNlbmRpbmcgdGhlIGVsZW1lbnQgSUQgb2YgdGhlIGN1cnJlbnRseSBjb250cm9sbGVkIHZp
ZGVvIGVsZW1lbnQgZnJvbSB0aGUgd2ViCisgICAgICAgIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nl
c3MuIFNlZSBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBpbiBUb29scy9UZXN0V2ViS2l0QVBJLyBm
b3IgdXNhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRF0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl0p
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0
Q29udHJvbGxlZEVsZW1lbnRJRCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVDb250cm9sbGVk
RWxlbWVudElEUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KToKKwog
MjAxNi0wOC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0b3AgdXNpbmcgbV9jbGllbnQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBJUEM6OkNvbm5l
Y3Rpb24gaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDExOTkyZGY1NTUwNjZjMjg2NjQwYTEzZmQxY2E2NGE4OGM5NWZjNTYuLjRlNzNjMDdhZmZm
Y2IxZjEyMzcyZmMyNmZmNGFjZDI1YjAxYzhlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMzQ2LDYgKzM0Niw1MSBAQCBzdGF0aWMgdWludDY0X3QgbmV4
dEVsZW1lbnRJRCgpCiB9CiAjZW5kaWYKIAorc3RhdGljIGJvb2wgcHJlZmVyTWVkaWFDb250cm9s
c0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVyT3RoZXJDYW5kaWRhdGVTZXNzaW9uKGNvbnN0IE1lZGlh
U2Vzc2lvbkluZm8mIHNlc3Npb24sIGNvbnN0IE1lZGlhU2Vzc2lvbkluZm8mIG90aGVyU2Vzc2lv
bikKK3sKKyAgICAvLyBQcmlvcml0aXplIHZpc2libGUgbWVkaWEgb3ZlciBvZmZzY3JlZW4gbWVk
aWEuCisgICAgaWYgKHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydCAhPSBvdGhlclNlc3Npb24u
aXNWaXNpYmxlSW5WaWV3cG9ydCkKKyAgICAgICAgcmV0dXJuIHNlc3Npb24uaXNWaXNpYmxlSW5W
aWV3cG9ydDsKKworICAgIC8vIEFzIGEgdGllYnJlYWtlciwgcHJpb3JpdGl6ZSBlbGVtZW50cyB0
aGF0IHRoZSB1c2VyIHJlY2VudGx5IGludGVyYWN0ZWQgd2l0aC4KKyAgICByZXR1cm4gc2Vzc2lv
bi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3RoZXJTZXNzaW9uLnRpbWVPZkxhc3RVc2Vy
SW50ZXJhY3Rpb247Cit9CisKK3N0YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRG
b3JNYWluQ29udGVudChjb25zdCBNZWRpYVNlc3Npb25JbmZvJiBzZXNzaW9uKQoreworICAgIGlm
ICghc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIXNlc3Npb24uaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBFdmVuIGlmIHRoaXMgdmlkZW8gaXMgbm90IGEgY2FuZGlk
YXRlLCBpZiBpdCBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyIGFuZCBsYXJnZSBlbm91Z2gKKyAgICAv
LyB0byBiZSBtYWluIGNvbnRlbnQsIGl0IHBvc2VzIGEgcmlzayBmb3IgYmVpbmcgY29uZnVzZWQg
d2l0aCBtYWluIGNvbnRlbnQuCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiogYmVzdE1lZGlhU2Vzc2lvbkZvclNob3dpbmdQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigpCit7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbkluZm8+IGNhbmRpZGF0
ZVNlc3Npb25JbmZvczsKKyAgICBib29sIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1
c2VkRm9yTWFpbkNvbnRlbnQgPSBmYWxzZTsKKyAgICBmb3IgKE1lZGlhU2Vzc2lvbkluZm8gaW5m
byA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRT
ZXNzaW9uSW5mb3MoKSkgeworICAgICAgICBpZiAoaW5mby5jYW5TaG93Q29udHJvbHNNYW5hZ2Vy
KQorICAgICAgICAgICAgY2FuZGlkYXRlU2Vzc2lvbkluZm9zLmFwcGVuZChpbmZvKTsKKyAgICAg
ICAgZWxzZSBpZiAobWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50KGluZm8p
KQorICAgICAgICAgICAgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWlu
Q29udGVudCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFjYW5kaWRhdGVTZXNzaW9uSW5mb3Mu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6c29ydChjYW5kaWRh
dGVTZXNzaW9uSW5mb3MuYmVnaW4oKSwgY2FuZGlkYXRlU2Vzc2lvbkluZm9zLmVuZCgpLCBwcmVm
ZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Np
b24pOworICAgIE1lZGlhU2Vzc2lvbkluZm8gc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZSA9IGNh
bmRpZGF0ZVNlc3Npb25JbmZvcy5maXJzdCgpOworICAgIGlmICghc3Ryb25nZXN0U2Vzc2lvbkNh
bmRpZGF0ZS5pc1Zpc2libGVJblZpZXdwb3J0ICYmICFzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRl
LmlzUGxheWluZ1dpdGhBdWRpbyAmJiBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNl
ZEZvck1haW5Db250ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBz
dHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb247Cit9CisKIEhUTUxNZWRpYUVsZW1lbnQ6
OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKQEAgLTgzNyw4
ICs4ODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiB7
CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICBy
ZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9u
LT5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1
dG9wbGF5Tm90UGVybWl0dGVkKQotICAgICAgICAgICAgfHwgbV9tZWRpYVNlc3Npb24tPmhhc0Jl
aGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6T3ZlcnJpZGVVc2VyR2VzdHVy
ZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpKQorICAgICAgICBpZiAod2FudHNWaXNpYmxlSW5W
aWV3cG9ydENhbGxiYWNrUmVnaXN0cmF0aW9uRm9yQXV0b3BsYXkoKSkKICAgICAgICAgICAgIHJl
bmRlcmVyLT5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soKTsKICAgICB9CiAg
ICAgdXBkYXRlU2hvdWxkQXV0b3BsYXkoKTsKQEAgLTQwMjEsNiArNDA2NSwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKCkKICAgICAgICAgbV9yZWNlaXZlZExh
eW91dFNpemVDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgc2NoZWR1bGVVcGRhdGVQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigpOwogICAgIH0KKworICAgIC8vIElmIHRoZSB2aWRlbyBpcyBhIGNhbmRp
ZGF0ZSBmb3IgbWFpbiBjb250ZW50LCB3ZSBzaG91bGQgcmVnaXN0ZXIgaXQgZm9yIHZpZXdwb3J0
IHZpc2liaWxpdHkgY2FsbGJhY2tzCisgICAgLy8gaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBy
ZWdpc3RlcmVkLgorICAgIGlmIChyZW5kZXJlcigpICYmIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29u
dGVudCgpICYmICF3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdpc3RyYXRpb25Gb3JB
dXRvcGxheSgpKQorICAgICAgICByZW5kZXJlcigpLT5yZWdpc3RlckZvclZpc2libGVJblZpZXdw
b3J0Q2FsbGJhY2soKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aXNpYmlsaXR5RGlk
Q2hhbmdlKCkKQEAgLTQ0NDcsNiArNDQ5NiwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZEJlaGF2aW9yUmVzdHJpY3Rpb25zT25FbmRJZk5lY2Vzc2FyeSgpCiAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBs
YXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyIHwgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVx
dWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKTsKIH0KIAorYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojp3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdpc3RyYXRpb25G
b3JBdXRvcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhh
dmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5Tm90
UGVybWl0dGVkKQorICAgICAgICB8fCBtX21lZGlhU2Vzc2lvbi0+aGFzQmVoYXZpb3JSZXN0cmlj
dGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWlyZW1lbnRG
b3JNYWluQ29udGVudCk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJW
b2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoJXApIiwgdGhpcyk7CkBAIC03MTQwLDYg
KzcxOTUsNyBAQCBzdGF0aWMgYm9vbCBtZWRpYUVsZW1lbnRJc0FsbG93ZWRUb0F1dG9wbGF5KGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
VmlzaWJsZUluVmlld3BvcnRDaGFuZ2VkKCkKIHsKICAgICB1cGRhdGVTaG91bGRBdXRvcGxheSgp
OworICAgIHNjaGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSgpCkBAIC03MTY4LDIwICs3
MjI0LDY5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkUGxheSgpCiAgICAg
ICAgIHBsYXkoKTsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0xhcmdlRW5vdWdoRm9y
TWFpbkNvbnRlbnQoKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZWxlbWVudE1h
aW5Db250ZW50QXJlYU1pbmltdW0gPSA0MDAgKiAzMDA7CisgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBtYXhpbXVtQXNwZWN0UmF0aW8gPSAxLjg7IC8vIFNsaWdodGx5IGxhcmdlciB0aGFuIDE2Ojku
CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtQXNwZWN0UmF0aW8gPSAuNTsgLy8gU2xp
Z2h0bHkgc21hbGxlciB0aGFuIDk6MTYuCisKKyAgICAvLyBFbGVtZW50cyB3aGljaCBoYXZlIG5v
dCB5ZXQgYmVlbiBsYWlkIG91dCwgb3Igd2hpY2ggYXJlIG5vdCB5ZXQgaW4gdGhlIERPTSwgY2Fu
bm90IGJlIG1haW4gY29udGVudC4KKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91
YmxlIHdpZHRoID0gcmVuZGVyZXItPmNsaWVudFdpZHRoKCk7CisgICAgZG91YmxlIGhlaWdodCA9
IHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKTsKKyAgICBkb3VibGUgYXJlYSA9IHdpZHRoICogaGVp
Z2h0OworICAgIGRvdWJsZSBhc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0OworCisgICAgaWYg
KGFyZWEgPCBlbGVtZW50TWFpbkNvbnRlbnRBcmVhTWluaW11bSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGFzcGVjdFJhdGlvID49IG1pbmltdW1Bc3BlY3RSYXRpbyAmJiBhc3Bl
Y3RSYXRpbyA8PSBtYXhpbXVtQXNwZWN0UmF0aW8pCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGlzTGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKCk7Cit9CisKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoKSBjb25zdAoreworICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVBlcmNlbnRhZ2VPZk1haW5GcmFtZUFyZWFGb3JNYWlu
Q29udGVudCA9IDAuOTsKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogZG9j
dW1lbnRGcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWRvY3VtZW50RnJhbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZG9jdW1lbnRGcmFtZS0+bWFpbkZy
YW1lKCkudmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBtYWluRnJh
bWVWaWV3ID0gKmRvY3VtZW50RnJhbWUtPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBhdXRvIG1h
eFZpc2libGVDbGllbnRXaWR0aCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRXaWR0aCgpLnRv
SW50KCksIG1haW5GcmFtZVZpZXcudmlzaWJsZVdpZHRoKCkpOworICAgIGF1dG8gbWF4VmlzaWJs
ZUNsaWVudEhlaWdodCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKS50b0ludCgp
LCBtYWluRnJhbWVWaWV3LnZpc2libGVIZWlnaHQoKSk7CisKKyAgICByZXR1cm4gbWF4VmlzaWJs
ZUNsaWVudFdpZHRoICogbWF4VmlzaWJsZUNsaWVudEhlaWdodCA+IG1pbmltdW1QZXJjZW50YWdl
T2ZNYWluRnJhbWVBcmVhRm9yTWFpbkNvbnRlbnQgKiBtYWluRnJhbWVWaWV3LnZpc2libGVXaWR0
aCgpICogbWFpbkZyYW1lVmlldy52aXNpYmxlSGVpZ2h0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgpCit7CisgICAgaWYgKG1fbWVkaWFT
ZXNzaW9uKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0
ZSgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCkKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vz
c2lvbiA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJl
bnRTZXNzaW9uTWF0Y2hpbmcoW10gKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KSB7Ci0gICAgICAgIHJldHVybiBzZXNzaW9uLmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKTsK
LSAgICB9KTsKLQotICAgIGlmICghaXM8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbikpCisg
ICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGJlc3RNZWRpYVNlc3Npb24gPSBiZXN0TWVk
aWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisgICAgaWYgKCFp
czxNZWRpYUVsZW1lbnRTZXNzaW9uPihiZXN0TWVkaWFTZXNzaW9uKSkKICAgICAgICAgcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogICAgIGVs
c2UKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcihkb3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKS0+ZWxlbWVudCgp
KTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcihkb3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPihiZXN0TWVkaWFTZXNzaW9uKS0+
ZWxlbWVudCgpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZVBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggOThmM2IwODg5ODZhOTk2ZjRlYTZiNzVhZWE3NGU5NjNkNWI2MjE5YS4uYTM3NGM5
NTdkZmJjODIzZDc2OGZkZGUzYWZiOTE0M2ZhODU5ZTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ2NSw5ICs0NjUsMTMgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKCk7CiAgICAgdm9pZCB1
cGRhdGVTaG91bGRQbGF5KCk7CisgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQo
KSBjb25zdDsKKyAgICBib29sIGlzTGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKCkgY29uc3Q7CiAK
ICAgICBSZW5kZXJNZWRpYSogcmVuZGVyZXIoKSBjb25zdDsKIAorICAgIHZvaWQgcmVzZXRQbGF5
YmFja1Nlc3Npb25TdGF0ZSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAg
ICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtNzk1LDYgKzc5OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRDb250cm9sbGVySlNQcm9wZXJ0eShjb25zdCBjaGFyKiwgSlNDOjpK
U1ZhbHVlKTsKIAogICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbnNPbkVuZElmTmVjZXNz
YXJ5KCk7CisgICAgYm9vbCB3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdpc3RyYXRp
b25Gb3JBdXRvcGxheSgpIGNvbnN0OwogCiAgICAgVGltZXIgbV9wZW5kaW5nQWN0aW9uVGltZXI7
CiAgICAgVGltZXIgbV9wcm9ncmVzc0V2ZW50VGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBlOWI5N2I5YTEyYWFkNjMxMjhiYWI5ZjU0MTVh
NGNkODQ2YjYwOWZhLi5iYmI5N2E4YjA5ZjA5OWEzMjdiMTk3MzZkN2Y4MjViMzM1OTQyNzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgpA
QCAtNTksNyArNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgZG91Ymxl
IGVsZW1lbnRNYWluQ29udGVudENoZWNrSW50ZXJ2YWwgPSAuMjUwOwogCiBzdGF0aWMgYm9vbCBp
c01haW5Db250ZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKLXN0YXRpYyBib29sIGlzRWxl
bWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwog
CiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIFN0cmluZyByZXN0cmljdGlvbk5hbWUoTWVkaWFF
bGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCkBAIC0xMzcs
NiArMTM3LDkgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0
aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW8KIAogdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJl
c3RyaWN0aW9uKQogeworICAgIGlmIChyZXN0cmljdGlvbiAmIFJlcXVpcmVVc2VyR2VzdHVyZVRv
Q29udHJvbENvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCiAgICAgTE9HKE1lZGlh
LCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbiAtIHJlbW92
aW5nICVzIiwgcmVzdHJpY3Rpb25OYW1lKHJlc3RyaWN0aW9uKS51dGY4KCkuZGF0YSgpKTsKICAg
ICBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247CiB9CkBAIC0yMTIsNjYgKzIxNSw3OSBA
QCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1p
bmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAorTWVk
aWFTZXNzaW9uSW5mbyBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVNlc3Npb25JbmZvKCkgY29u
c3QKK3sKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG1fZWxlbWVudC5yZW5kZXJlcigp
OworICAgIHJldHVybiB7CisgICAgICAgIHRoaXMsCisgICAgICAgIGNhblNob3dDb250cm9sc01h
bmFnZXIoKSwKKyAgICAgICAgcmVuZGVyZXIgJiYgcmVuZGVyZXItPnZpc2libGVJblZpZXdwb3J0
U3RhdGUoKSA9PSBSZW5kZXJFbGVtZW50OjpWaXNpYmxlSW5WaWV3cG9ydCwKKyAgICAgICAgbV9l
bGVtZW50LmlzUGxheWluZygpICYmIG1fZWxlbWVudC5oYXNBdWRpbygpICYmICFtX2VsZW1lbnQu
bXV0ZWQoKSwKKyAgICAgICAgbV9lbGVtZW50LmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgp
LAorICAgICAgICBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lCisgICAgfTsKK30KKwor
Ym9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3QK
IHsKICAgICBpZiAobV9lbGVtZW50LmlzRnVsbHNjcmVlbigpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1
cm5pbmcgVFJVRTogSXMgZnVsbHNjcmVlbiIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElz
IGZ1bGxzY3JlZW4iKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFt
X2VsZW1lbnQuaGFzQXVkaW8oKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyBh
dWRpbyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaWYgKG1fZWxlbWVu
dC5kb2N1bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgewotICAgICAgICBM
T0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkiKTsKKyAg
ICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFu
YWdlciAtIHJldHVybmluZyBGQUxTRTogYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXBsYXliYWNrUGVybWl0
dGVkKG1fZWxlbWVudCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogUGxheWJhY2sg
bm90IHBlcm1pdHRlZCIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBQbGF5YmFjayBub3Qg
cGVybWl0dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIWhh
c0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNN
YW5hZ2VyKSB8fCBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRp
YSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRy
b2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVp
cmVkIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVpcmVk
Iik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChoYXNCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVQbGF5YmFja1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcikgJiYgIW1f
ZWxlbWVudC5pc1BsYXlpbmcoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBOZWVk
cyB0byBiZSBwbGF5aW5nIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5lZWRzIHRvIGJl
IHBsYXlpbmciKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2Vs
ZW1lbnQubXV0ZWQoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBNdXRlZCIpOwor
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNN
YW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBNdXRlZCIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFtX2VsZW1lbnQuaGFzQXVkaW8oKSkgeworICAgICAgICBMT0co
TWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0
dXJuaW5nIEZBTFNFOiBObyBhdWRpbyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKG1fZWxlbWVudC5pc1ZpZGVvKCkpIHsKICAgICAgICAgaWYgKCFtX2VsZW1lbnQu
cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gcmVuZGVy
ZXIiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNo
b3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHJlbmRlcmVyIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9lbGVtZW50
LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5p
bmcgVFJVRTogSXMgbWVkaWEgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJV
RTogSXMgbWVkaWEgZG9jdW1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFtX2VsZW1lbnQuaGFzVmlkZW8oKSkgewotICAgICAgICAgICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdl
ciAtIHJldHVybmluZyBGQUxTRTogTm8gdmlkZW8iKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcg
RkFMU0U6IE5vIHZpZGVvIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoaXNFbGVtZW50TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChtX2VsZW1l
bnQpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5D
b250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1haW4gY29udGVudCIp
OworICAgICAgICBpZiAobV9lbGVtZW50LmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgpKSB7
CisgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29u
dHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1haW4gY29udGVudCIpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5n
IEZBTFNFOiBObyB1c2VyIGdlc3R1cmUiKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyB1c2Vy
IGdlc3R1cmUiKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTUwMiw2ICs1MTgsMTIgQEAg
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICAKIH0KIAordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKK3sKKyAgICBtX21vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lID0gMDsKKyAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2Vy
R2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlciB8IFJlcXVpcmVQbGF5YmFja1RvQ29udHJv
bENvbnRyb2xzTWFuYWdlcik7Cit9CisKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dz
UGljdHVyZUluUGljdHVyZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAog
ewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygp
OwpAQCAtNTU3LDcgKzU3OSw3IEBAIHN0YXRpYyBib29sIGlzTWFpbkNvbnRlbnQoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIWlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQo
ZWxlbWVudCkpCisgICAgaWYgKCFlbGVtZW50LmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBFbGVtZW50cyB3aGljaCBhcmUgaGlk
ZGVuIGJ5IHN0eWxlLCBvciBoYXZlIGJlZW4gc2Nyb2xsZWQgb3V0IG9mIHZpZXcsIGNhbm5vdCBi
ZSBtYWluIGNvbnRlbnQuCkBAIC01OTYsNTIgKzYxOCw2IEBAIHN0YXRpYyBib29sIGlzTWFpbkNv
bnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIGJvb2wgaXNFbGVtZW50TGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBt
aW5pbXVtUGVyY2VudGFnZU9mTWFpbkZyYW1lQXJlYUZvck1haW5Db250ZW50ID0gMC45OwotICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIGRvY3VtZW50RnJhbWUgPSBlbGVt
ZW50LmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWRvY3VtZW50RnJhbWUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZG9jdW1lbnRGcmFtZS0+bWFpbkZyYW1lKCkudmll
dygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBtYWluRnJhbWVWaWV3ID0g
KmRvY3VtZW50RnJhbWUtPm1haW5GcmFtZSgpLnZpZXcoKTsKLSAgICBhdXRvIG1heFZpc2libGVD
bGllbnRXaWR0aCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRXaWR0aCgpLnRvSW50KCksIG1h
aW5GcmFtZVZpZXcudmlzaWJsZVdpZHRoKCkpOwotICAgIGF1dG8gbWF4VmlzaWJsZUNsaWVudEhl
aWdodCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKS50b0ludCgpLCBtYWluRnJh
bWVWaWV3LnZpc2libGVIZWlnaHQoKSk7Ci0KLSAgICByZXR1cm4gbWF4VmlzaWJsZUNsaWVudFdp
ZHRoICogbWF4VmlzaWJsZUNsaWVudEhlaWdodCA+IG1pbmltdW1QZXJjZW50YWdlT2ZNYWluRnJh
bWVBcmVhRm9yTWFpbkNvbnRlbnQgKiBtYWluRnJhbWVWaWV3LnZpc2libGVXaWR0aCgpICogbWFp
bkZyYW1lVmlldy52aXNpYmxlSGVpZ2h0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGlzRWxlbWVudExh
cmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkK
LXsKLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIGVsZW1lbnRNYWluQ29udGVudEFyZWFNaW5pbXVt
ID0gNDAwICogMzAwOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bUFzcGVjdFJhdGlv
ID0gMS44OyAvLyBTbGlnaHRseSBsYXJnZXIgdGhhbiAxNjo5LgotICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgbWluaW11bUFzcGVjdFJhdGlvID0gLjU7IC8vIFNsaWdodGx5IHNtYWxsZXIgdGhhbiA5
OjE2LgotCi0gICAgLy8gRWxlbWVudHMgd2hpY2ggaGF2ZSBub3QgeWV0IGJlZW4gbGFpZCBvdXQs
IG9yIHdoaWNoIGFyZSBub3QgeWV0IGluIHRoZSBET00sIGNhbm5vdCBiZSBtYWluIGNvbnRlbnQu
Ci0gICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG91YmxlIHdpZHRoID0gcmVuZGVy
ZXItPmNsaWVudFdpZHRoKCk7Ci0gICAgZG91YmxlIGhlaWdodCA9IHJlbmRlcmVyLT5jbGllbnRI
ZWlnaHQoKTsKLSAgICBkb3VibGUgYXJlYSA9IHdpZHRoICogaGVpZ2h0OwotICAgIGRvdWJsZSBh
c3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0OwotCi0gICAgaWYgKGFyZWEgPCBlbGVtZW50TWFp
bkNvbnRlbnRBcmVhTWluaW11bSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGFz
cGVjdFJhdGlvID49IG1pbmltdW1Bc3BlY3RSYXRpbyAmJiBhc3BlY3RSYXRpbyA8PSBtYXhpbXVt
QXNwZWN0UmF0aW8pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGlzRWxlbWVu
dExhcmdlUmVsYXRpdmVUb01haW5GcmFtZShlbGVtZW50KTsKLX0KLQogdm9pZCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjptYWluQ29udGVudENoZWNrVGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFoYXNC
ZWhhdmlvclJlc3RyaWN0aW9uKE92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5D
b250ZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXgg
ZGE4ZDE1ODRjYTgwZjdjNWQxMTgyMjg2YmRlZjUwMjI2ODFlOWQ5YS4uMTJhY2ViMDdlY2M1MmE0
YzZkOWU4YzFlMTBjYzJhZjkwMDZlNjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFnZUFs
bG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29s
IHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OwogCi0gICAgYm9vbCBjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTWVkaWFTZXNzaW9uSW5mbyBtZWRpYVNlc3Npb25JbmZvKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQg
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKQEAgLTc4
LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpOwogCisgICAgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRl
KCkgb3ZlcnJpZGU7CisKICAgICAvLyBSZXN0cmljdGlvbnMgdG8gbW9kaWZ5IGRlZmF1bHQgYmVo
YXZpb3JzLgogICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlvbkZsYWdzIDogdW5zaWduZWQgewog
ICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC0xMjcsNiArMTI5LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIHVwZGF0ZUlzTWFpbkNvbnRlbnQoKSBjb25zdDsKICAgICB2b2lkIG1haW5Db250
ZW50Q2hlY2tUaW1lckZpcmVkKCk7CiAKKyAgICBib29sIGNhblNob3dDb250cm9sc01hbmFnZXIo
KSBjb25zdDsKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1fZWxlbWVudDsKICAgICBCZWhhdmlv
clJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKIApAQCAtMTQwLDYgKzE0NCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzIHsg
ZmFsc2UgfTsKICNlbmRpZgogCisgICAgZG91YmxlIG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUgeyAwIH07CisKICAgICBtdXRhYmxlIGJvb2wgbV9pc01haW5Db250ZW50IHsgZmFsc2Ug
fTsKICAgICBUaW1lciBtX21haW5Db250ZW50Q2hlY2tUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5k
ZXggZGU1ZDg3ZjZkYzQ2NTQ0MmJkOGUwN2I5NTA1ZjAzNWYxMjkyMTAxYy4uMzA5ZTI5MzY3YTJm
YzBiOGZhYWQ5MzM5MTM0Y2E1NjQwMDNlZTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMjk5LDYgKzI5
OSwxMSBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzaG91bGRPdmVycmlkZUJhY2tncm91
bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRP
dmVycmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKTsKIH0KIAorTWVkaWFTZXNzaW9u
SW5mbyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHsgdGhpcywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAgfTsKK30KKwog
dm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFy
Z2V0Q2hhbmdlZChib29sIGlzV2lyZWxlc3MpCiB7CiAgICAgaWYgKGlzV2lyZWxlc3MgPT0gbV9p
c1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBiZmNlMmRmYTQ2
Mzk3NzA2MzMzNzI5OWExZWRmYmEzZGMwMjdhNjZmLi41MDRlZmY3ZDg0NGM0MmQ3MDlmNzZiYzA0
ZjUyZjBlNjhmYmY2ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ7CitzdHJ1Y3QgTWVkaWFTZXNzaW9uSW5mbzsK
IAogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb24KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb25JbmZvIG1lZGlhU2Vzc2lvbkluZm8oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxl
c3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQbGF5aW5nVG9XaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0OyB9CiAgICAgdm9pZCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRDaGFuZ2VkKGJvb2wpOwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENhblByb2R1Y2VBdWRpbyhib29sKTsKIAogICAgIHZvaWQgc2NoZWR1bGVDbGllbnREYXRhQnVm
ZmVyaW5nQ2hlY2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0
ZSgpIHsgfTsKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBj
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtMTg3LDYgKzE4OSwyNiBAQCBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI7CiB9
OwogCitzdHJ1Y3QgTWVkaWFTZXNzaW9uSW5mbyB7CisgICAgTWVkaWFTZXNzaW9uSW5mbyhjb25z
dCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vzc2lvbiwgYm9vbCBjYW5TaG93Q29udHJvbHNNYW5h
Z2VyLCBib29sIGlzVmlzaWJsZUluVmlld3BvcnQsIGJvb2wgaXNQbGF5aW5nV2l0aEF1ZGlvLCBi
b29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCwgZG91YmxlIHRpbWVPZkxhc3RVc2VySW50
ZXJhY3Rpb24pCisgICAgICAgIDogc2Vzc2lvbihzZXNzaW9uKQorICAgICAgICAsIGNhblNob3dD
b250cm9sc01hbmFnZXIoY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgLCBpc1Zpc2li
bGVJblZpZXdwb3J0KGlzVmlzaWJsZUluVmlld3BvcnQpCisgICAgICAgICwgaXNQbGF5aW5nV2l0
aEF1ZGlvKGlzUGxheWluZ1dpdGhBdWRpbykKKyAgICAgICAgLCBpc0xhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQoaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KQorICAgICAgICAsIHRpbWVPZkxh
c3RVc2VySW50ZXJhY3Rpb24odGltZU9mTGFzdFVzZXJJbnRlcmFjdGlvbikKKyAgICB7CisgICAg
fQorCisgICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIHNlc3Npb247CisKKyAgICBib29s
IGNhblNob3dDb250cm9sc01hbmFnZXI7CisgICAgYm9vbCBpc1Zpc2libGVJblZpZXdwb3J0Owor
ICAgIGJvb2wgaXNQbGF5aW5nV2l0aEF1ZGlvOworICAgIGJvb2wgaXNMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50OworICAgIGRvdWJsZSB0aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uOworfTsKKwog
Y2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50KTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCmluZGV4IGVlYmExNWEwNWQ4MDQxODM1ZjI3NmQxYmZhYzFjYmI3NGE2YTk3OTUu
LmQzYjI1MjdhNGM2OTMyNzZmNTI2Mjg5ZTNiYTFmYzA2MDIzMjZjMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcApAQCAtMjgwLDEzICsyODAsMTMgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb24q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBjb25zdAogICAg
IHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1QbGF0Zm9ybU1lZGlhU2Vzc2lvbiogUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6ZnVuY3Rp
b248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4gZmlsdGVyKQorVmVjdG9yPE1l
ZGlhU2Vzc2lvbkluZm8+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Np
b25JbmZvcygpCiB7Ci0gICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAg
ICAgICBpZiAoZmlsdGVyKCpzZXNzaW9uKSkKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9uOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uSW5mbz4g
bWF0Y2hpbmdTZXNzaW9uSW5mb3M7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9zZXNzaW9u
cykKKyAgICAgICAgbWF0Y2hpbmdTZXNzaW9uSW5mb3MuYXBwZW5kKHNlc3Npb24tPm1lZGlhU2Vz
c2lvbkluZm8oKSk7CisKKyAgICByZXR1cm4gbWF0Y2hpbmdTZXNzaW9uSW5mb3M7CiB9CiAgICAg
CiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhbkxvYWRNZWRpYShj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmgKaW5kZXggNWQxN2FiZDRlMjc1NjVmYWIwZDdhMGEzYTQ5NWM2NjkyOGEyZTk2OC4uZWIy
NDYzNjE3ZTIwNjM4MThmYzVmYmU5MTYwOWE1NzBkOTJlNzVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VycmVudFNlc3Np
b24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3Vy
cmVudFNlc3Npb24oKSBjb25zdDsKIAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50
U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiYpPik7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbkluZm8+IGN1cnJlbnRTZXNzaW9uSW5m
b3MoKTsKIAogICAgIHZvaWQgc2Vzc2lvbklzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dENoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICB2b2lkIHNlc3Npb25DYW5Qcm9k
dWNlQXVkaW9DaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGRiMDk3MDk0MjhiZTNhODhkMzg1YWI4MGY5MjUy
OTczMjQ3MjY5OTYuLjc1MzZiYzgwMzk4NzM0ZDQ4ZTg4OGE1NmEwYTc5OWFhMDdiNDIwNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC05MSw2ICs5MSw5IEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAgfQogICAgIG1faXNMaXN0ZW5pbmcgPSBmYWxz
ZTsKIAorICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJl
c2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKTsKKwogICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFF
bGVtZW50OwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYTIyOGExOWUxNWJmOTUwODJj
OWM5NDNlZTBlMGRlZjBjZjA2NmQ5ZC4uMmI4NDQ5ODYyYTRiNzRkODU2ODE4MTQxYTdiYzk3OGQw
YzRhOTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTQ1NTMsNiArNDU1MywxNyBAQCAtIChCT09MKV9oYXNBY3RpdmVWaWRlb0Zv
ckNvbnRyb2xzTWFuYWdlcgogewogICAgIHJldHVybiBfcGFnZSAmJiBfcGFnZS0+aGFzQWN0aXZl
VmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKTsKIH0KKworLSAodm9pZClfcmVxdWVzdENvbnRyb2xs
ZWRFbGVtZW50SUQKK3sKKyAgICBpZiAoX3BhZ2UpCisgICAgICAgIF9wYWdlLT5yZXF1ZXN0Q29u
dHJvbGxlZEVsZW1lbnRJRCgpOworfQorCistICh2b2lkKV9oYW5kbGVDb250cm9sbGVkRWxlbWVu
dElEUmVzcG9uc2U6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIC8vIE92ZXJyaWRkZW4g
Ynkgc3ViY2xhc3Nlcy4KK30KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIC8vIEV4ZWN1dGUg
dGhlIHN1cHBsaWVkIGJsb2NrIGFmdGVyIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGZyb20gdGhlIFdl
YlByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQ3YTUzMzc5N2QwMzE3NjAxNzgxYjJmZTUxOTNjMjBl
ZDA3ZmQ2NDEuLjlmMTEzMjU1ZDkxNDAwZjE2YjE4NTlhNDRmNzJkMDkwOTY2MjI1ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCkBAIC0yNzEsNiArMjcxLDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
SW1tZWRpYXRlQWN0aW9uVHlwZSkgewogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01h
bmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfcmVx
dWVzdENvbnRyb2xsZWRFbGVtZW50SUQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSkpOworLSAodm9pZClfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogI2Vu
ZGlmCiAKIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jayBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAppbmRleCBkZmY4MjZh
NjMzNmM5YWI0YWFjZDUzMjgxNWVhNjcwMTU3ZTVkYWJhLi5mZThjYmIxZTY2OTYzNzlmZjg2NmMw
MjU0ODc0MTY3N2JjNmUwOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0x
MzksNiArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgUGxh
dGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFj
ZSgpOworICAgIHZvaWQgcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKTsKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwpAQCAtMTY5
LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwogICAgIHZvaWQgc2V0RHVyYXRpb24o
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pOwogICAgIHZvaWQgc2V0UmF0ZSh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSk7CisgICAgdm9p
ZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QsIFN0cmluZykgY29u
c3Q7CiAKICAgICAvLyBNZXNzYWdlcyB0byBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCiAgICAg
dm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1NDAzYTRiNGM2MDE1OTcyODMwODNlYmZjMzAw
NjJkOTIyMTU0ZmRkLi44MjViOWViNGQwOTQ0YWZlMjMzM2FmNWU3OTRkZjhjNmQ3MzU1ZjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM1
LDUgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IHsK
ICAgICBTZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSBy
YXRlKQogICAgIFNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29u
dGV4dElkKQogICAgIENsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQorCisgICAgSGFuZGxl
Q29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgU3RyaW5nIGlk
KQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCA4YzFmYTBj
MzBjOWYxYjUxNGEwZjU4NDZiNTAyYTAwYjc3MjA4NDMyLi44MDgxYzYzZjViMGNjMzU2MmFiODIw
NjA5MDMyNDVmOGViNjRhYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAg
LTM0Myw2ICszNDMsMTIgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywKICAgICBpbnRlcmZhY2Ut
PnNldFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKIH0KIAordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBj
b250ZXh0SWQsIFN0cmluZyBpZGVudGlmaWVyKSBjb25zdAoreworICAgIGlmIChjb250ZXh0SWQg
PT0gbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIG1fcGFnZS0+aGFuZGxlQ29u
dHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGlkZW50aWZpZXIpOworfQorCiAjcHJhZ21hIG1hcmsg
TWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogCiB2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCkBAIC00MDUsNiAr
NDExLDEyIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQorewor
ICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxl
bWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCiBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKQogewogICAg
IGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCAzNTgxYTIxMDYwZWFhZTM5Nzg2MDNmMjBiNTYwNDVjODRhM2E1MjQw
Li4xYjI0ZGIyNzVlOGNlMGIyMGI2Y2VlNGYzMDViNWJmNTljODFlYTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI0Nyw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2Nv
cnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21t
ZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29u
c3QgU3RyaW5nJikgPSAwOwogCiAgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXllckluTGF5
ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVyICopIGNvbnN0ID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMmVmZjIyNzJjNzg3NmFi
ZDZmMzExNTRjM2FmYTk3MGVmNGNhOWNhLi5lYjczYTNkZWY2YThiZmI4YWRmODU4MTc4MDE4NmFm
ZmNkZjQ1NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNjI5OCw2ICs2Mjk4LDE3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRlb0Zv
ckNvbnRyb2xzTWFuYWdlcigpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCkgY29uc3QKK3sKKyAgICBpZiAobV9wbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPnJlcXVl
c3RDb250cm9sbGVkRWxlbWVudElEKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVD
b250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25z
dAoreworICAgIG1fcGFnZUNsaWVudC5oYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2Uo
aWRlbnRpZmllcik7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5o
YW5jZWRGdWxsc2NyZWVuKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzg2Mjc2
NjQ5ODM3ZmFjYmQyN2VmMDU5Nzg5NGQyZmQ1NjNkNDQ1Mi4uN2RkNjdmOGE0NGUxMjI2YzM0NzIz
NDk1ODhkZDI3YzljOGM5NmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTAzMSw2ICsxMDMxLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB2b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CiAgICAgYm9vbCBoYXNBY3Rp
dmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdENvbnRy
b2xsZWRFbGVtZW50SUQoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50
SURSZXNwb25zZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIGlzUGxheWluZ1ZpZGVv
SW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZDIxY2E1MmE1YWZjN2ZhODlj
N2JkZjlmMzNiODlkNjA3NDRhZDEyMi4uNTI1OWZiNWI3MjVjYTQ3NjkyZWFkN2FhNDg1OTAxMjEz
YzdhYjZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsTG9hZEZv
ck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvck1haW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdl
YkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBBUEk6Ok9i
amVjdCopIG92ZXJyaWRlOwogICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRy
b2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRf
dCwgUmVmUHRyPEFQSTo6T2JqZWN0Pikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA1M2I5YmM3OTU1MzA3MmY0N2E2MjBm
NTZkNjhiMWU4MDQyZGYwMWI4Li5hYmY2NGY5NmU4NTcxZjYwNjVjNDZmZjhmMDdiZWZjOTQxNDdi
ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
bW0KQEAgLTc1Miw2ICs3NTIsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlTmF2aWdh
dGlvbkdlc3R1cmVTbmFwc2hvdCgpCiAgICAgICAgIGdlc3R1cmVDb250cm9sbGVyLT5yZW1vdmVT
d2lwZVNuYXBzaG90KCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXNwb25zZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgW21f
d2ViVmlldyBfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOm5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcoaWRlbnRpZmllcildOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRD
aGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5oCmluZGV4IDAxZmZlZDIxOWUxZWE3MzdhMjBmZDk2ZTNjMDMwMWE4MmZkMDYw
MTAuLjgxMjNhNzI4MzQ3MWM3MjI1MjYxODE1NDRlZGUzMmNjMDU2Y2EzMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5oCkBAIC0xMzgsNiArMTM4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5k
U2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKTsKICAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFP
cHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7CiAgICAgdm9pZCBzZWxl
Y3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7
CisgICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250
ZXh0SWQpOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCosIHVpbnQ2NF90PiBtX21lZGlhRWxlbWVudHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggYjU2YzU5ZTMxNDM0YTY3OWQ1NGQ4YTM2
MDM3OWMzYTdmZjNmZDU1Ni4uYjcxNDA0ZWNjMmE5YTViNDg3YTBhYjc5YjY1NTczZDg2MjRhOTUz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzUsNSAr
MzUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIHsKICAgICBFbmRT
Y2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgU2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1
aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQogICAgIFNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQorICAgIEhhbmRsZUNv
bnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IDk2NjFmZDYwODVjN2JjZDg1MGY3ZTY2MDJmNzZm
OTM4MTZjMTI3MWIuLmY0NjdjMjI1OWNiMGZjZTE1OGE1MDA3ZTk2MDE0NTBhYzIzZDI2MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTQxNyw2ICs0MTcsMTMgQEAgdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29u
dGV4dElkLCB1aW4KICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihpbmRleCk7CiB9CiAKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aGFu
ZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QodWludDY0X3QgY29udGV4dElkKQoreworICAg
IEhUTUxNZWRpYUVsZW1lbnQgKmVsZW1lbnQgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpLm1lZGlh
RWxlbWVudCgpOworICAgIGlmIChlbGVtZW50KQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6SGFuZGxlQ29udHJvbGxlZEVsZW1l
bnRJRFJlc3BvbnNlKGNvbnRleHRJZCwgZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhYmExNGFhYWY0MTg3
ZTgwNGIwYTgzODAxMjg5ZDhjMGU0YzM1NTQ1Li45MWJjZTgzMzk3ZmIwMDk4NjExMjVjYjdhODFh
OTE0MTY5ZTcyOGE2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTYtMDktMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGhldXJpc3RpYyBmb3Ig
c2hvd2luZyBtZWRpYSBjb250cm9scyB0byB0YWtlIGFsbCBtZWRpYSBzZXNzaW9ucyBpbnRvIGFj
Y291bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTUwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgwMzM3ODM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgdW5pdCB0ZXN0cyB2ZXJp
ZnlpbmcgdGhlIGJlaGF2aW9yIG9mIG1lZGlhIHBsYXliYWNrIGNvbnRyb2xzIHdoZW4gc2Nyb2xs
aW5nIGFub3RoZXIgdmlkZW8gaW50byB2aWV3LgorICAgICAgICBQbGVhc2Ugc2VlIHRoZSBXZWJD
b3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoaXMgY2hhbmdlLiBBbHNvIHJl
ZmFjdG9ycyBleGlzdGluZworICAgICAgICBWaWRlb0NvbnRyb2xzTWFuYWdlciB0ZXN0cyBieSBm
b2xkaW5nIGR1cGxpY2F0ZWQgc2V0dXAgYW5kIHRlc3RpbmcgbG9naWMgaW50byBoZWxwZXIgbWV0
aG9kcyB0byBtYWtlIHRoZSB1bml0CisgICAgICAgIHRlc3RzIG1vcmUgcmVhZGFibGUuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0Nv
bnRyb2xzTWFuYWdlci5tbToKKyAgICAgICAgKC1bTWVzc2FnZUhhbmRsZXIgaW5pdFdpdGhNZXNz
YWdlOmhhbmRsZXI6XSk6CisgICAgICAgICgtW01lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29u
dHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKC1bVmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl0pOgorICAgICAgICAo
LVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOl0pOgor
ICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOmFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjphZnRlclJlY2VpdmluZ01lc3NhZ2U6XSk6Cisg
ICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcgcGVyZm9ybUFmdGVyUmVj
ZWl2aW5nTWVzc2FnZTphY3Rpb246XSk6CisgICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
VGVzdFdlYlZpZXcgY29udHJvbGxlZEVsZW1lbnRJRF0pOgorICAgICAgICAoLVtWaWRlb0NvbnRy
b2xzTWFuYWdlclRlc3RXZWJWaWV3IF9oYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2U6
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICgtW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBpbml0V2l0aFdLV2ViVmlldzpmaW5hbE1l
c3NhZ2VTdHJpbmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW01lZGlhUGxheWJhY2tNZXNzYWdl
SGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW09uTG9hZE1lc3NhZ2VIYW5kbGVyIGluaXRXaXRoV0tXZWJW
aWV3OmhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW09uTG9hZE1lc3NhZ2VIYW5kbGVy
IHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XSk6IERlbGV0ZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8t
cGxheWluZy1zY3JvbGwtYXdheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1
c2UuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3Mt
cGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZp
ZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRy
b2xzLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA4LTI5ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBFV1MgcGF0Y2ggc3RhdHVzIHBhZ2Ugc2hvdWxkIGluZGlj
YXRlIGJvdCBjb3JyZXNwb25kaW5nIHRvIGVhY2ggc3RhdHVzIG1lc3NhZ2UKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYTcwYjkwMmUzNDg4MWRlNTRjYTZhYzk0YzBlNGE2OTQ2ZjZkYTk2Ny4u
OTMyYjkwMjc0MDI2YjlmNzJhOThmNDJjYmFkZGIwODY1NGFlYjE0YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTYyLDYgKzYyLDEyIEBACiAJCTJFMURGREVEMUQ0MkE1MTEwMDcxNEEwMCAv
KiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMURGREVDMUQ0MkE0MUMwMDcxNEEwMCAvKiBs
YXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1sICovOyB9OwogCQkyRTFERkRFRjFENDJBNkYyMDA3
MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXkuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRFRTFENDJB
NkVCMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXkuaHRtbCAqLzsg
fTsKIAkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVn
aW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAv
KiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRt
bCAqLzsgfTsKKwkJMkU2OTFBRUExRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVz
ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFy
Z2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovOyB9OworCQkyRTY5
MUFFQjFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMt
Y29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlp
bmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLzsgfTsKKwkJMkU2OTFBRUQxRDc4QjkxMDAw
MTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVk
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi87IH07CisJCTJFNjkxQUVGMUQ3OURFODQwMDEy
OTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFF
RTFENzlERTZGMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBh
dXNlLmh0bWwgKi87IH07CisJCTJFNjkxQUYxMUQ3OUU1MUEwMDEyOTQwNyAvKiBsYXJnZS12aWRl
b3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRjAxRDc5RTUxNDAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCAqLzsgfTsK
KwkJMkU2OTFBRjMxRDc5RTc1RTAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xs
LWF3YXkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTY5MUFGMjFENzlFNzU0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW8tcGxheWluZy1z
Y3JvbGwtYXdheS5odG1sICovOyB9OwogCQkyRTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFp
bklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
Nzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovOyB9OwogCQkyRTc3NjVDRjE2
QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1t
ICovOyB9OwogCQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFz
aF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxl
LmNwcCAqLzsgfTsKQEAgLTUxNiw2ICs1MjIsMTIgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0
QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJ
CQkJMkU2OTFBRjMxRDc5RTc1RTAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xs
LWF3YXkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFGMTFENzlFNTFBMDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFNjkxQUVGMUQ3OURFODQwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKKwkJCQkyRTY5MUFFRDFENzhCOTEwMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlp
bmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
KwkJCQkyRTY5MUFFQTFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRl
by1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFNjkxQUVC
MUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250
cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5
MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5
MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODcxQzg5MjVBMDAwQTU1MjlGIC8qIEFoZW0udHRmIGlu
IENvcHkgUmVzb3VyY2VzICovLApAQCAtNzM2LDYgKzc0OCwxMiBAQAogCQkyRTFERkRFQzFENDJB
NDFDMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxREZERUUxRDQyQTZFQjAwNzE0QTAwIC8qIGxhcmdlLXZp
ZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXkuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1z
ZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1h
ZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNjkxQUU4
MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBhdXNl
ZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVv
LWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2Ut
dmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFFRTFENzlERTZG
MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNs
aWNrLXRvLXBhdXNlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFG
MDFENzlFNTE0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12
aWRlby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1hdXRv
cGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJFNjkxQUYyMUQ3OUU3NTQwMDEyOTQwNyAvKiBsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9s
bC1hd2F5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tcGxh
eWluZy1zY3JvbGwtYXdheS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3
NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBtYWluSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IG1haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2Vy
QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVt
cHR5VXNlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODcsNiAr
MTQwNSwxMiBAQAogCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRTY5MUFGMjFENzlF
NzU0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sICovLAor
CQkJCTJFNjkxQUYwMUQ3OUU1MTQwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmct
c2Nyb2xsLXRvLXZpZGVvLmh0bWwgKi8sCisJCQkJMkU2OTFBRUUxRDc5REU2RjAwMTI5NDA3IC8q
IGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZS5odG1sICovLAorCQkJCTJF
NjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRl
by1oaWRlcy1jb250cm9scy5odG1sICovLAorCQkJCTJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAv
KiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8sCisJCQkJ
MkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtl
ZXBzLWNvbnRyb2xzLmh0bWwgKi8sCiAJCQkJNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFw
cGxpY2F0aW9uQ2FjaGUuZGIgKi8sCiAJCQkJNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8qIEFw
cGxpY2F0aW9uQ2FjaGUuZGItc2htICovLAogCQkJCTVDOUU1OTQwMUQzRUIxREUwMEUzQzYyRSAv
KiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0K
aW5kZXggZmFkNWEzYWU0OGZiMDYxY2ZhYzhlYjYzZWQ5YTY3ZjRkNzNiYmEyZi4uMWJkNmQ4Mjg1
Y2E4ZTJlMjlmYTAxY2RlYTI0Mjg0ODVlYjI4OWI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFn
ZXIubW0KQEAgLTM3LDE3NCArMzcsMTYxIEBACiAKICNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCiAK
LXN0YXRpYyBib29sIHRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZzsKLXN0YXRpYyBi
b29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKLQotQGludGVyZmFjZSBNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gewotICAgIFJl
dGFpblB0cjxXS1dlYlZpZXc+IF93ZWJWaWV3OwotfQotCi1AcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBleHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4pIE5TU3RyaW5nICpmaW5hbE1lc3NhZ2VTdHJpbmc7Ci0KLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGZpbmFsTWVzc2FnZVN0cmlu
ZzooTlNTdHJpbmcgKilmaW5hbE1lc3NhZ2VTdHJpbmc7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
V0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXcgZmluYWxNZXNzYWdlU3RyaW5nOihOU1N0cmlu
ZyAqKWZpbmFsTWVzc2FnZVN0cmluZwotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF9m
aW5hbE1lc3NhZ2VTdHJpbmcgPSBmaW5hbE1lc3NhZ2VTdHJpbmc7Ci0KLSAgICByZXR1cm4gc2Vs
ZjsKLX0KK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1dlYlZpZXdBZGRpdGlvbnMpCiAKLS0gKHZv
aWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJD
b250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdl
ICopbWVzc2FnZQotewotICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7CistICh2b2lk
KV9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGluZzsKIAotICAgIE5TU3RyaW5nICpi
b2R5U3RyaW5nID0gKE5TU3RyaW5nICopW21lc3NhZ2UgYm9keV07Ci0gICAgaWYgKFtib2R5U3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzpzZWxmLmZpbmFsTWVzc2FnZVN0cmluZ10pIHsKLSAgICAgICAg
Qk9PTCBoYXNDb250cm9sc01hbmFnZXIgPSBbX3dlYlZpZXcgX2hhc0FjdGl2ZVZpZGVvRm9yQ29u
dHJvbHNNYW5hZ2VyXTsKLSAgICAgICAgaWYgKHNlbGYuZXhwZWN0ZWRUb0hhdmVDb250cm9sc01h
bmFnZXIpCi0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYXNDb250cm9sc01hbmFnZXIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzQ29udHJvbHNNYW5hZ2VyKTsK
LSAgICAgICAgdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nID0gdHJ1ZTsKLSAgICB9
Ci19CiBAZW5kCiAKLUBpbnRlcmZhY2UgT25Mb2FkTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8
V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gewotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93ZWJW
aWV3OworQGludGVyZmFjZSBNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiB7CisgICAgZGlzcGF0Y2hfYmxvY2tfdCBfaGFuZGxlcjsKKyAgICBOU1N0cmlu
ZyAqX21lc3NhZ2U7CiB9CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIGRpc3BhdGNo
X2Jsb2NrX3Qgb25sb2FkSGFuZGxlcjsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6
KE5TU3RyaW5nICopbWVzc2FnZSBoYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CiAK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGhh
bmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxlcjsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9u
IE9uTG9hZE1lc3NhZ2VIYW5kbGVyCitAaW1wbGVtZW50YXRpb24gTWVzc2FnZUhhbmRsZXIKIAot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXcgaGFu
ZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCloYW5kbGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhN
ZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCloYW5k
bGVyCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICBfd2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgX29ubG9hZEhhbmRsZXIgPSBoYW5k
bGVyOworICAgIF9oYW5kbGVyID0gW2hhbmRsZXIgY29weV07CisgICAgX21lc3NhZ2UgPSBtZXNz
YWdlOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9s
bGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRS
ZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQogewotICAgIGlm
ICghWyhOU1N0cmluZyAqKVttZXNzYWdlIGJvZHldIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJd
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX29ubG9hZEhhbmRsZXIpCi0gICAgICAgIF9v
bmxvYWRIYW5kbGVyKCk7Ci0KLSAgICBfb25sb2FkSGFuZGxlciA9IG5pbDsKKyAgICBpZiAoWyhO
U1N0cmluZyAqKVttZXNzYWdlIGJvZHldIGlzRXF1YWxUb1N0cmluZzpfbWVzc2FnZV0gJiYgX2hh
bmRsZXIpCisgICAgICAgIF9oYW5kbGVyKCk7CiB9Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tXZWJW
aWV3IChXS1dlYlZpZXdBZGRpdGlvbnMpCi0KLS0gKHZvaWQpX2ludGVyYWN0V2l0aE1lZGlhQ29u
dHJvbHNGb3JUZXN0aW5nOwogCiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0aW5n
QWRkaXRpb25zKQorQGludGVyZmFjZSBWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IDog
V0tXZWJWaWV3CiAKIC0gKHZvaWQpbW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludDsKIC0g
KHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zOworLSAo
dm9pZClsb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKKy0gKHZvaWQpbG9h
ZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWUgYW5kRXhwZWN0Q29udHJvbHNNYW5h
Z2VyOihCT09MKWV4cGVjdENvbnRyb2xzTWFuYWdlciBhZnRlclJlY2VpdmluZ01lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZTsKKy0gKHZvaWQpcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb247CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNvbnRyb2xsZWRFbGVtZW50
SUQ7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoVGVzdGluZ0FkZGl0aW9u
cykKK0BpbXBsZW1lbnRhdGlvbiBWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IHsKKyAg
ICBib29sIF9pc0RvbmVRdWVyeWluZ0NvbnRyb2xsZWRFbGVtZW50SUQ7CisgICAgTlNTdHJpbmcg
Kl9jb250cm9sbGVkRWxlbWVudElEOworfQogCiAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5T
UG9pbnQpcG9pbnQgewogICAgIFtzZWxmIG1vdXNlRG93bjpbTlNFdmVudCBtb3VzZUV2ZW50V2l0
aFR5cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VEb3duIGxvY2F0aW9uOk5TTWFrZVBvaW50KHBvaW50
LngsIHBvaW50LnkpIG1vZGlmaWVyRmxhZ3M6MCB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGlt
ZSgpIHdpbmRvd051bWJlcjowIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250
ZXh0XSBldmVudE51bWJlcjowIGNsaWNrQ291bnQ6MCBwcmVzc3VyZTowXV07CiB9CiAKIC0gKHZv
aWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zIHsKLSAgICBP
bkxvYWRNZXNzYWdlSGFuZGxlciAqaGFuZGxlciA9IFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoV0tXZWJWaWV3OnNlbGYgaGFuZGxlcjphY3Rpb25zXTsKKyAgICBNZXNzYWdl
SGFuZGxlciAqaGFuZGxlciA9IFtbTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoTWVzc2Fn
ZTpAImxvYWRlZCIgaGFuZGxlcjphY3Rpb25zXTsKICAgICBOU1N0cmluZyAqb25sb2FkU2NyaXB0
ID0gQCJ3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7IHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLm9ubG9hZEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2xvYWRlZCcpOyB9IjsKICAgICBXS1Vz
ZXJTY3JpcHQgKnNjcmlwdCA9IFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpv
bmxvYWRTY3JpcHQgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1
bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dOwotICAgIFtbW3NlbGYgY29uZmlndXJhdGlv
bl0gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRVc2VyU2NyaXB0OnNjcmlwdF07Ci0gICAgW1tb
c2VsZiBjb25maWd1cmF0aW9uXSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOmhhbmRsZXIgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKKworICAgIFdLVXNlckNv
bnRlbnRDb250cm9sbGVyKiBjb250ZW50Q29udHJvbGxlciA9IFtbc2VsZiBjb25maWd1cmF0aW9u
XSB1c2VyQ29udGVudENvbnRyb2xsZXJdOworICAgIFtjb250ZW50Q29udHJvbGxlciBhZGRVc2Vy
U2NyaXB0OnNjcmlwdF07CisgICAgW2NvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKK30KKworLSAodm9pZClsb2Fk
VGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZQoreworICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpwYWdlTmFtZSB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3NlbGYgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07Cit9CisKKy0gKHZvaWQpbG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICop
cGFnZU5hbWUgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOihCT09MKWV4cGVjdENvbnRyb2xzTWFu
YWdlciBhZnRlclJlY2VpdmluZ01lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZQoreworICAgIF9f
YmxvY2sgYm9vbCBkb25lV2FpdGluZyA9IGZhbHNlOworICAgIFtzZWxmIHBlcmZvcm1BZnRlclJl
Y2VpdmluZ01lc3NhZ2U6bWVzc2FnZSBhY3Rpb246XiB7CisgICAgICAgIEJPT0wgaGFzVmlkZW9G
b3JDb250cm9sc01hbmFnZXIgPSBbc2VsZiBfaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFn
ZXJdOworICAgICAgICBpZiAoZXhwZWN0Q29udHJvbHNNYW5hZ2VyKQorICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoaGFzVmlkZW9Gb3JDb250cm9sc01hbmFnZXIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzVmlkZW9Gb3JDb250cm9sc01hbmFnZXIpOworICAgICAg
ICBkb25lV2FpdGluZyA9IHRydWU7CisgICAgfV07CisKKyAgICBbc2VsZiBsb2FkVGVzdFBhZ2VO
YW1lZDpwYWdlTmFtZV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lV2FpdGlu
Zyk7Cit9CisKKy0gKHZvaWQpcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcg
KiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb24KK3sKKyAgICBSZXRhaW5Q
dHI8TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoTWVzc2FnZTptZXNzYWdlIGhhbmRsZXI6YWN0aW9uXSk7CisgICAgW1tbc2Vs
ZiBjb25maWd1cmF0aW9uXSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07Cit9CisKKy0gKE5T
U3RyaW5nICopY29udHJvbGxlZEVsZW1lbnRJRAoreworICAgIF9pc0RvbmVRdWVyeWluZ0NvbnRy
b2xsZWRFbGVtZW50SUQgPSBmYWxzZTsKKyAgICBbc2VsZiBfcmVxdWVzdENvbnRyb2xsZWRFbGVt
ZW50SURdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX2lzRG9uZVF1ZXJ5aW5nQ29u
dHJvbGxlZEVsZW1lbnRJRCk7CisgICAgcmV0dXJuIF9jb250cm9sbGVkRWxlbWVudElEOworfQor
CistICh2b2lkKV9oYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2U6KE5TU3RyaW5nICop
aWRlbnRpZmllcgoreworICAgIF9jb250cm9sbGVkRWxlbWVudElEID0gW2lkZW50aWZpZXIgY29w
eV07CisgICAgX2lzRG9uZVF1ZXJ5aW5nQ29udHJvbGxlZEVsZW1lbnRJRCA9IHRydWU7CiB9CiAK
IEBlbmQKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlkZW8pCitSZXRhaW5QdHI8
VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHNldFVwV2ViVmlld0ZvclRlc3RpbmdW
aWRlb0NvbnRyb2xzTWFuYWdlcihOU1JlY3QgZnJhbWUpCiB7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFU
eXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5
cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBs
YXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFs
TWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAicGxheWluZ0hhbmRsZXIiXTsKLQorICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVz
dFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5T
KFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0
eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpOT10pOwogICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Ondl
YlZpZXcuZ2V0KCldOwogCisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RFU1QoVmlkZW9Db250
cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlTGFyZ2VWaWRlbykKK3sKKyAg
ICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBz
ZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAw
LCAxMDAsIDEwMCkpOworCiAgICAgLy8gQSBsYXJnZSB2aWRlbyB3aXRoIGF1ZGlvIHNob3VsZCBo
YXZlIGEgY29udHJvbHMgbWFuYWdlciBldmVuIGlmIGl0IGlzIHBsYXllZCB2aWEgc2NyaXB0IGxp
a2UgdGhpcyB2aWRlby4KICAgICAvLyBTbyB0aGUgZXhwZWN0YXRpb24gaXMgWUVTLgotICAgIFto
YW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Ci0gICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8td2l0aC1hdWRpbyIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4
cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJd
OwogfQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNp
bmdsZVNtYWxsVmlkZW8pCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBs
YXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIi
XTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgp
XTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZp
ZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQSBzbWFsbCB2aWRlbyB3aWxsIG5vdCBoYXZl
IGEgY29udHJvbHMgbWFuYWdlciB1bmxlc3MgaXQgc3RhcnRlZCBwbGF5aW5nIGJlY2F1c2Ugb2Yg
YSB1c2VyIGdlc3R1cmUuIFNpbmNlIHRoaXMKICAgICAvLyB2aWRlbyBpcyBzdGFydGVkIHdpdGgg
YSBzY3JpcHQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3Rl
ZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAidmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRD
b250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJl
Y2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NXaXRoQXVkaW8pCiB7Ci0gICAg
UmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVk
aW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotCisgICAg
UmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0
VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwg
MTAwLCAxMDApKTsKKyAgICAKICAgICBfX2Jsb2NrIEJPT0wgZGlkU2hvd01lZGlhQ29udHJvbHM7
CiAgICAgX19ibG9jayBib29sIGlzRG9uZUxvYWRpbmcgPSBmYWxzZTsKIAotICAgIFJldGFpblB0
cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
ayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRv
dyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKLSAgICBSZXRhaW5QdHI8
T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxl
cjpeKCkgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CiAgICAgICAgIGRp
ZFNob3dNZWRpYUNvbnRyb2xzID0gW3dlYlZpZXcgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNN
YW5hZ2VyXTsKICAgICAgICAgaXNEb25lTG9hZGluZyA9IHRydWU7Ci0gICAgfV0pOwotICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKKyAgICB9XTsK
IAotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvcy13
aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Cisg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpbyJd
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVMb2FkaW5nKTsKICAgICBF
WFBFQ1RfRkFMU0UoZGlkU2hvd01lZGlhQ29udHJvbHMpOwpAQCAtMjEyLDE3NCArMTk5LDE1NiBA
QCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxl
VmlkZW9zV2l0aEF1ZGlvKQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0aEF1ZGlvQW5kQXV0b3BsYXkpCiB7Ci0gICAgUmV0
YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92
aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotCisgICAgUmV0
YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBX
ZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKyAgICAKICAgICBfX2Jsb2NrIEJPT0wgZGlkU2hvd01lZGlhQ29udHJvbHM7CiAg
ICAgX19ibG9jayBib29sIGlzRG9uZUxvYWRpbmcgPSBmYWxzZTsKIAotICAgIFJldGFpblB0cjxO
U1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBj
b250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKLSAgICBSZXRhaW5QdHI8T25M
b2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxlcjpe
KCkgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CiAgICAgICAgIGRpZFNo
b3dNZWRpYUNvbnRyb2xzID0gW3dlYlZpZXcgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5h
Z2VyXTsKICAgICAgICAgaXNEb25lTG9hZGluZyA9IHRydWU7Ci0gICAgfV0pOwotICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
Om9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKKyAgICB9XTsKIAot
ICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvcy13aXRo
LWF1ZGlvLWF1dG9wbGF5IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3Mtd2l0aC1h
dWRpby1hdXRvcGxheSJdOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVM
b2FkaW5nKTsKICAgICBFWFBFQ1RfVFJVRShkaWRTaG93TWVkaWFDb250cm9scyk7CiB9CiAKLVRF
U1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxB
dXRvcGxheWluZ1ZpZGVvKQorVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9s
c01hbmFnZXJNdWx0aXBsZVZpZGVvc1Njcm9sbFBhdXNlZFZpZGVvT3V0T2ZWaWV3KQogewotICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0
aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1
ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBS
ZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBwbGF5YmFja0hhbmRsZXIgPSBh
ZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBhdXNlZCJdKTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpwbGF5YmFja0hhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisgICAg
UmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0
VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwg
NTAwLCA1MDApKTsKIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhb
W05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJW
aWV3LmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVv
cy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMiIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpO
TyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZWQiXTsKK30KIAotICAgIFJldGFpblB0cjxP
bkxvYWRNZXNzYWdlSGFuZGxlcj4gb25sb2FkSGFuZGxlciA9IGFkb3B0TlMoW1tPbkxvYWRNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBoYW5kbGVy
Ol4oKSB7Ci0gICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6TlNNYWtlUG9pbnQoNTAs
IDUwKV07Ci0gICAgfV0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9u
bG9hZEhhbmRsZXIiXTsKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5aW5nVmlkZW9XaXRoU291bmRPdXRPZlZpZXcp
Cit7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJl
Y3QoMCwgMCwgNTAwLCA1MDApKTsKKworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
bGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMiIGFuZEV4cGVjdENvbnRy
b2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJdOworfQogCi0g
ICAgLy8gQSBzbWFsbCB2aWRlbyBzaG91bGQgaGF2ZSBhIGNvbnRyb2xzIG1hbmFnZXIgYWZ0ZXIg
dGhlIGZpcnN0IHVzZXIgZ2VzdHVyZSwgd2hpY2ggaW5jbHVkZXMgcGF1c2luZyB0aGUgdmlkZW8u
IFRoZSBleHBlY3RhdGlvbiBpcyBZRVMuCi0gICAgW3BsYXliYWNrSGFuZGxlciBzZXRFeHBlY3Rl
ZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAImF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5aW5nTXV0ZWRWaWRl
b091dE9mVmlldykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2Vi
Vmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFn
ZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVz
LWNvbnRyb2xzIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAicGxheWluZyJdOwogfQogCi1URVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0Nv
bnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtzQWZ0ZXJFbmRpbmcpCitURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9z
U2hvd0NvbnRyb2xzRm9yTGFzdEludGVyYWN0ZWRWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNr
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmlu
YWxNZXNzYWdlU3RyaW5nOkAiZW5kZWQiXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAicGxheWluZ0hhbmRsZXIiXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJU
ZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9s
c01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOworICAgIE5TUG9pbnQgY2xpY2tQ
b2ludCA9IE5TTWFrZVBvaW50KDQwMCwgMzAwKTsKIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3
ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmll
d10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJM
b2FkaW5nOl4geworICAgICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OmNsaWNrUG9pbnRd
OworICAgIH1dOwogCi0gICAgLy8gU2luY2UgdGhlIHZpZGVvIGhhcyBlbmRlZCwgdGhlIGV4cGVj
dGF0aW9uIGlzIE5PIGV2ZW4gaWYgdGhlIHBhZ2UgcHJvZ3JhbW1hdGljYWxseSBzZWVrcyB0byB0
aGUgYmVnaW5uaW5nLgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5h
Z2VyOk5PXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12
aWRlby1zZWVrLWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOworICAgIF9fYmxvY2sgYm9vbCBmaXJzdFZpZGVvUGF1c2VkID0gZmFsc2U7Cisg
ICAgX19ibG9jayBib29sIHNlY29uZFZpZGVvUGF1c2VkID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
cGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlZCIgYWN0aW9uOl4geworICAgICAg
ICBOU1N0cmluZyAqY29udHJvbGxlZEVsZW1lbnRJRCA9IFt3ZWJWaWV3IGNvbnRyb2xsZWRFbGVt
ZW50SURdOworICAgICAgICBpZiAoZmlyc3RWaWRlb1BhdXNlZCkgeworICAgICAgICAgICAgc2Vj
b25kVmlkZW9QYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2NvbnRyb2xs
ZWRFbGVtZW50SUQgaXNFcXVhbFRvU3RyaW5nOkAic2Vjb25kIl0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1BvaW50XTsKKyAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb250cm9sbGVkRWxlbWVudElEIGlzRXF1YWxUb1N0cmlu
ZzpAImZpcnN0Il0pOworICAgICAgICB9CisgICAgICAgIGZpcnN0VmlkZW9QYXVzZWQgPSB0cnVl
OworICAgIH1dOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9s
c01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxh
cmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZSJdOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmc2Vjb25kVmlkZW9QYXVzZWQpOwogfQogCi1URVNUKFZpZGVvQ29udHJv
bHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtz
QW5kUGxheXNBZnRlckVuZGluZykKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTd2l0Y2hDb250cm9sbGVkVmlkZW9XaGVuU2Nyb2xs
aW5nKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxh
eWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVy
ID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhX
S1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJyZXBsYXlpbmciXSk7
Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKKyAgICBS
ZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRV
cFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkpOwogCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxl
TWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJl
ZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZp
ZXcuZ2V0KCldOworICAgIF9fYmxvY2sgYm9vbCBzY3JvbGxlZFNlY29uZFZpZGVvSW50b1ZpZXcg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy1h
dXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8iXTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJS
ZWNlaXZpbmdNZXNzYWdlOkAic2Nyb2xsZWQiIGFjdGlvbjpeIHsKKyAgICAgICAgc2Nyb2xsZWRT
ZWNvbmRWaWRlb0ludG9WaWV3ID0gdHJ1ZTsKKyAgICB9XTsKIAotICAgIC8vIFNpbmNlIHRoZSB2
aWRlbyBpcyBzdGlsbCBwbGF5aW5nLCB0aGUgZXhwZWN0YXRpb24gaXMgWUVTIGV2ZW4gaWYgdGhl
IHZpZGVvIGhhcyBlbmRlZCBvbmNlLgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29u
dHJvbHNNYW5hZ2VyOllFU107Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZzY3JvbGxlZFNlY29uZFZpZGVvSW50b1ZpZXcpOworICAgIEVYUEVD
VF9UUlVFKFtbd2ViVmlldyBjb250cm9sbGVkRWxlbWVudElEXSBpc0VxdWFsVG9TdHJpbmc6QCJz
ZWNvbmQiXSk7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxPbmx5TGFyZ2VWaWRlb091dE9mVmlldykKK3sKKyAg
ICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBz
ZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAw
LCA1MDAsIDUwMCkpOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250
cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
ImxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkiIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdl
cjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAic2Nyb2xsZWQiXTsKIH0KIAotVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlk
ZW9BZnRlclNlZWtpbmdUb0VuZCkKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQogewotICAgIFJldGFpblB0
cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgp
Lm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFs
TWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxh
eWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQo
KSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJlbmRlZCJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgp
IG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFu
YWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0Nv
bnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKLSAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAgW3dlYlZpZXcg
cGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKKyAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2lu
dDpOU01ha2VQb2ludCg1MCwgNTApXTsKKyAgICB9XTsKKworICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAiYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgYW5kRXhwZWN0Q29udHJv
bHNNYW5hZ2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZWQiXTsKK30KKworVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5
aW5nVmlkZW9TZWVrc0FmdGVyRW5kaW5nKQoreworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xz
TWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRl
b0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisKKyAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nIiBh
bmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiZW5kZWQi
XTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJM
YXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FuZFBsYXlzQWZ0ZXJFbmRpbmcpCit7CisgICAgUmV0
YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBX
ZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKworICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBpcyBzdGlsbCBwbGF5aW5nLCB0aGUg
ZXhwZWN0YXRpb24gaXMgWUVTIGV2ZW4gaWYgdGhlIHZpZGVvIGhhcyBlbmRlZCBvbmNlLgorICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5p
bmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFm
dGVyUmVjZWl2aW5nTWVzc2FnZTpAInJlcGxheWluZyJdOworfQogCi0gICAgUmV0YWluUHRyPE9u
TG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09uTG9hZE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGhhbmRsZXI6
XigpIHsKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFy
Z2VBdXRvcGxheWluZ1ZpZGVvQWZ0ZXJTZWVraW5nVG9FbmQpCit7CisgICAgUmV0YWluUHRyPFZp
ZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9y
VGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsK
KworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CiAgICAgICAgIFt3ZWJWaWV3
IG1vdXNlRG93bkF0UG9pbnQ6TlNNYWtlUG9pbnQoNTAsIDUwKV07Ci0gICAgfV0pOwotICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKKyAgICB9XTsK
IAogICAgIC8vIFdlIGV4cGVjdCB0aGVyZSB0byBiZSBtZWRpYSBjb250cm9scywgc2luY2UgdGhp
cyBpcyBhIHVzZXIgZ2VzdHVyZWQgc2VlayB0byB0aGUgZW5kLgogICAgIC8vIFRoaXMgaXMgYWtp
biB0byBzZWVraW5nIHRvIHRoZSBlbmQgYnkgc2NydWJiaW5nIGluIHRoZSBjb250cm9scy4KLSAg
ICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLWFmdGVyLXNlZWstdG8tZW5kIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xz
TWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFy
Z2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQiIGFuZEV4cGVjdENvbnRy
b2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiZW5kZWQiXTsKIH0KIAogVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZp
ZGVvV2l0aG91dEF1ZGlvKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2Vy
QWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJw
bGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVy
Il07Ci0KLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRv
dyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5T
Qm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
Ok5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQo
KV07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJl
Y3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIC8vIEEgbGFyZ2UgdmlkZW8gd2l0aCBubyBhdWRp
byB3aWxsIG5vdCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciB1bmxlc3MgaXQgc3RhcnRlZCBwbGF5
aW5nIGJlY2F1c2Ugb2YgYSB1c2VyIGdlc3R1cmUuIFNpbmNlIHRoaXMKICAgICAvLyB2aWRlbyBp
cyBzdGFydGVkIHdpdGggYSBzY3JpcHQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTy4KLSAgICBbaGFu
ZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107Ci0gICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8td2l0aG91dC1hdWRpbyIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXdpdGhvdXQtYXVkaW8iIGFu
ZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5n
Il07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2Vy
QXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVO
b25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBsYXli
YWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVz
c2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAi
cGxheWluZ0hhbmRsZXIiXTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRv
cHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1l
XSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmll
dzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0
V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01h
bmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQW4gYXVkaW8gZWxl
bWVudCBNVVNUIGJlIHN0YXJ0ZWQgd2l0aCBhIHVzZXIgZ2VzdHVyZSBpbiBvcmRlciB0byBoYXZl
IGEgY29udHJvbHMgbWFuYWdlciwgc28gdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgotICAgIFtoYW5k
bGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKLSAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdWRpby1vbmx5IiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAiYXVkaW8tb25seSIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVy
UmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFu
YWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xzT25EZWFsbG9j
KQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBj
b25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJh
Y2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgp
XTsKLQorICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2Vi
VmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VS
ZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgCiAgICAgTlNVUkwgKnVybE9mVmlkZW8gPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0aC1hdWRpbyIgd2l0
aEV4dGVuc2lvbjpAIm1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKICAgICBbd2ViVmlldyBsb2FkRmlsZVVSTDp1cmxPZlZpZGVvIGFsbG93aW5nUmVhZEFjY2Vz
c1RvVVJMOlt1cmxPZlZpZGVvIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF1dOwogCiAg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkVGVzdCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHBlcmZv
cm1BZnRlckxvYWRpbmc6XigpCisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeCiAg
ICAgewogICAgICAgICAvLyBWZXJpZnkgdGhhdCB3ZSB0ZWFyIGRvd24gdGhlIG1lZGlhIGNvbnRy
b2xzIHByb3Blcmx5LCBzdWNoIHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGUgd2ViIHZpZXcg
aXMgcmVsZWFzZWQuCiAgICAgICAgIGlmIChbd2ViVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGluZyldKQpAQCAtMzk0LDE1
ICszNjMsMTAgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFn
ZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xzT25EZWFsbG9jKQogCiBURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNtYWxsVmlkZW9Jbk1lZGlhRG9jdW1lbnQpCiB7
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9
IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwot
ICAgIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgp
XTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZp
ZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIAogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZExvYWQg
PSBmYWxzZTsKLSAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4oKQorICAgIFt3ZWJW
aWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XgogICAgIHsKICAgICAgICAgZmluaXNoZWRMb2FkID0g
dHJ1ZTsKICAgICB9XTsKQEAgLTQxOCw0MCArMzgyLDE2IEBAIFRFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU21hbGxWaWRlb0luTWVkaWFEb2N1bWVudCkKIAog
VEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMb25nU2tpbm55
VmlkZW9JbldpZGVNYWluRnJhbWUpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTYwMCwgODAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9
IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBm
cmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0KLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJp
bmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdI
YW5kbGVyIl07Ci0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6
Tk9dOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2Vi
VmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VS
ZWN0KDAsIDAsIDE2MDAsIDgwMCkpOwogCi0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIg
YW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlp
bmciXTsKIH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFn
ZXJGdWxsU2l6ZVZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAgIFJldGFpblB0cjxXS1dlYlZp
ZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlw
ZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBl
Tm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93
PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6
W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6
TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRW
aWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgUmV0YWluUHRyPE1lZGlhUGxh
eWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxN
ZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6
QCJwbGF5aW5nSGFuZGxlciJdOwotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJv
bHNNYW5hZ2VyOllFU107Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xz
TWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRl
b0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOwogCi0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcp
OwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
KyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImZ1bGwtc2l6ZS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFy
Z2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNlY2Y5MjkzMzI3NDM4MGIyYjdhY2Q0M2Y0YTdmZTliYjUyYjhjNDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJn
ZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgdmlkZW8geworICAgICAgICAgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMyMHB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGl2IHsKKyAgICAg
ICAgICAgICAgICBtYXJnaW4tdG9wOiA1MDAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVMb2Fk
ZWQoKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iikuc2Ny
b2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5n
SGFuZGxlci5wb3N0TWVzc2FnZSgic2Nyb2xsZWQiKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD1oYW5kbGVMb2FkZWQoKT4KKyAgICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9
ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgICAg
ICA8YnI+CisgICAgICAgIDxkaXY+aGVsbG8gd29ybGQhPC9kaXY+CisgICAgPC9ib2R5PgorPGh0
bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9s
YXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGlj
ay10by1wYXVzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYmRkZjAwZWFhOTlhZGEzOGFiZWFlYTgxOTg2
MTJiYjRjNGE0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRt
bApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICB2aWRlbyB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDQ4MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzIwcHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgaXNG
aXJzdENsaWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bigp
IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGlzRmlyc3RDbGljayA/
ICIjZmlyc3QiIDogIiNzZWNvbmQiKS5wYXVzZSgpOworICAgICAgICAgICAgICAgIGlzRmlyc3RD
bGljayA9IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBoYW5k
bGVGaXJzdFBhdXNlKCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGF1
c2VkIik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgICAgICAg
ICAgfSwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNl
Y29uZFBhdXNlKCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGF1c2Vk
Iik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgICAgICAgICAg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbm1vdXNlZG93bj1oYW5kbGVNb3VzZURvd24oKT4KKyAgICAgICAgPHZpZGVvIGF1
dG9wbGF5IGxvb3AgaWQ9ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0IiBv
bnBhdXNlPWhhbmRsZUZpcnN0UGF1c2UoKT48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gYXV0b3Bs
YXkgbG9vcCBpZD0ic2Vjb25kIiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0IiBvbnBh
dXNlPWhhbmRsZVNlY29uZFBhdXNlKCk+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8aHRtbD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZp
ZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8t
dmlkZW8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDRmZjI5Njc3YWY0MTZmNWU1MTQ4MmM3MGM0MTU3MjMz
M2RjMmQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sCkBA
IC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIHZpZGVvIHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
NDgwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICNzZWNvbmQgeworICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWRlZCgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCIjc2Vjb25kIikuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgic2Nyb2xs
ZWQiKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD1oYW5kbGVMb2FkZWQoKT4KKyAg
ICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdp
dGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAgICAgIDx2aWRlbyBhdXRv
cGxheSBsb29wIGlkPSJzZWNvbmQiIHNyYz0ibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQiPjwv
dmlkZW8+CisgICAgPC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNv
bnRyb2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJn
ZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M1
ZjI1ZTc0NWE0Y2Q1YzhlNzMwNDNjY2I2MjI2Y2FkOTkwYWEwMQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wYXVz
ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPHN0eWxlPgorICAgIHZpZGVvIHsKKyAgICAgICAgd2lkdGg6IDQ4MHB4
OworICAgICAgICBoZWlnaHQ6IDMyMHB4OworICAgIH0KKyAgICAjYmFyIHsKKyAgICAgICAgbWFy
Z2luLXRvcDogNTAwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9u
IGhhbmRsZUxvYWRlZCgpIHsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2JhciIp
LnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmb28i
KS5wYXVzZSgpOworICAgIH0KKyAgICBmdW5jdGlvbiBoYW5kbGVQYXVzZWQoKSB7CisgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVyLnBvc3RNZXNz
YWdlKCJwYXVzZWQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgIH0sIDAp
OworICAgIH0KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWhhbmRsZUxvYWRlZCgpPgorICAgIDx2
aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmb28iIG9ucGF1c2U9aGFuZGxlUGF1c2VkKCk+PHNvdXJj
ZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAg
ICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0
Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Ut
dmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVk
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFiY2ZmNDA1YjEyYjliZGZi
ZGRiYjZjNWFiNGMzNjY2MGUwZGIwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVv
LWhpZGVzLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxzdHlsZT4KKyAgICB2aWRlbyB7CisgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAg
ICAgaGVpZ2h0OiAzMjBweDsKKyAgICB9CisgICAgI2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6
IDUwMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVM
b2FkZWQoKSB7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmb28iKS5tdXRlZCA9
IHRydWU7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRv
VmlldygpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5n
SGFuZGxlci5wb3N0TWVzc2FnZSgicGxheWluZyIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7
IH0KKyAgICAgICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9aGFuZGxl
TG9hZGVkKCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZvbyI+PHNvdXJjZSBzcmM9
ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlk
ZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3Zp
ZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9z
LXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRy
b2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzExMGJiNzcxYWI3ZGE5ZjA5ZmQ0NDJlOWY1OTIxNTg3MWIy
MmY2MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwKQEAg
LTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICB2aWRl
byB7CisgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICB9
CisgICAgI2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICB9Cis8L3N0eWxl
PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmlldygpOworICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgi
cGxheWluZyIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICAgICAgfSwgMCk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAgPHZpZGVv
IGF1dG9wbGF5IGxvb3AgaWQ9ImZvbyI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVk
aW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBz
cmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287785</attachid>
            <date>2016-09-02 11:11:32 -0700</date>
            <delta_ts>2016-09-02 13:10:17 -0700</delta_ts>
            <desc>Add missing ifdef guards to fix other platforms.</desc>
            <filename>bug-161503-20160902110918.patch</filename>
            <type>text/plain</type>
            <size>95019</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNjE4YWM0YTcwNTI5
ODdjNGNhNGE1YmU0MmU5NzczMjAyZWRlZi4uMDZhZDI0M2Q1ZTQyMzAxYmZjYTZjNTc4ODViOTg2
ZThlNzA4MmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE2LTA5LTAyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSwgd2hlbiBzZWxlY3RpbmcgYSBtZWRpYSBzZXNzaW9uIHRvIHNob3cgcGxheWJhY2sgY29udHJv
bHMgZm9yLCB3ZSBncmFiIHRoZSBmaXJzdCBtZWRpYSBzZXNzaW9uIHRoYXQKKyAgICAgICAgcGFz
c2VzIG91ciBoZXVyaXN0aWMuIFVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBhcmUgdW5hYmxlIHRvIHRh
a2UgYWRkaXRpb25hbCBmYWN0b3JzIGludG8gYWNjb3VudCwgc3VjaCBhcyB3aGV0aGVyCisgICAg
ICAgIGFub3RoZXIgbWVkaWEgc2Vzc2lvbidzIGVsZW1lbnQgaXMgc2Nyb2xsZWQgaW4gdmlldywg
b3IgaWYgYW5vdGhlciBtZWRpYSBzZXNzaW9uIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aCBtb3Jl
CisgICAgICAgIHJlY2VudGx5LiBUbyBhZGRyZXNzIHRoaXMsIHdlIG1ha2UgdGhlIGZvbGxvd2lu
ZyBjaGFuZ2VzOgorCisgICAgICAgICAgICAxLiAgTWFrZSBlYWNoIGFjdGl2ZSBtZWRpYSBzZXNz
aW9uIHZlbmQgYSBNZWRpYVNlc3Npb25JbmZvLCB3aGljaCBhY3RzIGFzIGEgdm91Y2hlciBmb3Ig
dGhhdCBtZWRpYSBzZXNzaW9uCisgICAgICAgICAgICAgICAgd2hlbiBkZXRlcm1pbmluZyB3aGlj
aCBtZWRpYSBzZXNzaW9uIHNob3VsZCBzaG93IGNvbnRyb2xzLiBXaGVuIHVwZGF0aW5nIHRoZSBw
bGF5YmFjayBjb250cm9scyBtYW5hZ2VyLAorICAgICAgICAgICAgICAgIHdlIGNvbGxlY3QgTWVk
aWFTZXNzaW9uSW5mb3MgZnJvbSBhbGwgYWN0aXZlIHNlc3Npb25zLgorCisgICAgICAgICAgICAy
LiAgV2UgdGhlbiBzZWxlY3Qgb25seSB0aGUgTWVkaWFTZXNzaW9uSW5mb3MgY2FwYWJsZSBvZiBz
aG93aW5nIG1lZGlhIGNvbnRyb2xzIGFuZCBzb3J0IHRoZSBsaXN0IGJ5IGEKKyAgICAgICAgICAg
ICAgICBzcGVjaWFsIGhldXJpc3RpYyB0aGF0IHRha2VzIHZpc2liaWxpdHkgYW5kIHRpbWUgb2Yg
bGFzdCB1c2VyIGludGVyYWN0aW9uIGludG8gYWNjb3VudC4gVGhlIGZpcnN0CisgICAgICAgICAg
ICAgICAgZWxlbWVudCBvbiB0aGlzIGxpc3QgaXMgdGhlIHN0cm9uZ2VzdCBjYW5kaWRhdGUgZm9y
IG1haW4gY29udGVudC4KKworICAgICAgICAgICAgMy4gIElmIHRoaXMgc3Ryb25nZXN0IGNhbmRp
ZGF0ZSBpcyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgb3IgaXQgaXMgcGxheWluZyB3aXRoIGF1
ZGlvLCB3ZSByZXR1cm4gdGhpcworICAgICAgICAgICAgICAgIGFzIHRoZSBjaG9zZW4gY2FuZGlk
YXRlLiBPdGhlcndpc2UsIHdlIHJldHVybiB0aGlzIHNlc3Npb24gb25seSBpZiBubyBvdGhlciBu
b24tY2FuZGlkYXRlIHZpZGVvIGNvdWxkIGJlCisgICAgICAgICAgICAgICAgY29uZnVzZWQgYXMg
dGhlIG1haW4gY29udGVudCAoaS5lLiB0aGUgbm9uLWNhbmRpZGF0ZSB2aWRlbyBpcyBub3Qgb25s
eSB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgYnV0IGFsc28KKyAgICAgICAgICAgICAgICBsYXJn
ZSBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQpLgorCisgICAgICAgIFVzaW5n
IHRoaXMgbmV3IG1ldGhvZCBvZiBkZXRlcm1pbmluZyB0aGUgdmlkZW8gdG8gc2hvdyBjb250cm9s
cyBmb3IsIHdlIHJldGFpbiBwcmV2aW91cyBiZWhhdmlvciBmb3IgcGFnZXMgd2l0aAorICAgICAg
ICBhIHNpbmdsZSB2aWRlby4gT24gcGFnZXMgd2l0aCBtdWx0aXBsZSB2aWRlb3MsIHRoZSBhYm92
ZSBsb2dpYyBlbnN1cmVzIHRoYXQgaWYgdGhlIGN1cnJlbnQgY29udHJvbGxlZCB2aWRlbyBpcwor
ICAgICAgICBwYXVzZWQsIHNjcm9sbGVkIG91dCBvZiB2aWV3LCBhbmQgdGhlbiBhIG5ldyB2aWRl
byBpcyBzY3JvbGxlZCBpbnRvIHZpZXcsIHdlIHdpbGwgZWl0aGVyIGhpZGUgbWVkaWEgY29udHJv
bHMgdG8KKyAgICAgICAgYXZvaWQgY29uZnVzaW9uIGlmIHRoYXQgdmlkZW8gY291bGQgYmUgY29u
ZnVzZWQgZm9yIG1haW4gY29udGVudCAodXNpbmcgdGhlIG1lY2hhbmlzbSBpbiBzdGVwIDMpLCBv
ciB3ZQorICAgICAgICBob29rIHVwIHRoZSBtZWRpYSBjb250cm9scyB0byB0aGUgbmV3IHZpZGVv
IGlmIGl0IHNhdGlzZmllcyBtYWluIGNvbnRlbnQgKHVzaW5nIHRoZSBtZWNoYW5pc20gaW4gc3Rl
cCAyKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyA1IG5ldyBUZXN0V2ViS2l0QVBJ
IHVuaXQgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVy
T3RoZXJDYW5kaWRhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2Vzc2lvbk1h
eUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFT
ZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdp
c3RyYXRpb25Gb3JBdXRvcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojppc1Zpc2libGVJblZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojppc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnJlc2V0UGxheWJhY2tTZXNzaW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYWluQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVudExhcmdlUmVsYXRpdmVUb01haW5GcmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbyk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkluZm86Ok1lZGlhU2Vzc2lvbklu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNhbkNvbnRyb2xD
b250cm9sc01hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uSW5mb3MpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorCiAyMDE2LTA4LTMwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIHR5cG8gaW50cm9kdWNlZCBp
biByMjA1MTg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNlZTE1OTNhNDg0Y2M3ZjBkZjMxNTY5NTg1NGViZDQ0
NWU5ZjUzMWIuLjdkMGIyNjE4ODY3NGU4ZmI4MGIzNmY2OTMyYmY5YmE3ZjcxNTY0ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNi0wOS0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciB0aGUgaGV1cmlzdGljIGZvciBz
aG93aW5nIG1lZGlhIGNvbnRyb2xzIHRvIHRha2UgYWxsIG1lZGlhIHNlc3Npb25zIGludG8gYWNj
b3VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODAzMzc4Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGFuIFNQSSB0ZXN0aW5nIGhvb2sg
Zm9yIHNlbmRpbmcgdGhlIGVsZW1lbnQgSUQgb2YgdGhlIGN1cnJlbnRseSBjb250cm9sbGVkIHZp
ZGVvIGVsZW1lbnQgZnJvbSB0aGUgd2ViCisgICAgICAgIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nl
c3MuIFNlZSBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBpbiBUb29scy9UZXN0V2ViS2l0QVBJLyBm
b3IgdXNhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRF0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZTpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl0p
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0
Q29udHJvbGxlZEVsZW1lbnRJRCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVDb250cm9sbGVk
RWxlbWVudElEUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KToKKwog
MjAxNi0wOC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0b3AgdXNpbmcgbV9jbGllbnQgdG8gaW5kaWNhdGUgd2hldGhlciBhbiBJUEM6OkNvbm5l
Y3Rpb24gaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDExOTkyZGY1NTUwNjZjMjg2NjQwYTEzZmQxY2E2NGE4OGM5NWZjNTYuLjRlNzNjMDdhZmZm
Y2IxZjEyMzcyZmMyNmZmNGFjZDI1YjAxYzhlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMzQ2LDYgKzM0Niw1MSBAQCBzdGF0aWMgdWludDY0X3QgbmV4
dEVsZW1lbnRJRCgpCiB9CiAjZW5kaWYKIAorc3RhdGljIGJvb2wgcHJlZmVyTWVkaWFDb250cm9s
c0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVyT3RoZXJDYW5kaWRhdGVTZXNzaW9uKGNvbnN0IE1lZGlh
U2Vzc2lvbkluZm8mIHNlc3Npb24sIGNvbnN0IE1lZGlhU2Vzc2lvbkluZm8mIG90aGVyU2Vzc2lv
bikKK3sKKyAgICAvLyBQcmlvcml0aXplIHZpc2libGUgbWVkaWEgb3ZlciBvZmZzY3JlZW4gbWVk
aWEuCisgICAgaWYgKHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydCAhPSBvdGhlclNlc3Npb24u
aXNWaXNpYmxlSW5WaWV3cG9ydCkKKyAgICAgICAgcmV0dXJuIHNlc3Npb24uaXNWaXNpYmxlSW5W
aWV3cG9ydDsKKworICAgIC8vIEFzIGEgdGllYnJlYWtlciwgcHJpb3JpdGl6ZSBlbGVtZW50cyB0
aGF0IHRoZSB1c2VyIHJlY2VudGx5IGludGVyYWN0ZWQgd2l0aC4KKyAgICByZXR1cm4gc2Vzc2lv
bi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3RoZXJTZXNzaW9uLnRpbWVPZkxhc3RVc2Vy
SW50ZXJhY3Rpb247Cit9CisKK3N0YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRG
b3JNYWluQ29udGVudChjb25zdCBNZWRpYVNlc3Npb25JbmZvJiBzZXNzaW9uKQoreworICAgIGlm
ICghc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIXNlc3Npb24uaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBFdmVuIGlmIHRoaXMgdmlkZW8gaXMgbm90IGEgY2FuZGlk
YXRlLCBpZiBpdCBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyIGFuZCBsYXJnZSBlbm91Z2gKKyAgICAv
LyB0byBiZSBtYWluIGNvbnRlbnQsIGl0IHBvc2VzIGEgcmlzayBmb3IgYmVpbmcgY29uZnVzZWQg
d2l0aCBtYWluIGNvbnRlbnQuCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiogYmVzdE1lZGlhU2Vzc2lvbkZvclNob3dpbmdQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigpCit7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbkluZm8+IGNhbmRpZGF0
ZVNlc3Npb25JbmZvczsKKyAgICBib29sIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1
c2VkRm9yTWFpbkNvbnRlbnQgPSBmYWxzZTsKKyAgICBmb3IgKE1lZGlhU2Vzc2lvbkluZm8gaW5m
byA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJlbnRT
ZXNzaW9uSW5mb3MoKSkgeworICAgICAgICBpZiAoaW5mby5jYW5TaG93Q29udHJvbHNNYW5hZ2Vy
KQorICAgICAgICAgICAgY2FuZGlkYXRlU2Vzc2lvbkluZm9zLmFwcGVuZChpbmZvKTsKKyAgICAg
ICAgZWxzZSBpZiAobWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50KGluZm8p
KQorICAgICAgICAgICAgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWlu
Q29udGVudCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFjYW5kaWRhdGVTZXNzaW9uSW5mb3Mu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0ZDo6c29ydChjYW5kaWRh
dGVTZXNzaW9uSW5mb3MuYmVnaW4oKSwgY2FuZGlkYXRlU2Vzc2lvbkluZm9zLmVuZCgpLCBwcmVm
ZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Np
b24pOworICAgIE1lZGlhU2Vzc2lvbkluZm8gc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZSA9IGNh
bmRpZGF0ZVNlc3Npb25JbmZvcy5maXJzdCgpOworICAgIGlmICghc3Ryb25nZXN0U2Vzc2lvbkNh
bmRpZGF0ZS5pc1Zpc2libGVJblZpZXdwb3J0ICYmICFzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRl
LmlzUGxheWluZ1dpdGhBdWRpbyAmJiBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNl
ZEZvck1haW5Db250ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBz
dHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb247Cit9CisKIEhUTUxNZWRpYUVsZW1lbnQ6
OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKQEAgLTgzNyw4
ICs4ODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiB7
CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICBy
ZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9u
LT5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1
dG9wbGF5Tm90UGVybWl0dGVkKQotICAgICAgICAgICAgfHwgbV9tZWRpYVNlc3Npb24tPmhhc0Jl
aGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6T3ZlcnJpZGVVc2VyR2VzdHVy
ZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpKQorICAgICAgICBpZiAod2FudHNWaXNpYmxlSW5W
aWV3cG9ydENhbGxiYWNrUmVnaXN0cmF0aW9uRm9yQXV0b3BsYXkoKSkKICAgICAgICAgICAgIHJl
bmRlcmVyLT5yZWdpc3RlckZvclZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soKTsKICAgICB9CiAg
ICAgdXBkYXRlU2hvdWxkQXV0b3BsYXkoKTsKQEAgLTQwMjEsNiArNDA2NSwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKCkKICAgICAgICAgbV9yZWNlaXZlZExh
eW91dFNpemVDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgc2NoZWR1bGVVcGRhdGVQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigpOwogICAgIH0KKworICAgIC8vIElmIHRoZSB2aWRlbyBpcyBhIGNhbmRp
ZGF0ZSBmb3IgbWFpbiBjb250ZW50LCB3ZSBzaG91bGQgcmVnaXN0ZXIgaXQgZm9yIHZpZXdwb3J0
IHZpc2liaWxpdHkgY2FsbGJhY2tzCisgICAgLy8gaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBy
ZWdpc3RlcmVkLgorICAgIGlmIChyZW5kZXJlcigpICYmIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29u
dGVudCgpICYmICF3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdpc3RyYXRpb25Gb3JB
dXRvcGxheSgpKQorICAgICAgICByZW5kZXJlcigpLT5yZWdpc3RlckZvclZpc2libGVJblZpZXdw
b3J0Q2FsbGJhY2soKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aXNpYmlsaXR5RGlk
Q2hhbmdlKCkKQEAgLTQ0NDcsNiArNDQ5NiwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZEJlaGF2aW9yUmVzdHJpY3Rpb25zT25FbmRJZk5lY2Vzc2FyeSgpCiAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBs
YXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyIHwgTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVx
dWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKTsKIH0KIAorYm9vbCBIVE1M
TWVkaWFFbGVtZW50Ojp3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdpc3RyYXRpb25G
b3JBdXRvcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhh
dmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5Tm90
UGVybWl0dGVkKQorICAgICAgICB8fCBtX21lZGlhU2Vzc2lvbi0+aGFzQmVoYXZpb3JSZXN0cmlj
dGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWlyZW1lbnRG
b3JNYWluQ29udGVudCk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJW
b2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoJXApIiwgdGhpcyk7CkBAIC03MTQwLDYg
KzcxOTUsNyBAQCBzdGF0aWMgYm9vbCBtZWRpYUVsZW1lbnRJc0FsbG93ZWRUb0F1dG9wbGF5KGNv
bnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
VmlzaWJsZUluVmlld3BvcnRDaGFuZ2VkKCkKIHsKICAgICB1cGRhdGVTaG91bGRBdXRvcGxheSgp
OworICAgIHNjaGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSgpCkBAIC03MTY4LDIwICs3
MjI0LDY5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkUGxheSgpCiAgICAg
ICAgIHBsYXkoKTsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0xhcmdlRW5vdWdoRm9y
TWFpbkNvbnRlbnQoKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZWxlbWVudE1h
aW5Db250ZW50QXJlYU1pbmltdW0gPSA0MDAgKiAzMDA7CisgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBtYXhpbXVtQXNwZWN0UmF0aW8gPSAxLjg7IC8vIFNsaWdodGx5IGxhcmdlciB0aGFuIDE2Ojku
CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtQXNwZWN0UmF0aW8gPSAuNTsgLy8gU2xp
Z2h0bHkgc21hbGxlciB0aGFuIDk6MTYuCisKKyAgICAvLyBFbGVtZW50cyB3aGljaCBoYXZlIG5v
dCB5ZXQgYmVlbiBsYWlkIG91dCwgb3Igd2hpY2ggYXJlIG5vdCB5ZXQgaW4gdGhlIERPTSwgY2Fu
bm90IGJlIG1haW4gY29udGVudC4KKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZG91
YmxlIHdpZHRoID0gcmVuZGVyZXItPmNsaWVudFdpZHRoKCk7CisgICAgZG91YmxlIGhlaWdodCA9
IHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKTsKKyAgICBkb3VibGUgYXJlYSA9IHdpZHRoICogaGVp
Z2h0OworICAgIGRvdWJsZSBhc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0OworCisgICAgaWYg
KGFyZWEgPCBlbGVtZW50TWFpbkNvbnRlbnRBcmVhTWluaW11bSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGFzcGVjdFJhdGlvID49IG1pbmltdW1Bc3BlY3RSYXRpbyAmJiBhc3Bl
Y3RSYXRpbyA8PSBtYXhpbXVtQXNwZWN0UmF0aW8pCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGlzTGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKCk7Cit9CisKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aXNMYXJnZVJlbGF0aXZlVG9NYWluRnJhbWUoKSBjb25zdAoreworICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVBlcmNlbnRhZ2VPZk1haW5GcmFtZUFyZWFGb3JNYWlu
Q29udGVudCA9IDAuOTsKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogZG9j
dW1lbnRGcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWRvY3VtZW50RnJhbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZG9jdW1lbnRGcmFtZS0+bWFpbkZy
YW1lKCkudmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBtYWluRnJh
bWVWaWV3ID0gKmRvY3VtZW50RnJhbWUtPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBhdXRvIG1h
eFZpc2libGVDbGllbnRXaWR0aCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRXaWR0aCgpLnRv
SW50KCksIG1haW5GcmFtZVZpZXcudmlzaWJsZVdpZHRoKCkpOworICAgIGF1dG8gbWF4VmlzaWJs
ZUNsaWVudEhlaWdodCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKS50b0ludCgp
LCBtYWluRnJhbWVWaWV3LnZpc2libGVIZWlnaHQoKSk7CisKKyAgICByZXR1cm4gbWF4VmlzaWJs
ZUNsaWVudFdpZHRoICogbWF4VmlzaWJsZUNsaWVudEhlaWdodCA+IG1pbmltdW1QZXJjZW50YWdl
T2ZNYWluRnJhbWVBcmVhRm9yTWFpbkNvbnRlbnQgKiBtYWluRnJhbWVWaWV3LnZpc2libGVXaWR0
aCgpICogbWFpbkZyYW1lVmlldy52aXNpYmxlSGVpZ2h0KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgpCit7CisgICAgaWYgKG1fbWVkaWFT
ZXNzaW9uKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0
ZSgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCkKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vz
c2lvbiA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJl
bnRTZXNzaW9uTWF0Y2hpbmcoW10gKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KSB7Ci0gICAgICAgIHJldHVybiBzZXNzaW9uLmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKTsK
LSAgICB9KTsKLQotICAgIGlmICghaXM8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbikpCisg
ICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGJlc3RNZWRpYVNlc3Npb24gPSBiZXN0TWVk
aWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CisgICAgaWYgKCFp
czxNZWRpYUVsZW1lbnRTZXNzaW9uPihiZXN0TWVkaWFTZXNzaW9uKSkKICAgICAgICAgcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogICAgIGVs
c2UKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcihkb3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKS0+ZWxlbWVudCgp
KTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcihkb3duY2FzdDxNZWRpYUVsZW1lbnRTZXNzaW9uPihiZXN0TWVkaWFTZXNzaW9uKS0+
ZWxlbWVudCgpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZVBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggOThmM2IwODg5ODZhOTk2ZjRlYTZiNzVhZWE3NGU5NjNkNWI2MjE5YS4uYTM3NGM5
NTdkZmJjODIzZDc2OGZkZGUzYWZiOTE0M2ZhODU5ZTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ2NSw5ICs0NjUsMTMgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKCk7CiAgICAgdm9pZCB1
cGRhdGVTaG91bGRQbGF5KCk7CisgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQo
KSBjb25zdDsKKyAgICBib29sIGlzTGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKCkgY29uc3Q7CiAK
ICAgICBSZW5kZXJNZWRpYSogcmVuZGVyZXIoKSBjb25zdDsKIAorICAgIHZvaWQgcmVzZXRQbGF5
YmFja1Nlc3Npb25TdGF0ZSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAg
ICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtNzk1LDYgKzc5OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRDb250cm9sbGVySlNQcm9wZXJ0eShjb25zdCBjaGFyKiwgSlNDOjpK
U1ZhbHVlKTsKIAogICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbnNPbkVuZElmTmVjZXNz
YXJ5KCk7CisgICAgYm9vbCB3YW50c1Zpc2libGVJblZpZXdwb3J0Q2FsbGJhY2tSZWdpc3RyYXRp
b25Gb3JBdXRvcGxheSgpIGNvbnN0OwogCiAgICAgVGltZXIgbV9wZW5kaW5nQWN0aW9uVGltZXI7
CiAgICAgVGltZXIgbV9wcm9ncmVzc0V2ZW50VGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBlOWI5N2I5YTEyYWFkNjMxMjhiYWI5ZjU0MTVh
NGNkODQ2YjYwOWZhLi5iYmI5N2E4YjA5ZjA5OWEzMjdiMTk3MzZkN2Y4MjViMzM1OTQyNzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgpA
QCAtNTksNyArNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgZG91Ymxl
IGVsZW1lbnRNYWluQ29udGVudENoZWNrSW50ZXJ2YWwgPSAuMjUwOwogCiBzdGF0aWMgYm9vbCBp
c01haW5Db250ZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKLXN0YXRpYyBib29sIGlzRWxl
bWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwog
CiAjaWYgIUxPR19ESVNBQkxFRAogc3RhdGljIFN0cmluZyByZXN0cmljdGlvbk5hbWUoTWVkaWFF
bGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCkBAIC0xMzcs
NiArMTM3LDkgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0
aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW8KIAogdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJl
c3RyaWN0aW9uKQogeworICAgIGlmIChyZXN0cmljdGlvbiAmIFJlcXVpcmVVc2VyR2VzdHVyZVRv
Q29udHJvbENvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0
aW9uVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCiAgICAgTE9HKE1lZGlh
LCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbiAtIHJlbW92
aW5nICVzIiwgcmVzdHJpY3Rpb25OYW1lKHJlc3RyaWN0aW9uKS51dGY4KCkuZGF0YSgpKTsKICAg
ICBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247CiB9CkBAIC0yMTIsNjYgKzIxNSw3OSBA
QCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1p
bmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAorTWVk
aWFTZXNzaW9uSW5mbyBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVNlc3Npb25JbmZvKCkgY29u
c3QKK3sKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG1fZWxlbWVudC5yZW5kZXJlcigp
OworICAgIHJldHVybiB7CisgICAgICAgIHRoaXMsCisgICAgICAgIGNhblNob3dDb250cm9sc01h
bmFnZXIoKSwKKyAgICAgICAgcmVuZGVyZXIgJiYgcmVuZGVyZXItPnZpc2libGVJblZpZXdwb3J0
U3RhdGUoKSA9PSBSZW5kZXJFbGVtZW50OjpWaXNpYmxlSW5WaWV3cG9ydCwKKyAgICAgICAgbV9l
bGVtZW50LmlzUGxheWluZygpICYmIG1fZWxlbWVudC5oYXNBdWRpbygpICYmICFtX2VsZW1lbnQu
bXV0ZWQoKSwKKyAgICAgICAgbV9lbGVtZW50LmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgp
LAorICAgICAgICBtX21vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lCisgICAgfTsKK30KKwor
Ym9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3QK
IHsKICAgICBpZiAobV9lbGVtZW50LmlzRnVsbHNjcmVlbigpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1
cm5pbmcgVFJVRTogSXMgZnVsbHNjcmVlbiIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElz
IGZ1bGxzY3JlZW4iKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFt
X2VsZW1lbnQuaGFzQXVkaW8oKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyBh
dWRpbyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaWYgKG1fZWxlbWVu
dC5kb2N1bWVudCgpLmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgewotICAgICAgICBM
T0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkiKTsKKyAg
ICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFu
YWdlciAtIHJldHVybmluZyBGQUxTRTogYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXBsYXliYWNrUGVybWl0
dGVkKG1fZWxlbWVudCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogUGxheWJhY2sg
bm90IHBlcm1pdHRlZCIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBQbGF5YmFjayBub3Qg
cGVybWl0dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIWhh
c0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNN
YW5hZ2VyKSB8fCBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRp
YSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRy
b2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVp
cmVkIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVpcmVk
Iik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChoYXNCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVQbGF5YmFja1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcikgJiYgIW1f
ZWxlbWVudC5pc1BsYXlpbmcoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBOZWVk
cyB0byBiZSBwbGF5aW5nIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5lZWRzIHRvIGJl
IHBsYXlpbmciKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2Vs
ZW1lbnQubXV0ZWQoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBNdXRlZCIpOwor
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNN
YW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBNdXRlZCIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFtX2VsZW1lbnQuaGFzQXVkaW8oKSkgeworICAgICAgICBMT0co
TWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0
dXJuaW5nIEZBTFNFOiBObyBhdWRpbyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKG1fZWxlbWVudC5pc1ZpZGVvKCkpIHsKICAgICAgICAgaWYgKCFtX2VsZW1lbnQu
cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gcmVuZGVy
ZXIiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNo
b3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHJlbmRlcmVyIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9lbGVtZW50
LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5p
bmcgVFJVRTogSXMgbWVkaWEgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJV
RTogSXMgbWVkaWEgZG9jdW1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFtX2VsZW1lbnQuaGFzVmlkZW8oKSkgewotICAgICAgICAgICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdl
ciAtIHJldHVybmluZyBGQUxTRTogTm8gdmlkZW8iKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcg
RkFMU0U6IE5vIHZpZGVvIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoaXNFbGVtZW50TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChtX2VsZW1l
bnQpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5D
b250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1haW4gY29udGVudCIp
OworICAgICAgICBpZiAobV9lbGVtZW50LmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgpKSB7
CisgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29u
dHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1haW4gY29udGVudCIpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5n
IEZBTFNFOiBObyB1c2VyIGdlc3R1cmUiKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyB1c2Vy
IGdlc3R1cmUiKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTUwMiw2ICs1MTgsMTIgQEAg
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICAKIH0KIAordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKK3sKKyAgICBtX21vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lID0gMDsKKyAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2Vy
R2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlciB8IFJlcXVpcmVQbGF5YmFja1RvQ29udHJv
bENvbnRyb2xzTWFuYWdlcik7Cit9CisKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dz
UGljdHVyZUluUGljdHVyZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAog
ewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygp
OwpAQCAtNTU3LDcgKzU3OSw3IEBAIHN0YXRpYyBib29sIGlzTWFpbkNvbnRlbnQoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoIWlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQo
ZWxlbWVudCkpCisgICAgaWYgKCFlbGVtZW50LmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBFbGVtZW50cyB3aGljaCBhcmUgaGlk
ZGVuIGJ5IHN0eWxlLCBvciBoYXZlIGJlZW4gc2Nyb2xsZWQgb3V0IG9mIHZpZXcsIGNhbm5vdCBi
ZSBtYWluIGNvbnRlbnQuCkBAIC01OTYsNTIgKzYxOCw2IEBAIHN0YXRpYyBib29sIGlzTWFpbkNv
bnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIGJvb2wgaXNFbGVtZW50TGFyZ2VSZWxhdGl2ZVRvTWFpbkZyYW1lKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBt
aW5pbXVtUGVyY2VudGFnZU9mTWFpbkZyYW1lQXJlYUZvck1haW5Db250ZW50ID0gMC45OwotICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIGRvY3VtZW50RnJhbWUgPSBlbGVt
ZW50LmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWRvY3VtZW50RnJhbWUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZG9jdW1lbnRGcmFtZS0+bWFpbkZyYW1lKCkudmll
dygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiBtYWluRnJhbWVWaWV3ID0g
KmRvY3VtZW50RnJhbWUtPm1haW5GcmFtZSgpLnZpZXcoKTsKLSAgICBhdXRvIG1heFZpc2libGVD
bGllbnRXaWR0aCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRXaWR0aCgpLnRvSW50KCksIG1h
aW5GcmFtZVZpZXcudmlzaWJsZVdpZHRoKCkpOwotICAgIGF1dG8gbWF4VmlzaWJsZUNsaWVudEhl
aWdodCA9IHN0ZDo6bWluKHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKS50b0ludCgpLCBtYWluRnJh
bWVWaWV3LnZpc2libGVIZWlnaHQoKSk7Ci0KLSAgICByZXR1cm4gbWF4VmlzaWJsZUNsaWVudFdp
ZHRoICogbWF4VmlzaWJsZUNsaWVudEhlaWdodCA+IG1pbmltdW1QZXJjZW50YWdlT2ZNYWluRnJh
bWVBcmVhRm9yTWFpbkNvbnRlbnQgKiBtYWluRnJhbWVWaWV3LnZpc2libGVXaWR0aCgpICogbWFp
bkZyYW1lVmlldy52aXNpYmxlSGVpZ2h0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGlzRWxlbWVudExh
cmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkK
LXsKLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIGVsZW1lbnRNYWluQ29udGVudEFyZWFNaW5pbXVt
ID0gNDAwICogMzAwOwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bUFzcGVjdFJhdGlv
ID0gMS44OyAvLyBTbGlnaHRseSBsYXJnZXIgdGhhbiAxNjo5LgotICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgbWluaW11bUFzcGVjdFJhdGlvID0gLjU7IC8vIFNsaWdodGx5IHNtYWxsZXIgdGhhbiA5
OjE2LgotCi0gICAgLy8gRWxlbWVudHMgd2hpY2ggaGF2ZSBub3QgeWV0IGJlZW4gbGFpZCBvdXQs
IG9yIHdoaWNoIGFyZSBub3QgeWV0IGluIHRoZSBET00sIGNhbm5vdCBiZSBtYWluIGNvbnRlbnQu
Ci0gICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZG91YmxlIHdpZHRoID0gcmVuZGVy
ZXItPmNsaWVudFdpZHRoKCk7Ci0gICAgZG91YmxlIGhlaWdodCA9IHJlbmRlcmVyLT5jbGllbnRI
ZWlnaHQoKTsKLSAgICBkb3VibGUgYXJlYSA9IHdpZHRoICogaGVpZ2h0OwotICAgIGRvdWJsZSBh
c3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0OwotCi0gICAgaWYgKGFyZWEgPCBlbGVtZW50TWFp
bkNvbnRlbnRBcmVhTWluaW11bSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGFz
cGVjdFJhdGlvID49IG1pbmltdW1Bc3BlY3RSYXRpbyAmJiBhc3BlY3RSYXRpbyA8PSBtYXhpbXVt
QXNwZWN0UmF0aW8pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGlzRWxlbWVu
dExhcmdlUmVsYXRpdmVUb01haW5GcmFtZShlbGVtZW50KTsKLX0KLQogdm9pZCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjptYWluQ29udGVudENoZWNrVGltZXJGaXJlZCgpCiB7CiAgICAgaWYgKCFoYXNC
ZWhhdmlvclJlc3RyaWN0aW9uKE92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5D
b250ZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXgg
ZGE4ZDE1ODRjYTgwZjdjNWQxMTgyMjg2YmRlZjUwMjI2ODFlOWQ5YS4uMTJhY2ViMDdlY2M1MmE0
YzZkOWU4YzFlMTBjYzJhZjkwMDZlNjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFnZUFs
bG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKICAgICBib29s
IHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYp
IGNvbnN0OwogCi0gICAgYm9vbCBjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTWVkaWFTZXNzaW9uSW5mbyBtZWRpYVNlc3Npb25JbmZvKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQg
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKQEAgLTc4
LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYpOwogCisgICAgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRl
KCkgb3ZlcnJpZGU7CisKICAgICAvLyBSZXN0cmljdGlvbnMgdG8gbW9kaWZ5IGRlZmF1bHQgYmVo
YXZpb3JzLgogICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlvbkZsYWdzIDogdW5zaWduZWQgewog
ICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC0xMjcsNiArMTI5LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIHVwZGF0ZUlzTWFpbkNvbnRlbnQoKSBjb25zdDsKICAgICB2b2lkIG1haW5Db250
ZW50Q2hlY2tUaW1lckZpcmVkKCk7CiAKKyAgICBib29sIGNhblNob3dDb250cm9sc01hbmFnZXIo
KSBjb25zdDsKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1fZWxlbWVudDsKICAgICBCZWhhdmlv
clJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKIApAQCAtMTQwLDYgKzE0NCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzIHsg
ZmFsc2UgfTsKICNlbmRpZgogCisgICAgZG91YmxlIG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUgeyAwIH07CisKICAgICBtdXRhYmxlIGJvb2wgbV9pc01haW5Db250ZW50IHsgZmFsc2Ug
fTsKICAgICBUaW1lciBtX21haW5Db250ZW50Q2hlY2tUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5k
ZXggZGU1ZDg3ZjZkYzQ2NTQ0MmJkOGUwN2I5NTA1ZjAzNWYxMjkyMTAxYy4uMzA5ZTI5MzY3YTJm
YzBiOGZhYWQ5MzM5MTM0Y2E1NjQwMDNlZTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMjk5LDYgKzI5
OSwxMSBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzaG91bGRPdmVycmlkZUJhY2tncm91
bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRP
dmVycmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKTsKIH0KIAorTWVkaWFTZXNzaW9u
SW5mbyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHsgdGhpcywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAgfTsKK30KKwog
dm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFy
Z2V0Q2hhbmdlZChib29sIGlzV2lyZWxlc3MpCiB7CiAgICAgaWYgKGlzV2lyZWxlc3MgPT0gbV9p
c1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBiZmNlMmRmYTQ2
Mzk3NzA2MzMzNzI5OWExZWRmYmEzZGMwMjdhNjZmLi41MDRlZmY3ZDg0NGM0MmQ3MDlmNzZiYzA0
ZjUyZjBlNjhmYmY2ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ7CitzdHJ1Y3QgTWVkaWFTZXNzaW9uSW5mbzsK
IAogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb24KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb25JbmZvIG1lZGlhU2Vzc2lvbkluZm8oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxl
c3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQbGF5aW5nVG9XaXJlbGVzc1Bs
YXliYWNrVGFyZ2V0OyB9CiAgICAgdm9pZCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRDaGFuZ2VkKGJvb2wpOwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENhblByb2R1Y2VBdWRpbyhib29sKTsKIAogICAgIHZvaWQgc2NoZWR1bGVDbGllbnREYXRhQnVm
ZmVyaW5nQ2hlY2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0
ZSgpIHsgfTsKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBj
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtMTg3LDYgKzE4OSwyNiBAQCBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI7CiB9
OwogCitzdHJ1Y3QgTWVkaWFTZXNzaW9uSW5mbyB7CisgICAgTWVkaWFTZXNzaW9uSW5mbyhjb25z
dCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vzc2lvbiwgYm9vbCBjYW5TaG93Q29udHJvbHNNYW5h
Z2VyLCBib29sIGlzVmlzaWJsZUluVmlld3BvcnQsIGJvb2wgaXNQbGF5aW5nV2l0aEF1ZGlvLCBi
b29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCwgZG91YmxlIHRpbWVPZkxhc3RVc2VySW50
ZXJhY3Rpb24pCisgICAgICAgIDogc2Vzc2lvbihzZXNzaW9uKQorICAgICAgICAsIGNhblNob3dD
b250cm9sc01hbmFnZXIoY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgLCBpc1Zpc2li
bGVJblZpZXdwb3J0KGlzVmlzaWJsZUluVmlld3BvcnQpCisgICAgICAgICwgaXNQbGF5aW5nV2l0
aEF1ZGlvKGlzUGxheWluZ1dpdGhBdWRpbykKKyAgICAgICAgLCBpc0xhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQoaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KQorICAgICAgICAsIHRpbWVPZkxh
c3RVc2VySW50ZXJhY3Rpb24odGltZU9mTGFzdFVzZXJJbnRlcmFjdGlvbikKKyAgICB7CisgICAg
fQorCisgICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIHNlc3Npb247CisKKyAgICBib29s
IGNhblNob3dDb250cm9sc01hbmFnZXI7CisgICAgYm9vbCBpc1Zpc2libGVJblZpZXdwb3J0Owor
ICAgIGJvb2wgaXNQbGF5aW5nV2l0aEF1ZGlvOworICAgIGJvb2wgaXNMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50OworICAgIGRvdWJsZSB0aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uOworfTsKKwog
Y2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50KTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCmluZGV4IGVlYmExNWEwNWQ4MDQxODM1ZjI3NmQxYmZhYzFjYmI3NGE2YTk3OTUu
LmQzYjI1MjdhNGM2OTMyNzZmNTI2Mjg5ZTNiYTFmYzA2MDIzMjZjMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcApAQCAtMjgwLDEzICsyODAsMTMgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb24q
IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Npb24oKSBjb25zdAogICAg
IHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1QbGF0Zm9ybU1lZGlhU2Vzc2lvbiogUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6ZnVuY3Rp
b248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4gZmlsdGVyKQorVmVjdG9yPE1l
ZGlhU2Vzc2lvbkluZm8+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Np
b25JbmZvcygpCiB7Ci0gICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9zZXNzaW9ucykgewotICAg
ICAgICBpZiAoZmlsdGVyKCpzZXNzaW9uKSkKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9uOwot
ICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBWZWN0b3I8TWVkaWFTZXNzaW9uSW5mbz4g
bWF0Y2hpbmdTZXNzaW9uSW5mb3M7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9zZXNzaW9u
cykKKyAgICAgICAgbWF0Y2hpbmdTZXNzaW9uSW5mb3MuYXBwZW5kKHNlc3Npb24tPm1lZGlhU2Vz
c2lvbkluZm8oKSk7CisKKyAgICByZXR1cm4gbWF0Y2hpbmdTZXNzaW9uSW5mb3M7CiB9CiAgICAg
CiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbkNhbkxvYWRNZWRpYShj
b25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmgKaW5kZXggNWQxN2FiZDRlMjc1NjVmYWIwZDdhMGEzYTQ5NWM2NjkyOGEyZTk2OC4uZWIy
NDYzNjE3ZTIwNjM4MThmYzVmYmU5MTYwOWE1NzBkOTJlNzVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VycmVudFNlc3Np
b24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3Vy
cmVudFNlc3Npb24oKSBjb25zdDsKIAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50
U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiYpPik7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbkluZm8+IGN1cnJlbnRTZXNzaW9uSW5m
b3MoKTsKIAogICAgIHZvaWQgc2Vzc2lvbklzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dENoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICB2b2lkIHNlc3Npb25DYW5Qcm9k
dWNlQXVkaW9DaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGRiMDk3MDk0MjhiZTNhODhkMzg1YWI4MGY5MjUy
OTczMjQ3MjY5OTYuLjc1MzZiYzgwMzk4NzM0ZDQ4ZTg4OGE1NmEwYTc5OWFhMDdiNDIwNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC05MSw2ICs5MSw5IEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAgfQogICAgIG1faXNMaXN0ZW5pbmcgPSBmYWxz
ZTsKIAorICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJl
c2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKTsKKwogICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFF
bGVtZW50OwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYTIyOGExOWUxNWJmOTUwODJj
OWM5NDNlZTBlMGRlZjBjZjA2NmQ5ZC4uMmI4NDQ5ODYyYTRiNzRkODU2ODE4MTQxYTdiYzk3OGQw
YzRhOTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTQ1NTMsNiArNDU1MywxNyBAQCAtIChCT09MKV9oYXNBY3RpdmVWaWRlb0Zv
ckNvbnRyb2xzTWFuYWdlcgogewogICAgIHJldHVybiBfcGFnZSAmJiBfcGFnZS0+aGFzQWN0aXZl
VmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKTsKIH0KKworLSAodm9pZClfcmVxdWVzdENvbnRyb2xs
ZWRFbGVtZW50SUQKK3sKKyAgICBpZiAoX3BhZ2UpCisgICAgICAgIF9wYWdlLT5yZXF1ZXN0Q29u
dHJvbGxlZEVsZW1lbnRJRCgpOworfQorCistICh2b2lkKV9oYW5kbGVDb250cm9sbGVkRWxlbWVu
dElEUmVzcG9uc2U6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIC8vIE92ZXJyaWRkZW4g
Ynkgc3ViY2xhc3Nlcy4KK30KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIC8vIEV4ZWN1dGUg
dGhlIHN1cHBsaWVkIGJsb2NrIGFmdGVyIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGZyb20gdGhlIFdl
YlByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQ3YTUzMzc5N2QwMzE3NjAxNzgxYjJmZTUxOTNjMjBl
ZDA3ZmQ2NDEuLjlmMTEzMjU1ZDkxNDAwZjE2YjE4NTlhNDRmNzJkMDkwOTY2MjI1ZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCkBAIC0yNzEsNiArMjcxLDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dL
SW1tZWRpYXRlQWN0aW9uVHlwZSkgewogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01h
bmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfcmVx
dWVzdENvbnRyb2xsZWRFbGVtZW50SUQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSkpOworLSAodm9pZClfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogI2Vu
ZGlmCiAKIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jayBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAppbmRleCBkZmY4MjZh
NjMzNmM5YWI0YWFjZDUzMjgxNWVhNjcwMTU3ZTVkYWJhLi5mZThjYmIxZTY2OTYzNzlmZjg2NmMw
MjU0ODc0MTY3N2JjNmUwOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0x
MzksNiArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgUGxh
dGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIGNvbnRyb2xzTWFuYWdlckludGVyZmFj
ZSgpOworICAgIHZvaWQgcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKTsKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OwpAQCAtMTY5
LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwogICAgIHZvaWQgc2V0RHVyYXRpb24o
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pOwogICAgIHZvaWQgc2V0UmF0ZSh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSk7CisgICAgdm9p
ZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QsIFN0cmluZykgY29u
c3Q7CiAKICAgICAvLyBNZXNzYWdlcyB0byBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCiAgICAg
dm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1NDAzYTRiNGM2MDE1OTcyODMwODNlYmZjMzAw
NjJkOTIyMTU0ZmRkLi44MjViOWViNGQwOTQ0YWZlMjMzM2FmNWU3OTRkZjhjNmQ3MzU1ZjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM1
LDUgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IHsK
ICAgICBTZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSBy
YXRlKQogICAgIFNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29u
dGV4dElkKQogICAgIENsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQorCisgICAgSGFuZGxl
Q29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgU3RyaW5nIGlk
KQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCA4YzFmYTBj
MzBjOWYxYjUxNGEwZjU4NDZiNTAyYTAwYjc3MjA4NDMyLi42MjM4ODkzMTNlOWQxMTc5NzIzNWI5
OTJjZTJlMzBlYmEzMjJjMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAg
LTM0Myw2ICszNDMsMTkgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywKICAgICBpbnRlcmZhY2Ut
PnNldFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKIH0KIAorCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90
IGNvbnRleHRJZCwgU3RyaW5nIGlkZW50aWZpZXIpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGlmIChjb250ZXh0SWQgPT0gbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAg
ICAgIG1fcGFnZS0+aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGlkZW50aWZpZXIp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKKyAgICBVTlVTRURfUEFSQU0o
aWRlbnRpZmllcik7CisjZW5kaWYKK30KKworCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlcgogCiB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCkBAIC00MDUsNiArNDE4LDEyIEBAIHZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
dWludDY0X3QgY29udGV4dElkCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRl
eCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQoreworICAgIGlmIChtX2NvbnRy
b2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCht
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCiBQbGF0
Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKQogewogICAgIGlmICghbV9jb250cm9s
c01hbmFnZXJDb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRl
eCAzNTgxYTIxMDYwZWFhZTM5Nzg2MDNmMjBiNTYwNDVjODRhM2E1MjQwLi4xYjI0ZGIyNzVlOGNl
MGIyMGI2Y2VlNGYzMDViNWJmNTljODFlYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTI0Nyw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJT
dHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3QgU3RyaW5nJikgPSAw
OwogCiAgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXllckluTGF5ZXJCYWNrZWRXaW5kb3dD
b29yZGluYXRlcyhDQUxheWVyICopIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMmVmZjIyNzJjNzg3NmFiZDZmMzExNTRjM2FmYTk3
MGVmNGNhOWNhLi42NGI3ZDcxOWZlNjBjNjg1Yjg3ZmY5ZjIwYWQ3MWYyZGVjYjM2YmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjI5OCw2ICs2Mjk4
LDE5IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdl
cigpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RDb250cm9s
bGVkRWxlbWVudElEKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCisgICAgaWYgKG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9wbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLT5yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2Uo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAoreworICAgIG1fcGFnZUNsaWVudC5oYW5k
bGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoaWRlbnRpZmllcik7Cit9CisKIGJvb2wgV2Vi
UGFnZVByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzg2Mjc2NjQ5ODM3ZmFjYmQyN2VmMDU5Nzg5NGQyZmQ1
NjNkNDQ1Mi4uN2RkNjdmOGE0NGUxMjI2YzM0NzIzNDk1ODhkZDI3YzljOGM5NmQ5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTAzMSw2ICsxMDMxLDggQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHZpZGVvQ29udHJvbHNNYW5hZ2Vy
RGlkQ2hhbmdlKCk7CiAgICAgYm9vbCBoYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigp
IGNvbnN0OworICAgIHZvaWQgcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKSBjb25zdDsKKyAg
ICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICBib29sIGlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25z
dDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsLmgKaW5kZXggZDIxY2E1MmE1YWZjN2ZhODljN2JkZjlmMzNiODlkNjA3NDRhZDEyMi4uNTI1
OWZiNWI3MjVjYTQ3NjkyZWFkN2FhNDg1OTAxMjEzYzdhYjZlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsTG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVy
ZVNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElE
UmVzcG9uc2UoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFBlcmZvcm1J
bW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiwgYm9vbCBj
b250ZW50UHJldmVudHNEZWZhdWx0LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgIHZvaWQq
IGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0
cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQSTo6T2JqZWN0Pikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5t
bQppbmRleCA1M2I5YmM3OTU1MzA3MmY0N2E2MjBmNTZkNjhiMWU4MDQyZGYwMWI4Li5hYmY2NGY5
NmU4NTcxZjYwNjVjNDZmZjhmMDdiZWZjOTQxNDdiZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTc1Miw2ICs3NTIsMTEgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpCiAgICAg
ICAgIGdlc3R1cmVDb250cm9sbGVyLT5yZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgW21fd2ViVmlldyBfaGFuZGxlQ29udHJvbGxlZEVs
ZW1lbnRJRFJlc3BvbnNlOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaWRlbnRpZmllcildOwor
fQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCmluZGV4IDAxZmZlZDIx
OWUxZWE3MzdhMjBmZDk2ZTNjMDMwMWE4MmZkMDYwMTAuLjgxMjNhNzI4MzQ3MWM3MjI1MjYxODE1
NDRlZGUzMmNjMDU2Y2EzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCkBAIC0xMzgsNiArMTM4
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElk
KTsKICAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1
aW50NjRfdCBpbmRleCk7CiAgICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0
X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBoYW5kbGVDb250cm9sbGVk
RWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgV2ViUGFnZSogbV9w
YWdlOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIHVpbnQ2NF90PiBt
X21lZGlhRWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4K
aW5kZXggYjU2YzU5ZTMxNDM0YTY3OWQ1NGQ4YTM2MDM3OWMzYTdmZjNmZDU1Ni4uYjcxNDA0ZWNj
MmE5YTViNDg3YTBhYjc5YjY1NTczZDg2MjRhOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzUsNSArMzUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyIHsKICAgICBFbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgU2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90
IGluZGV4KQogICAgIFNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQs
IHVpbnQ2NF90IGluZGV4KQorICAgIEhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVp
bnQ2NF90IGNvbnRleHRJZCkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4
IDk2NjFmZDYwODVjN2JjZDg1MGY3ZTY2MDJmNzZmOTM4MTZjMTI3MWIuLmY0NjdjMjI1OWNiMGZj
ZTE1OGE1MDA3ZTk2MDE0NTBhYzIzZDI2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAg
LTQxNyw2ICs0MTcsMTMgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW4KICAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9CiAKK3ZvaWQg
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVl
c3QodWludDY0X3QgY29udGV4dElkKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQgKmVsZW1lbnQg
PSBlbnN1cmVNb2RlbChjb250ZXh0SWQpLm1lZGlhRWxlbWVudCgpOworICAgIGlmIChlbGVtZW50
KQorICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnRleHRJZCwgZWxl
bWVudC0+Z2V0SWRBdHRyaWJ1dGUoKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBhYmExNGFhYWY0MTg3ZTgwNGIwYTgzODAxMjg5ZDhjMGU0YzM1NTQ1
Li45MWJjZTgzMzk3ZmIwMDk4NjExMjVjYjdhODFhOTE0MTY5ZTcyOGE2IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIw
MTYtMDktMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVmYWN0b3IgdGhlIGhldXJpc3RpYyBmb3Igc2hvd2luZyBtZWRpYSBjb250cm9scyB0byB0
YWtlIGFsbCBtZWRpYSBzZXNzaW9ucyBpbnRvIGFjY291bnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTUwMworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjgwMzM3ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkcyBuZXcgdW5pdCB0ZXN0cyB2ZXJpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIG1lZGlh
IHBsYXliYWNrIGNvbnRyb2xzIHdoZW4gc2Nyb2xsaW5nIGFub3RoZXIgdmlkZW8gaW50byB2aWV3
LgorICAgICAgICBQbGVhc2Ugc2VlIHRoZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRh
aWxzIGFib3V0IHRoaXMgY2hhbmdlLiBBbHNvIHJlZmFjdG9ycyBleGlzdGluZworICAgICAgICBW
aWRlb0NvbnRyb2xzTWFuYWdlciB0ZXN0cyBieSBmb2xkaW5nIGR1cGxpY2F0ZWQgc2V0dXAgYW5k
IHRlc3RpbmcgbG9naWMgaW50byBoZWxwZXIgbWV0aG9kcyB0byBtYWtlIHRoZSB1bml0CisgICAg
ICAgIHRlc3RzIG1vcmUgcmVhZGFibGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAgICAg
KC1bTWVzc2FnZUhhbmRsZXIgaW5pdFdpdGhNZXNzYWdlOmhhbmRsZXI6XSk6CisgICAgICAgICgt
W01lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVz
c2FnZTpdKToKKyAgICAgICAgKC1bVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBwZXJm
b3JtQWZ0ZXJMb2FkaW5nOl0pOgorICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOl0pOgorICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFu
YWdlclRlc3RXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOmFuZEV4cGVjdENvbnRyb2xzTWFuYWdl
cjphZnRlclJlY2VpdmluZ01lc3NhZ2U6XSk6CisgICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5h
Z2VyVGVzdFdlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTphY3Rpb246XSk6Cisg
ICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcgY29udHJvbGxlZEVsZW1l
bnRJRF0pOgorICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IF9oYW5k
bGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2U6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICgtW01lZGlhUGxheWJhY2tNZXNzYWdlSGFu
ZGxlciBpbml0V2l0aFdLV2ViVmlldzpmaW5hbE1lc3NhZ2VTdHJpbmc6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xs
ZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW09uTG9h
ZE1lc3NhZ2VIYW5kbGVyIGluaXRXaXRoV0tXZWJWaWV3OmhhbmRsZXI6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW09uTG9hZE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRS
ZWNlaXZlU2NyaXB0TWVzc2FnZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHBl
cmZvcm1BZnRlckxvYWRpbmc6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12
aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5n
LXNjcm9sbC10by12aWRlby5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZp
ZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA4
LTI5ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFV1Mg
cGF0Y2ggc3RhdHVzIHBhZ2Ugc2hvdWxkIGluZGljYXRlIGJvdCBjb3JyZXNwb25kaW5nIHRvIGVh
Y2ggc3RhdHVzIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTcwYjkwMmUzNDg4
MWRlNTRjYTZhYzk0YzBlNGE2OTQ2ZjZkYTk2Ny4uOTMyYjkwMjc0MDI2YjlmNzJhOThmNDJjYmFk
ZGIwODY1NGFlYjE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyLDYgKzYyLDEyIEBA
CiAJCTJFMURGREVEMUQ0MkE1MTEwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFMURGREVDMUQ0MkE0MUMwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1s
ICovOyB9OwogCQkyRTFERkRFRjFENDJBNkYyMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgt
YXVkaW8tYXV0b3BsYXkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRFRTFENDJBNkVCMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9z
LXdpdGgtYXVkaW8tYXV0b3BsYXkuaHRtbCAqLzsgfTsKIAkJMkUxREZERjExRDQyRTFFNDAwNzE0
QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lu
bmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKKwkJMkU2OTFBRUExRDc4QjUz
NjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTY5MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRl
cy1jb250cm9scy5odG1sICovOyB9OworCQkyRTY5MUFFQjFENzhCNTM2MDAxMjk0MDcgLyogbGFy
Z2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFOTFENzhCNTJC
MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRt
bCAqLzsgfTsKKwkJMkU2OTFBRUQxRDc4QjkxMDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5
aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwg
Ki87IH07CisJCTJFNjkxQUVGMUQ3OURFODQwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3Bs
YXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFRTFENzlERTZGMDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwgKi87IH07CisJCTJFNjkxQUYx
MUQ3OUU1MUEwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZp
ZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU2OTFBRjAxRDc5RTUxNDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWlu
Zy1zY3JvbGwtdG8tdmlkZW8uaHRtbCAqLzsgfTsKKwkJMkU2OTFBRjMxRDc5RTc1RTAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFGMjFENzlFNzU0MDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sICovOyB9OwogCQky
RTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBt
YWluSU9TLm1tICovOyB9OwogCQkyRTc3NjVDRjE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNF
MTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tICovOyB9OwogCQkzM0JFNUFGOTEzN0I1QUFF
MDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEz
IC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTUxNiw2ICs1MjIs
MTIgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZv
bGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJMkU2OTFBRjMxRDc5RTc1RTAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKKwkJCQkyRTY5MUFGMTFENzlFNTFBMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9w
bGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJF
NjkxQUVGMUQ3OURFODQwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2st
dG8tcGF1c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFFRDFENzhCOTEw
MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJv
bHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFFQTFENzhCNTM2MDAxMjk0
MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAorCQkJCTJFNjkxQUVCMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12
aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFj
Y2VwdHNGaXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODcx
Qzg5MjVBMDAwQTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNzM2
LDYgKzc0OCwxMiBAQAogCQkyRTFERkRFQzFENDJBNDFDMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9z
LXdpdGgtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRl
b3Mtd2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxREZE
RUUxRDQyQTZFQjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8t
YXV0b3BsYXkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMURGREYwMUQ0
MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1h
ZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRl
by1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12
aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMt
Y29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNjkxQUVDMUQ3
OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1j
b250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1w
bGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyRTY5MUFFRTFENzlERTZGMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1
dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFGMDFENzlFNTE0MDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNjkxQUYyMUQ3OUU3NTQwMDEyOTQw
NyAvKiBsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1h
aW5JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBtYWluSU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTc3NjVDRTE2QzREODExMDBCQTJC
QjEgLyogbWFpbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IG1haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzM0I5Q0UxMTI3N0Yy
MzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVtcHR5VXNlckFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODcsNiArMTQwNSwxMiBAQAogCQlBMTZGNjZCODFDNDBF
OUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkyRTY5MUFGMjFENzlFNzU0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW8t
cGxheWluZy1zY3JvbGwtYXdheS5odG1sICovLAorCQkJCTJFNjkxQUYwMUQ3OUU1MTQwMDEyOTQw
NyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwgKi8sCisJ
CQkJMkU2OTFBRUUxRDc5REU2RjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1j
bGljay10by1wYXVzZS5odG1sICovLAorCQkJCTJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBs
YXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovLAor
CQkJCTJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVv
LWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8sCisJCQkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8q
IGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8sCiAJCQkJ
NUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgKi8sCiAJCQkJ
NUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htICovLAog
CQkJCTVDOUU1OTQwMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Zp
ZGVvQ29udHJvbHNNYW5hZ2VyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KaW5kZXggZmFkNWEzYWU0OGZiMDYxY2ZhYzhl
YjYzZWQ5YTY3ZjRkNzNiYmEyZi4uYTFmOGUzNDk3MmY4NTczNjBlYmM2YThkYmRlYWI3NWUxNGJj
YWI5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
VmlkZW9Db250cm9sc01hbmFnZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KQEAgLTM3LDE3NCArMzcsMTYxIEBA
CiAKICNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCiAKLXN0YXRpYyBib29sIHRlc3RlZENvbnRyb2xz
TWFuYWdlckFmdGVyUGxheWluZzsKLXN0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsK
LQotQGludGVyZmFjZSBNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4gewotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93ZWJWaWV3
OwotfQotCi1AcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBleHBlY3RlZFRvSGF2ZUNvbnRyb2xz
TWFuYWdlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIE5TU3RyaW5nICpmaW5hbE1l
c3NhZ2VTdHJpbmc7Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJW
aWV3Kil3ZWJWaWV3IGZpbmFsTWVzc2FnZVN0cmluZzooTlNTdHJpbmcgKilmaW5hbE1lc3NhZ2VT
dHJpbmc7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZp
ZXcgZmluYWxNZXNzYWdlU3RyaW5nOihOU1N0cmluZyAqKWZpbmFsTWVzc2FnZVN0cmluZwotewot
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF9maW5hbE1lc3NhZ2VTdHJpbmcgPSBmaW5hbE1l
c3NhZ2VTdHJpbmc7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KK0BpbnRlcmZhY2UgV0tXZWJWaWV3
IChXS1dlYlZpZXdBZGRpdGlvbnMpCiAKLS0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihX
S1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQotewotICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IHRydWU7CistICh2b2lkKV9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xz
Rm9yVGVzdGluZzsKIAotICAgIE5TU3RyaW5nICpib2R5U3RyaW5nID0gKE5TU3RyaW5nICopW21l
c3NhZ2UgYm9keV07Ci0gICAgaWYgKFtib2R5U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpzZWxmLmZp
bmFsTWVzc2FnZVN0cmluZ10pIHsKLSAgICAgICAgQk9PTCBoYXNDb250cm9sc01hbmFnZXIgPSBb
X3dlYlZpZXcgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsKLSAgICAgICAgaWYg
KHNlbGYuZXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXIpCi0gICAgICAgICAgICBFWFBFQ1Rf
VFJVRShoYXNDb250cm9sc01hbmFnZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBFWFBF
Q1RfRkFMU0UoaGFzQ29udHJvbHNNYW5hZ2VyKTsKLSAgICAgICAgdGVzdGVkQ29udHJvbHNNYW5h
Z2VyQWZ0ZXJQbGF5aW5nID0gdHJ1ZTsKLSAgICB9Ci19CiBAZW5kCiAKLUBpbnRlcmZhY2UgT25M
b2FkTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gewot
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93ZWJWaWV3OworQGludGVyZmFjZSBNZXNzYWdlSGFu
ZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiB7CisgICAgZGlzcGF0Y2hf
YmxvY2tfdCBfaGFuZGxlcjsKKyAgICBOU1N0cmluZyAqX21lc3NhZ2U7CiB9CiAKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBzdHJvbmcpIGRpc3BhdGNoX2Jsb2NrX3Qgb25sb2FkSGFuZGxlcjsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBoYW5kbGVy
OihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdL
V2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFu
ZGxlcjsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIE9uTG9hZE1lc3NhZ2VIYW5kbGVyCitAaW1w
bGVtZW50YXRpb24gTWVzc2FnZUhhbmRsZXIKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tX
ZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXcgaGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCloYW5k
bGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ug
aGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCloYW5kbGVyCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfd2ViVmlldyA9IHdlYlZp
ZXc7Ci0gICAgX29ubG9hZEhhbmRsZXIgPSBoYW5kbGVyOworICAgIF9oYW5kbGVyID0gW2hhbmRs
ZXIgY29weV07CisgICAgX21lc3NhZ2UgPSBtZXNzYWdlOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3Jp
cHRNZXNzYWdlICopbWVzc2FnZQogewotICAgIGlmICghWyhOU1N0cmluZyAqKVttZXNzYWdlIGJv
ZHldIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZCJdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoX29ubG9hZEhhbmRsZXIpCi0gICAgICAgIF9vbmxvYWRIYW5kbGVyKCk7Ci0KLSAgICBfb25s
b2FkSGFuZGxlciA9IG5pbDsKKyAgICBpZiAoWyhOU1N0cmluZyAqKVttZXNzYWdlIGJvZHldIGlz
RXF1YWxUb1N0cmluZzpfbWVzc2FnZV0gJiYgX2hhbmRsZXIpCisgICAgICAgIF9oYW5kbGVyKCk7
CiB9Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1dlYlZpZXdBZGRpdGlvbnMpCi0K
LS0gKHZvaWQpX2ludGVyYWN0V2l0aE1lZGlhQ29udHJvbHNGb3JUZXN0aW5nOwogCiBAZW5kCiAK
LUBpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0aW5nQWRkaXRpb25zKQorQGludGVyZmFjZSBWaWRl
b0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IDogV0tXZWJWaWV3CiAKIC0gKHZvaWQpbW91c2VE
b3duQXRQb2ludDooTlNQb2ludClwb2ludDsKIC0gKHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzoo
ZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zOworLSAodm9pZClsb2FkVGVzdFBhZ2VOYW1lZDooTlNT
dHJpbmcgKilwYWdlTmFtZTsKKy0gKHZvaWQpbG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICop
cGFnZU5hbWUgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOihCT09MKWV4cGVjdENvbnRyb2xzTWFu
YWdlciBhZnRlclJlY2VpdmluZ01lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKKy0gKHZvaWQp
cGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjoo
ZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb247CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKmNvbnRyb2xsZWRFbGVtZW50SUQ7CiAKIEBlbmQKIAotQGltcGxlbWVudGF0
aW9uIFdLV2ViVmlldyAoVGVzdGluZ0FkZGl0aW9ucykKK0BpbXBsZW1lbnRhdGlvbiBWaWRlb0Nv
bnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IHsKKyAgICBib29sIF9pc0RvbmVRdWVyeWluZ0NvbnRy
b2xsZWRFbGVtZW50SUQ7CisgICAgTlNTdHJpbmcgKl9jb250cm9sbGVkRWxlbWVudElEOworfQog
CiAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgewogICAgIFtzZWxmIG1v
dXNlRG93bjpbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVMZWZ0TW91c2VE
b3duIGxvY2F0aW9uOk5TTWFrZVBvaW50KHBvaW50LngsIHBvaW50LnkpIG1vZGlmaWVyRmxhZ3M6
MCB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpIHdpbmRvd051bWJlcjowIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBldmVudE51bWJlcjowIGNsaWNrQ291
bnQ6MCBwcmVzc3VyZTowXV07CiB9CiAKIC0gKHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlz
cGF0Y2hfYmxvY2tfdClhY3Rpb25zIHsKLSAgICBPbkxvYWRNZXNzYWdlSGFuZGxlciAqaGFuZGxl
ciA9IFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OnNlbGYg
aGFuZGxlcjphY3Rpb25zXTsKKyAgICBNZXNzYWdlSGFuZGxlciAqaGFuZGxlciA9IFtbTWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoTWVzc2FnZTpAImxvYWRlZCIgaGFuZGxlcjphY3Rpb25z
XTsKICAgICBOU1N0cmluZyAqb25sb2FkU2NyaXB0ID0gQCJ3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24oKSB7IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLm9ubG9hZEhhbmRsZXIucG9zdE1l
c3NhZ2UoJ2xvYWRlZCcpOyB9IjsKICAgICBXS1VzZXJTY3JpcHQgKnNjcmlwdCA9IFtbV0tVc2Vy
U2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpvbmxvYWRTY3JpcHQgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6
Tk9dOwotICAgIFtbW3NlbGYgY29uZmlndXJhdGlvbl0gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRVc2VyU2NyaXB0OnNjcmlwdF07Ci0gICAgW1tbc2VsZiBjb25maWd1cmF0aW9uXSB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIgbmFtZTpAIm9u
bG9hZEhhbmRsZXIiXTsKKworICAgIFdLVXNlckNvbnRlbnRDb250cm9sbGVyKiBjb250ZW50Q29u
dHJvbGxlciA9IFtbc2VsZiBjb25maWd1cmF0aW9uXSB1c2VyQ29udGVudENvbnRyb2xsZXJdOwor
ICAgIFtjb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OnNjcmlwdF07CisgICAgW2NvbnRl
bnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIgbmFtZTpAIm9ubG9h
ZEhhbmRsZXIiXTsKK30KKworLSAodm9pZClsb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilw
YWdlTmFtZQoreworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpwYWdlTmFt
ZSB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07CisgICAgW3NlbGYgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Cit9CisKKy0gKHZvaWQp
bG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWUgYW5kRXhwZWN0Q29udHJvbHNN
YW5hZ2VyOihCT09MKWV4cGVjdENvbnRyb2xzTWFuYWdlciBhZnRlclJlY2VpdmluZ01lc3NhZ2U6
KE5TU3RyaW5nICopbWVzc2FnZQoreworICAgIF9fYmxvY2sgYm9vbCBkb25lV2FpdGluZyA9IGZh
bHNlOworICAgIFtzZWxmIHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6bWVzc2FnZSBhY3Rp
b246XiB7CisgICAgICAgIEJPT0wgaGFzVmlkZW9Gb3JDb250cm9sc01hbmFnZXIgPSBbc2VsZiBf
aGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXJdOworICAgICAgICBpZiAoZXhwZWN0Q29u
dHJvbHNNYW5hZ2VyKQorICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFzVmlkZW9Gb3JDb250cm9s
c01hbmFnZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFzVmlk
ZW9Gb3JDb250cm9sc01hbmFnZXIpOworICAgICAgICBkb25lV2FpdGluZyA9IHRydWU7CisgICAg
fV07CisKKyAgICBbc2VsZiBsb2FkVGVzdFBhZ2VOYW1lZDpwYWdlTmFtZV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lV2FpdGluZyk7Cit9CisKKy0gKHZvaWQpcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGFjdGlvbjooZGlzcGF0Y2hf
YmxvY2tfdClhY3Rpb24KK3sKKyAgICBSZXRhaW5QdHI8TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoTWVzc2FnZTptZXNzYWdl
IGhhbmRsZXI6YWN0aW9uXSk7CisgICAgW1tbc2VsZiBjb25maWd1cmF0aW9uXSB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpA
InBsYXlpbmdIYW5kbGVyIl07Cit9CisKKy0gKE5TU3RyaW5nICopY29udHJvbGxlZEVsZW1lbnRJ
RAoreworICAgIF9pc0RvbmVRdWVyeWluZ0NvbnRyb2xsZWRFbGVtZW50SUQgPSBmYWxzZTsKKyAg
ICBbc2VsZiBfcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SURdOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmX2lzRG9uZVF1ZXJ5aW5nQ29udHJvbGxlZEVsZW1lbnRJRCk7CisgICAgcmV0
dXJuIF9jb250cm9sbGVkRWxlbWVudElEOworfQorCistICh2b2lkKV9oYW5kbGVDb250cm9sbGVk
RWxlbWVudElEUmVzcG9uc2U6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAgIF9jb250cm9s
bGVkRWxlbWVudElEID0gW2lkZW50aWZpZXIgY29weV07CisgICAgX2lzRG9uZVF1ZXJ5aW5nQ29u
dHJvbGxlZEVsZW1lbnRJRCA9IHRydWU7CiB9CiAKIEBlbmQKIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCi1URVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdl
clNpbmdsZUxhcmdlVmlkZW8pCitSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2Vi
Vmlldyo+IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU1JlY3Qg
ZnJhbWUpCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRs
ZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0
aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7
Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLQorICAg
IFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6ZnJhbWUgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgUmV0YWlu
UHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFtbd2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogCisgICAgcmV0dXJu
IHdlYlZpZXc7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyU2luZ2xlTGFyZ2VWaWRlbykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCiAgICAgLy8gQSBs
YXJnZSB2aWRlbyB3aXRoIGF1ZGlvIHNob3VsZCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciBldmVu
IGlmIGl0IGlzIHBsYXllZCB2aWEgc2NyaXB0IGxpa2UgdGhpcyB2aWRlby4KICAgICAvLyBTbyB0
aGUgZXhwZWN0YXRpb24gaXMgWUVTLgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29u
dHJvbHNNYW5hZ2VyOllFU107Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAibGFyZ2UtdmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250
cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0
ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJdOwogfQogCiBURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsVmlkZW8pCiB7Ci0gICAgUmV0
YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92
aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFp
blB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVk
aWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3
LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRv
dz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0
Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5n
Ok5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50
Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAg
Ly8gQSBzbWFsbCB2aWRlbyB3aWxsIG5vdCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciB1bmxlc3Mg
aXQgc3RhcnRlZCBwbGF5aW5nIGJlY2F1c2Ugb2YgYSB1c2VyIGdlc3R1cmUuIFNpbmNlIHRoaXMK
ICAgICAvLyB2aWRlbyBpcyBzdGFydGVkIHdpdGggYSBzY3JpcHQsIHRoZSBleHBlY3RhdGlvbiBp
cyBOTy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107
Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0aC1hdWRp
byIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcp
OwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
KyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4
cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07
CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVs
dGlwbGVWaWRlb3NXaXRoQXVkaW8pCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBfX2Jsb2NrIEJP
T0wgZGlkU2hvd01lZGlhQ29udHJvbHM7CiAgICAgX19ibG9jayBib29sIGlzRG9uZUxvYWRpbmcg
PSBmYWxzZTsKIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKLSAgICBSZXRhaW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRs
ZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJW
aWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxlcjpeKCkgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRl
ckxvYWRpbmc6XiB7CiAgICAgICAgIGRpZFNob3dNZWRpYUNvbnRyb2xzID0gW3dlYlZpZXcgX2hh
c0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsKICAgICAgICAgaXNEb25lTG9hZGluZyA9
IHRydWU7Ci0gICAgfV0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9u
bG9hZEhhbmRsZXIiXTsKKyAgICB9XTsKIAotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJs
YXJnZS12aWRlb3Mtd2l0aC1hdWRpbyJdOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmVMb2FkaW5nKTsKICAgICBFWFBFQ1RfRkFMU0UoZGlkU2hvd01lZGlhQ29udHJvbHMp
OwpAQCAtMjEyLDE3NSArMTk5LDE1NiBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0aEF1ZGlvKQogCiBURVNUKFZpZGVvQ29u
dHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0aEF1ZGlv
QW5kQXV0b3BsYXkpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rp
b25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJW
aWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdl
cihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBfX2Jsb2NrIEJPT0wgZGlkU2hv
d01lZGlhQ29udHJvbHM7CiAgICAgX19ibG9jayBib29sIGlzRG9uZUxvYWRpbmcgPSBmYWxzZTsK
IAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFs
bG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3Jk
ZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9d
KTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsK
LSAgICBSZXRhaW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9w
dE5TKFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZp
ZXcuZ2V0KCkgaGFuZGxlcjpeKCkgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6
XiB7CiAgICAgICAgIGRpZFNob3dNZWRpYUNvbnRyb2xzID0gW3dlYlZpZXcgX2hhc0FjdGl2ZVZp
ZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsKICAgICAgICAgaXNEb25lTG9hZGluZyA9IHRydWU7Ci0g
ICAgfV0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRs
ZXIiXTsKKyAgICB9XTsKIAotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
ImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJs
YXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheSJdOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmVMb2FkaW5nKTsKICAgICBFWFBFQ1RfVFJVRShkaWRTaG93TWVkaWFD
b250cm9scyk7CiB9CiAKLVRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQorVEVTVChWaWRlb0NvbnRyb2xzTWFu
YWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Njcm9sbFBhdXNlZFZpZGVv
T3V0T2ZWaWV3KQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9u
Rm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBw
bGF5YmFja0hhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpA
InBhdXNlZCJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpwbGF5YmFja0hhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlp
bmdIYW5kbGVyIl07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
KE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3
ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmll
d10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMiIGFuZEV4cGVj
dENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZWQiXTsKK30K
IAotICAgIFJldGFpblB0cjxPbkxvYWRNZXNzYWdlSGFuZGxlcj4gb25sb2FkSGFuZGxlciA9IGFk
b3B0TlMoW1tPbkxvYWRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2Vi
Vmlldy5nZXQoKSBoYW5kbGVyOl4oKSB7Ci0gICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9p
bnQ6TlNNYWtlUG9pbnQoNTAsIDUwKV07Ci0gICAgfV0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRs
ZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKK1RFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQbGF5aW5nVmlkZW9X
aXRoU291bmRPdXRPZlZpZXcpCit7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2Vy
VGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJv
bHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKKworICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJv
bHMiIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAi
cGxheWluZyJdOworfQogCi0gICAgLy8gQSBzbWFsbCB2aWRlbyBzaG91bGQgaGF2ZSBhIGNvbnRy
b2xzIG1hbmFnZXIgYWZ0ZXIgdGhlIGZpcnN0IHVzZXIgZ2VzdHVyZSwgd2hpY2ggaW5jbHVkZXMg
cGF1c2luZyB0aGUgdmlkZW8uIFRoZSBleHBlY3RhdGlvbiBpcyBZRVMuCi0gICAgW3BsYXliYWNr
SGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVk
aW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKK1RFU1QoVmlk
ZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3Jv
bGxQbGF5aW5nTXV0ZWRWaWRlb091dE9mVmlldykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOwogCi0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlp
bmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy1wbGF5aW5n
LW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8g
YWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJdOwogfQogCi1URVNUKFZpZGVvQ29udHJv
bHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtz
QWZ0ZXJFbmRpbmcpCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFu
YWdlck11bHRpcGxlVmlkZW9zU2hvd0NvbnRyb2xzRm9yTGFzdEludGVyYWN0ZWRWaWRlbykKIHsK
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmln
dXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0g
V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0
TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3
OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAiZW5kZWQiXSk7Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKKyAgICBSZXRhaW5QdHI8Vmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JU
ZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOwor
ICAgIE5TUG9pbnQgY2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDQwMCwgMzAwKTsKIAotICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0
V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBb
W3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBbd2Vi
VmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4geworICAgICAgICBbd2ViVmlldyBtb3VzZURvd25B
dFBvaW50OmNsaWNrUG9pbnRdOworICAgIH1dOwogCi0gICAgLy8gU2luY2UgdGhlIHZpZGVvIGhh
cyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PIGV2ZW4gaWYgdGhlIHBhZ2UgcHJvZ3JhbW1h
dGljYWxseSBzZWVrcyB0byB0aGUgYmVnaW5uaW5nLgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVk
VG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIF9fYmxvY2sgYm9vbCBmaXJzdFZpZGVv
UGF1c2VkID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIHNlY29uZFZpZGVvUGF1c2VkID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlZCIg
YWN0aW9uOl4geworICAgICAgICBOU1N0cmluZyAqY29udHJvbGxlZEVsZW1lbnRJRCA9IFt3ZWJW
aWV3IGNvbnRyb2xsZWRFbGVtZW50SURdOworICAgICAgICBpZiAoZmlyc3RWaWRlb1BhdXNlZCkg
eworICAgICAgICAgICAgc2Vjb25kVmlkZW9QYXVzZWQgPSB0cnVlOworICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoW2NvbnRyb2xsZWRFbGVtZW50SUQgaXNFcXVhbFRvU3RyaW5nOkAic2Vjb25kIl0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2lu
dDpjbGlja1BvaW50XTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb250cm9sbGVkRWxlbWVu
dElEIGlzRXF1YWxUb1N0cmluZzpAImZpcnN0Il0pOworICAgICAgICB9CisgICAgICAgIGZpcnN0
VmlkZW9QYXVzZWQgPSB0cnVlOworICAgIH1dOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZSJd
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2Vjb25kVmlkZW9QYXVzZWQpOwogfQog
Ci1URVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0
b3BsYXlpbmdWaWRlb1NlZWtzQW5kUGxheXNBZnRlckVuZGluZykKK1RFU1QoVmlkZW9Db250cm9s
c01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTd2l0Y2hDb250cm9s
bGVkVmlkZW9XaGVuU2Nyb2xsaW5nKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJp
bmc6QCJyZXBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWlu
Z0hhbmRsZXIiXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmll
dyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIo
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkpOwogCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3
aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dl
YlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIF9fYmxvY2sgYm9vbCBzY3JvbGxlZFNl
Y29uZFZpZGVvSW50b1ZpZXcgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAImxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8iXTsKKyAgICBbd2Vi
VmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAic2Nyb2xsZWQiIGFjdGlvbjpeIHsK
KyAgICAgICAgc2Nyb2xsZWRTZWNvbmRWaWRlb0ludG9WaWV3ID0gdHJ1ZTsKKyAgICB9XTsKIAot
ICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBpcyBzdGlsbCBwbGF5aW5nLCB0aGUgZXhwZWN0YXRpb24g
aXMgWUVTIGV2ZW4gaWYgdGhlIHZpZGVvIGhhcyBlbmRlZCBvbmNlLgotICAgIFtoYW5kbGVyIHNl
dEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Ci0gICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBs
YXktYWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzY3JvbGxlZFNlY29uZFZpZGVvSW50
b1ZpZXcpOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBjb250cm9sbGVkRWxlbWVudElEXSBp
c0VxdWFsVG9TdHJpbmc6QCJzZWNvbmQiXSk7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxPbmx5TGFyZ2VWaWRl
b091dE9mVmlldykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2Vi
Vmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFn
ZXIoTlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkiIGFuZEV4
cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAic2Nyb2xsZWQi
XTsKIH0KIAotVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJM
YXJnZUF1dG9wbGF5aW5nVmlkZW9BZnRlclNlZWtpbmdUb0VuZCkKK1RFU1QoVmlkZW9Db250cm9s
c01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVv
KQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBj
b25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJh
Y2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0g
YWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dl
YlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJlbmRlZCJdKTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAw
KSk7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRv
dyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5T
Qm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
Ok5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQo
KV07CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKKyAgICAgICAgW3dlYlZp
ZXcgbW91c2VEb3duQXRQb2ludDpOU01ha2VQb2ludCg1MCwgNTApXTsKKyAgICB9XTsKKworICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRp
byIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJw
YXVzZWQiXTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FmdGVyRW5kaW5nKQoreworICAgIFJldGFp
blB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2Vi
Vmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKSk7CisKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXNl
ZWstYWZ0ZXItZW5kaW5nIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOkAiZW5kZWQiXTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlk
ZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FuZFBsYXlzQWZ0ZXJF
bmRpbmcpCit7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcq
PiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5T
TWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAotICAgIFJldGFpblB0cjxPbkxvYWRNZXNzYWdl
SGFuZGxlcj4gb25sb2FkSGFuZGxlciA9IGFkb3B0TlMoW1tPbkxvYWRNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBoYW5kbGVyOl4oKSB7CisgICAg
Ly8gU2luY2UgdGhlIHZpZGVvIGlzIHN0aWxsIHBsYXlpbmcsIHRoZSBleHBlY3RhdGlvbiBpcyBZ
RVMgZXZlbiBpZiB0aGUgdmlkZW8gaGFzIGVuZGVkIG9uY2UuCisgICAgW3dlYlZpZXcgbG9hZFRl
c3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRl
ci1lbmRpbmciIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAicmVwbGF5aW5nIl07Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVv
Q29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvQWZ0ZXJTZWVraW5nVG9FbmQpCit7
CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3
ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3Qo
MCwgMCwgMTAwLCAxMDApKTsKKworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7
CiAgICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6TlNNYWtlUG9pbnQoNTAsIDUwKV07
Ci0gICAgfV0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhh
bmRsZXIiXTsKKyAgICB9XTsKIAogICAgIC8vIFdlIGV4cGVjdCB0aGVyZSB0byBiZSBtZWRpYSBj
b250cm9scywgc2luY2UgdGhpcyBpcyBhIHVzZXIgZ2VzdHVyZWQgc2VlayB0byB0aGUgZW5kLgog
ICAgIC8vIFRoaXMgaXMgYWtpbiB0byBzZWVraW5nIHRvIHRoZSBlbmQgYnkgc2NydWJiaW5nIGlu
IHRoZSBjb250cm9scy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFu
YWdlcjpZRVNdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdl
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1l
bmQiIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAi
ZW5kZWQiXTsKIH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJTaW5nbGVMYXJnZVZpZGVvV2l0aG91dEF1ZGlvKQogewotICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlh
VHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFU
eXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQ
bGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tN
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5h
bE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInBsYXlpbmdIYW5kbGVyIl07Ci0KLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9
IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBm
cmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2Vy
VGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJv
bHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIC8vIEEgbGFyZ2Ug
dmlkZW8gd2l0aCBubyBhdWRpbyB3aWxsIG5vdCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciB1bmxl
c3MgaXQgc3RhcnRlZCBwbGF5aW5nIGJlY2F1c2Ugb2YgYSB1c2VyIGdlc3R1cmUuIFNpbmNlIHRo
aXMKICAgICAvLyB2aWRlbyBpcyBzdGFydGVkIHdpdGggYSBzY3JpcHQsIHRoZSBleHBlY3RhdGlv
biBpcyBOTy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpO
T107Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8t
d2l0aG91dC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJB
ZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVv
LXdpdGhvdXQtYXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiB7Ci0gICAg
UmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVk
aW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJl
dGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtb
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJW
aWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLQotICAgIFJldGFpblB0cjxOU1dp
bmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNr
aW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250
ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9D
b250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0
aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAg
ICAgLy8gQW4gYXVkaW8gZWxlbWVudCBNVVNUIGJlIHN0YXJ0ZWQgd2l0aCBhIHVzZXIgZ2VzdHVy
ZSBpbiBvcmRlciB0byBoYXZlIGEgY29udHJvbHMgbWFuYWdlciwgc28gdGhlIGV4cGVjdGF0aW9u
IGlzIE5PLgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5P
XTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdWRpby1vbmx5IiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0g
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiYXVkaW8tb25seSIgYW5kRXhwZWN0Q29udHJv
bHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJUZWFyc0Rvd25NZWRp
YUNvbnRyb2xzT25EZWFsbG9jKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdV
c2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0g
YWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZy
YW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0
b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vi
dmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJU
ZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9s
c01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgTlNVUkwgKnVybE9m
VmlkZW8gPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0
aC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAIm1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKICAgICBbd2ViVmlldyBsb2FkRmlsZVVSTDp1cmxPZlZpZGVvIGFsbG93
aW5nUmVhZEFjY2Vzc1RvVVJMOlt1cmxPZlZpZGVvIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBv
bmVudF1dOwogCiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkVGVzdCA9IGZhbHNlOwotICAgIFt3
ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XigpCi0gICAgeworICAgIFt3ZWJWaWV3IHBlcmZv
cm1BZnRlckxvYWRpbmc6XiB7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIHRlYXIgZG93biB0
aGUgbWVkaWEgY29udHJvbHMgcHJvcGVybHksIHN1Y2ggdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVu
IHRoZSB3ZWIgdmlldyBpcyByZWxlYXNlZC4KICAgICAgICAgaWYgKFt3ZWJWaWV3IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2ludGVyYWN0V2l0aE1lZGlhQ29udHJvbHNGb3JUZXN0aW5n
KV0pCiAgICAgICAgICAgICBbd2ViVmlldyBfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRl
c3RpbmddOwpAQCAtMzk0LDE2ICszNjIsMTAgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xzT25EZWFsbG9jKQogCiBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNtYWxsVmlkZW9J
bk1lZGlhRG9jdW1lbnQpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0g
YWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZy
YW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0
b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vi
dmlldzp3ZWJWaWV3LmdldCgpXTsKLSAgICAKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCiAgICAgX19ibG9j
ayBib29sIGZpbmlzaGVkTG9hZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxv
YWRpbmc6XigpCi0gICAgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CiAg
ICAgICAgIGZpbmlzaGVkTG9hZCA9IHRydWU7CiAgICAgfV07CiAgICAgCkBAIC00MTgsNDAgKzM4
MCwxNiBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNt
YWxsVmlkZW9Jbk1lZGlhRG9jdW1lbnQpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyTG9uZ1NraW5ueVZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0
aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1
ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDE2MDAsIDgwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAg
UmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NX
aW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAg
IFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAg
UmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMo
W1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3Ondl
YlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpo
YW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwotICAgIFtoYW5kbGVyIHNldEV4
cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxNjAwLCA4MDApKTsKIAotICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNraW5ueS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdl
ckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNj
cmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2tpbm55LWF1
dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBh
ZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9s
c01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyRnVsbFNpemVWaWRlb0luV2lkZU1haW5GcmFt
ZSkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxNjAwLCA4MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgp
XTsKLQotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdL
V2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0g
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLSAgICBbaGFu
ZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotCi0gICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVv
LXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCAxNjAwLCA4MDApKTsKIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVk
Q29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgYW5kRXhwZWN0Q29u
dHJvbHNNYW5hZ2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXku
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVv
LXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWNmOTI5MzMyNzQzODBiMmI3
YWNkNDNmNGE3ZmU5YmI1MmI4YzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5o
dG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIHZpZGVvIHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogNDgwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGRpdiB7CisgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNTAwMHB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAgICAgZnVuY3Rpb24gaGFuZGxlTG9hZGVkKCkgeworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpLnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInNjcm9sbGVk
Iik7CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAg
ICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmaXJzdCIgc3JjPSJsYXJnZS12aWRlby13aXRo
LWF1ZGlvLm1wNCI+PC92aWRlbz4KKyAgICAgICAgPGJyPgorICAgICAgICA8ZGl2PmhlbGxvIHdv
cmxkITwvZGl2PgorICAgIDwvYm9keT4KKzxodG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNr
LXRvLXBhdXNlLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9s
YXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Y2JkZGYwMGVhYTk5YWRhMzhhYmVhZWE4MTk4NjEyYmI0YzRhNDE4Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1
dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
dmlkZW8geworICAgICAgICAgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMyMHB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICAgICAgdmFyIGlzRmlyc3RDbGljayA9IHRydWU7CisgICAgICAgICAg
ICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcihpc0ZpcnN0Q2xpY2sgPyAiI2ZpcnN0IiA6ICIjc2Vjb25kIikucGF1c2Uo
KTsKKyAgICAgICAgICAgICAgICBpc0ZpcnN0Q2xpY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlRmlyc3RQYXVzZSgpIHsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxh
eWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInBhdXNlZCIpOworICAgICAgICAgICAgICAgICAgICB9
IGNhdGNoKGUpIHsgfQorICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVTZWNvbmRQYXVzZSgpIHsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWlu
Z0hhbmRsZXIucG9zdE1lc3NhZ2UoInBhdXNlZCIpOworICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoKGUpIHsgfQorICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25tb3VzZWRvd249aGFuZGxlTW91
c2VEb3duKCk+CisgICAgICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmaXJzdCIgc3JjPSJs
YXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCIgb25wYXVzZT1oYW5kbGVGaXJzdFBhdXNlKCk+PC92
aWRlbz4KKyAgICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9InNlY29uZCIgc3JjPSJsYXJn
ZS12aWRlby13aXRoLWF1ZGlvLm1wNCIgb25wYXVzZT1oYW5kbGVTZWNvbmRQYXVzZSgpPjwvdmlk
ZW8+CisgICAgPC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZp
ZGVvLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12
aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ0ZmYy
OTY3N2FmNDE2ZjVlNTE0ODJjNzBjNDE1NzIzMzNkYzJkMwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxh
eWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICB2aWRl
byB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQ4MHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzIwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjc2Vjb25kIHsKKyAgICAgICAg
ICAgICAgICBtYXJnaW4tdG9wOiA1MDAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQo
KSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlY29uZCIpLnNj
cm9sbEludG9WaWV3KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWlu
Z0hhbmRsZXIucG9zdE1lc3NhZ2UoInNjcm9sbGVkIik7CisgICAgICAgICAgICAgICAgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAgICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlk
PSJmaXJzdCIgc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKyAgICAg
ICAgPGJyPgorICAgICAgICA8dmlkZW8gYXV0b3BsYXkgbG9vcCBpZD0ic2Vjb25kIiBzcmM9Imxh
cmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDwvYm9keT4KKzxodG1sPgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Ut
dmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1j
b250cm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNWYyNWU3NDVhNGNkNWM4ZTczMDQzY2NiNjIyNmNh
ZDk5MGFhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwK
QEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICB2
aWRlbyB7CisgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAg
ICB9CisgICAgI2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICB9Cis8L3N0
eWxlPgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmlldygpOworICAgICAgICBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZm9vIikucGF1c2UoKTsKKyAgICB9CisgICAgZnVuY3Rp
b24gaGFuZGxlUGF1c2VkKCkgeworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGF1c2VkIik7CisgICAgICAgICAgICB9
IGNhdGNoKGUpIHsgfQorICAgICAgICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxib2R5IG9u
bG9hZD1oYW5kbGVMb2FkZWQoKT4KKyAgICA8dmlkZW8gYXV0b3BsYXkgbG9vcCBpZD0iZm9vIiBv
bnBhdXNlPWhhbmRsZVBhdXNlZCgpPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlv
Lm1wNCI+PC92aWRlbz4KKyAgICA8YnI+CisgICAgPHZpZGVvIGlkPSJiYXIiPjxzb3VyY2Ugc3Jj
PSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzxodG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9sYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZhYmNmZjQwNWIxMmI5YmRmYmRkYmI2YzVhYjRjMzY2NjBlMGRiMDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJn
ZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sCkBAIC0wLDAg
KzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisgICAgdmlkZW8gewor
ICAgICAgICB3aWR0aDogNDgwcHg7CisgICAgICAgIGhlaWdodDogMzIwcHg7CisgICAgfQorICAg
ICNiYXIgeworICAgICAgICBtYXJnaW4tdG9wOiA1MDAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CisgICAgZnVuY3Rpb24gaGFuZGxlTG9hZGVkKCkgeworICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjZm9vIikubXV0ZWQgPSB0cnVlOworICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIjYmFyIikuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInBsYXlpbmci
KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgIH0sIDApOworICAgIH0KKzwv
c2NyaXB0PgorPGJvZHkgb25sb2FkPWhhbmRsZUxvYWRlZCgpPgorICAgIDx2aWRlbyBhdXRvcGxh
eSBsb29wIGlkPSJmb28iPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+
PC92aWRlbz4KKyAgICA8YnI+CisgICAgPHZpZGVvIGlkPSJiYXIiPjxzb3VyY2Ugc3JjPSJsYXJn
ZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzxodG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xz
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
b3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxMTBiYjc3
MWFiN2RhOWYwOWZkNDQyZTlmNTkyMTU4NzFiMjJmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGxheWluZy12
aWRlby1rZWVwcy1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8c3R5bGU+CisgICAgdmlkZW8geworICAgICAgICB3aWR0aDogNDgwcHg7Cisg
ICAgICAgIGhlaWdodDogMzIwcHg7CisgICAgfQorICAgICNiYXIgeworICAgICAgICBtYXJnaW4t
dG9wOiA1MDAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaGFu
ZGxlTG9hZGVkKCkgeworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYmFyIikuc2Ny
b2xsSW50b1ZpZXcoKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
cGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInBsYXlpbmciKTsKKyAgICAgICAgICAgIH0gY2F0
Y2goZSkgeyB9CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPGJvZHkgb25sb2Fk
PWhhbmRsZUxvYWRlZCgpPgorICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmb28iPjxzb3Vy
Y2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKyAgICA8YnI+Cisg
ICAgPHZpZGVvIGlkPSJiYXIiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1w
NCI+PC92aWRlbz4KKzwvYm9keT4KKzxodG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287805</attachid>
            <date>2016-09-02 13:10:20 -0700</date>
            <delta_ts>2016-09-03 16:56:05 -0700</delta_ts>
            <desc>Move main content sizing helpers back into MediaElementSession.cpp</desc>
            <filename>bug-161503-20160902130804.patch</filename>
            <type>text/plain</type>
            <size>90104</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNjE4YWM0YTcwNTI5
ODdjNGNhNGE1YmU0MmU5NzczMjAyZWRlZi4uY2Q2NGM5ZDUzMmVkY2E1YzEzOTFjNjk5YmI3NTY1
ZWRmYjg3ZDUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA5LTAyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSwgd2hlbiBzZWxlY3RpbmcgYSBtZWRpYSBzZXNzaW9uIHRvIHNob3cgcGxheWJhY2sgY29udHJv
bHMgZm9yLCB3ZSBncmFiIHRoZSBmaXJzdCBtZWRpYSBzZXNzaW9uIHRoYXQKKyAgICAgICAgcGFz
c2VzIG91ciBoZXVyaXN0aWMuIFVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBhcmUgdW5hYmxlIHRvIHRh
a2UgYWRkaXRpb25hbCBmYWN0b3JzIGludG8gYWNjb3VudCwgc3VjaCBhcyB3aGV0aGVyCisgICAg
ICAgIGFub3RoZXIgbWVkaWEgc2Vzc2lvbidzIGVsZW1lbnQgaXMgc2Nyb2xsZWQgaW4gdmlldywg
b3IgaWYgYW5vdGhlciBtZWRpYSBzZXNzaW9uIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aCBtb3Jl
CisgICAgICAgIHJlY2VudGx5LiBUbyBhZGRyZXNzIHRoaXMsIHdlIG1ha2UgdGhlIGZvbGxvd2lu
ZyBjaGFuZ2VzOgorCisgICAgICAgICAgICAxLiAgTWFrZSBlYWNoIGFjdGl2ZSBtZWRpYSBzZXNz
aW9uIHZlbmQgYSBNZWRpYVNlc3Npb25JbmZvLCB3aGljaCBhY3RzIGFzIGEgdm91Y2hlciBmb3Ig
dGhhdCBtZWRpYSBzZXNzaW9uCisgICAgICAgICAgICAgICAgd2hlbiBkZXRlcm1pbmluZyB3aGlj
aCBtZWRpYSBzZXNzaW9uIHNob3VsZCBzaG93IGNvbnRyb2xzLiBXaGVuIHVwZGF0aW5nIHRoZSBw
bGF5YmFjayBjb250cm9scyBtYW5hZ2VyLAorICAgICAgICAgICAgICAgIHdlIGNvbGxlY3QgTWVk
aWFTZXNzaW9uSW5mb3MgZnJvbSBhbGwgYWN0aXZlIHNlc3Npb25zLgorCisgICAgICAgICAgICAy
LiAgV2UgdGhlbiBzZWxlY3Qgb25seSB0aGUgTWVkaWFTZXNzaW9uSW5mb3MgY2FwYWJsZSBvZiBz
aG93aW5nIG1lZGlhIGNvbnRyb2xzIGFuZCBzb3J0IHRoZSBsaXN0IGJ5IGEKKyAgICAgICAgICAg
ICAgICBzcGVjaWFsIGhldXJpc3RpYyB0aGF0IHRha2VzIHZpc2liaWxpdHkgYW5kIHRpbWUgb2Yg
bGFzdCB1c2VyIGludGVyYWN0aW9uIGludG8gYWNjb3VudC4gVGhlIGZpcnN0CisgICAgICAgICAg
ICAgICAgZWxlbWVudCBvbiB0aGlzIGxpc3QgaXMgdGhlIHN0cm9uZ2VzdCBjYW5kaWRhdGUgZm9y
IG1haW4gY29udGVudC4KKworICAgICAgICAgICAgMy4gIElmIHRoaXMgc3Ryb25nZXN0IGNhbmRp
ZGF0ZSBpcyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgb3IgaXQgaXMgcGxheWluZyB3aXRoIGF1
ZGlvLCB3ZSByZXR1cm4gdGhpcworICAgICAgICAgICAgICAgIGFzIHRoZSBjaG9zZW4gY2FuZGlk
YXRlLiBPdGhlcndpc2UsIHdlIHJldHVybiB0aGlzIHNlc3Npb24gb25seSBpZiBubyBvdGhlciBu
b24tY2FuZGlkYXRlIHZpZGVvIGNvdWxkIGJlCisgICAgICAgICAgICAgICAgY29uZnVzZWQgYXMg
dGhlIG1haW4gY29udGVudCAoaS5lLiB0aGUgbm9uLWNhbmRpZGF0ZSB2aWRlbyBpcyBub3Qgb25s
eSB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgYnV0IGFsc28KKyAgICAgICAgICAgICAgICBsYXJn
ZSBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBtYWluIGNvbnRlbnQpLgorCisgICAgICAgIFVzaW5n
IHRoaXMgbmV3IG1ldGhvZCBvZiBkZXRlcm1pbmluZyB0aGUgdmlkZW8gdG8gc2hvdyBjb250cm9s
cyBmb3IsIHdlIHJldGFpbiBwcmV2aW91cyBiZWhhdmlvciBmb3IgcGFnZXMgd2l0aAorICAgICAg
ICBhIHNpbmdsZSB2aWRlby4gT24gcGFnZXMgd2l0aCBtdWx0aXBsZSB2aWRlb3MsIHRoZSBhYm92
ZSBsb2dpYyBlbnN1cmVzIHRoYXQgaWYgdGhlIGN1cnJlbnQgY29udHJvbGxlZCB2aWRlbyBpcwor
ICAgICAgICBwYXVzZWQsIHNjcm9sbGVkIG91dCBvZiB2aWV3LCBhbmQgdGhlbiBhIG5ldyB2aWRl
byBpcyBzY3JvbGxlZCBpbnRvIHZpZXcsIHdlIHdpbGwgZWl0aGVyIGhpZGUgbWVkaWEgY29udHJv
bHMgdG8KKyAgICAgICAgYXZvaWQgY29uZnVzaW9uIGlmIHRoYXQgdmlkZW8gY291bGQgYmUgY29u
ZnVzZWQgZm9yIG1haW4gY29udGVudCAodXNpbmcgdGhlIG1lY2hhbmlzbSBpbiBzdGVwIDMpLCBv
ciB3ZQorICAgICAgICBob29rIHVwIHRoZSBtZWRpYSBjb250cm9scyB0byB0aGUgbmV3IHZpZGVv
IGlmIGl0IHNhdGlzZmllcyBtYWluIGNvbnRlbnQgKHVzaW5nIHRoZSBtZWNoYW5pc20gaW4gc3Rl
cCAyKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyA2IG5ldyBUZXN0V2ViS2l0QVBJ
IHVuaXQgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cHJlZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVy
T3RoZXJDYW5kaWRhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2Vzc2lvbk1h
eUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFT
ZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1Zpc2libGVJblZpZXdwb3J0Q2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVNlc3Npb25JbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2FudHNUb09ic2VydmVWaWV3
cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246OndhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzZXRQbGF5YmFj
a1Nlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpj
YW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL01lZGlh
RWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVk
aWFTZXNzaW9uSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpyZXNldFBs
YXliYWNrU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbkluZm86
Ok1lZGlhU2Vzc2lvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Np
b246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uSW5mb3MpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vz
c2lvbk1hdGNoaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKFdlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRNZWRpYUVsZW1lbnQpOgorCiAyMDE2LTA4LTMwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIHR5
cG8gaW50cm9kdWNlZCBpbiByMjA1MTg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNlZTE1OTNhNDg0Y2M3ZjBk
ZjMxNTY5NTg1NGViZDQ0NWU5ZjUzMWIuLjdkMGIyNjE4ODY3NGU4ZmI4MGIzNmY2OTMyYmY5YmE3
ZjcxNTY0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNi0wOS0wMiAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciB0aGUg
aGV1cmlzdGljIGZvciBzaG93aW5nIG1lZGlhIGNvbnRyb2xzIHRvIHRha2UgYWxsIG1lZGlhIHNl
c3Npb25zIGludG8gYWNjb3VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxNTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODAzMzc4Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGFuIFNQ
SSB0ZXN0aW5nIGhvb2sgZm9yIHNlbmRpbmcgdGhlIGVsZW1lbnQgSUQgb2YgdGhlIGN1cnJlbnRs
eSBjb250cm9sbGVkIHZpZGVvIGVsZW1lbnQgZnJvbSB0aGUgd2ViCisgICAgICAgIHByb2Nlc3Mg
dG8gdGhlIFVJIHByb2Nlc3MuIFNlZSBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBpbiBUb29scy9U
ZXN0V2ViS2l0QVBJLyBmb3IgdXNhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1ZXN0Q29udHJvbGxlZEVs
ZW1lbnRJRF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50
SURSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNv
bnRyb2xzTWFuYWdlcl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1l
bnRJRFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpo
YW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50
SURSZXF1ZXN0KToKKwogMjAxNi0wOC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgbV9jbGllbnQgdG8gaW5kaWNhdGUgd2hldGhl
ciBhbiBJUEM6OkNvbm5lY3Rpb24gaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IDExOTkyZGY1NTUwNjZjMjg2NjQwYTEzZmQxY2E2NGE4OGM5NWZj
NTYuLjVmMGVjMzlmODBhZDU1OTU3MzA1ZWQzODlkYjRhNDc2ZWQ4MjZhZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzQ2LDYgKzM0Niw1MSBAQCBzdGF0
aWMgdWludDY0X3QgbmV4dEVsZW1lbnRJRCgpCiB9CiAjZW5kaWYKIAorc3RhdGljIGJvb2wgcHJl
ZmVyTWVkaWFDb250cm9sc0ZvckNhbmRpZGF0ZVNlc3Npb25PdmVyT3RoZXJDYW5kaWRhdGVTZXNz
aW9uKGNvbnN0IE1lZGlhU2Vzc2lvbkluZm8mIHNlc3Npb24sIGNvbnN0IE1lZGlhU2Vzc2lvbklu
Zm8mIG90aGVyU2Vzc2lvbikKK3sKKyAgICAvLyBQcmlvcml0aXplIHZpc2libGUgbWVkaWEgb3Zl
ciBvZmZzY3JlZW4gbWVkaWEuCisgICAgaWYgKHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydCAh
PSBvdGhlclNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydCkKKyAgICAgICAgcmV0dXJuIHNlc3Np
b24uaXNWaXNpYmxlSW5WaWV3cG9ydDsKKworICAgIC8vIEFzIGEgdGllYnJlYWtlciwgcHJpb3Jp
dGl6ZSBlbGVtZW50cyB0aGF0IHRoZSB1c2VyIHJlY2VudGx5IGludGVyYWN0ZWQgd2l0aC4KKyAg
ICByZXR1cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3RoZXJTZXNzaW9u
LnRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247Cit9CisKK3N0YXRpYyBib29sIG1lZGlhU2Vzc2lv
bk1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudChjb25zdCBNZWRpYVNlc3Npb25JbmZvJiBzZXNz
aW9uKQoreworICAgIGlmICghc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXNlc3Npb24uaXNMYXJnZUVub3VnaEZvck1haW5Db250
ZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBFdmVuIGlmIHRoaXMgdmlkZW8g
aXMgbm90IGEgY2FuZGlkYXRlLCBpZiBpdCBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyIGFuZCBsYXJn
ZSBlbm91Z2gKKyAgICAvLyB0byBiZSBtYWluIGNvbnRlbnQsIGl0IHBvc2VzIGEgcmlzayBmb3Ig
YmVpbmcgY29uZnVzZWQgd2l0aCBtYWluIGNvbnRlbnQuCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogYmVzdE1lZGlhU2Vzc2lvbkZvclNo
b3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCit7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lv
bkluZm8+IGNhbmRpZGF0ZVNlc3Npb25JbmZvczsKKyAgICBib29sIGF0TGVhc3RPbmVOb25DYW5k
aWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQgPSBmYWxzZTsKKyAgICBmb3IgKE1lZGlh
U2Vzc2lvbkluZm8gaW5mbyA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmN1cnJlbnRTZXNzaW9uSW5mb3MoKSkgeworICAgICAgICBpZiAoaW5mby5jYW5TaG93
Q29udHJvbHNNYW5hZ2VyKQorICAgICAgICAgICAgY2FuZGlkYXRlU2Vzc2lvbkluZm9zLmFwcGVu
ZChpbmZvKTsKKyAgICAgICAgZWxzZSBpZiAobWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZEZvck1h
aW5Db250ZW50KGluZm8pKQorICAgICAgICAgICAgYXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJl
Q29uZnVzZWRGb3JNYWluQ29udGVudCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFjYW5kaWRh
dGVTZXNzaW9uSW5mb3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0
ZDo6c29ydChjYW5kaWRhdGVTZXNzaW9uSW5mb3MuYmVnaW4oKSwgY2FuZGlkYXRlU2Vzc2lvbklu
Zm9zLmVuZCgpLCBwcmVmZXJNZWRpYUNvbnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhl
ckNhbmRpZGF0ZVNlc3Npb24pOworICAgIE1lZGlhU2Vzc2lvbkluZm8gc3Ryb25nZXN0U2Vzc2lv
bkNhbmRpZGF0ZSA9IGNhbmRpZGF0ZVNlc3Npb25JbmZvcy5maXJzdCgpOworICAgIGlmICghc3Ry
b25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5pc1Zpc2libGVJblZpZXdwb3J0ICYmICFzdHJvbmdlc3RT
ZXNzaW9uQ2FuZGlkYXRlLmlzUGxheWluZ1dpdGhBdWRpbyAmJiBhdExlYXN0T25lTm9uQ2FuZGlk
YXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb247Cit9CisKIEhU
TUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1
bWVudCkKQEAgLTgzNyw4ICs4ODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycygpCiB7CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkgewogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgaWYg
KG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Np
b246OkludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkKQotICAgICAgICAgICAgfHwgbV9tZWRp
YVNlc3Npb24tPmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6T3Zl
cnJpZGVVc2VyR2VzdHVyZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpKQorICAgICAgICBpZiAo
bV9tZWRpYVNlc3Npb24gJiYgbV9tZWRpYVNlc3Npb24tPndhbnRzVG9PYnNlcnZlVmlld3BvcnRW
aXNpYmlsaXR5Rm9yQXV0b3BsYXkoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5yZWdpc3RlckZv
clZpc2libGVJblZpZXdwb3J0Q2FsbGJhY2soKTsKICAgICB9CiAgICAgdXBkYXRlU2hvdWxkQXV0
b3BsYXkoKTsKQEAgLTQwMjEsNiArNDA2NSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omxh
eW91dFNpemVDaGFuZ2VkKCkKICAgICAgICAgbV9yZWNlaXZlZExheW91dFNpemVDaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgc2NoZWR1bGVVcGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwog
ICAgIH0KKworICAgIC8vIElmIHRoZSB2aWRlbyBpcyBhIGNhbmRpZGF0ZSBmb3IgbWFpbiBjb250
ZW50LCB3ZSBzaG91bGQgcmVnaXN0ZXIgaXQgZm9yIHZpZXdwb3J0IHZpc2liaWxpdHkgY2FsbGJh
Y2tzCisgICAgLy8gaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLgorICAgIGlm
IChyZW5kZXJlcigpICYmIG1fbWVkaWFTZXNzaW9uICYmICFtX21lZGlhU2Vzc2lvbi0+d2FudHNU
b09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JBdXRvcGxheSgpICYmIG1fbWVkaWFTZXNzaW9u
LT53YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvck1lZGlhQ29udHJvbHMoKSkKKyAg
ICAgICAgcmVuZGVyZXIoKS0+cmVnaXN0ZXJGb3JWaXNpYmxlSW5WaWV3cG9ydENhbGxiYWNrKCk7
CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC03
MTQwLDYgKzcxODksNyBAQCBzdGF0aWMgYm9vbCBtZWRpYUVsZW1lbnRJc0FsbG93ZWRUb0F1dG9w
bGF5KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmlzVmlzaWJsZUluVmlld3BvcnRDaGFuZ2VkKCkKIHsKICAgICB1cGRhdGVTaG91bGRBdXRv
cGxheSgpOworICAgIHNjaGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSgpCkBAIC03MTY4
LDIwICs3MjE4LDIzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkUGxheSgp
CiAgICAgICAgIHBsYXkoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNldFBsYXli
YWNrU2Vzc2lvblN0YXRlKCkKK3sKKyAgICBpZiAobV9tZWRpYVNlc3Npb24pCisgICAgICAgIG1f
bWVkaWFTZXNzaW9uLT5yZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCk7Cit9CisKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogewogICAgIFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBzZXNzaW9uID0gUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Npb25NYXRjaGluZyhb
XSAoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIHsKLSAgICAgICAgcmV0dXJu
IHNlc3Npb24uY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpOwotICAgIH0pOwotCi0gICAgaWYg
KCFpczxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKSkKKyAgICBjb25zdCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiogYmVzdE1lZGlhU2Vzc2lvbiA9IGJlc3RNZWRpYVNlc3Npb25Gb3JTaG93aW5n
UGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKKyAgICBpZiAoIWlzPE1lZGlhRWxlbWVudFNlc3Np
b24+KGJlc3RNZWRpYVNlc3Npb24pKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5j
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiAgICAgZWxzZQotICAgICAgICBwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKGRvd25jYXN0PE1l
ZGlhRWxlbWVudFNlc3Npb24+KHNlc3Npb24pLT5lbGVtZW50KCkpOworICAgICAgICBwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKGRvd25jYXN0PE1l
ZGlhRWxlbWVudFNlc3Npb24+KGJlc3RNZWRpYVNlc3Npb24pLT5lbGVtZW50KCkpOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5OGYzYjA4ODk4
NmE5OTZmNGVhNmI3NWFlYTc0ZTk2M2Q1YjYyMTlhLi45ZjMyMDZkYzA1OGVhMjZkYWFmMGRkNTBi
YTg5YTc4Y2M0NmMwNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApA
QCAtNDY4LDYgKzQ2OCw4IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlck1lZGlhKiByZW5kZXJlcigp
IGNvbnN0OwogCisgICAgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCk7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBl
OWI5N2I5YTEyYWFkNjMxMjhiYWI5ZjU0MTVhNGNkODQ2YjYwOWZhLi4zZGUyYzcxNzJiMDFjNTJj
MDUxOWE2Y2ZlNjI3ZDVjZjlhNzFmZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQog
I2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgpAQCAtMTM3LDYgKzEzOCw5IEBAIHZvaWQgTWVkaWFF
bGVtZW50U2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cyByZXN0cmljdGlvCiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKIHsKKyAgICBpZiAo
cmVzdHJpY3Rpb24gJiBSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIp
CisgICAgICAgIG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246
OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24gLSByZW1vdmluZyAlcyIsIHJlc3RyaWN0aW9uTmFt
ZShyZXN0cmljdGlvbikudXRmOCgpLmRhdGEoKSk7CiAgICAgbV9yZXN0cmljdGlvbnMgJj0gfnJl
c3RyaWN0aW9uOwogfQpAQCAtMjEyLDY5ICsyMTYsOTIgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5D
b250cm9sQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QKK01lZGlhU2Vzc2lvbkluZm8gTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5mbygpIGNvbnN0Cit7CisgICAgUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIgPSBtX2VsZW1lbnQucmVuZGVyZXIoKTsKKyAgICByZXR1cm4geworICAgICAg
ICB0aGlzLAorICAgICAgICBjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCksCisgICAgICAgIHJlbmRl
cmVyICYmIHJlbmRlcmVyLT52aXNpYmxlSW5WaWV3cG9ydFN0YXRlKCkgPT0gUmVuZGVyRWxlbWVu
dDo6VmlzaWJsZUluVmlld3BvcnQsCisgICAgICAgIG1fZWxlbWVudC5pc1BsYXlpbmcoKSAmJiBt
X2VsZW1lbnQuaGFzQXVkaW8oKSAmJiAhbV9lbGVtZW50Lm11dGVkKCksCisgICAgICAgIGlzRWxl
bWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQobV9lbGVtZW50KSwKKyAgICAgICAgbV9tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZQorICAgIH07Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWxl
bWVudC5pc0Z1bGxzY3JlZW4oKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIGZ1
bGxzY3JlZW4iKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2Fu
U2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBmdWxsc2NyZWVuIik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghbV9lbGVtZW50Lmhhc0F1ZGlv
KCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJv
bENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gYXVkaW8iKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlmIChtX2VsZW1lbnQuZG9jdW1lbnQoKS5hY3Rp
dmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxT
RTogYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIik7CisgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcg
RkFMU0U6IGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFwbGF5YmFja1Blcm1pdHRlZChtX2VsZW1lbnQpKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250
cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IFBsYXliYWNrIG5vdCBwZXJtaXR0ZWQiKTsK
KyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xz
TWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogUGxheWJhY2sgbm90IHBlcm1pdHRlZCIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFoYXNCZWhhdmlvclJlc3RyaWN0
aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlcikgfHwgU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkgewotICAgICAgICBM
T0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIFRSVUU6IE5vIHVzZXIgZ2VzdHVyZSByZXF1aXJlZCIpOworICAgICAgICBM
T0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0g
cmV0dXJuaW5nIFRSVUU6IE5vIHVzZXIgZ2VzdHVyZSByZXF1aXJlZCIpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoaGFzQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJl
UGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpICYmICFtX2VsZW1lbnQuaXNQbGF5aW5n
KCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJv
bENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTmVlZHMgdG8gYmUgcGxheWluZyIp
OworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJv
bHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBOZWVkcyB0byBiZSBwbGF5aW5nIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobV9lbGVtZW50Lm11dGVkKCkpIHsK
LSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRy
b2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTXV0ZWQiKTsKKyAgICAgICAgTE9HKE1lZGlh
LCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmlu
ZyBGQUxTRTogTXV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghbV9lbGVtZW50Lmhhc0F1ZGlvKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8g
YXVkaW8iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2VsZW1l
bnQuaXNWaWRlbygpKSB7CiAgICAgICAgIGlmICghbV9lbGVtZW50LnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250
cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHJlbmRlcmVyIik7CisgICAgICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBObyByZW5kZXJlciIpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZWxlbWVudC5kb2N1bWVudCgpLmlzTWVk
aWFEb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNz
aW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1lZGlh
IGRvY3VtZW50Iik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1lZGlhIGRvY3Vt
ZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbV9lbGVtZW50Lmhhc1ZpZGVvKCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
RWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFM
U0U6IE5vIHZpZGVvIik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNz
aW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyB2aWRlbyIp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlz
RWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQobV9lbGVtZW50KSkgewotICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFu
YWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBtYWluIGNvbnRlbnQiKTsKKyAgICAgICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSBy
ZXR1cm5pbmcgVFJVRTogSXMgbWFpbiBjb250ZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHVzZXIg
Z2VzdHVyZSIpOworICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHVzZXIgZ2VzdHVyZSIpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp3YW50c1RvT2Jz
ZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvck1lZGlhQ29udHJvbHMoKSBjb25zdAoreworICAgIHJl
dHVybiBpc0VsZW1lbnRMYXJnZUVub3VnaEZvck1haW5Db250ZW50KG1fZWxlbWVudCk7Cit9CisK
K2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxp
dHlGb3JBdXRvcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc0JlaGF2aW9yUmVzdHJpY3Rp
b24oSW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQpIHx8IGhhc0JlaGF2aW9yUmVzdHJpY3Rp
b24oT3ZlcnJpZGVVc2VyR2VzdHVyZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpOworfQorCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIHZvaWQgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVs
ZW1lbnQpCiB7CkBAIC01MDIsNiArNTI5LDEyIEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6
bWVkaWFFbmdpbmVVcGRhdGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
CiB9CiAKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0
ZSgpCit7CisgICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IDA7CisgICAgYWRk
QmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01h
bmFnZXIgfCBSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOworfQorCiBi
b29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BpY3R1cmVJblBpY3R1cmUoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggZGE4ZDE1ODRjYTgwZjdjNWQxMTgyMjg2YmRlZjUwMjI2
ODFlOWQ5YS4uNWI0MjdhZWE0Y2VmODg4MzZhNjlkODczNWFkNzY1M2YxNmU1N2E4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIGJvb2wgcGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdDsKICAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmco
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5Db250cm9sQ29u
dHJvbHNNYW5hZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFTZXNzaW9uSW5mbyBtZWRp
YVNlc3Npb25JbmZvKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKTsKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBt
ZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwogCisgICAgdm9pZCBy
ZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgb3ZlcnJpZGU7CisKICAgICAvLyBSZXN0cmljdGlv
bnMgdG8gbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3JzLgogICAgIGVudW0gQmVoYXZpb3JSZXN0cmlj
dGlvbkZsYWdzIDogdW5zaWduZWQgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBAIC0x
MTEsNiArMTEzLDkgQEAgcHVibGljOgogCiAgICAgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCisgICAgYm9vbCB3YW50c1RvT2JzZXJ2ZVZp
ZXdwb3J0VmlzaWJpbGl0eUZvck1lZGlhQ29udHJvbHMoKSBjb25zdDsKKyAgICBib29sIHdhbnRz
VG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3BsYXkoKSBjb25zdDsKKwogcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0xMjcsNiArMTMy
LDggQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUlzTWFpbkNvbnRlbnQoKSBjb25zdDsKICAg
ICB2b2lkIG1haW5Db250ZW50Q2hlY2tUaW1lckZpcmVkKCk7CiAKKyAgICBib29sIGNhblNob3dD
b250cm9sc01hbmFnZXIoKSBjb25zdDsKKwogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1fZWxlbWVu
dDsKICAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKIApAQCAtMTQwLDYg
KzE0Nyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5TGlzdGVuZXJzIHsgZmFsc2UgfTsKICNlbmRpZgogCisgICAgZG91YmxlIG1fbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgeyAwIH07CisKICAgICBtdXRhYmxlIGJvb2wgbV9pc01haW5D
b250ZW50IHsgZmFsc2UgfTsKICAgICBUaW1lciBtX21haW5Db250ZW50Q2hlY2tUaW1lcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5jcHAKaW5kZXggZGU1ZDg3ZjZkYzQ2NTQ0MmJkOGUwN2I5NTA1ZjAzNWYxMjkyMTAx
Yy4uMzA5ZTI5MzY3YTJmYzBiOGZhYWQ5MzM5MTM0Y2E1NjQwMDNlZTI1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cApAQCAtMjk5LDYgKzI5OSwxMSBAQCBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzaG91bGRP
dmVycmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBt
X2NsaWVudC5zaG91bGRPdmVycmlkZUJhY2tncm91bmRMb2FkaW5nUmVzdHJpY3Rpb24oKTsKIH0K
IAorTWVkaWFTZXNzaW9uSW5mbyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bWVkaWFTZXNzaW9uSW5m
bygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgdGhpcywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIDAgfTsKK30KKwogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6aXNQbGF5aW5nVG9XaXJl
bGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChib29sIGlzV2lyZWxlc3MpCiB7CiAgICAgaWYgKGlz
V2lyZWxlc3MgPT0gbV9pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApp
bmRleCBiZmNlMmRmYTQ2Mzk3NzA2MzMzNzI5OWExZWRmYmEzZGMwMjdhNjZmLi41MDRlZmY3ZDg0
NGM0MmQ3MDlmNzZiYzA0ZjUyZjBlNjhmYmY2ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTQwLDYgKzQwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYVBsYXli
YWNrVGFyZ2V0OwogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ7CitzdHJ1Y3QgTWVk
aWFTZXNzaW9uSW5mbzsKIAogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb24KICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb25JbmZvIG1lZGlhU2Vz
c2lvbkluZm8oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
UGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQbGF5
aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0OyB9CiAgICAgdm9pZCBpc1BsYXlpbmdUb1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXRDaGFuZ2VkKGJvb2wpOwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENhblByb2R1Y2VBdWRpbyhib29sKTsKIAogICAgIHZvaWQgc2NoZWR1
bGVDbGllbnREYXRhQnVmZmVyaW5nQ2hlY2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQbGF5
YmFja1Nlc3Npb25TdGF0ZSgpIHsgfTsKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtMTg3
LDYgKzE4OSwyNiBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI7CiB9OwogCitzdHJ1Y3QgTWVkaWFTZXNzaW9uSW5mbyB7CisgICAgTWVkaWFT
ZXNzaW9uSW5mbyhjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vzc2lvbiwgYm9vbCBjYW5T
aG93Q29udHJvbHNNYW5hZ2VyLCBib29sIGlzVmlzaWJsZUluVmlld3BvcnQsIGJvb2wgaXNQbGF5
aW5nV2l0aEF1ZGlvLCBib29sIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCwgZG91YmxlIHRp
bWVPZkxhc3RVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIDogc2Vzc2lvbihzZXNzaW9uKQorICAg
ICAgICAsIGNhblNob3dDb250cm9sc01hbmFnZXIoY2FuU2hvd0NvbnRyb2xzTWFuYWdlcikKKyAg
ICAgICAgLCBpc1Zpc2libGVJblZpZXdwb3J0KGlzVmlzaWJsZUluVmlld3BvcnQpCisgICAgICAg
ICwgaXNQbGF5aW5nV2l0aEF1ZGlvKGlzUGxheWluZ1dpdGhBdWRpbykKKyAgICAgICAgLCBpc0xh
cmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KQorICAg
ICAgICAsIHRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb24odGltZU9mTGFzdFVzZXJJbnRlcmFjdGlv
bikKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24qIHNlc3Np
b247CisKKyAgICBib29sIGNhblNob3dDb250cm9sc01hbmFnZXI7CisgICAgYm9vbCBpc1Zpc2li
bGVJblZpZXdwb3J0OworICAgIGJvb2wgaXNQbGF5aW5nV2l0aEF1ZGlvOworICAgIGJvb2wgaXNM
YXJnZUVub3VnaEZvck1haW5Db250ZW50OworICAgIGRvdWJsZSB0aW1lT2ZMYXN0VXNlckludGVy
YWN0aW9uOworfTsKKwogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50KTsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGVlYmExNWEwNWQ4MDQxODM1ZjI3NmQxYmZh
YzFjYmI3NGE2YTk3OTUuLmQzYjI1MjdhNGM2OTMyNzZmNTI2Mjg5ZTNiYTFmYzA2MDIzMjZjMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjgwLDEzICsyODAsMTMgQEAgUGxhdGZv
cm1NZWRpYVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFNlc3Np
b24oKSBjb25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQogCi1QbGF0Zm9ybU1lZGlh
U2Vzc2lvbiogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbk1hdGNo
aW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiAmKT4gZmls
dGVyKQorVmVjdG9yPE1lZGlhU2Vzc2lvbkluZm8+IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y3VycmVudFNlc3Npb25JbmZvcygpCiB7Ci0gICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9z
ZXNzaW9ucykgewotICAgICAgICBpZiAoZmlsdGVyKCpzZXNzaW9uKSkKLSAgICAgICAgICAgIHJl
dHVybiBzZXNzaW9uOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBWZWN0b3I8TWVk
aWFTZXNzaW9uSW5mbz4gbWF0Y2hpbmdTZXNzaW9uSW5mb3M7CisgICAgZm9yIChhdXRvJiBzZXNz
aW9uIDogbV9zZXNzaW9ucykKKyAgICAgICAgbWF0Y2hpbmdTZXNzaW9uSW5mb3MuYXBwZW5kKHNl
c3Npb24tPm1lZGlhU2Vzc2lvbkluZm8oKSk7CisKKyAgICByZXR1cm4gbWF0Y2hpbmdTZXNzaW9u
SW5mb3M7CiB9CiAgICAgCiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lv
bkNhbkxvYWRNZWRpYShjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggNWQxN2FiZDRlMjc1NjVmYWIwZDdhMGEzYTQ5NWM2
NjkyOGEyZTk2OC4uZWIyNDYzNjE3ZTIwNjM4MThmYzVmYmU5MTYwOWE1NzBkOTJlNzVmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q3VycmVudFNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24oKSBjb25zdDsKIAotICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uKiBjdXJyZW50U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiYpPik7CisgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbkluZm8+IGN1
cnJlbnRTZXNzaW9uSW5mb3MoKTsKIAogICAgIHZvaWQgc2Vzc2lvbklzUGxheWluZ1RvV2lyZWxl
c3NQbGF5YmFja1RhcmdldENoYW5nZWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mKTsKICAgICB2b2lk
IHNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGRiMDk3MDk0MjhiZTNh
ODhkMzg1YWI4MGY5MjUyOTczMjQ3MjY5OTYuLjc1MzZiYzgwMzk4NzM0ZDQ4ZTg4OGE1NmEwYTc5
OWFhMDdiNDIwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBA
IC05MSw2ICs5MSw5IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6
OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAgfQogICAgIG1faXNM
aXN0ZW5pbmcgPSBmYWxzZTsKIAorICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9t
ZWRpYUVsZW1lbnQtPnJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKTsKKwogICAgIG1fbWVkaWFF
bGVtZW50ID0gbWVkaWFFbGVtZW50OwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYTIy
OGExOWUxNWJmOTUwODJjOWM5NDNlZTBlMGRlZjBjZjA2NmQ5ZC4uMmI4NDQ5ODYyYTRiNzRkODU2
ODE4MTQxYTdiYzk3OGQwYzRhOTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ1NTMsNiArNDU1MywxNyBAQCAtIChCT09MKV9o
YXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcgogewogICAgIHJldHVybiBfcGFnZSAmJiBf
cGFnZS0+aGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIoKTsKIH0KKworLSAodm9pZClf
cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQKK3sKKyAgICBpZiAoX3BhZ2UpCisgICAgICAgIF9w
YWdlLT5yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpOworfQorCistICh2b2lkKV9oYW5kbGVD
b250cm9sbGVkRWxlbWVudElEUmVzcG9uc2U6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworICAg
IC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KK30KICNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKIC8vIEV4ZWN1dGUgdGhlIHN1cHBsaWVkIGJsb2NrIGFmdGVyIHRoZSBuZXh0IHRyYW5zYWN0
aW9uIGZyb20gdGhlIFdlYlByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQ3YTUzMzc5N2QwMzE3NjAx
NzgxYjJmZTUxOTNjMjBlZDA3ZmQ2NDEuLjlmMTEzMjU1ZDkxNDAwZjE2YjE4NTlhNDRmNzJkMDkw
OTY2MjI1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yNzEsNiArMjcxLDggQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogCiAjaWYgIVRBUkdFVF9PU19J
UEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGFzQWN0aXZlVmlk
ZW9Gb3JDb250cm9sc01hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkp
OworLSAodm9pZClfcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSkpOworLSAodm9pZClfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJl
c3BvbnNlOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSkpOwogI2VuZGlmCiAKIC0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jayBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
aAppbmRleCBkZmY4MjZhNjMzNmM5YWI0YWFjZDUzMjgxNWVhNjcwMTU3ZTVkYWJhLi5mZThjYmIx
ZTY2OTYzNzlmZjg2NmMwMjU0ODc0MTY3N2JjNmUwOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5oCkBAIC0xMzksNiArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwogCiAgICAgUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIGNvbnRyb2xz
TWFuYWdlckludGVyZmFjZSgpOworICAgIHZvaWQgcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQo
KTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0OwpAQCAtMTY5LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwogICAgIHZv
aWQgc2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pOwogICAg
IHZvaWQgc2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUg
cmF0ZSk7CisgICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0
X3QsIFN0cmluZykgY29uc3Q7CiAKICAgICAvLyBNZXNzYWdlcyB0byBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyCiAgICAgdm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1NDAzYTRiNGM2MDE1
OTcyODMwODNlYmZjMzAwNjJkOTIyMTU0ZmRkLi44MjViOWViNGQwOTQ0YWZlMjMzM2FmNWU3OTRk
ZjhjNmQ3MzU1ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KQEAgLTM1LDUgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5IHsKICAgICBTZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1Bs
YXlpbmcsIGRvdWJsZSByYXRlKQogICAgIFNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRo
SUQodWludDY0X3QgY29udGV4dElkKQogICAgIENsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIo
KQorCisgICAgSGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgU3RyaW5nIGlkKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQppbmRleCA4YzFmYTBjMzBjOWYxYjUxNGEwZjU4NDZiNTAyYTAwYjc3MjA4NDMyLi42MjM4ODkz
MTNlOWQxMTc5NzIzNWI5OTJjZTJlMzBlYmEzMjJjMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0KQEAgLTM0Myw2ICszNDMsMTkgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywK
ICAgICBpbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCByYXRlKTsKIH0KIAorCit2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJl
c3BvbnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgU3RyaW5nIGlkZW50aWZpZXIpIGNvbnN0Cit7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChjb250ZXh0SWQgPT0gbV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpCisgICAgICAgIG1fcGFnZS0+aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3Bv
bnNlKGlkZW50aWZpZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKKyAg
ICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CisjZW5kaWYKK30KKworCiAjcHJhZ21hIG1hcmsg
TWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogCiB2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCkBAIC00MDUsNiAr
NDE4LDEyIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQorewor
ICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxl
bWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworfQorCiBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSogV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKQogewogICAg
IGlmICghbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCAzNTgxYTIxMDYwZWFhZTM5Nzg2MDNmMjBiNTYwNDVjODRhM2E1MjQw
Li4xYjI0ZGIyNzVlOGNlMGIyMGI2Y2VlNGYzMDViNWJmNTljODFlYTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI0Nyw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2Nv
cnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21t
ZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29u
c3QgU3RyaW5nJikgPSAwOwogCiAgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXllckluTGF5
ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVyICopIGNvbnN0ID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMmVmZjIyNzJjNzg3NmFi
ZDZmMzExNTRjM2FmYTk3MGVmNGNhOWNhLi42NGI3ZDcxOWZlNjBjNjg1Yjg3ZmY5ZjIwYWQ3MWYy
ZGVjYjM2YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtNjI5OCw2ICs2Mjk4LDE5IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpoYXNBY3RpdmVWaWRlb0Zv
ckNvbnRyb2xzTWFuYWdlcigpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCisgICAgaWYgKG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcikKKyAg
ICAgICAgbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyLT5yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJ
RCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxl
bWVudElEUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAoreworICAgIG1f
cGFnZUNsaWVudC5oYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoaWRlbnRpZmllcik7
Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2Ny
ZWVuKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzg2Mjc2NjQ5ODM3ZmFjYmQy
N2VmMDU5Nzg5NGQyZmQ1NjNkNDQ1Mi4uN2RkNjdmOGE0NGUxMjI2YzM0NzIzNDk1ODhkZDI3Yzlj
OGM5NmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTAz
MSw2ICsxMDMxLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHZpZGVv
Q29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CiAgICAgYm9vbCBoYXNBY3RpdmVWaWRlb0ZvckNv
bnRyb2xzTWFuYWdlcigpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdENvbnRyb2xsZWRFbGVtZW50
SUQoKSBjb25zdDsKKyAgICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIGlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1
bGxzY3JlZW4oKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZDIxY2E1MmE1YWZjN2ZhODljN2JkZjlmMzNiODlk
NjA3NDRhZDEyMi4uNTI1OWZiNWI3MjVjYTQ3NjkyZWFkN2FhNDg1OTAxMjEzYzdhYjZlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMjA2
LDYgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsTG9hZEZvck1haW5GcmFtZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFt
ZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVO
YXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhJiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwogICAgIHZvaWQqIGltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRU
ZXN0UmVzdWx0KFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+LCB1aW50NjRfdCwgUmVmUHRyPEFQ
STo6T2JqZWN0Pikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQppbmRleCA1M2I5YmM3OTU1MzA3MmY0N2E2MjBmNTZkNjhiMWU4MDQy
ZGYwMWI4Li41YjVhMTIxYTY5Mzk3NmZmNjBhMThkYjI1NTZmNWY0Yjk1ZTI5MjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTc1Miw2
ICs3NTIsMTMgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVT
bmFwc2hvdCgpCiAgICAgICAgIGdlc3R1cmVDb250cm9sbGVyLT5yZW1vdmVTd2lwZVNuYXBzaG90
KCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURS
ZXNwb25zZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisjaWYgV0tfQVBJX0VOQUJMRUQK
KyAgICBbbV93ZWJWaWV3IF9oYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2U6bnNTdHJp
bmdGcm9tV2ViQ29yZVN0cmluZyhpZGVudGlmaWVyKV07CisjZW5kaWYKK30KKwogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAwMWZmZWQyMTllMWVhNzM3YTIwZmQ5
NmUzYzAzMDFhODJmZDA2MDEwLi44MTIzYTcyODM0NzFjNzIyNTI2MTgxNTQ0ZWRlMzJjYzA1NmNh
MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCBz
ZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgp
OwogICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVl
c3QodWludDY0X3QgY29udGV4dElkKTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKICAgICBIYXNo
TWFwPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCB1aW50NjRfdD4gbV9tZWRpYUVsZW1lbnRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGI1NmM1OWUz
MTQzNGE2NzlkNTRkOGEzNjAzNzljM2E3ZmYzZmQ1NTYuLmI3MTQwNGVjYzJhOWE1YjQ4N2EwYWI3
OWI2NTU3M2Q4NjI0YTk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KQEAgLTM1LDUgKzM1LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlciB7CiAgICAgRW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQogICAgIFNlbGVjdEF1
ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKICAgICBT
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKKyAgICBIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0
SWQpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCA5NjYxZmQ2MDg1Yzdi
Y2Q4NTBmN2U2NjAyZjc2ZjkzODE2YzEyNzFiLi5mNDY3YzIyNTljYjBmY2UxNThhNTAwN2U5NjAx
NDUwYWMyM2QyNjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC00MTcsNiArNDE3LDEz
IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWluCiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5z
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXgpOwogfQogCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVpbnQ2NF90IGNv
bnRleHRJZCkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50ICplbGVtZW50ID0gZW5zdXJlTW9kZWwo
Y29udGV4dElkKS5tZWRpYUVsZW1lbnQoKTsKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkhhbmRs
ZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShjb250ZXh0SWQsIGVsZW1lbnQtPmdldElkQXR0
cmlidXRlKCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggYWJhMTRhYWFmNDE4N2U4MDRiMGE4MzgwMTI4OWQ4YzBlNGMzNTU0NS4uOTFiY2U4MzM5N2Zi
MDA5ODYxMTI1Y2I3YTgxYTkxNDE2OWU3MjhhNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA5LTAyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbmV3
IHVuaXQgdGVzdHMgdmVyaWZ5aW5nIHRoZSBiZWhhdmlvciBvZiBtZWRpYSBwbGF5YmFjayBjb250
cm9scyB3aGVuIHNjcm9sbGluZyBhbm90aGVyIHZpZGVvIGludG8gdmlldy4KKyAgICAgICAgUGxl
YXNlIHNlZSB0aGUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlz
IGNoYW5nZS4gQWxzbyByZWZhY3RvcnMgZXhpc3RpbmcKKyAgICAgICAgVmlkZW9Db250cm9sc01h
bmFnZXIgdGVzdHMgYnkgZm9sZGluZyBkdXBsaWNhdGVkIHNldHVwIGFuZCB0ZXN0aW5nIGxvZ2lj
IGludG8gaGVscGVyIG1ldGhvZHMgdG8gbWFrZSB0aGUgdW5pdAorICAgICAgICB0ZXN0cyBtb3Jl
IHJlYWRhYmxlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW06CisgICAgICAgICgtW01lc3NhZ2VIYW5k
bGVyIGluaXRXaXRoTWVzc2FnZTpoYW5kbGVyOl0pOgorICAgICAgICAoLVtNZXNzYWdlSGFuZGxl
ciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAg
ICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGlu
ZzpdKToKKyAgICAgICAgKC1bVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpdKToKKyAgICAgICAgKC1bVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDphbmRFeHBlY3RDb250cm9sc01hbmFnZXI6YWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOl0pOgorICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6YWN0aW9uOl0pOgorICAgICAgICAoLVtWaWRl
b0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IGNvbnRyb2xsZWRFbGVtZW50SURdKToKKyAgICAg
ICAgKC1bVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBfaGFuZGxlQ29udHJvbGxlZEVs
ZW1lbnRJRFJlc3BvbnNlOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBXZWJWaWV3
Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgaW5pdFdpdGhX
S1dlYlZpZXc6ZmluYWxNZXNzYWdlU3RyaW5nOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtNZWRp
YVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVT
Y3JpcHRNZXNzYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtPbkxvYWRNZXNzYWdlSGFuZGxl
ciBpbml0V2l0aFdLV2ViVmlldzpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtPbkxv
YWRNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1l
c3NhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2Fk
aW5nOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL2xhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5
aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlk
ZW8uaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGxheWluZy12
aWRlby1rZWVwcy1jb250cm9scy5odG1sOiBBZGRlZC4KKwogMjAxNi0wOC0yOSAgQWFrYXNoIEph
aW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRVdTIHBhdGNoIHN0YXR1cyBw
YWdlIHNob3VsZCBpbmRpY2F0ZSBib3QgY29ycmVzcG9uZGluZyB0byBlYWNoIHN0YXR1cyBtZXNz
YWdlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE3MGI5MDJlMzQ4ODFkZTU0Y2E2YWM5NGMw
ZTRhNjk0NmY2ZGE5NjcuLjkzMmI5MDI3NDAyNmI5ZjcyYTk4ZjQyY2JhZGRiMDg2NTRhZWIxNGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02Miw2ICs2MiwxMiBAQAogCQkyRTFERkRFRDFE
NDJBNTExMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRFQzFENDJB
NDFDMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKIAkJMkUx
REZERUYxRDQyQTZGMjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkUxREZERUUxRDQyQTZFQjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1
dG9wbGF5Lmh0bWwgKi87IH07CiAJCTJFMURGREYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12
aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRGMDFE
NDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXkt
YWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CisJCTJFNjkxQUVBMUQ3OEI1MzYwMDEyOTQwNyAvKiBs
YXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTgxRDc4QjUy
QjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRt
bCAqLzsgfTsKKwkJMkU2OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5
aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxh
cmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi87IH07CisJCTJF
NjkxQUVEMUQ3OEI5MTAwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRl
by1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRl
b3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovOyB9OworCQkyRTY5
MUFFRjFENzlERTg0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRv
LXBhdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU2OTFBRUUxRDc5REU2RjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxh
eWluZy1jbGljay10by1wYXVzZS5odG1sICovOyB9OworCQkyRTY5MUFGMTFENzlFNTFBMDAxMjk0
MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUYw
MUQ3OUU1MTQwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZp
ZGVvLmh0bWwgKi87IH07CisJCTJFNjkxQUYzMUQ3OUU3NUUwMDEyOTQwNyAvKiBsYXJnZS12aWRl
by1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRjIxRDc5RTc1NDAwMTI5NDA3IC8qIGxhcmdl
LXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgw
QTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsg
fTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJC
QjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1v
dXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVB
ZnRlckNyYXNoX0J1bmRsZS5jcHAgKi87IH07CkBAIC01MTYsNiArNTIyLDEyIEBACiAJCQlkc3RQ
YXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsK
IAkJCWZpbGVzID0gKAorCQkJCTJFNjkxQUYzMUQ3OUU3NUUwMDEyOTQwNyAvKiBsYXJnZS12aWRl
by1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkU2
OTFBRjExRDc5RTUxQTAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwt
dG8tdmlkZW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFFRjFENzlERTg0
MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkU2OTFBRUQxRDc4QjkxMDAwMTI5NDA3IC8qIGxh
cmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJMkU2OTFBRUExRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZp
ZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKKwkJCQkyRTY5MUFFQjFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmct
dmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTlF
NTJDOTEzRTY1RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3Vz
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5
RiAvKiBBaGVtLnR0ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTczNiw2ICs3NDgsMTIgQEAK
IAkJMkUxREZERUMxRDQyQTQxQzAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8u
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMURGREVFMUQ0MkE2RUIwMDcx
NEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAg
LyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdp
bm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRTY5MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12
aWRlby1oaWRlcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxh
cmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRl
b3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gImxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcg
LyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12
aWRlby1oaWRlcy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkU2OTFBRUUxRDc5REU2RjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGlj
ay10by1wYXVzZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVv
cy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkU2OTFBRjAxRDc5RTUxNDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxh
eWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
YXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFGMjFENzlFNzU0MDAxMjk0MDcgLyogbGFyZ2Utdmlk
ZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFpbklPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBtYWluTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyog
UHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzg3LDYgKzE0MDUsMTIgQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8q
IFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMkU2OTFBRjIxRDc5RTc1NDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xs
LWF3YXkuaHRtbCAqLywKKwkJCQkyRTY5MUFGMDFENzlFNTE0MDAxMjk0MDcgLyogbGFyZ2Utdmlk
ZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sICovLAorCQkJCTJFNjkxQUVFMUQ3
OURFNkYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2Uu
aHRtbCAqLywKKwkJCQkyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBs
YXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLywKKwkJCQkyRTY5MUFFODFE
NzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9s
cy5odG1sICovLAorCQkJCTJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICovLAogCQkJCTVDOUU1OTNFMUQzRUIx
REUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiICovLAogCQkJCTVDOUU1OTNGMUQzRUIx
REUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLywKIAkJCQk1QzlFNTk0MDFE
M0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFu
YWdlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29u
dHJvbHNNYW5hZ2VyLm1tCmluZGV4IGZhZDVhM2FlNDhmYjA2MWNmYWM4ZWI2M2VkOWE2N2Y0ZDcz
YmJhMmYuLjRhYjkxNzJiNWVlY2VlYjRiMTZjZmM0MDgzNWEyYjNhZDI5MWUxYjEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNN
YW5hZ2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Zp
ZGVvQ29udHJvbHNNYW5hZ2VyLm1tCkBAIC0zNywxNzQgKzM3LDE2MSBAQAogCiAjaWYgV0tfQVBJ
X0VOQUJMRUQgJiYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAogCi1zdGF0aWMgYm9vbCB0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBs
YXlpbmc7Ci1zdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7Ci0KLUBpbnRlcmZhY2Ug
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXI+IHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKLX0KLQotQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgZXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmluZyAqZmluYWxNZXNzYWdlU3RyaW5nOwot
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBm
aW5hbE1lc3NhZ2VTdHJpbmc6KE5TU3RyaW5nICopZmluYWxNZXNzYWdlU3RyaW5nOwotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyCi0KLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGZpbmFsTWVzc2Fn
ZVN0cmluZzooTlNTdHJpbmcgKilmaW5hbE1lc3NhZ2VTdHJpbmcKLXsKLSAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF93ZWJWaWV3ID0g
d2ViVmlldzsKLSAgICBfZmluYWxNZXNzYWdlU3RyaW5nID0gZmluYWxNZXNzYWdlU3RyaW5nOwot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19CitAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tXZWJWaWV3QWRk
aXRpb25zKQogCi0tICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENv
bnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKLXsKLSAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2Ug
PSB0cnVlOworLSAodm9pZClfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3Rpbmc7CiAK
LSAgICBOU1N0cmluZyAqYm9keVN0cmluZyA9IChOU1N0cmluZyAqKVttZXNzYWdlIGJvZHldOwot
ICAgIGlmIChbYm9keVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6c2VsZi5maW5hbE1lc3NhZ2VTdHJp
bmddKSB7Ci0gICAgICAgIEJPT0wgaGFzQ29udHJvbHNNYW5hZ2VyID0gW193ZWJWaWV3IF9oYXNB
Y3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl07Ci0gICAgICAgIGlmIChzZWxmLmV4cGVjdGVk
VG9IYXZlQ29udHJvbHNNYW5hZ2VyKQotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFzQ29udHJv
bHNNYW5hZ2VyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0Nv
bnRyb2xzTWFuYWdlcik7Ci0gICAgICAgIHRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWlu
ZyA9IHRydWU7Ci0gICAgfQotfQogQGVuZAogCi1AaW50ZXJmYWNlIE9uTG9hZE1lc3NhZ2VIYW5k
bGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiBfd2ViVmlldzsKK0BpbnRlcmZhY2UgTWVzc2FnZUhhbmRsZXIgOiBOU09iamVj
dCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4geworICAgIGRpc3BhdGNoX2Jsb2NrX3QgX2hhbmRs
ZXI7CisgICAgTlNTdHJpbmcgKl9tZXNzYWdlOwogfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
c3Ryb25nKSBkaXNwYXRjaF9ibG9ja190IG9ubG9hZEhhbmRsZXI7CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaGFuZGxlcjooZGlzcGF0Y2hfYmxv
Y2tfdCloYW5kbGVyOwogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2Vi
Vmlldyopd2ViVmlldyBoYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CiBAZW5kCiAK
LUBpbXBsZW1lbnRhdGlvbiBPbkxvYWRNZXNzYWdlSGFuZGxlcgorQGltcGxlbWVudGF0aW9uIE1l
c3NhZ2VIYW5kbGVyCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJW
aWV3Kil3ZWJWaWV3IGhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxlcgorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGhhbmRsZXI6KGRpc3Bh
dGNoX2Jsb2NrX3QpaGFuZGxlcgogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF9vbmxv
YWRIYW5kbGVyID0gaGFuZGxlcjsKKyAgICBfaGFuZGxlciA9IFtoYW5kbGVyIGNvcHldOworICAg
IF9tZXNzYWdlID0gbWVzc2FnZTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXVz
ZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVu
dENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1l
c3NhZ2UKIHsKLSAgICBpZiAoIVsoTlNTdHJpbmcgKilbbWVzc2FnZSBib2R5XSBpc0VxdWFsVG9T
dHJpbmc6QCJsb2FkZWQiXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9vbmxvYWRIYW5k
bGVyKQotICAgICAgICBfb25sb2FkSGFuZGxlcigpOwotCi0gICAgX29ubG9hZEhhbmRsZXIgPSBu
aWw7CisgICAgaWYgKFsoTlNTdHJpbmcgKilbbWVzc2FnZSBib2R5XSBpc0VxdWFsVG9TdHJpbmc6
X21lc3NhZ2VdICYmIF9oYW5kbGVyKQorICAgICAgICBfaGFuZGxlcigpOwogfQotQGVuZAotCi1A
aW50ZXJmYWNlIFdLV2ViVmlldyAoV0tXZWJWaWV3QWRkaXRpb25zKQotCi0tICh2b2lkKV9pbnRl
cmFjdFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGluZzsKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdL
V2ViVmlldyAoVGVzdGluZ0FkZGl0aW9ucykKK0BpbnRlcmZhY2UgVmlkZW9Db250cm9sc01hbmFn
ZXJUZXN0V2ViVmlldyA6IFdLV2ViVmlldwogCiAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5T
UG9pbnQpcG9pbnQ7CiAtICh2b2lkKXBlcmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2Nr
X3QpYWN0aW9uczsKKy0gKHZvaWQpbG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5h
bWU7CistICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lIGFuZEV4
cGVjdENvbnRyb2xzTWFuYWdlcjooQk9PTClleHBlY3RDb250cm9sc01hbmFnZXIgYWZ0ZXJSZWNl
aXZpbmdNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2U7CistICh2b2lkKXBlcmZvcm1BZnRlclJl
Y2VpdmluZ01lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBhY3Rpb246KGRpc3BhdGNoX2Jsb2Nr
X3QpYWN0aW9uOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpj
b250cm9sbGVkRWxlbWVudElEOwogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcg
KFRlc3RpbmdBZGRpdGlvbnMpCitAaW1wbGVtZW50YXRpb24gVmlkZW9Db250cm9sc01hbmFnZXJU
ZXN0V2ViVmlldyB7CisgICAgYm9vbCBfaXNEb25lUXVlcnlpbmdDb250cm9sbGVkRWxlbWVudElE
OworICAgIE5TU3RyaW5nICpfY29udHJvbGxlZEVsZW1lbnRJRDsKK30KIAogLSAodm9pZCltb3Vz
ZURvd25BdFBvaW50OihOU1BvaW50KXBvaW50IHsKICAgICBbc2VsZiBtb3VzZURvd246W05TRXZl
bnQgbW91c2VFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlTGVmdE1vdXNlRG93biBsb2NhdGlvbjpO
U01ha2VQb2ludChwb2ludC54LCBwb2ludC55KSBtb2RpZmllckZsYWdzOjAgdGltZXN0YW1wOkdl
dEN1cnJlbnRFdmVudFRpbWUoKSB3aW5kb3dOdW1iZXI6MCBjb250ZXh0OltOU0dyYXBoaWNzQ29u
dGV4dCBjdXJyZW50Q29udGV4dF0gZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjAgcHJlc3N1cmU6
MF1dOwogfQogCiAtICh2b2lkKXBlcmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3Qp
YWN0aW9ucyB7Ci0gICAgT25Mb2FkTWVzc2FnZUhhbmRsZXIgKmhhbmRsZXIgPSBbW09uTG9hZE1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzpzZWxmIGhhbmRsZXI6YWN0aW9u
c107CisgICAgTWVzc2FnZUhhbmRsZXIgKmhhbmRsZXIgPSBbW01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aE1lc3NhZ2U6QCJsb2FkZWQiIGhhbmRsZXI6YWN0aW9uc107CiAgICAgTlNTdHJp
bmcgKm9ubG9hZFNjcmlwdCA9IEAid2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5vbmxvYWRIYW5kbGVyLnBvc3RNZXNzYWdlKCdsb2FkZWQn
KTsgfSI7CiAgICAgV0tVc2VyU2NyaXB0ICpzY3JpcHQgPSBbW1dLVXNlclNjcmlwdCBhbGxvY10g
aW5pdFdpdGhTb3VyY2U6b25sb2FkU2NyaXB0IGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXTsKLSAgICBbW1tz
ZWxmIGNvbmZpZ3VyYXRpb25dIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkVXNlclNjcmlwdDpz
Y3JpcHRdOwotICAgIFtbW3NlbGYgY29uZmlndXJhdGlvbl0gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07
CisKKyAgICBXS1VzZXJDb250ZW50Q29udHJvbGxlciogY29udGVudENvbnRyb2xsZXIgPSBbW3Nl
bGYgY29uZmlndXJhdGlvbl0gdXNlckNvbnRlbnRDb250cm9sbGVyXTsKKyAgICBbY29udGVudENv
bnRyb2xsZXIgYWRkVXNlclNjcmlwdDpzY3JpcHRdOworICAgIFtjb250ZW50Q29udHJvbGxlciBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07Cit9
CisKKy0gKHZvaWQpbG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWUKK3sKKyAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6cGFnZU5hbWUgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAg
IFtzZWxmIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworfQorCistICh2b2lkKWxvYWRUZXN0UGFnZU5h
bWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjooQk9PTCll
eHBlY3RDb250cm9sc01hbmFnZXIgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2UKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZVdhaXRpbmcgPSBmYWxzZTsKKyAgICBbc2Vs
ZiBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOm1lc3NhZ2UgYWN0aW9uOl4geworICAgICAg
ICBCT09MIGhhc1ZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyID0gW3NlbGYgX2hhc0FjdGl2ZVZpZGVv
Rm9yQ29udHJvbHNNYW5hZ2VyXTsKKyAgICAgICAgaWYgKGV4cGVjdENvbnRyb2xzTWFuYWdlcikK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhc1ZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc1ZpZGVvRm9yQ29udHJvbHNN
YW5hZ2VyKTsKKyAgICAgICAgZG9uZVdhaXRpbmcgPSB0cnVlOworICAgIH1dOworCisgICAgW3Nl
bGYgbG9hZFRlc3RQYWdlTmFtZWQ6cGFnZU5hbWVdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZVdhaXRpbmcpOworfQorCistICh2b2lkKXBlcmZvcm1BZnRlclJlY2VpdmluZ01l
c3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBhY3Rpb246KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9u
Cit7CisgICAgUmV0YWluUHRyPE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aE1lc3NhZ2U6bWVzc2FnZSBoYW5kbGVyOmFjdGlv
bl0pOworICAgIFtbW3NlbGYgY29uZmlndXJhdGlvbl0gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxl
ciJdOworfQorCistIChOU1N0cmluZyAqKWNvbnRyb2xsZWRFbGVtZW50SUQKK3sKKyAgICBfaXNE
b25lUXVlcnlpbmdDb250cm9sbGVkRWxlbWVudElEID0gZmFsc2U7CisgICAgW3NlbGYgX3JlcXVl
c3RDb250cm9sbGVkRWxlbWVudElEXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJl9p
c0RvbmVRdWVyeWluZ0NvbnRyb2xsZWRFbGVtZW50SUQpOworICAgIHJldHVybiBfY29udHJvbGxl
ZEVsZW1lbnRJRDsKK30KKworLSAodm9pZClfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3Bv
bnNlOihOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICBfY29udHJvbGxlZEVsZW1lbnRJRCA9
IFtpZGVudGlmaWVyIGNvcHldOworICAgIF9pc0RvbmVRdWVyeWluZ0NvbnRyb2xsZWRFbGVtZW50
SUQgPSB0cnVlOwogfQogCiBAZW5kCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZp
ZGVvKQorUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiBzZXRVcFdl
YlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNSZWN0IGZyYW1lKQogewogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0
aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1
ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBS
ZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhb
W01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2Vi
Vmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07Ci0KKyAgICBSZXRhaW5QdHI8Vmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tWaWRlb0Nv
bnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3
ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBbW3dpbmRvdyBjb250ZW50Vmll
d10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKIAorICAgIHJldHVybiB3ZWJWaWV3OworfQor
CitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxh
cmdlVmlkZW8pCit7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
KE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKwogICAgIC8vIEEgbGFyZ2UgdmlkZW8gd2l0
aCBhdWRpbyBzaG91bGQgaGF2ZSBhIGNvbnRyb2xzIG1hbmFnZXIgZXZlbiBpZiBpdCBpcyBwbGF5
ZWQgdmlhIHNjcmlwdCBsaWtlIHRoaXMgdmlkZW8uCiAgICAgLy8gU28gdGhlIGV4cGVjdGF0aW9u
IGlzIFlFUy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZ
RVNdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVv
LXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
LQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0
ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby13
aXRoLWF1ZGlvIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJTaW5nbGVTbWFsbFZpZGVvKQogewotICAgIFJldGFpblB0cjxXS1dlYlZp
ZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlw
ZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBl
Tm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5
YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1l
c3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpA
InBsYXlpbmdIYW5kbGVyIl07Ci0KLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFk
b3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFt
ZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZp
ZXc6d2ViVmlldy5nZXQoKV07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVz
dFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNN
YW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIC8vIEEgc21hbGwgdmlk
ZW8gd2lsbCBub3QgaGF2ZSBhIGNvbnRyb2xzIG1hbmFnZXIgdW5sZXNzIGl0IHN0YXJ0ZWQgcGxh
eWluZyBiZWNhdXNlIG9mIGEgdXNlciBnZXN0dXJlLiBTaW5jZSB0aGlzCiAgICAgLy8gdmlkZW8g
aXMgc3RhcnRlZCB3aXRoIGEgc2NyaXB0LCB0aGUgZXhwZWN0YXRpb24gaXMgTk8uCi0gICAgW2hh
bmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6Tk9dOwotICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJ2aWRlby13aXRoLWF1ZGlvIiBhbmRFeHBlY3RDb250cm9sc01h
bmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJdOwogfQogCiBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0
aEF1ZGlvKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9y
UGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgX19ibG9jayBCT09MIGRpZFNob3dNZWRp
YUNvbnRyb2xzOwogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmVMb2FkaW5nID0gZmFsc2U7CiAKLSAg
ICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVz
c1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0g
ICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0gICAg
UmV0YWluUHRyPE9uTG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhb
W09uTG9hZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpIGhhbmRsZXI6XigpIHsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4gewog
ICAgICAgICBkaWRTaG93TWVkaWFDb250cm9scyA9IFt3ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0Zv
ckNvbnRyb2xzTWFuYWdlcl07CiAgICAgICAgIGlzRG9uZUxvYWRpbmcgPSB0cnVlOwotICAgIH1d
KTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07
CisgICAgfV07CiAKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJn
ZS12aWRlb3Mtd2l0aC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdp
dGgtYXVkaW8iXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lTG9hZGlu
Zyk7CiAgICAgRVhQRUNUX0ZBTFNFKGRpZFNob3dNZWRpYUNvbnRyb2xzKTsKQEAgLTIxMiwxNzUg
KzE5OSwxNTcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFn
ZXJNdWx0aXBsZVZpZGVvc1dpdGhBdWRpbykKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1dpdGhBdWRpb0FuZEF1dG9wbGF5KQog
ewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25m
aWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sg
PSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkpOwogCiAgICAgX19ibG9jayBCT09MIGRpZFNob3dNZWRpYUNvbnRyb2xz
OwogICAgIF9fYmxvY2sgYm9vbCBpc0RvbmVMb2FkaW5nID0gZmFsc2U7CiAKLSAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0gICAgUmV0YWluUHRy
PE9uTG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09uTG9hZE1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGhhbmRs
ZXI6XigpIHsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4gewogICAgICAgICBk
aWRTaG93TWVkaWFDb250cm9scyA9IFt3ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xz
TWFuYWdlcl07CiAgICAgICAgIGlzRG9uZUxvYWRpbmcgPSB0cnVlOwotICAgIH1dKTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07CisgICAgfV07
CiAKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlb3Mt
d2l0aC1hdWRpby1hdXRvcGxheSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdp
dGgtYXVkaW8tYXV0b3BsYXkiXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lTG9hZGluZyk7CiAgICAgRVhQRUNUX1RSVUUoZGlkU2hvd01lZGlhQ29udHJvbHMpOwogfQog
Ci1URVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNt
YWxsQXV0b3BsYXlpbmdWaWRlbykKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NTY3JvbGxQYXVzZWRWaWRlb091dE9mVmlldykKIHsK
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmln
dXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0g
V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tIYW5kbGVy
ID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhX
S1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwYXVzZWQiXSk7Ci0g
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6cGxheWJhY2tIYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwor
ICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9
IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAs
IDAsIDUwMCwgNTAwKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0
TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0g
c3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6
d2ViVmlldy5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12
aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzIiBhbmRFeHBlY3RDb250cm9sc01hbmFn
ZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2VkIl07Cit9CiAKLSAgICBSZXRhaW5Q
dHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2Fk
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFu
ZGxlcjpeKCkgewotICAgICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ok5TTWFrZVBvaW50
KDUwLCA1MCldOwotICAgIH1dKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6
QCJvbmxvYWRIYW5kbGVyIl07CitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsUGxheWluZ1ZpZGVvV2l0aFNvdW5kT3V0T2ZW
aWV3KQoreworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4g
d2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01h
a2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CisKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAImxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzIiBhbmRFeHBlY3RD
b250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKK30K
IAotICAgIC8vIEEgc21hbGwgdmlkZW8gc2hvdWxkIGhhdmUgYSBjb250cm9scyBtYW5hZ2VyIGFm
dGVyIHRoZSBmaXJzdCB1c2VyIGdlc3R1cmUsIHdoaWNoIGluY2x1ZGVzIHBhdXNpbmcgdGhlIHZp
ZGVvLiBUaGUgZXhwZWN0YXRpb24gaXMgWUVTLgotICAgIFtwbGF5YmFja0hhbmRsZXIgc2V0RXhw
ZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6WUVTXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0g
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CitURVNUKFZpZGVvQ29udHJvbHNNYW5h
Z2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsUGxheWluZ011dGVk
VmlkZW9PdXRPZlZpZXcpCit7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVz
dFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNN
YW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKIAotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1o
aWRlcy1jb250cm9scyIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5n
TWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAotVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlk
ZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FmdGVyRW5kaW5nKQor
VEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZp
ZGVvc1Nob3dDb250cm9sc0Zvckxhc3RJbnRlcmFjdGVkVmlkZW8pCiB7Ci0gICAgUmV0YWluUHRy
PFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
bWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxN
ZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAx
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxN
ZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5
YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
IGZpbmFsTWVzc2FnZVN0cmluZzpAImVuZGVkIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
bmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5h
Z2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29u
dHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApKTsKKyAgICBOU1BvaW50IGNs
aWNrUG9pbnQgPSBOU01ha2VQb2ludCg0MDAsIDMwMCk7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5k
b3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVj
dDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2lu
ZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVu
dFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAgW3dlYlZpZXcgcGVyZm9ybUFm
dGVyTG9hZGluZzpeIHsKKyAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1Bv
aW50XTsKKyAgICB9XTsKIAotICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBoYXMgZW5kZWQsIHRoZSBl
eHBlY3RhdGlvbiBpcyBOTyBldmVuIGlmIHRoZSBwYWdlIHByb2dyYW1tYXRpY2FsbHkgc2Vla3Mg
dG8gdGhlIGJlZ2lubmluZy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xz
TWFuYWdlcjpOT107Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFy
Z2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmciIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKKyAgICBfX2Jsb2NrIGJvb2wgZmlyc3RWaWRlb1BhdXNlZCA9IGZhbHNl
OworICAgIF9fYmxvY2sgYm9vbCBzZWNvbmRWaWRlb1BhdXNlZCA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZWQiIGFjdGlvbjpeIHsKKyAg
ICAgICAgTlNTdHJpbmcgKmNvbnRyb2xsZWRFbGVtZW50SUQgPSBbd2ViVmlldyBjb250cm9sbGVk
RWxlbWVudElEXTsKKyAgICAgICAgaWYgKGZpcnN0VmlkZW9QYXVzZWQpIHsKKyAgICAgICAgICAg
IHNlY29uZFZpZGVvUGF1c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb250
cm9sbGVkRWxlbWVudElEIGlzRXF1YWxUb1N0cmluZzpAInNlY29uZCJdKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6Y2xpY2tQb2ludF07
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShbY29udHJvbGxlZEVsZW1lbnRJRCBpc0VxdWFsVG9T
dHJpbmc6QCJmaXJzdCJdKTsKKyAgICAgICAgfQorICAgICAgICBmaXJzdFZpZGVvUGF1c2VkID0g
dHJ1ZTsKKyAgICB9XTsKIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29u
dHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UiXTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnNlY29uZFZpZGVvUGF1c2VkKTsKIH0KIAotVEVTVChWaWRlb0Nv
bnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9T
ZWVrc0FuZFBsYXlzQWZ0ZXJFbmRpbmcpCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU3dpdGNoQ29udHJvbGxlZFZpZGVvV2hlblNj
cm9sbGluZykKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZv
clBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRX
aXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicmVwbGF5aW5n
Il0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07Cisg
ICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0g
c2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApKTsKIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHRO
UyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3
ZWJWaWV3LmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgc2Nyb2xsZWRTZWNvbmRWaWRlb0ludG9W
aWV3ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRl
b3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvIl07CisgICAgW3dlYlZpZXcgcGVyZm9ybUFm
dGVyUmVjZWl2aW5nTWVzc2FnZTpAInNjcm9sbGVkIiBhY3Rpb246XiB7CisgICAgICAgIHNjcm9s
bGVkU2Vjb25kVmlkZW9JbnRvVmlldyA9IHRydWU7CisgICAgfV07CiAKLSAgICAvLyBTaW5jZSB0
aGUgdmlkZW8gaXMgc3RpbGwgcGxheWluZywgdGhlIGV4cGVjdGF0aW9uIGlzIFlFUyBldmVuIGlm
IHRoZSB2aWRlbyBoYXMgZW5kZWQgb25jZS4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2
ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
ZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2Nyb2xsZWRTZWNvbmRWaWRlb0ludG9WaWV3KTsKKyAgICBF
WFBFQ1RfVFJVRShbW3dlYlZpZXcgY29udHJvbGxlZEVsZW1lbnRJRF0gaXNFcXVhbFRvU3RyaW5n
OkAic2Vjb25kIl0pOworfQorCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsT25seUxhcmdlVmlkZW9PdXRPZlZpZXcpCit7
CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3
ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3Qo
MCwgMCwgNTAwLCA1MDApKTsKIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVk
Q29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5IiBhbmRFeHBlY3RDb250cm9sc01h
bmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInNjcm9sbGVkIl07CiB9CiAKLVRFU1Qo
VmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWlu
Z1ZpZGVvQWZ0ZXJTZWVraW5nVG9FbmQpCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3BsYXlpbmdWaWRlbykKIHsKLSAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zp
c3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAx
MDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWlu
UHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRp
YVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcu
Z2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAiZW5kZWQiXSk7Ci0gICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9s
c01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlk
ZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtb
d2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFt3ZWJW
aWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CisgICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0
UG9pbnQ6TlNNYWtlUG9pbnQoNTAsIDUwKV07CisgICAgfV07CisKKyAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAImF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4cGVjdENv
bnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2VkIl07Cit9CisK
K1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRv
cGxheWluZ1ZpZGVvU2Vla3NBZnRlckVuZGluZykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCisgICAg
Ly8gU2luY2UgdGhlIHZpZGVvIGhhcyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PIGV2ZW4g
aWYgdGhlIHBhZ2UgcHJvZ3JhbW1hdGljYWxseSBzZWVrcyB0byB0aGUgYmVnaW5uaW5nLgorICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRp
bmciIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJl
bmRlZCJdOworfQorCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFu
YWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtzQW5kUGxheXNBZnRlckVuZGluZykKK3sKKyAg
ICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBz
ZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAw
LCAxMDAsIDEwMCkpOworCisgICAgLy8gU2luY2UgdGhlIHZpZGVvIGlzIHN0aWxsIHBsYXlpbmcs
IHRoZSBleHBlY3RhdGlvbiBpcyBZRVMgZXZlbiBpZiB0aGUgdmlkZW8gaGFzIGVuZGVkIG9uY2Uu
CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby1zZWVrLXRvLWJl
Z2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmciIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZ
RVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicmVwbGF5aW5nIl07Cit9CiAKLSAgICBSZXRhaW5Q
dHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2Fk
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFu
ZGxlcjpeKCkgeworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFn
ZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9BZnRlclNlZWtpbmdUb0VuZCkKK3sKKyAgICBSZXRhaW5Q
dHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEw
MCkpOworCisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKICAgICAgICAgW3dl
YlZpZXcgbW91c2VEb3duQXRQb2ludDpOU01ha2VQb2ludCg1MCwgNTApXTsKLSAgICB9XSk7Ci0g
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6b25sb2FkSGFuZGxlci5nZXQoKSBuYW1lOkAib25sb2FkSGFuZGxlciJdOworICAg
IH1dOwogCiAgICAgLy8gV2UgZXhwZWN0IHRoZXJlIHRvIGJlIG1lZGlhIGNvbnRyb2xzLCBzaW5j
ZSB0aGlzIGlzIGEgdXNlciBnZXN0dXJlZCBzZWVrIHRvIHRoZSBlbmQuCiAgICAgLy8gVGhpcyBp
cyBha2luIHRvIHNlZWtpbmcgdG8gdGhlIGVuZCBieSBzY3J1YmJpbmcgaW4gdGhlIGNvbnRyb2xz
LgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Ci0g
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8taGlkZXMt
Y29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29u
dHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZCIgYW5kRXhwZWN0
Q29udHJvbHNNYW5hZ2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJlbmRlZCJdOwogfQog
CiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxh
cmdlVmlkZW9XaXRob3V0QXVkaW8pCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2Fn
ZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmlu
ZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hh
bmRsZXIiXTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQSBsYXJnZSB2aWRlbyB3aXRoIG5v
IGF1ZGlvIHdpbGwgbm90IGhhdmUgYSBjb250cm9scyBtYW5hZ2VyIHVubGVzcyBpdCBzdGFydGVk
IHBsYXlpbmcgYmVjYXVzZSBvZiBhIHVzZXIgZ2VzdHVyZS4gU2luY2UgdGhpcwogICAgIC8vIHZp
ZGVvIGlzIHN0YXJ0ZWQgd2l0aCBhIHNjcmlwdCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgotICAg
IFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKLSAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlby13aXRob3V0LWF1ZGlv
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwor
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8td2l0aG91dC1hdWRp
byIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBs
YXlpbmciXTsKIH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJBdWRpb0VsZW1lbnRTdGFydGVkV2l0aFNjcmlwdCkKIHsKLSAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNr
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmlu
YWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5h
bWU6QCJwbGF5aW5nSGFuZGxlciJdOwotCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cg
PSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcg
ZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5n
U3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRT
dWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICAvLyBBbiBhdWRp
byBlbGVtZW50IE1VU1QgYmUgc3RhcnRlZCB3aXRoIGEgdXNlciBnZXN0dXJlIGluIG9yZGVyIHRv
IGhhdmUgYSBjb250cm9scyBtYW5hZ2VyLCBzbyB0aGUgZXhwZWN0YXRpb24gaXMgTk8uCi0gICAg
W2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6Tk9dOwotICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1ZGlvLW9ubHkiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJhdWRpby1vbmx5IiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8g
YWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyJdOwogfQogCiBURVNUKFZpZGVvQ29udHJv
bHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclRlYXJzRG93bk1lZGlhQ29udHJvbHNPbkRl
YWxsb2MpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFz
azpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBk
ZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcu
Z2V0KCldOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4g
d2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBOU1VSTCAqdXJsT2ZWaWRlbyA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ2aWRlby13aXRoLWF1ZGlvIiB3aXRo
RXh0ZW5zaW9uOkAibXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogICAgIFt3ZWJWaWV3IGxvYWRGaWxlVVJMOnVybE9mVmlkZW8gYWxsb3dpbmdSZWFkQWNjZXNz
VG9VUkw6W3VybE9mVmlkZW8gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XV07CiAKICAg
ICBfX2Jsb2NrIGJvb2wgZmluaXNoZWRUZXN0ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgcGVyZm9y
bUFmdGVyTG9hZGluZzpeKCkKLSAgICB7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGlu
ZzpeIHsKICAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgdGVhciBkb3duIHRoZSBtZWRpYSBjb250
cm9scyBwcm9wZXJseSwgc3VjaCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlIHdlYiB2aWV3
IGlzIHJlbGVhc2VkLgogICAgICAgICBpZiAoW3dlYlZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3RpbmcpXSkKICAgICAgICAg
ICAgIFt3ZWJWaWV3IF9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGluZ107CkBAIC0z
OTQsMTYgKzM2MywxMCBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xz
TWFuYWdlclRlYXJzRG93bk1lZGlhQ29udHJvbHNPbkRlYWxsb2MpCiAKIFRFU1QoVmlkZW9Db250
cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU21hbGxWaWRlb0luTWVkaWFEb2N1bWVu
dCkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7Ci0gICAgCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFz
azpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBk
ZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcu
Z2V0KCldOwotICAgIAorICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJW
aWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdl
cihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNo
ZWRMb2FkID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeKCkKLSAg
ICB7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKICAgICAgICAgZmluaXNo
ZWRMb2FkID0gdHJ1ZTsKICAgICB9XTsKICAgICAKQEAgLTQxOCw0MCArMzgxLDE2IEBAIFRFU1Qo
VmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU21hbGxWaWRlb0luTWVk
aWFEb2N1bWVudCkKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJMb25nU2tpbm55VmlkZW9JbldpZGVNYWluRnJhbWUpCiB7Ci0gICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVk
aWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRp
YVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTYwMCwgODAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TlNX
aW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFj
a2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29u
dGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0KLSAgICBSZXRhaW5QdHI8TWVk
aWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJh
Y2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBm
aW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
bmFtZTpAInBsYXlpbmdIYW5kbGVyIl07Ci0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVD
b250cm9sc01hbmFnZXI6Tk9dOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRl
c3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xz
TWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOwogCi0gICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVk
aW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5n
KTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7
CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJza2lubnktYXV0b3BsYXlpbmctdmlk
ZW8td2l0aC1hdWRpbyIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5n
TWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlk
ZW9Db250cm9sc01hbmFnZXJGdWxsU2l6ZVZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9u
LmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlv
dmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDE2MDAsIDgwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtb
d2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgUmV0
YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tN
ZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZp
ZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwotICAgIFtoYW5kbGVyIHNldEV4cGVj
dGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJmdWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgw
MCkpOwogCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFn
ZXJBZnRlclBsYXlpbmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlKTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImZ1bGwtc2l6
ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6
WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3Jv
bGwtYXdheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlY2Y5MjkzMzI3NDM4MGIyYjdhY2Q0M2Y0YTdmZTli
YjUyYjhjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9sYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgdmlkZW8geworICAgICAgICAgICAgICAgIHdpZHRoOiA0ODBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMyMHB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZGl2IHsKKyAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1MDAwcHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5j
dGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiZGl2Iikuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgic2Nyb2xsZWQiKTsKKyAgICAgICAg
ICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD1oYW5kbGVMb2FkZWQoKT4KKyAgICAgICAgPHZpZGVvIGF1
dG9wbGF5IGxvb3AgaWQ9ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48
L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAgICAgIDxkaXY+aGVsbG8gd29ybGQhPC9kaXY+Cisg
ICAgPC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1h
dXRvcGxheWluZy1jbGljay10by1wYXVzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYmRkZjAwZWFhOTlh
ZGEzOGFiZWFlYTgxOTg2MTJiYjRjNGE0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xp
Y2stdG8tcGF1c2UuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICB2aWRlbyB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDQ4MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzIwcHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgICAgICB2YXIgaXNGaXJzdENsaWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGhh
bmRsZU1vdXNlRG93bigpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KGlzRmlyc3RDbGljayA/ICIjZmlyc3QiIDogIiNzZWNvbmQiKS5wYXVzZSgpOworICAgICAgICAg
ICAgICAgIGlzRmlyc3RDbGljayA9IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBoYW5kbGVGaXJzdFBhdXNlKCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5w
b3N0TWVzc2FnZSgicGF1c2VkIik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9
CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGhhbmRsZVNlY29uZFBhdXNlKCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0
TWVzc2FnZSgicGF1c2VkIik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9Cisg
ICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbm1vdXNlZG93bj1oYW5kbGVNb3VzZURvd24oKT4KKyAg
ICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdp
dGgtYXVkaW8ubXA0IiBvbnBhdXNlPWhhbmRsZUZpcnN0UGF1c2UoKT48L3ZpZGVvPgorICAgICAg
ICA8dmlkZW8gYXV0b3BsYXkgbG9vcCBpZD0ic2Vjb25kIiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgt
YXVkaW8ubXA0IiBvbnBhdXNlPWhhbmRsZVNlY29uZFBhdXNlKCk+PC92aWRlbz4KKyAgICA8L2Jv
ZHk+Cis8aHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxh
eWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDRmZjI5Njc3YWY0MTZmNWU1
MTQ4MmM3MGM0MTU3MjMzM2RjMmQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10
by12aWRlby5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIHZpZGVvIHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogNDgwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICNzZWNvbmQgeworICAgICAgICAgICAgICAgIG1hcmdp
bi10b3A6IDUwMDBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWRlZCgpIHsKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc2Vjb25kIikuc2Nyb2xsSW50b1ZpZXco
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0
TWVzc2FnZSgic2Nyb2xsZWQiKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD1oYW5k
bGVMb2FkZWQoKT4KKyAgICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZpcnN0IiBzcmM9
ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAg
ICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJzZWNvbmQiIHNyYz0ibGFyZ2UtdmlkZW8td2l0
aC1hdWRpby5tcDQiPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2Vk
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2M1ZjI1ZTc0NWE0Y2Q1YzhlNzMwNDNjY2I2MjI2Y2FkOTkwYWEwMQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbApAQCAtMCwwICsxLDMw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorICAgIHZpZGVvIHsKKyAgICAg
ICAgd2lkdGg6IDQ4MHB4OworICAgICAgICBoZWlnaHQ6IDMyMHB4OworICAgIH0KKyAgICAjYmFy
IHsKKyAgICAgICAgbWFyZ2luLXRvcDogNTAwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0
PgorICAgIGZ1bmN0aW9uIGhhbmRsZUxvYWRlZCgpIHsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI2JhciIpLnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIiNmb28iKS5wYXVzZSgpOworICAgIH0KKyAgICBmdW5jdGlvbiBoYW5kbGVQYXVz
ZWQoKSB7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cnkg
eworICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdI
YW5kbGVyLnBvc3RNZXNzYWdlKCJwYXVzZWQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9
CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWhhbmRsZUxv
YWRlZCgpPgorICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmb28iIG9ucGF1c2U9aGFuZGxl
UGF1c2VkKCk+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVv
PgorICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVv
LXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVv
cy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFi
Y2ZmNDA1YjEyYjliZGZiZGRiYjZjNWFiNGMzNjY2MGUwZGIwNQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5
aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICB2aWRlbyB7CisgICAgICAgIHdpZHRo
OiA0ODBweDsKKyAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICB9CisgICAgI2JhciB7CisgICAg
ICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBm
dW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
IiNmb28iKS5tdXRlZCA9IHRydWU7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNi
YXIiKS5zY3JvbGxJbnRvVmlldygpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGxheWluZyIpOworICAgICAgICAg
ICAgfSBjYXRjaChlKSB7IH0KKyAgICAgICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZv
byI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAg
IDxicj4KKyAgICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgt
YXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZp
ZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzExMGJiNzcxYWI3ZGE5ZjA5ZmQ0
NDJlOWY1OTIxNTg3MWIyMmY2MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNv
bnRyb2xzLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxz
dHlsZT4KKyAgICB2aWRlbyB7CisgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVpZ2h0
OiAzMjBweDsKKyAgICB9CisgICAgI2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsK
KyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7
CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmlldygp
OworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxl
ci5wb3N0TWVzc2FnZSgicGxheWluZyIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAg
ICAgICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVk
KCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZvbyI+PHNvdXJjZSBzcmM9Imxhcmdl
LXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9
ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgor
PC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287872</attachid>
            <date>2016-09-03 15:52:27 -0700</date>
            <delta_ts>2016-09-03 16:56:08 -0700</delta_ts>
            <desc>Addresses review feedback</desc>
            <filename>bug-161503-20160903155009.patch</filename>
            <type>text/plain</type>
            <size>89253</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNjE4YWM0YTcwNTI5
ODdjNGNhNGE1YmU0MmU5NzczMjAyZWRlZi4uNDI4YmI1ZDVmZjE5YTYwNTIxZmM1OTBkNjFiZDIz
OWJiMDFjODdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTA5LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSwgd2hlbiBzZWxlY3RpbmcgYSBtZWRpYSBzZXNzaW9uIHRvIHNob3cgcGxheWJhY2sgY29udHJv
bHMgZm9yLCB3ZSBncmFiIHRoZSBmaXJzdCBtZWRpYSBzZXNzaW9uIHRoYXQKKyAgICAgICAgcGFz
c2VzIG91ciBoZXVyaXN0aWMuIFVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBhcmUgdW5hYmxlIHRvIHRh
a2UgYWRkaXRpb25hbCBmYWN0b3JzIGludG8gYWNjb3VudCwgc3VjaCBhcyB3aGV0aGVyCisgICAg
ICAgIGFub3RoZXIgbWVkaWEgc2Vzc2lvbidzIGVsZW1lbnQgaXMgc2Nyb2xsZWQgaW4gdmlldywg
b3IgaWYgYW5vdGhlciBtZWRpYSBzZXNzaW9uIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aCBtb3Jl
CisgICAgICAgIHJlY2VudGx5LiBUbyBhZGRyZXNzIHRoaXMsIHdlIG1ha2UgdGhlIGZvbGxvd2lu
ZyBjaGFuZ2VzOgorCisgICAgICAgICAgICAxLiAgQ29uc2lkZXIgdGhlIGxpc3Qgb2YgYWxsIE1l
ZGlhRWxlbWVudFNlc3Npb25zLgorCisgICAgICAgICAgICAyLiAgU2VsZWN0IG9ubHkgdGhlIE1l
ZGlhRWxlbWVudFNlc3Npb25zIGNhcGFibGUgb2Ygc2hvd2luZyBtZWRpYSBjb250cm9scyBhbmQg
c29ydCB0aGUgbGlzdCBieSBhIHNwZWNpYWwKKyAgICAgICAgICAgICAgICBoZXVyaXN0aWMgdGhh
dCB0YWtlcyB2aXNpYmlsaXR5IGFuZCB0aW1lIG9mIGxhc3QgdXNlciBpbnRlcmFjdGlvbiBpbnRv
IGFjY291bnQuIFRoZSBmaXJzdCBlbGVtZW50IG9uCisgICAgICAgICAgICAgICAgdGhpcyBsaXN0
IGlzIHRoZSBzdHJvbmdlc3QgY2FuZGlkYXRlIGZvciBtYWluIGNvbnRlbnQuCisKKyAgICAgICAg
ICAgIDMuICBJZiB0aGlzIHN0cm9uZ2VzdCBjYW5kaWRhdGUgaXMgdmlzaWJsZSBpbiB0aGUgdmll
d3BvcnQsIG9yIGl0IGlzIHBsYXlpbmcgd2l0aCBhdWRpbywgd2UgcmV0dXJuIHRoaXMKKyAgICAg
ICAgICAgICAgICBhcyB0aGUgY2hvc2VuIGNhbmRpZGF0ZS4gT3RoZXJ3aXNlLCB3ZSByZXR1cm4g
dGhpcyBzZXNzaW9uIG9ubHkgaWYgbm8gb3RoZXIgbm9uLWNhbmRpZGF0ZSB2aWRlbyBjb3VsZCBi
ZQorICAgICAgICAgICAgICAgIGNvbmZ1c2VkIGFzIHRoZSBtYWluIGNvbnRlbnQgKGkuZS4gdGhl
IG5vbi1jYW5kaWRhdGUgdmlkZW8gaXMgbm90IG9ubHkgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQs
IGJ1dCBhbHNvCisgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQg
bWFpbiBjb250ZW50KS4KKworICAgICAgICBVc2luZyB0aGlzIG5ldyBtZXRob2Qgb2YgZGV0ZXJt
aW5pbmcgdGhlIHZpZGVvIHRvIHNob3cgY29udHJvbHMgZm9yLCB3ZSByZXRhaW4gcHJldmlvdXMg
YmVoYXZpb3IgZm9yIHBhZ2VzIHdpdGgKKyAgICAgICAgYSBzaW5nbGUgdmlkZW8uIE9uIHBhZ2Vz
IHdpdGggbXVsdGlwbGUgdmlkZW9zLCB0aGUgYWJvdmUgbG9naWMgZW5zdXJlcyB0aGF0IGlmIHRo
ZSBjdXJyZW50IGNvbnRyb2xsZWQgdmlkZW8gaXMKKyAgICAgICAgcGF1c2VkLCBzY3JvbGxlZCBv
dXQgb2YgdmlldywgYW5kIHRoZW4gYSBuZXcgdmlkZW8gaXMgc2Nyb2xsZWQgaW50byB2aWV3LCB3
ZSB3aWxsIGVpdGhlciBoaWRlIG1lZGlhIGNvbnRyb2xzIHRvCisgICAgICAgIGF2b2lkIGNvbmZ1
c2lvbiBpZiB0aGF0IHZpZGVvIGNvdWxkIGJlIGNvbmZ1c2VkIGZvciBtYWluIGNvbnRlbnQgKHVz
aW5nIHRoZSBtZWNoYW5pc20gaW4gc3RlcCAzKSwgb3Igd2UKKyAgICAgICAgaG9vayB1cCB0aGUg
bWVkaWEgY29udHJvbHMgdG8gdGhlIG5ldyB2aWRlbyBpZiBpdCBzYXRpc2ZpZXMgbWFpbiBjb250
ZW50ICh1c2luZyB0aGUgbWVjaGFuaXNtIGluIHN0ZXAgMikuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhbHNvIGFkZHMgNiBuZXcgVGVzdFdlYktpdEFQSSB1bml0IHRlc3RzLgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRWxlbWVu
dFNlc3Npb25JbmZvRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJNZWRpYUNv
bnRyb2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6bWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0
dGFjaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlv
dXRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1Zp
c2libGVJblZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVo
YXZpb3JSZXN0cmljdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjppc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmlzUGxheWluZ0F1ZGlvKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246Om1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246Ondh
bnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yTWVkaWFDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjp3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0Vmlz
aWJpbGl0eUZvckF1dG9wbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Np
b246OnJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcik6IERlbGV0ZWQuCisgICAg
ICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJy
ZW50U2Vzc2lvbnNNYXRjaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uTWF0Y2hpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgor
ICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxl
bWVudCk6CisKIDIwMTYtMDgtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGEgdHlwbyBpbnRyb2R1Y2VkIGluIHIyMDUxODQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggY2VlMTU5M2E0ODRjYzdmMGRmMzE1Njk1ODU0ZWJkNDQ1ZTlmNTMxYi4uMTBlZjY0Mzg3
NDRjMTRkMTBmYzQ5MmNkNmFlZjEzZDc3Yjg2MzAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDE2LTA5LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIHRoZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJv
bHMgdG8gdGFrZSBhbGwgbWVkaWEgc2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI4MDMzNzgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYW4gU1BJIHRlc3RpbmcgaG9vayBmb3Igc2VuZGluZyB0aGUgZWxl
bWVudCBJRCBvZiB0aGUgY3VycmVudGx5IGNvbnRyb2xsZWQgdmlkZW8gZWxlbWVudCBmcm9tIHRo
ZSB3ZWIKKyAgICAgICAgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4gU2VlIFZpZGVvQ29udHJv
bHNNYW5hZ2VyLm1tIGluIFRvb2xzL1Rlc3RXZWJLaXRBUEkvIGZvciB1c2FnZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3JlcXVlc3RDb250cm9sbGVkRWxlbWVudElEXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElE
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RDb250cm9sbGVkRWxlbWVudElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpo
YW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QpOgorCiAyMDE2LTA4LTI5ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBtX2Ns
aWVudCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFuIElQQzo6Q29ubmVjdGlvbiBpcyB2YWxpZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMTE5OTJkZjU1NTA2NmMy
ODY2NDBhMTNmZDFjYTY0YTg4Yzk1ZmM1Ni4uZGRkNDRhMWUxNmI1YTAyNzRjYmI4YzkxYjg3Mzdi
MjQ3MmQxOTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC0zNDYsNiArMzQ2LDc4IEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0RWxlbWVudElEKCkKIH0KICNl
bmRpZgogCitzdHJ1Y3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8geworICAgIGNvbnN0IE1lZGlh
RWxlbWVudFNlc3Npb24qIHNlc3Npb247CisKKyAgICBkb3VibGUgdGltZU9mTGFzdFVzZXJJbnRl
cmFjdGlvbjsKKyAgICBib29sIGNhblNob3dDb250cm9sc01hbmFnZXIgOiAxOworICAgIGJvb2wg
aXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiA6IDE7CisgICAgYm9vbCBpc0xhcmdlRW5v
dWdoRm9yTWFpbkNvbnRlbnQgOiAxOworICAgIGJvb2wgaXNQbGF5aW5nV2l0aEF1ZGlvIDogMTsK
K307CisKK3N0YXRpYyBNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyBtZWRpYUVsZW1lbnRTZXNzaW9u
SW5mb0ZvclNlc3Npb24oY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAg
ICByZXR1cm4geworICAgICAgICAmc2Vzc2lvbiwKKyAgICAgICAgc2Vzc2lvbi5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSgpLAorICAgICAgICBzZXNzaW9uLmNhblNob3dDb250cm9sc01h
bmFnZXIoKSwKKyAgICAgICAgc2Vzc2lvbi5pc1Zpc2libGVJblZpZXdwb3J0T3JGdWxsc2NyZWVu
KCksCisgICAgICAgIHNlc3Npb24uaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCksCisgICAg
ICAgIHNlc3Npb24uaXNQbGF5aW5nQXVkaW8oKQorICAgIH07Cit9CisKK3N0YXRpYyBib29sIHBy
ZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vz
c2lvbihjb25zdCBNZWRpYUVsZW1lbnRTZXNzaW9uSW5mbyYgc2Vzc2lvbiwgY29uc3QgTWVkaWFF
bGVtZW50U2Vzc2lvbkluZm8mIG90aGVyU2Vzc2lvbikKK3sKKyAgICAvLyBQcmlvcml0aXplIHZp
c2libGUgbWVkaWEgb3ZlciBvZmZzY3JlZW4gbWVkaWEuCisgICAgaWYgKHNlc3Npb24uaXNWaXNp
YmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAhPSBvdGhlclNlc3Npb24uaXNWaXNpYmxlSW5WaWV3
cG9ydE9yRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuIHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3
cG9ydE9yRnVsbHNjcmVlbjsKKworICAgIC8vIEFzIGEgdGllYnJlYWtlciwgcHJpb3JpdGl6ZSBl
bGVtZW50cyB0aGF0IHRoZSB1c2VyIHJlY2VudGx5IGludGVyYWN0ZWQgd2l0aC4KKyAgICByZXR1
cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVyYWN0aW9uID4gb3RoZXJTZXNzaW9uLnRpbWVP
Zkxhc3RVc2VySW50ZXJhY3Rpb247Cit9CisKK3N0YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJl
Q29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8mIHNl
c3Npb24pCit7CisgICAgaWYgKCFzZXNzaW9uLmlzVmlzaWJsZUluVmlld3BvcnRPckZ1bGxzY3Jl
ZW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghc2Vzc2lvbi5pc0xhcmdlRW5v
dWdoRm9yTWFpbkNvbnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEV2ZW4g
aWYgdGhpcyB2aWRlbyBpcyBub3QgYSBjYW5kaWRhdGUsIGlmIGl0IGlzIHZpc2libGUgdG8gdGhl
IHVzZXIgYW5kIGxhcmdlIGVub3VnaAorICAgIC8vIHRvIGJlIG1haW4gY29udGVudCwgaXQgcG9z
ZXMgYSByaXNrIGZvciBiZWluZyBjb25mdXNlZCB3aXRoIG1haW4gY29udGVudC4KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24qIGJlc3RNZWRp
YVNlc3Npb25Gb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQoreworICAgIGF1dG8g
YWxsU2Vzc2lvbnMgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5jdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhbXSAoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24m
IHNlc3Npb24pIHsKKyAgICAgICAgcmV0dXJuIGlzPE1lZGlhRWxlbWVudFNlc3Npb24+KHNlc3Np
b24pOworICAgIH0pOworCisgICAgVmVjdG9yPE1lZGlhRWxlbWVudFNlc3Npb25JbmZvPiBjYW5k
aWRhdGVTZXNzaW9uczsKKyAgICBib29sIGF0TGVhc3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1
c2VkRm9yTWFpbkNvbnRlbnQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHNlc3Npb24gOiBhbGxT
ZXNzaW9ucykgeworICAgICAgICBhdXRvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvID0gbWVkaWFF
bGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+
KCpzZXNzaW9uKSk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnRTZXNzaW9uSW5mby5jYW5TaG93
Q29udHJvbHNNYW5hZ2VyKQorICAgICAgICAgICAgY2FuZGlkYXRlU2Vzc2lvbnMuYXBwZW5kKG1l
ZGlhRWxlbWVudFNlc3Npb25JbmZvKTsKKyAgICAgICAgZWxzZSBpZiAobWVkaWFTZXNzaW9uTWF5
QmVDb25mdXNlZFdpdGhNYWluQ29udGVudChtZWRpYUVsZW1lbnRTZXNzaW9uSW5mbykpCisgICAg
ICAgICAgICBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIWNhbmRpZGF0ZVNlc3Npb25zLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6OnNvcnQoY2FuZGlkYXRlU2Vzc2lvbnMu
YmVnaW4oKSwgY2FuZGlkYXRlU2Vzc2lvbnMuZW5kKCksIHByZWZlck1lZGlhQ29udHJvbHNGb3JD
YW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbik7CisgICAgYXV0byBzdHJv
bmdlc3RTZXNzaW9uQ2FuZGlkYXRlID0gY2FuZGlkYXRlU2Vzc2lvbnMuZmlyc3QoKTsKKyAgICBp
ZiAoIXN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUuaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNj
cmVlbiAmJiAhc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0ZS5pc1BsYXlpbmdXaXRoQXVkaW8gJiYg
YXRMZWFzdE9uZU5vbkNhbmRpZGF0ZU1heUJlQ29uZnVzZWRGb3JNYWluQ29udGVudCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3Ryb25nZXN0U2Vzc2lvbkNhbmRpZGF0
ZS5zZXNzaW9uOworfQorCiBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCkBAIC04MzcsOCArOTA5LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogewogICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVt
ZW50KCk7Ci0gICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+aGFzQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYUVsZW1lbnRTZXNzaW9uOjpJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCkKLSAg
ICAgICAgICAgIHx8IG1fbWVkaWFTZXNzaW9uLT5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlh
RWxlbWVudFNlc3Npb246Ok92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5Db250
ZW50KSkKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uICYmIG1fbWVkaWFTZXNzaW9uLT53YW50
c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5KCkpCiAgICAgICAgICAgICBy
ZW5kZXJlci0+cmVnaXN0ZXJGb3JWaXNpYmxlSW5WaWV3cG9ydENhbGxiYWNrKCk7CiAgICAgfQog
ICAgIHVwZGF0ZVNob3VsZEF1dG9wbGF5KCk7CkBAIC00MDIxLDYgKzQwOTIsMTEgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgpCiAgICAgICAgIG1fcmVjZWl2ZWRM
YXlvdXRTaXplQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIHNjaGVkdWxlVXBkYXRlUGxheWJhY2tD
b250cm9sc01hbmFnZXIoKTsKICAgICB9CisKKyAgICAvLyBJZiB0aGUgdmlkZW8gaXMgYSBjYW5k
aWRhdGUgZm9yIG1haW4gY29udGVudCwgd2Ugc2hvdWxkIHJlZ2lzdGVyIGl0IGZvciB2aWV3cG9y
dCB2aXNpYmlsaXR5IGNhbGxiYWNrcworICAgIC8vIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4g
cmVnaXN0ZXJlZC4KKyAgICBpZiAocmVuZGVyZXIoKSAmJiBtX21lZGlhU2Vzc2lvbiAmJiAhbV9t
ZWRpYVNlc3Npb24tPndhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3BsYXko
KSAmJiBtX21lZGlhU2Vzc2lvbi0+d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JN
ZWRpYUNvbnRyb2xzKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnJlZ2lzdGVyRm9yVmlzaWJsZUlu
Vmlld3BvcnRDYWxsYmFjaygpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpc2liaWxp
dHlEaWRDaGFuZ2UoKQpAQCAtNzE0MCw2ICs3MjE2LDcgQEAgc3RhdGljIGJvb2wgbWVkaWFFbGVt
ZW50SXNBbGxvd2VkVG9BdXRvcGxheShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojppc1Zpc2libGVJblZpZXdwb3J0Q2hhbmdlZCgpCiB7CiAg
ICAgdXBkYXRlU2hvdWxkQXV0b3BsYXkoKTsKKyAgICBzY2hlZHVsZVVwZGF0ZVBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxk
QXV0b3BsYXkoKQpAQCAtNzE2OCwyMCArNzI0NSwyMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZFBsYXkoKQogICAgICAgICBwbGF5KCk7CiB9CiAKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgpCit7CisgICAgaWYgKG1fbWVkaWFT
ZXNzaW9uKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0
ZSgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCkKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogc2Vz
c2lvbiA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmN1cnJl
bnRTZXNzaW9uTWF0Y2hpbmcoW10gKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9u
KSB7Ci0gICAgICAgIHJldHVybiBzZXNzaW9uLmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKTsK
LSAgICB9KTsKLQotICAgIGlmICghaXM8TWVkaWFFbGVtZW50U2Vzc2lvbj4oc2Vzc2lvbikpCi0g
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKTsKKyAgICAvLyBGSVhNRTogRW5zdXJlIHRoYXQgdGhlIHJlbmRlcmVyIGhlcmUgc2hvdWxk
IGJlIHVwIHRvIGRhdGUuCisgICAgaWYgKGF1dG8gYmVzdE1lZGlhU2Vzc2lvbiA9IGJlc3RNZWRp
YVNlc3Npb25Gb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSkKKyAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihiZXN0TWVk
aWFTZXNzaW9uLT5lbGVtZW50KCkpOwogICAgIGVsc2UKLSAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkuc2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihkb3duY2FzdDxNZWRpYUVsZW1l
bnRTZXNzaW9uPihzZXNzaW9uKS0+ZWxlbWVudCgpKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCkuY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA5OGYzYjA4ODk4NmE5OTZmNGVh
NmI3NWFlYTc0ZTk2M2Q1YjYyMTlhLi45ZjMyMDZkYzA1OGVhMjZkYWFmMGRkNTBiYTg5YTc4Y2M0
NmMwNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDY4LDYg
KzQ2OCw4IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlck1lZGlhKiByZW5kZXJlcigpIGNvbnN0Owog
CisgICAgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCk7CisKIHByb3RlY3RlZDoKICAg
ICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCBlOWI5N2I5YTEy
YWFkNjMxMjhiYWI5ZjU0MTVhNGNkODQ2YjYwOWZhLi5iZTkxMzk1OGM5MWNlMzVlN2M3ZDk0NzQ4
M2UyMTgzYjdkMTllNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vz
c2lvbi5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUg
IkF1ZGlvU2Vzc2lvbi5oIgpAQCAtMTM3LDYgKzEzOCw5IEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmlj
dGlvCiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKIHsKKyAgICBpZiAocmVzdHJpY3Rp
b24gJiBSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpCisgICAgICAg
IG1fbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24gLSByZW1vdmluZyAlcyIsIHJlc3RyaWN0aW9uTmFtZShyZXN0cmlj
dGlvbikudXRmOCgpLmRhdGEoKSk7CiAgICAgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9u
OwogfQpAQCAtMjEyLDY5ICsyMTYsMTAzIEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFn
ZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZyhjb25zdCBIVE1MTWVkaWFFbGVtZW50CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENv
bnRyb2xzTWFuYWdlcigpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIoKSBjb25zdAogewogICAgIGlmIChtX2VsZW1lbnQuaXNGdWxsc2NyZWVu
KCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJv
bENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBmdWxsc2NyZWVuIik7CisgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFn
ZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgZnVsbHNjcmVlbiIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZWxlbWVudC5oYXNBdWRpbygpKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIg
LSByZXR1cm5pbmcgRkFMU0U6IE5vIGF1ZGlvIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KICAgICBpZiAobV9lbGVtZW50LmRvY3VtZW50KCkuYWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNh
bkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IGFjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQoKSIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNz
aW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBhY3RpdmVET01P
YmplY3RzQXJlU3VzcGVuZGVkKCkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGlmICghcGxheWJhY2tQZXJtaXR0ZWQobV9lbGVtZW50KSkgewotICAgICAgICBMT0coTWVk
aWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0
dXJuaW5nIEZBTFNFOiBQbGF5YmFjayBub3QgcGVybWl0dGVkIik7CisgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5p
bmcgRkFMU0U6IFBsYXliYWNrIG5vdCBwZXJtaXR0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICghaGFzQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdl
c3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpIHx8IFNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVF
OiBObyB1c2VyIGdlc3R1cmUgcmVxdWlyZWQiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBO
byB1c2VyIGdlc3R1cmUgcmVxdWlyZWQiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CiAgICAgaWYgKGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBsYXliYWNrVG9Db250cm9s
Q29udHJvbHNNYW5hZ2VyKSAmJiAhbV9lbGVtZW50LmlzUGxheWluZygpKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIg
LSByZXR1cm5pbmcgRkFMU0U6IE5lZWRzIHRvIGJlIHBsYXlpbmciKTsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVy
bmluZyBGQUxTRTogTmVlZHMgdG8gYmUgcGxheWluZyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVudC5tdXRlZCgpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1
cm5pbmcgRkFMU0U6IE11dGVkIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE11dGVkIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fZWxlbWVudC5oYXNB
dWRpbygpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNo
b3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIGF1ZGlvIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobV9lbGVtZW50LmlzVmlkZW8oKSkgewog
ICAgICAgICBpZiAoIW1fZWxlbWVudC5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBMT0coTWVk
aWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0
dXJuaW5nIEZBTFNFOiBObyByZW5kZXJlciIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxT
RTogTm8gcmVuZGVyZXIiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChtX2VsZW1lbnQuZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkgewot
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENv
bnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBtZWRpYSBkb2N1bWVudCIpOworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xz
TWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBtZWRpYSBkb2N1bWVudCIpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fZWxlbWVudC5oYXNW
aWRlbygpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpj
YW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyB2aWRlbyIpOwor
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRy
b2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gdmlkZW8iKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpc0VsZW1lbnRMYXJnZUVub3Vn
aEZvck1haW5Db250ZW50KG1fZWxlbWVudCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcg
VFJVRTogSXMgbWFpbiBjb250ZW50Iik7CisgICAgICAgIGlmIChpc0xhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQoKSkgeworICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBtYWluIGNvbnRl
bnQiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdl
ciAtIHJldHVybmluZyBGQUxTRTogTm8gdXNlciBnZXN0dXJlIik7CisgICAgTE9HKE1lZGlhLCAi
TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBG
QUxTRTogTm8gdXNlciBnZXN0dXJlIik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQobV9lbGVtZW50
KTsKK30KKworYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjppc1Zpc2libGVJblZpZXdwb3J0T3JG
dWxsc2NyZWVuKCkgY29uc3QKK3sKKyAgICBpZiAobV9lbGVtZW50LmlzRnVsbHNjcmVlbigpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gcmVuZGVyZXIgPSBtX2VsZW1lbnQucmVu
ZGVyZXIoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPnZpc2libGVJblZpZXdw
b3J0U3RhdGUoKSA9PSBSZW5kZXJFbGVtZW50OjpWaXNpYmxlSW5WaWV3cG9ydDsKK30KKworYm9v
bCBNZWRpYUVsZW1lbnRTZXNzaW9uOjppc1BsYXlpbmdBdWRpbygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fZWxlbWVudC5pc1BsYXlpbmcoKSAmJiBtX2VsZW1lbnQuaGFzQXVkaW8oKSAmJiAhbV9l
bGVtZW50Lm11dGVkKCk7Cit9CisKK2RvdWJsZSBNZWRpYUVsZW1lbnRTZXNzaW9uOjptb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWU7Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2Fu
dHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCk7Cit9CisKK2Jvb2wgTWVk
aWFFbGVtZW50U2Vzc2lvbjo6d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JBdXRv
cGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oSW52aXNp
YmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQpIHx8IGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oT3ZlcnJp
ZGVVc2VyR2VzdHVyZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpOworfQorCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB7
CkBAIC01MDIsNiArNTQwLDEyIEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFFbmdp
bmVVcGRhdGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgCiB9CiAKK3Zv
aWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgpCit7Cisg
ICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IDA7CisgICAgYWRkQmVoYXZpb3JS
ZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIgfCBS
ZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOworfQorCiBib29sIE1lZGlh
RWxlbWVudFNlc3Npb246OmFsbG93c1BpY3R1cmVJblBpY3R1cmUoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50
LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKaW5kZXggZGE4ZDE1ODRjYTgwZjdjNWQxMTgyMjg2YmRlZjUwMjI2ODFlOWQ5YS4u
MmZmNGFjNzg5NGUyZjEzZmViNzg3NGE4YTU1NWUyN2U5ODM5MjkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTU0LDggKzU0LDYgQEAgcHVibGljOgog
ICAgIGJvb2wgcGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBj
b25zdDsKICAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5Db250cm9sQ29udHJvbHNNYW5h
Z2VyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKTsKICAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKSBjb25zdDsKQEAgLTc4LDYgKzc2LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBtZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwogCisgICAgdm9p
ZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgb3ZlcnJpZGU7CisKICAgICAvLyBSZXN0cmlj
dGlvbnMgdG8gbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3JzLgogICAgIGVudW0gQmVoYXZpb3JSZXN0
cmljdGlvbkZsYWdzIDogdW5zaWduZWQgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCkBA
IC0xMTEsNiArMTExLDE0IEBAIHB1YmxpYzoKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KIAorICAgIGJvb2wgd2FudHNUb09ic2Vy
dmVWaWV3cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29uc3Q7CisgICAgYm9vbCB3
YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5KCkgY29uc3Q7CisgICAg
Ym9vbCBjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3Q7CisgICAgYm9vbCBpc0xhcmdlRW5v
dWdoRm9yTWFpbkNvbnRlbnQoKSBjb25zdDsKKyAgICBib29sIGlzVmlzaWJsZUluVmlld3BvcnRP
ckZ1bGxzY3JlZW4oKSBjb25zdDsKKyAgICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3Q7Cisg
ICAgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKCkgY29uc3Q7CisKIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMTQwLDYgKzE0
OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
TGlzdGVuZXJzIHsgZmFsc2UgfTsKICNlbmRpZgogCisgICAgZG91YmxlIG1fbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUgeyAwIH07CisKICAgICBtdXRhYmxlIGJvb2wgbV9pc01haW5Db250
ZW50IHsgZmFsc2UgfTsKICAgICBUaW1lciBtX21haW5Db250ZW50Q2hlY2tUaW1lcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uaAppbmRleCBiZmNlMmRmYTQ2Mzk3NzA2MzMzNzI5OWExZWRmYmEzZGMwMjdhNjZmLi42NTky
MjFhZjgzMzJjYTU3Yzk3MjVhZjVjNTQwOGJjZWU0YzE1ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTE0NSw3
ICsxNDUsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZExv
YWRpbmdSZXN0cmljdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGNhbkNvbnRyb2xD
b250cm9sc01hbmFnZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQ7IH0KICAg
ICB2b2lkIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldENoYW5nZWQoYm9vbCk7CkBA
IC0xNjYsNiArMTY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuUHJvZHVjZUF1ZGlvKGJv
b2wpOwogCiAgICAgdm9pZCBzY2hlZHVsZUNsaWVudERhdGFCdWZmZXJpbmdDaGVjaygpOworICAg
IHZpcnR1YWwgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgeyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9jbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGVlYmExNWEwNWQ4
MDQxODM1ZjI3NmQxYmZhYzFjYmI3NGE2YTk3OTUuLjk3NWZjNTBlMmZhMzJiNzMyNGZlNTcxNDAz
ZTExZjYyMWNiZDk1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjgwLDEzICsy
ODAsMTQgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6Y3VycmVudFNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiBtX3Nlc3Npb25zWzBdOwogfQog
Ci1QbGF0Zm9ybU1lZGlhU2Vzc2lvbiogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJy
ZW50U2Vzc2lvbk1hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiAmKT4gZmlsdGVyKQorVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24gJik+IGZpbHRlcikKIHsKKyAgICBW
ZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBtYXRjaGluZ1Nlc3Npb25zOwogICAgIGZvciAo
YXV0byYgc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpIHsKICAgICAgICAgaWYgKGZpbHRlcigqc2Vzc2lv
bikpCi0gICAgICAgICAgICByZXR1cm4gc2Vzc2lvbjsKKyAgICAgICAgICAgIG1hdGNoaW5nU2Vz
c2lvbnMuYXBwZW5kKHNlc3Npb24pOwogICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbWF0Y2hpbmdTZXNzaW9uczsKIH0KICAgICAKIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXNzaW9uQ2FuTG9hZE1lZGlhKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCA1ZDE3YWJkNGUyNzU2
NWZhYjBkN2EwYTNhNDk1YzY2OTI4YTJlOTY4Li5jN2E4MTZlZjA1YjAxYWE3ZmFkYjBjNzJlZmM4
NDM5MTEyMTNlNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtOTIsNyArOTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRDdXJyZW50U2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYp
OwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbigpIGNvbnN0OwogCi0g
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uTWF0Y2hpbmcoc3RkOjpmdW5j
dGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uJik+KTsKKyAgICBWZWN0b3I8UGxh
dGZvcm1NZWRpYVNlc3Npb24qPiBjdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhzdGQ6OmZ1bmN0aW9u
PGJvb2woY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKT4pOwogCiAgICAgdm9pZCBzZXNzaW9u
SXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChQbGF0Zm9ybU1lZGlhU2Vz
c2lvbiYpOwogICAgIHZvaWQgc2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoUGxhdGZvcm1N
ZWRpYVNlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5k
ZXggZGIwOTcwOTQyOGJlM2E4OGQzODVhYjgwZjkyNTI5NzMyNDcyNjk5Ni4uNzUzNmJjODAzOTg3
MzRkNDhlODg4YTU2YTBhNzk5YWEwN2I0MjA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW0KQEAgLTkxLDYgKzkxLDkgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkK
ICAgICB9CiAgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOwogCisgICAgaWYgKG1fbWVkaWFFbGVt
ZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgp
OworCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CiAKICAgICBpZiAoIW1fbWVk
aWFFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCBhMjI4YTE5ZTE1YmY5NTA4MmM5Yzk0M2VlMGUwZGVmMGNmMDY2ZDlkLi4y
Yjg0NDk4NjJhNGI3NGQ4NTY4MTgxNDFhN2JjOTc4ZDBjNGE5M2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDU1Myw2ICs0NTUz
LDE3IEBAIC0gKEJPT0wpX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyCiB7CiAgICAg
cmV0dXJuIF9wYWdlICYmIF9wYWdlLT5oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcigp
OwogfQorCistICh2b2lkKV9yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRAoreworICAgIGlmIChf
cGFnZSkKKyAgICAgICAgX3BhZ2UtPnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCk7Cit9CisK
Ky0gKHZvaWQpX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZTooTlNTdHJpbmcgKilp
ZGVudGlmaWVyCit7CisgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorfQogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKIAogLy8gRXhlY3V0ZSB0aGUgc3VwcGxpZWQgYmxvY2sgYWZ0ZXIg
dGhlIG5leHQgdHJhbnNhY3Rpb24gZnJvbSB0aGUgV2ViUHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXgg
NDdhNTMzNzk3ZDAzMTc2MDE3ODFiMmZlNTE5M2MyMGVkMDdmZDY0MS4uOWYxMTMyNTVkOTE0MDBm
MTZiMTg1OWE0NGY3MmQwOTA5NjYyMjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI3MSw2ICsyNzEsOCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiAK
ICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSk7CistICh2b2lkKV9yZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CistICh2b2lkKV9oYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2U6KE5TU3RyaW5nICopaWRlbnRpZmllciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAjZW5kaWYKIAogLSAodm9pZClfZG9BZnRlck5l
eHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IGRmZjgyNmE2MzM2YzlhYjRhYWNkNTMyODE1ZWE2NzAx
NTdlNWRhYmEuLmZlOGNiYjFlNjY5NjM3OWZmODY2YzAyNTQ4NzQxNjc3YmM2ZTA4ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICBQbGF0Zm9ybVdlYlBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZSogY29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCk7CisgICAgdm9pZCByZXF1ZXN0Q29u
dHJvbGxlZEVsZW1lbnRJRCgpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ7CkBAIC0xNjksNiArMTcwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCk7CiAgICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBkdXJhdGlvbik7CiAgICAgdm9pZCBzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBp
c1BsYXlpbmcsIGRvdWJsZSByYXRlKTsKKyAgICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50
SURSZXNwb25zZSh1aW50NjRfdCwgU3RyaW5nKSBjb25zdDsKIAogICAgIC8vIE1lc3NhZ2VzIHRv
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKICAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4
dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDU0MDNhNGI0YzYwMTU5NzI4MzA4M2ViZmMzMDA2MmQ5MjIxNTRmZGQuLjgyNWI5ZWI0ZDA5
NDRhZmUyMzMzYWY1ZTc5NGRmOGM2ZDczNTVmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzUsNSArMzUsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkgewogICAgIFNldFJhdGUodWludDY0X3QgY29u
dGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCiAgICAgU2V0VXBQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgQ2xlYXJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcigpCisKKyAgICBIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9u
c2UodWludDY0X3QgY29udGV4dElkLCBTdHJpbmcgaWQpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IDhjMWZhMGMzMGM5ZjFiNTE0YTBmNTg0NmI1MDJhMDBi
NzcyMDg0MzIuLjYyMzg4OTMxM2U5ZDExNzk3MjM1Yjk5MmNlMmUzMGViYTMyMmMxNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAtMzQzLDYgKzM0MywxOSBAQCB2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgaXNQbGF5aW5nLAogICAgIGludGVyZmFjZS0+c2V0UmF0ZShpc1BsYXlpbmcsIHJhdGUp
OwogfQogCisKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29udGV4dElkLCBTdHJpbmcgaWRlbnRp
ZmllcikgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGNvbnRleHRJZCA9PSBt
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKKyAgICAgICAgbV9wYWdlLT5oYW5kbGVDb250cm9s
bGVkRWxlbWVudElEUmVzcG9uc2UoaWRlbnRpZmllcik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0SWQpOworICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKKyNlbmRpZgorfQor
CisKICNwcmFnbWEgbWFyayBNZXNzYWdlcyB0byBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCiAK
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRl
eHRJZCkKQEAgLTQwNSw2ICs0MTgsMTIgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExl
Z2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9
CiAKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxl
ZEVsZW1lbnRJRCgpCit7CisgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQorICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Okhh
bmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKIFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlKiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlcklu
dGVyZmFjZSgpCiB7CiAgICAgaWYgKCFtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDM1ODFhMjEwNjBlYWFlMzk3ODYwM2Yy
MGI1NjA0NWM4NGEzYTUyNDAuLjFiMjRkYjI3NWU4Y2UwYjIwYjZjZWU0ZjMwNWI1YmY1OWM4MWVh
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjQ3LDYgKzI0Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKFdlYkNvcmU6OlNj
cm9sbGJhclN0eWxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU5hdmlnYXRpb25HZXN0
dXJlU25hcHNob3QoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVt
ZW50SURSZXNwb25zZShjb25zdCBTdHJpbmcmKSA9IDA7CiAKICAgICB2aXJ0dWFsIENHUmVjdCBi
b3VuZHNPZkxheWVySW5MYXllckJhY2tlZFdpbmRvd0Nvb3JkaW5hdGVzKENBTGF5ZXIgKikgY29u
c3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGYyZWZmMjI3MmM3ODc2YWJkNmYzMTE1NGMzYWZhOTcwZWY0Y2E5Y2EuLjY0YjdkNzE5ZmU2MGM2
ODViODdmZjlmMjBhZDcxZjJkZWNiMzZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC02Mjk4LDYgKzYyOTgsMTkgQEAgYm9vbCBXZWJQYWdlUHJveHk6
Omhhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCkgY29uc3QKICNlbmRpZgogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKSBjb25zdAorewor
I2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICBpZiAobV9wbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKQorICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPnJlcXVlc3RD
b250cm9sbGVkRWxlbWVudElEKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
IGNvbnN0Cit7CisgICAgbV9wYWdlQ2xpZW50LmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNw
b25zZShpZGVudGlmaWVyKTsKK30KKwogYm9vbCBXZWJQYWdlUHJveHk6OmlzUGxheWluZ1ZpZGVv
SW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogewogI2lmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3
ODYyNzY2NDk4MzdmYWNiZDI3ZWYwNTk3ODk0ZDJmZDU2M2Q0NDUyLi43ZGQ2N2Y4YTQ0ZTEyMjZj
MzQ3MjM0OTU4OGRkMjdjOWM4Yzk2ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMDMxLDYgKzEwMzEsOCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKICAgICBib29sIGhh
c0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCkgY29uc3Q7CisgICAgdm9pZCByZXF1ZXN0
Q29udHJvbGxlZEVsZW1lbnRJRCgpIGNvbnN0OworICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVs
ZW1lbnRJRFJlc3BvbnNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaXNQbGF5aW5n
VmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBkMjFjYTUyYTVhZmM3
ZmE4OWM3YmRmOWYzM2I4OWQ2MDc0NGFkMTIyLi41MjU5ZmI1YjcyNWNhNDc2OTJlYWQ3YWE0ODU5
MDEyMTNjN2FiNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbC5oCkBAIC0yMDYsNiArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWxM
b2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yTWFpbkZyYW1lKFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29u
c3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCogaW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4sIHVp
bnQ2NF90LCBSZWZQdHI8QVBJOjpPYmplY3Q+KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDUzYjliYzc5NTUzMDcyZjQ3
YTYyMGY1NmQ2OGIxZTgwNDJkZjAxYjguLjViNWExMjFhNjkzOTc2ZmY2MGExOGRiMjU1NmY1ZjRi
OTVlMjkyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQpAQCAtNzUyLDYgKzc1MiwxMyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZW1vdmVO
YXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkKICAgICAgICAgZ2VzdHVyZUNvbnRyb2xsZXItPnJl
bW92ZVN3aXBlU25hcHNob3QoKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlQ29u
dHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyNp
ZiBXS19BUElfRU5BQkxFRAorICAgIFttX3dlYlZpZXcgX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50
SURSZXNwb25zZTpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGlkZW50aWZpZXIpXTsKKyNlbmRp
ZgorfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCmluZGV4IDAxZmZl
ZDIxOWUxZWE3MzdhMjBmZDk2ZTNjMDMwMWE4MmZkMDYwMTAuLjgxMjNhNzI4MzQ3MWM3MjI1MjYx
ODE1NDRlZGUzMmNjMDU2Y2EzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCkBAIC0xMzgsNiAr
MTM4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4
dElkKTsKICAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElk
LCB1aW50NjRfdCBpbmRleCk7CiAgICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWlu
dDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBoYW5kbGVDb250cm9s
bGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0SWQpOwogCiAgICAgV2ViUGFnZSog
bV9wYWdlOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIHVpbnQ2NF90
PiBtX21lZGlhRWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMu
aW4KaW5kZXggYjU2YzU5ZTMxNDM0YTY3OWQ1NGQ4YTM2MDM3OWMzYTdmZjNmZDU1Ni4uYjcxNDA0
ZWNjMmE5YTViNDg3YTBhYjc5YjY1NTczZDg2MjRhOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMzUsNSArMzUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyIHsKICAgICBFbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0
SWQpCiAgICAgU2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2
NF90IGluZGV4KQogICAgIFNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0
SWQsIHVpbnQ2NF90IGluZGV4KQorICAgIEhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0
KHVpbnQ2NF90IGNvbnRleHRJZCkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmlu
ZGV4IDk2NjFmZDYwODVjN2JjZDg1MGY3ZTY2MDJmNzZmOTM4MTZjMTI3MWIuLmZmNjFmMGFjY2Ri
YzczZmY3ZTQ1Y2M1MjY0OTJjODNkNjdjOTQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
QEAgLTQxNyw2ICs0MTcsMTMgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxl
Y3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW4KICAgICBlbnN1cmVN
b2RlbChjb250ZXh0SWQpLnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9CiAKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJl
cXVlc3QodWludDY0X3QgY29udGV4dElkKQoreworICAgIGF1dG8gZWxlbWVudCA9IGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkubWVkaWFFbGVtZW50KCk7CisgICAgaWYgKGVsZW1lbnQpCisgICAgICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpI
YW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29udGV4dElkLCBlbGVtZW50LT5nZXRJ
ZEF0dHJpYnV0ZSgpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGFiYTE0YWFhZjQxODdlODA0YjBhODM4MDEyODlkOGMwZTRjMzU1NDUuLjkzY2VhZDg4
YjE1MjRjMDU5ZGRmOGMzZWI3MzQyMWNjZDJkNzMwMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNi0wOS0wMyAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciB0aGUgaGV1cmlzdGljIGZvciBzaG93aW5nIG1lZGlhIGNvbnRyb2xzIHRvIHRha2UgYWxsIG1l
ZGlhIHNlc3Npb25zIGludG8gYWNjb3VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODAzMzc4
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IG5ldyB1bml0IHRlc3RzIHZlcmlmeWluZyB0aGUgYmVoYXZpb3Igb2YgbWVkaWEgcGxheWJhY2sg
Y29udHJvbHMgd2hlbiBzY3JvbGxpbmcgYW5vdGhlciB2aWRlbyBpbnRvIHZpZXcuCisgICAgICAg
IFBsZWFzZSBzZWUgdGhlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMgYWJvdXQg
dGhpcyBjaGFuZ2UuIEFsc28gcmVmYWN0b3JzIGV4aXN0aW5nCisgICAgICAgIFZpZGVvQ29udHJv
bHNNYW5hZ2VyIHRlc3RzIGJ5IGZvbGRpbmcgZHVwbGljYXRlZCBzZXR1cCBhbmQgdGVzdGluZyBs
b2dpYyBpbnRvIGhlbHBlciBtZXRob2RzIHRvIG1ha2UgdGhlIHVuaXQKKyAgICAgICAgdGVzdHMg
bW9yZSByZWFkYWJsZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtNZXNzYWdl
SGFuZGxlciBpbml0V2l0aE1lc3NhZ2U6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bTWVzc2FnZUhh
bmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgor
ICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IHBlcmZvcm1BZnRlckxv
YWRpbmc6XSk6CisgICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcgbG9h
ZFRlc3RQYWdlTmFtZWQ6XSk6CisgICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6YW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOmFmdGVyUmVj
ZWl2aW5nTWVzc2FnZTpdKToKKyAgICAgICAgKC1bVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2Vi
VmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOmFjdGlvbjpdKToKKyAgICAgICAgKC1b
VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBjb250cm9sbGVkRWxlbWVudElEXSk6Cisg
ICAgICAgICgtW1ZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcgX2hhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXNwb25zZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFVwV2Vi
Vmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGluaXRX
aXRoV0tXZWJWaWV3OmZpbmFsTWVzc2FnZVN0cmluZzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bT25Mb2FkTWVzc2FnZUhh
bmRsZXIgaW5pdFdpdGhXS1dlYlZpZXc6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
T25Mb2FkTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3Jp
cHRNZXNzYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgcGVyZm9ybUFmdGVy
TG9hZGluZzpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9sYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRv
cGxheWluZy1jbGljay10by1wYXVzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRv
LXZpZGVvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Utdmlk
ZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBsYXlp
bmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbDogQWRkZWQuCisKIDIwMTYtMDgtMjkgIEFha2Fz
aCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVXUyBwYXRjaCBzdGF0
dXMgcGFnZSBzaG91bGQgaW5kaWNhdGUgYm90IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBzdGF0dXMg
bWVzc2FnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNzBiOTAyZTM0ODgxZGU1NGNhNmFj
OTRjMGU0YTY5NDZmNmRhOTY3Li45MzJiOTAyNzQwMjZiOWY3MmE5OGY0MmNiYWRkYjA4NjU0YWVi
MTRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIsNiArNjIsMTIgQEAKIAkJMkUxREZE
RUQxRDQyQTUxMTAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxREZERUMx
RDQyQTQxQzAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLmh0bWwgKi87IH07CiAJ
CTJFMURGREVGMUQ0MkE2RjIwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRv
cGxheS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFMURGREVFMUQ0MkE2RUIwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRp
by1hdXRvcGxheS5odG1sICovOyB9OwogCQkyRTFERkRGMTFENDJFMUU0MDA3MTRBMDAgLyogbGFy
Z2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxREZE
RjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1w
bGF5LWFmdGVyLWVuZGluZy5odG1sICovOyB9OworCQkyRTY5MUFFQTFENzhCNTM2MDAxMjk0MDcg
LyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUU4MUQ3
OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xz
Lmh0bWwgKi87IH07CisJCTJFNjkxQUVCMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAv
KiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICovOyB9Owor
CQkyRTY5MUFFRDFENzhCOTEwMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQt
dmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKKwkJ
MkU2OTFBRUYxRDc5REU4NDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGlj
ay10by1wYXVzZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNjkxQUVFMUQ3OURFNkYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0
b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCAqLzsgfTsKKwkJMkU2OTFBRjExRDc5RTUxQTAw
MTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5
MUFGMDFENzlFNTE0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10
by12aWRlby5odG1sICovOyB9OworCQkyRTY5MUFGMzFENzlFNzVFMDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUYyMUQ3OUU3NTQwMDEyOTQwNyAvKiBs
YXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwgKi87IH07CiAJCTJFNzc2NUNEMTZD
NEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0g
Ki87IH07CiAJCTJFNzc2NUNGMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0UxNkM0RDgxMTAw
QkEyQkIxIC8qIG1haW5NYWMubW0gKi87IH07CiAJCTMzQkU1QUY5MTM3QjVBQUUwMDcwNTgxMyAv
KiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNUFGODEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VN
b3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICovOyB9OwpAQCAtNTE2LDYgKzUyMiwxMiBAQAogCQkJ
ZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9
IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkyRTY5MUFGMzFENzlFNzVFMDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTJFNjkxQUYxMUQ3OUU1MUEwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Ny
b2xsLXRvLXZpZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkU2OTFBRUYxRDc5
REU4NDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFNjkxQUVEMUQ3OEI5MTAwMDEyOTQwNyAv
KiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFNjkxQUVBMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJMkU2OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5
aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
MUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0
TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQzJCODE4NzFDODkyNUEwMDBB
NTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC03MzYsNiArNzQ4LDEy
IEBACiAJCTJFMURGREVDMUQ0MkE0MUMwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRp
by5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy13aXRoLWF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTFERkRFRTFENDJBNkVC
MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXkuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheS5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxREZERjAxRDQyRTE0NDAwNzE0
QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXNlZWstdG8t
YmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVz
ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRUMxRDc4QjkwMjAwMTI5
NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0
ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJFNjkxQUVFMUQ3OURFNkYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmct
Y2xpY2stdG8tcGF1c2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12
aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJFNjkxQUYwMUQ3OUU1MTQwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0
b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRjIxRDc5RTc1NDAwMTI5NDA3IC8qIGxhcmdl
LXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IG1haW5JT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWlu
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFpbk1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0Uz
IC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM4Nyw2ICsxNDA1LDEyIEBACiAJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQy
NCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTJFNjkxQUYyMUQ3OUU3NTQwMDEyOTQwNyAvKiBsYXJnZS12aWRlby1wbGF5aW5nLXNj
cm9sbC1hd2F5Lmh0bWwgKi8sCisJCQkJMkU2OTFBRjAxRDc5RTUxNDAwMTI5NDA3IC8qIGxhcmdl
LXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCAqLywKKwkJCQkyRTY5MUFF
RTFENzlERTZGMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBh
dXNlLmh0bWwgKi8sCisJCQkJMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVv
cy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8sCisJCQkJMkU2OTFB
RTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29u
dHJvbHMuaHRtbCAqLywKKwkJCQkyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2Utdmlk
ZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLywKIAkJCQk1QzlFNTkzRTFE
M0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLywKIAkJCQk1QzlFNTkzRjFE
M0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0gKi8sCiAJCQkJNUM5RTU5
NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9s
c01hbmFnZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRl
b0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCBmYWQ1YTNhZTQ4ZmIwNjFjZmFjOGViNjNlZDlhNjdm
NGQ3M2JiYTJmLi40YWI5MTcyYjVlZWNlZWI0YjE2Y2ZjNDA4MzVhMmIzYWQyOTFlMWIxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRy
b2xzTWFuYWdlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQpAQCAtMzcsMTc0ICszNywxNjEgQEAKIAogI2lmIFdL
X0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEyMDAKIAotc3RhdGljIGJvb2wgdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0
ZXJQbGF5aW5nOwotc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOwotCi1AaW50ZXJm
YWNlIE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7Ci19Ci0KLUBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOwot
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNTdHJpbmcgKmZpbmFsTWVzc2FnZVN0cmlu
ZzsKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZp
ZXcgZmluYWxNZXNzYWdlU3RyaW5nOihOU1N0cmluZyAqKWZpbmFsTWVzc2FnZVN0cmluZzsKLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcgotCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBmaW5hbE1l
c3NhZ2VTdHJpbmc6KE5TU3RyaW5nICopZmluYWxNZXNzYWdlU3RyaW5nCi17Ci0gICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfd2ViVmll
dyA9IHdlYlZpZXc7Ci0gICAgX2ZpbmFsTWVzc2FnZVN0cmluZyA9IGZpbmFsTWVzc2FnZVN0cmlu
ZzsKLQotICAgIHJldHVybiBzZWxmOwotfQorQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLV2ViVmll
d0FkZGl0aW9ucykKIAotLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRl
bnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNz
YWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCi17Ci0gICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gdHJ1ZTsKKy0gKHZvaWQpX2ludGVyYWN0V2l0aE1lZGlhQ29udHJvbHNGb3JUZXN0aW5n
OwogCi0gICAgTlNTdHJpbmcgKmJvZHlTdHJpbmcgPSAoTlNTdHJpbmcgKilbbWVzc2FnZSBib2R5
XTsKLSAgICBpZiAoW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnNlbGYuZmluYWxNZXNzYWdl
U3RyaW5nXSkgewotICAgICAgICBCT09MIGhhc0NvbnRyb2xzTWFuYWdlciA9IFtfd2ViVmlldyBf
aGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXJdOwotICAgICAgICBpZiAoc2VsZi5leHBl
Y3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcikKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhc0Nv
bnRyb2xzTWFuYWdlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRSho
YXNDb250cm9sc01hbmFnZXIpOwotICAgICAgICB0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBs
YXlpbmcgPSB0cnVlOwotICAgIH0KLX0KIEBlbmQKIAotQGludGVyZmFjZSBPbkxvYWRNZXNzYWdl
SGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiB7Ci0gICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CitAaW50ZXJmYWNlIE1lc3NhZ2VIYW5kbGVyIDogTlNP
YmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKKyAgICBkaXNwYXRjaF9ibG9ja190IF9o
YW5kbGVyOworICAgIE5TU3RyaW5nICpfbWVzc2FnZTsKIH0KIAotQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgZGlzcGF0Y2hfYmxvY2tfdCBvbmxvYWRIYW5kbGVyOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGhhbmRsZXI6KGRpc3BhdGNo
X2Jsb2NrX3QpaGFuZGxlcjsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihX
S1dlYlZpZXcqKXdlYlZpZXcgaGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCloYW5kbGVyOwogQGVu
ZAogCi1AaW1wbGVtZW50YXRpb24gT25Mb2FkTWVzc2FnZUhhbmRsZXIKK0BpbXBsZW1lbnRhdGlv
biBNZXNzYWdlSGFuZGxlcgogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdL
V2ViVmlldyopd2ViVmlldyBoYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXIKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBoYW5kbGVyOihk
aXNwYXRjaF9ibG9ja190KWhhbmRsZXIKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBf
b25sb2FkSGFuZGxlciA9IGhhbmRsZXI7CisgICAgX2hhbmRsZXIgPSBbaGFuZGxlciBjb3B5XTsK
KyAgICBfbWVzc2FnZSA9IG1lc3NhZ2U7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9p
ZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNv
bnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2Ug
KiltZXNzYWdlCiB7Ci0gICAgaWYgKCFbKE5TU3RyaW5nICopW21lc3NhZ2UgYm9keV0gaXNFcXVh
bFRvU3RyaW5nOkAibG9hZGVkIl0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfb25sb2Fk
SGFuZGxlcikKLSAgICAgICAgX29ubG9hZEhhbmRsZXIoKTsKLQotICAgIF9vbmxvYWRIYW5kbGVy
ID0gbmlsOworICAgIGlmIChbKE5TU3RyaW5nICopW21lc3NhZ2UgYm9keV0gaXNFcXVhbFRvU3Ry
aW5nOl9tZXNzYWdlXSAmJiBfaGFuZGxlcikKKyAgICAgICAgX2hhbmRsZXIoKTsKIH0KLUBlbmQK
LQotQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLV2ViVmlld0FkZGl0aW9ucykKLQotLSAodm9pZClf
aW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3Rpbmc7CiAKIEBlbmQKIAotQGludGVyZmFj
ZSBXS1dlYlZpZXcgKFRlc3RpbmdBZGRpdGlvbnMpCitAaW50ZXJmYWNlIFZpZGVvQ29udHJvbHNN
YW5hZ2VyVGVzdFdlYlZpZXcgOiBXS1dlYlZpZXcKIAogLSAodm9pZCltb3VzZURvd25BdFBvaW50
OihOU1BvaW50KXBvaW50OwogLSAodm9pZClwZXJmb3JtQWZ0ZXJMb2FkaW5nOihkaXNwYXRjaF9i
bG9ja190KWFjdGlvbnM7CistICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBh
Z2VOYW1lOworLSAodm9pZClsb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZSBh
bmRFeHBlY3RDb250cm9sc01hbmFnZXI6KEJPT0wpZXhwZWN0Q29udHJvbHNNYW5hZ2VyIGFmdGVy
UmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlOworLSAodm9pZClwZXJmb3JtQWZ0
ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgYWN0aW9uOihkaXNwYXRjaF9i
bG9ja190KWFjdGlvbjsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmlu
ZyAqY29udHJvbGxlZEVsZW1lbnRJRDsKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3IChUZXN0aW5nQWRkaXRpb25zKQorQGltcGxlbWVudGF0aW9uIFZpZGVvQ29udHJvbHNNYW5h
Z2VyVGVzdFdlYlZpZXcgeworICAgIGJvb2wgX2lzRG9uZVF1ZXJ5aW5nQ29udHJvbGxlZEVsZW1l
bnRJRDsKKyAgICBOU1N0cmluZyAqX2NvbnRyb2xsZWRFbGVtZW50SUQ7Cit9CiAKIC0gKHZvaWQp
bW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludCB7CiAgICAgW3NlbGYgbW91c2VEb3duOltO
U0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUxlZnRNb3VzZURvd24gbG9jYXRp
b246TlNNYWtlUG9pbnQocG9pbnQueCwgcG9pbnQueSkgbW9kaWZpZXJGbGFnczowIHRpbWVzdGFt
cDpHZXRDdXJyZW50RXZlbnRUaW1lKCkgd2luZG93TnVtYmVyOjAgY29udGV4dDpbTlNHcmFwaGlj
c0NvbnRleHQgY3VycmVudENvbnRleHRdIGV2ZW50TnVtYmVyOjAgY2xpY2tDb3VudDowIHByZXNz
dXJlOjBdXTsKIH0KIAogLSAodm9pZClwZXJmb3JtQWZ0ZXJMb2FkaW5nOihkaXNwYXRjaF9ibG9j
a190KWFjdGlvbnMgewotICAgIE9uTG9hZE1lc3NhZ2VIYW5kbGVyICpoYW5kbGVyID0gW1tPbkxv
YWRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6c2VsZiBoYW5kbGVyOmFj
dGlvbnNdOworICAgIE1lc3NhZ2VIYW5kbGVyICpoYW5kbGVyID0gW1tNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdFdpdGhNZXNzYWdlOkAibG9hZGVkIiBoYW5kbGVyOmFjdGlvbnNdOwogICAgIE5T
U3RyaW5nICpvbmxvYWRTY3JpcHQgPSBAIndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMub25sb2FkSGFuZGxlci5wb3N0TWVzc2FnZSgnbG9h
ZGVkJyk7IH0iOwogICAgIFdLVXNlclNjcmlwdCAqc2NyaXB0ID0gW1tXS1VzZXJTY3JpcHQgYWxs
b2NdIGluaXRXaXRoU291cmNlOm9ubG9hZFNjcmlwdCBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlw
dEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOT107Ci0gICAg
W1tbc2VsZiBjb25maWd1cmF0aW9uXSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3Jp
cHQ6c2NyaXB0XTsKLSAgICBbW1tzZWxmIGNvbmZpZ3VyYXRpb25dIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlciBuYW1lOkAib25sb2FkSGFuZGxl
ciJdOworCisgICAgV0tVc2VyQ29udGVudENvbnRyb2xsZXIqIGNvbnRlbnRDb250cm9sbGVyID0g
W1tzZWxmIGNvbmZpZ3VyYXRpb25dIHVzZXJDb250ZW50Q29udHJvbGxlcl07CisgICAgW2NvbnRl
bnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6c2NyaXB0XTsKKyAgICBbY29udGVudENvbnRyb2xs
ZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlciBuYW1lOkAib25sb2FkSGFuZGxlciJd
OworfQorCistICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lCit7
CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOnBhZ2VOYW1lIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsK
KyAgICBbc2VsZiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKK30KKworLSAodm9pZClsb2FkVGVzdFBh
Z2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZSBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6KEJP
T0wpZXhwZWN0Q29udHJvbHNNYW5hZ2VyIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTooTlNTdHJpbmcg
KiltZXNzYWdlCit7CisgICAgX19ibG9jayBib29sIGRvbmVXYWl0aW5nID0gZmFsc2U7CisgICAg
W3NlbGYgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTptZXNzYWdlIGFjdGlvbjpeIHsKKyAg
ICAgICAgQk9PTCBoYXNWaWRlb0ZvckNvbnRyb2xzTWFuYWdlciA9IFtzZWxmIF9oYXNBY3RpdmVW
aWRlb0ZvckNvbnRyb2xzTWFuYWdlcl07CisgICAgICAgIGlmIChleHBlY3RDb250cm9sc01hbmFn
ZXIpCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYXNWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYXNWaWRlb0ZvckNvbnRy
b2xzTWFuYWdlcik7CisgICAgICAgIGRvbmVXYWl0aW5nID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFtzZWxmIGxvYWRUZXN0UGFnZU5hbWVkOnBhZ2VOYW1lXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmVXYWl0aW5nKTsKK30KKworLSAodm9pZClwZXJmb3JtQWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgYWN0aW9uOihkaXNwYXRjaF9ibG9ja190KWFj
dGlvbgoreworICAgIFJldGFpblB0cjxNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMo
W1tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhNZXNzYWdlOm1lc3NhZ2UgaGFuZGxlcjph
Y3Rpb25dKTsKKyAgICBbW1tzZWxmIGNvbmZpZ3VyYXRpb25dIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hh
bmRsZXIiXTsKK30KKworLSAoTlNTdHJpbmcgKiljb250cm9sbGVkRWxlbWVudElECit7CisgICAg
X2lzRG9uZVF1ZXJ5aW5nQ29udHJvbGxlZEVsZW1lbnRJRCA9IGZhbHNlOworICAgIFtzZWxmIF9y
ZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZfaXNEb25lUXVlcnlpbmdDb250cm9sbGVkRWxlbWVudElEKTsKKyAgICByZXR1cm4gX2NvbnRy
b2xsZWRFbGVtZW50SUQ7Cit9CisKKy0gKHZvaWQpX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURS
ZXNwb25zZTooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisgICAgX2NvbnRyb2xsZWRFbGVtZW50
SUQgPSBbaWRlbnRpZmllciBjb3B5XTsKKyAgICBfaXNEb25lUXVlcnlpbmdDb250cm9sbGVkRWxl
bWVudElEID0gdHJ1ZTsKIH0KIAogQGVuZAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
LVRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlTGFy
Z2VWaWRlbykKK1JldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gc2V0
VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TUmVjdCBmcmFtZSkKIHsK
ICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0g
V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0
TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3
OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2Nv
bmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwotCisgICAgUmV0YWluUHRy
PFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBSZXRhaW5QdHI8TlNXaW5k
b3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVj
dDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2lu
ZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW1t3aW5kb3cgY29udGVu
dFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CiAKKyAgICByZXR1cm4gd2ViVmlldzsK
K30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5n
bGVMYXJnZVZpZGVvKQoreworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFu
YWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisKICAgICAvLyBBIGxhcmdlIHZpZGVv
IHdpdGggYXVkaW8gc2hvdWxkIGhhdmUgYSBjb250cm9scyBtYW5hZ2VyIGV2ZW4gaWYgaXQgaXMg
cGxheWVkIHZpYSBzY3JpcHQgbGlrZSB0aGlzIHZpZGVvLgogICAgIC8vIFNvIHRoZSBleHBlY3Rh
dGlvbiBpcyBZRVMuCi0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFn
ZXI6WUVTXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12
aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdl
ckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNj
cmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2Utdmlk
ZW8td2l0aC1hdWRpbyIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOllFUyBhZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNr
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmlu
YWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5h
bWU6QCJwbGF5aW5nSGFuZGxlciJdOwotCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cg
PSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcg
ZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5n
U3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRT
dWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICAvLyBBIHNtYWxs
IHZpZGVvIHdpbGwgbm90IGhhdmUgYSBjb250cm9scyBtYW5hZ2VyIHVubGVzcyBpdCBzdGFydGVk
IHBsYXlpbmcgYmVjYXVzZSBvZiBhIHVzZXIgZ2VzdHVyZS4gU2luY2UgdGhpcwogICAgIC8vIHZp
ZGVvIGlzIHN0YXJ0ZWQgd2l0aCBhIHNjcmlwdCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgotICAg
IFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKLSAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ2aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidmlkZW8td2l0aC1hdWRpbyIgYW5kRXhwZWN0Q29udHJv
bHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVv
c1dpdGhBdWRpbykKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlv
bkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRy
PFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
KE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIF9fYmxvY2sgQk9PTCBkaWRTaG93
TWVkaWFDb250cm9sczsKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lTG9hZGluZyA9IGZhbHNlOwog
Ci0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRl
cmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10p
OwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwot
ICAgIFJldGFpblB0cjxPbkxvYWRNZXNzYWdlSGFuZGxlcj4gb25sb2FkSGFuZGxlciA9IGFkb3B0
TlMoW1tPbkxvYWRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmll
dy5nZXQoKSBoYW5kbGVyOl4oKSB7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpe
IHsKICAgICAgICAgZGlkU2hvd01lZGlhQ29udHJvbHMgPSBbd2ViVmlldyBfaGFzQWN0aXZlVmlk
ZW9Gb3JDb250cm9sc01hbmFnZXJdOwogICAgICAgICBpc0RvbmVMb2FkaW5nID0gdHJ1ZTsKLSAg
ICB9XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6b25sb2FkSGFuZGxlci5nZXQoKSBuYW1lOkAib25sb2FkSGFuZGxl
ciJdOworICAgIH1dOwogCi0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
bGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVv
cy13aXRoLWF1ZGlvIl07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZUxv
YWRpbmcpOwogICAgIEVYUEVDVF9GQUxTRShkaWRTaG93TWVkaWFDb250cm9scyk7CkBAIC0yMTIs
MTc1ICsxOTksMTU3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyTXVsdGlwbGVWaWRlb3NXaXRoQXVkaW8pCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRlb3NXaXRoQXVkaW9BbmRBdXRvcGxh
eSkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
Y29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJl
Y3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIF9fYmxvY2sgQk9PTCBkaWRTaG93TWVkaWFDb250
cm9sczsKICAgICBfX2Jsb2NrIGJvb2wgaXNEb25lTG9hZGluZyA9IGZhbHNlOwogCi0gICAgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtb
d2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotICAgIFJldGFp
blB0cjxPbkxvYWRNZXNzYWdlSGFuZGxlcj4gb25sb2FkSGFuZGxlciA9IGFkb3B0TlMoW1tPbkxv
YWRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBo
YW5kbGVyOl4oKSB7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKICAgICAg
ICAgZGlkU2hvd01lZGlhQ29udHJvbHMgPSBbd2ViVmlldyBfaGFzQWN0aXZlVmlkZW9Gb3JDb250
cm9sc01hbmFnZXJdOwogICAgICAgICBpc0RvbmVMb2FkaW5nID0gdHJ1ZTsKLSAgICB9XSk7Ci0g
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6b25sb2FkSGFuZGxlci5nZXQoKSBuYW1lOkAib25sb2FkSGFuZGxlciJdOworICAg
IH1dOwogCi0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2Utdmlk
ZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVv
cy13aXRoLWF1ZGlvLWF1dG9wbGF5Il07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZUxvYWRpbmcpOwogICAgIEVYUEVDVF9UUlVFKGRpZFNob3dNZWRpYUNvbnRyb2xzKTsK
IH0KIAotVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5n
bGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsUGF1c2VkVmlkZW9PdXRPZlZpZXcp
CiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFj
ayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IHBsYXliYWNrSGFu
ZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRX
aXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGF1c2VkIl0p
OwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOnBsYXliYWNrSGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIi
XTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZp
ZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVj
dCgwLCAwLCA1MDAsIDUwMCkpOwogCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBh
ZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJh
bWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2
aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFy
Z2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scyIgYW5kRXhwZWN0Q29udHJvbHNN
YW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlZCJdOworfQogCi0gICAgUmV0
YWluUHRyPE9uTG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09u
TG9hZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
IGhhbmRsZXI6XigpIHsKLSAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpOU01ha2VQ
b2ludCg1MCwgNTApXTsKLSAgICB9XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6b25sb2FkSGFuZGxlci5nZXQoKSBu
YW1lOkAib25sb2FkSGFuZGxlciJdOworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Njcm9sbFBsYXlpbmdWaWRlb1dpdGhTb3VuZE91
dE9mVmlldykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmll
dyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIo
TlNNYWtlUmVjdCgwLCAwLCA1MDAsIDUwMCkpOworCisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scyIgYW5kRXhw
ZWN0Q29udHJvbHNNYW5hZ2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07
Cit9CiAKLSAgICAvLyBBIHNtYWxsIHZpZGVvIHNob3VsZCBoYXZlIGEgY29udHJvbHMgbWFuYWdl
ciBhZnRlciB0aGUgZmlyc3QgdXNlciBnZXN0dXJlLCB3aGljaCBpbmNsdWRlcyBwYXVzaW5nIHRo
ZSB2aWRlby4gVGhlIGV4cGVjdGF0aW9uIGlzIFlFUy4KLSAgICBbcGxheWJhY2tIYW5kbGVyIHNl
dEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Ci0gICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
OwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworVEVTVChWaWRlb0NvbnRyb2xz
TWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Njcm9sbFBsYXlpbmdN
dXRlZFZpZGVvT3V0T2ZWaWV3KQoreworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CiAKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlk
ZW8taGlkZXMtY29udHJvbHMiIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKLVRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvU2Vla3NBZnRlckVuZGlu
ZykKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlw
bGVWaWRlb3NTaG93Q29udHJvbHNGb3JMYXN0SW50ZXJhY3RlZFZpZGVvKQogewotICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5n
ZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJlbmRlZCJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xz
TWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRl
b0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSk7CisgICAgTlNQb2lu
dCBjbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoNDAwLCAzMDApOwogCi0gICAgUmV0YWluUHRyPE5T
V2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNv
bnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFt3ZWJWaWV3IHBlcmZv
cm1BZnRlckxvYWRpbmc6XiB7CisgICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6Y2xp
Y2tQb2ludF07CisgICAgfV07CiAKLSAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVkLCB0
aGUgZXhwZWN0YXRpb24gaXMgTk8gZXZlbiBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNl
ZWtzIHRvIHRoZSBiZWdpbm5pbmcuCi0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250
cm9sc01hbmFnZXI6Tk9dOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
ImxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgX19ibG9jayBib29sIGZpcnN0VmlkZW9QYXVzZWQgPSBm
YWxzZTsKKyAgICBfX2Jsb2NrIGJvb2wgc2Vjb25kVmlkZW9QYXVzZWQgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2VkIiBhY3Rpb246XiB7
CisgICAgICAgIE5TU3RyaW5nICpjb250cm9sbGVkRWxlbWVudElEID0gW3dlYlZpZXcgY29udHJv
bGxlZEVsZW1lbnRJRF07CisgICAgICAgIGlmIChmaXJzdFZpZGVvUGF1c2VkKSB7CisgICAgICAg
ICAgICBzZWNvbmRWaWRlb1BhdXNlZCA9IHRydWU7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShb
Y29udHJvbGxlZEVsZW1lbnRJRCBpc0VxdWFsVG9TdHJpbmc6QCJzZWNvbmQiXSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50OmNsaWNrUG9p
bnRdOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2NvbnRyb2xsZWRFbGVtZW50SUQgaXNFcXVh
bFRvU3RyaW5nOkAiZmlyc3QiXSk7CisgICAgICAgIH0KKyAgICAgICAgZmlyc3RWaWRlb1BhdXNl
ZCA9IHRydWU7CisgICAgfV07CiAKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3Rl
ZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAibGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlIl07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzZWNvbmRWaWRlb1BhdXNlZCk7CiB9CiAKLVRFU1QoVmlk
ZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1Zp
ZGVvU2Vla3NBbmRQbGF5c0FmdGVyRW5kaW5nKQorVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1N3aXRjaENvbnRyb2xsZWRWaWRlb1do
ZW5TY3JvbGxpbmcpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rp
b25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInJlcGxh
eWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJd
OworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFk
b3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFt
ZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZp
ZXc6d2ViVmlldy5nZXQoKV07CisgICAgX19ibG9jayBib29sIHNjcm9sbGVkU2Vjb25kVmlkZW9J
bnRvVmlldyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2Ut
dmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlbyJdOworICAgIFt3ZWJWaWV3IHBlcmZv
cm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJzY3JvbGxlZCIgYWN0aW9uOl4geworICAgICAgICBz
Y3JvbGxlZFNlY29uZFZpZGVvSW50b1ZpZXcgPSB0cnVlOworICAgIH1dOwogCi0gICAgLy8gU2lu
Y2UgdGhlIHZpZGVvIGlzIHN0aWxsIHBsYXlpbmcsIHRoZSBleHBlY3RhdGlvbiBpcyBZRVMgZXZl
biBpZiB0aGUgdmlkZW8gaGFzIGVuZGVkIG9uY2UuCi0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRU
b0hhdmVDb250cm9sc01hbmFnZXI6WUVTXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1l
bmRpbmciIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNjcm9sbGVkU2Vjb25kVmlkZW9JbnRvVmlldyk7Cisg
ICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IGNvbnRyb2xsZWRFbGVtZW50SURdIGlzRXF1YWxUb1N0
cmluZzpAInNlY29uZCJdKTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Njcm9sbE9ubHlMYXJnZVZpZGVvT3V0T2ZWaWV3
KQoreworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2Vi
VmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VS
ZWN0KDAsIDAsIDUwMCwgNTAwKSk7CiAKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRl
c3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAibGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheSIgYW5kRXhwZWN0Q29udHJv
bHNNYW5hZ2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJzY3JvbGxlZCJdOwogfQogCi1U
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3Bs
YXlpbmdWaWRlb0FmdGVyU2Vla2luZ1RvRW5kKQorVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCiB7Ci0gICAg
UmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVk
aW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJl
dGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtb
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJW
aWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAImVuZGVkIl0pOwotICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRs
ZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisgICAgUmV0YWluUHRyPFZpZGVvQ29u
dHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGlu
Z1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAotICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAg
ICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBb
d2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4geworICAgICAgICBbd2ViVmlldyBtb3VzZURv
d25BdFBvaW50Ok5TTWFrZVBvaW50KDUwLCA1MCldOworICAgIH1dOworCisgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvIiBhbmRFeHBl
Y3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlZCJdOwor
fQorCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdl
QXV0b3BsYXlpbmdWaWRlb1NlZWtzQWZ0ZXJFbmRpbmcpCit7CisgICAgUmV0YWluUHRyPFZpZGVv
Q29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVz
dGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKwor
ICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBoYXMgZW5kZWQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTyBl
dmVuIGlmIHRoZSBwYWdlIHByb2dyYW1tYXRpY2FsbHkgc2Vla3MgdG8gdGhlIGJlZ2lubmluZy4K
KyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXNlZWstYWZ0ZXIt
ZW5kaW5nIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNzYWdl
OkAiZW5kZWQiXTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9s
c01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FuZFBsYXlzQWZ0ZXJFbmRpbmcpCit7
CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3
ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3Qo
MCwgMCwgMTAwLCAxMDApKTsKKworICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBpcyBzdGlsbCBwbGF5
aW5nLCB0aGUgZXhwZWN0YXRpb24gaXMgWUVTIGV2ZW4gaWYgdGhlIHZpZGVvIGhhcyBlbmRlZCBv
bmNlLgorICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tc2Vlay10
by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nIiBhbmRFeHBlY3RDb250cm9sc01hbmFn
ZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInJlcGxheWluZyJdOworfQogCi0gICAgUmV0
YWluUHRyPE9uTG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09u
TG9hZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
IGhhbmRsZXI6XigpIHsKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvQWZ0ZXJTZWVraW5nVG9FbmQpCit7CisgICAgUmV0
YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBX
ZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CiAgICAgICAg
IFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6TlNNYWtlUG9pbnQoNTAsIDUwKV07Ci0gICAgfV0p
OwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsK
KyAgICB9XTsKIAogICAgIC8vIFdlIGV4cGVjdCB0aGVyZSB0byBiZSBtZWRpYSBjb250cm9scywg
c2luY2UgdGhpcyBpcyBhIHVzZXIgZ2VzdHVyZWQgc2VlayB0byB0aGUgZW5kLgogICAgIC8vIFRo
aXMgaXMgYWtpbiB0byBzZWVraW5nIHRvIHRoZSBlbmQgYnkgc2NydWJiaW5nIGluIHRoZSBjb250
cm9scy4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNd
OwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3Rl
ZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQiIGFuZEV4
cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiZW5kZWQiXTsK
IH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5n
bGVMYXJnZVZpZGVvV2l0aG91dEF1ZGlvKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1
aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsK
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VT
dHJpbmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlp
bmdIYW5kbGVyIl07Ci0KLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMo
W1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZl
cmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2Vi
Vmlldy5nZXQoKV07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZp
ZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
KE5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAogICAgIC8vIEEgbGFyZ2UgdmlkZW8gd2l0
aCBubyBhdWRpbyB3aWxsIG5vdCBoYXZlIGEgY29udHJvbHMgbWFuYWdlciB1bmxlc3MgaXQgc3Rh
cnRlZCBwbGF5aW5nIGJlY2F1c2Ugb2YgYSB1c2VyIGdlc3R1cmUuIFNpbmNlIHRoaXMKICAgICAv
LyB2aWRlbyBpcyBzdGFydGVkIHdpdGggYSBzY3JpcHQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTy4K
LSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107Ci0gICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8td2l0aG91dC1h
dWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotCi0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlp
bmcpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXdpdGhvdXQt
YXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6
QCJwbGF5aW5nIl07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJv
bHNNYW5hZ2VyQXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiB7Ci0gICAgUmV0YWluUHRy
PFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
bWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxN
ZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAx
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxN
ZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5
YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
IGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2lu
ZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJW
aWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10g
YWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgLy8gQW4g
YXVkaW8gZWxlbWVudCBNVVNUIGJlIHN0YXJ0ZWQgd2l0aCBhIHVzZXIgZ2VzdHVyZSBpbiBvcmRl
ciB0byBoYXZlIGEgY29udHJvbHMgbWFuYWdlciwgc28gdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgot
ICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKLSAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdWRpby1vbmx5IiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0g
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAiYXVkaW8tb25seSIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2Vy
Ok5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVTVChWaWRlb0Nv
bnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xz
T25EZWFsbG9jKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9u
Rm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLQotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhb
W05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJW
aWV3LmdldCgpXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmll
dyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIo
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAgICAgTlNVUkwgKnVybE9mVmlkZW8gPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0aC1hdWRpbyIg
d2l0aEV4dGVuc2lvbjpAIm1wNCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKICAgICBbd2ViVmlldyBsb2FkRmlsZVVSTDp1cmxPZlZpZGVvIGFsbG93aW5nUmVhZEFj
Y2Vzc1RvVVJMOlt1cmxPZlZpZGVvIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF1dOwog
CiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkVGVzdCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHBl
cmZvcm1BZnRlckxvYWRpbmc6XigpCi0gICAgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxv
YWRpbmc6XiB7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIHRlYXIgZG93biB0aGUgbWVkaWEg
Y29udHJvbHMgcHJvcGVybHksIHN1Y2ggdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZSB3ZWIg
dmlldyBpcyByZWxlYXNlZC4KICAgICAgICAgaWYgKFt3ZWJWaWV3IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX2ludGVyYWN0V2l0aE1lZGlhQ29udHJvbHNGb3JUZXN0aW5nKV0pCiAgICAg
ICAgICAgICBbd2ViVmlldyBfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3RpbmddOwpA
QCAtMzk0LDE2ICszNjMsMTAgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250
cm9sc01hbmFnZXJUZWFyc0Rvd25NZWRpYUNvbnRyb2xzT25EZWFsbG9jKQogCiBURVNUKFZpZGVv
Q29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNtYWxsVmlkZW9Jbk1lZGlhRG9j
dW1lbnQpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIAotICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhb
W05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJW
aWV3LmdldCgpXTsKLSAgICAKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0
V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01h
bmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCiAgICAgX19ibG9jayBib29sIGZp
bmlzaGVkTG9hZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6Xigp
Ci0gICAgeworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRpbmc6XiB7CiAgICAgICAgIGZp
bmlzaGVkTG9hZCA9IHRydWU7CiAgICAgfV07CiAgICAgCkBAIC00MTgsNDAgKzM4MSwxNiBAQCBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNtYWxsVmlkZW9J
bk1lZGlhRG9jdW1lbnQpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJv
bHNNYW5hZ2VyTG9uZ1NraW5ueVZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAgIFJldGFpblB0
cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgp
Lm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFs
TWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDE2MDAs
IDgwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRy
PE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29u
dGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNr
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93
IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgUmV0YWluUHRy
PE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBs
YXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0
KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9I
YXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFn
ZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250
cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxNjAwLCA4MDApKTsKIAotICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRo
LWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxh
eWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2tpbm55LWF1dG9wbGF5aW5n
LXZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpOTyBhZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyRnVsbFNpemVWaWRlb0luV2lkZU1haW5GcmFtZSkKIHsKLSAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJh
dGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tB
dWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxNjAwLCA4MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAg
ICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKLQotICAg
IFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLSAgICBbaGFuZGxlciBzZXRF
eHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotCi0gICAgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVk
aW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBSZXRh
aW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdl
YlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxNjAw
LCA4MDApKTsKIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNN
YW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJmdWxs
LXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgYW5kRXhwZWN0Q29udHJvbHNNYW5h
Z2VyOllFUyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIl07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXBsYXlpbmct
c2Nyb2xsLWF3YXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWNmOTI5MzMyNzQzODBiMmI3YWNkNDNmNGE3
ZmU5YmI1MmI4YzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sCkBAIC0w
LDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIHZpZGVvIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNDgw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGRpdiB7CisgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNTAwMHB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAg
ZnVuY3Rpb24gaGFuZGxlTG9hZGVkKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoImRpdiIpLnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInNjcm9sbGVkIik7CisgICAg
ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAgICAgIDx2aWRl
byBhdXRvcGxheSBsb29wIGlkPSJmaXJzdCIgc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1w
NCI+PC92aWRlbz4KKyAgICAgICAgPGJyPgorICAgICAgICA8ZGl2PmhlbGxvIHdvcmxkITwvZGl2
PgorICAgIDwvYm9keT4KKzxodG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNl
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
b3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2JkZGYwMGVh
YTk5YWRhMzhhYmVhZWE4MTk4NjEyYmI0YzRhNDE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5n
LWNsaWNrLXRvLXBhdXNlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgdmlkZW8gewor
ICAgICAgICAgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMy
MHB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgdmFyIGlzRmlyc3RDbGljayA9IHRydWU7CisgICAgICAgICAgICBmdW5jdGlv
biBoYW5kbGVNb3VzZURvd24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3Rvcihpc0ZpcnN0Q2xpY2sgPyAiI2ZpcnN0IiA6ICIjc2Vjb25kIikucGF1c2UoKTsKKyAgICAg
ICAgICAgICAgICBpc0ZpcnN0Q2xpY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gaGFuZGxlRmlyc3RQYXVzZSgpIHsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRs
ZXIucG9zdE1lc3NhZ2UoInBhdXNlZCIpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUp
IHsgfQorICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBoYW5kbGVTZWNvbmRQYXVzZSgpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIu
cG9zdE1lc3NhZ2UoInBhdXNlZCIpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsg
fQorICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25tb3VzZWRvd249aGFuZGxlTW91c2VEb3duKCk+
CisgICAgICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmaXJzdCIgc3JjPSJsYXJnZS12aWRl
by13aXRoLWF1ZGlvLm1wNCIgb25wYXVzZT1oYW5kbGVGaXJzdFBhdXNlKCk+PC92aWRlbz4KKyAg
ICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9InNlY29uZCIgc3JjPSJsYXJnZS12aWRlby13
aXRoLWF1ZGlvLm1wNCIgb25wYXVzZT1oYW5kbGVTZWNvbmRQYXVzZSgpPjwvdmlkZW8+CisgICAg
PC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0
b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ0ZmYyOTY3N2FmNDE2
ZjVlNTE0ODJjNzBjNDE1NzIzMzNkYzJkMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3Jv
bGwtdG8tdmlkZW8uaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICB2aWRlbyB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDQ4MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzIwcHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjc2Vjb25kIHsKKyAgICAgICAgICAgICAgICBt
YXJnaW4tdG9wOiA1MDAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NlY29uZCIpLnNjcm9sbEludG9W
aWV3KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIu
cG9zdE1lc3NhZ2UoInNjcm9sbGVkIik7CisgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
aGFuZGxlTG9hZGVkKCk+CisgICAgICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmaXJzdCIg
c3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKyAgICAgICAgPGJyPgor
ICAgICAgICA8dmlkZW8gYXV0b3BsYXkgbG9vcCBpZD0ic2Vjb25kIiBzcmM9ImxhcmdlLXZpZGVv
LXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDwvYm9keT4KKzxodG1sPgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBh
dXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdjNWYyNWU3NDVhNGNkNWM4ZTczMDQzY2NiNjIyNmNhZDk5MGFhMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCAr
MSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICB2aWRlbyB7Cisg
ICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICB9CisgICAg
I2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmlldygpOworICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjZm9vIikucGF1c2UoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gaGFuZGxl
UGF1c2VkKCkgeworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5
aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGF1c2VkIik7CisgICAgICAgICAgICB9IGNhdGNoKGUp
IHsgfQorICAgICAgICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD1oYW5k
bGVMb2FkZWQoKT4KKyAgICA8dmlkZW8gYXV0b3BsYXkgbG9vcCBpZD0iZm9vIiBvbnBhdXNlPWhh
bmRsZVBhdXNlZCgpPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92
aWRlbz4KKyAgICA8YnI+CisgICAgPHZpZGVvIGlkPSJiYXIiPjxzb3VyY2Ugc3JjPSJsYXJnZS12
aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzxodG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12
aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZhYmNmZjQwNWIxMmI5YmRmYmRkYmI2YzVhYjRjMzY2NjBlMGRiMDUKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsMjggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisgICAgdmlkZW8geworICAgICAgICB3
aWR0aDogNDgwcHg7CisgICAgICAgIGhlaWdodDogMzIwcHg7CisgICAgfQorICAgICNiYXIgewor
ICAgICAgICBtYXJnaW4tdG9wOiA1MDAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+Cisg
ICAgZnVuY3Rpb24gaGFuZGxlTG9hZGVkKCkgeworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCIjZm9vIikubXV0ZWQgPSB0cnVlOworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCIjYmFyIikuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInBsYXlpbmciKTsKKyAgICAg
ICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0Pgor
PGJvZHkgb25sb2FkPWhhbmRsZUxvYWRlZCgpPgorICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlk
PSJmb28iPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4K
KyAgICA8YnI+CisgICAgPHZpZGVvIGlkPSJiYXIiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13
aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzxodG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGxheWlu
Zy12aWRlby1rZWVwcy1jb250cm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxMTBiYjc3MWFiN2RhOWYw
OWZkNDQyZTlmNTkyMTU4NzFiMjJmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVw
cy1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8c3R5bGU+CisgICAgdmlkZW8geworICAgICAgICB3aWR0aDogNDgwcHg7CisgICAgICAgIGhl
aWdodDogMzIwcHg7CisgICAgfQorICAgICNiYXIgeworICAgICAgICBtYXJnaW4tdG9wOiA1MDAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaGFuZGxlTG9hZGVk
KCkgeworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYmFyIikuc2Nyb2xsSW50b1Zp
ZXcoKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hh
bmRsZXIucG9zdE1lc3NhZ2UoInBsYXlpbmciKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9
CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWhhbmRsZUxv
YWRlZCgpPgorICAgIDx2aWRlbyBhdXRvcGxheSBsb29wIGlkPSJmb28iPjxzb3VyY2Ugc3JjPSJs
YXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKyAgICA8YnI+CisgICAgPHZpZGVv
IGlkPSJiYXIiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRl
bz4KKzwvYm9keT4KKzxodG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287874</attachid>
            <date>2016-09-03 16:56:13 -0700</date>
            <delta_ts>2016-09-03 17:26:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161503-20160903165354.patch</filename>
            <type>text/plain</type>
            <size>88943</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNjE4YWM0YTcwNTI5
ODdjNGNhNGE1YmU0MmU5NzczMjAyZWRlZi4uNWJmODIzMzNmZDRlMDVjYjczYmM3ZjY3NjJhNjIz
YTM4ZGM5YTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE2LTA5LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRo
ZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEg
c2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEN1cnJlbnRseSwg
d2hlbiBzZWxlY3RpbmcgYSBtZWRpYSBzZXNzaW9uIHRvIHNob3cgcGxheWJhY2sgY29udHJvbHMg
Zm9yLCB3ZSBncmFiIHRoZSBmaXJzdCBtZWRpYSBzZXNzaW9uIHRoYXQKKyAgICAgICAgcGFzc2Vz
IG91ciBoZXVyaXN0aWMuIFVzaW5nIHRoaXMgbWV0aG9kLCB3ZSBhcmUgdW5hYmxlIHRvIHRha2Ug
YWRkaXRpb25hbCBmYWN0b3JzIGludG8gYWNjb3VudCwgc3VjaCBhcyB3aGV0aGVyCisgICAgICAg
IGFub3RoZXIgbWVkaWEgc2Vzc2lvbidzIGVsZW1lbnQgaXMgc2Nyb2xsZWQgaW4gdmlldywgb3Ig
aWYgYW5vdGhlciBtZWRpYSBzZXNzaW9uIGhhcyBiZWVuIGludGVyYWN0ZWQgd2l0aCBtb3JlCisg
ICAgICAgIHJlY2VudGx5LiBUbyBhZGRyZXNzIHRoaXMsIHdlIG1ha2UgdGhlIGZvbGxvd2luZyBj
aGFuZ2VzOgorCisgICAgICAgICAgICAxLiAgQ29uc2lkZXIgdGhlIGxpc3Qgb2YgYWxsIE1lZGlh
RWxlbWVudFNlc3Npb25zLgorCisgICAgICAgICAgICAyLiAgU2VsZWN0IG9ubHkgdGhlIE1lZGlh
RWxlbWVudFNlc3Npb25zIGNhcGFibGUgb2Ygc2hvd2luZyBtZWRpYSBjb250cm9scyBhbmQgc29y
dCB0aGUgbGlzdCBieSBhIHNwZWNpYWwKKyAgICAgICAgICAgICAgICBoZXVyaXN0aWMgdGhhdCB0
YWtlcyB2aXNpYmlsaXR5IGFuZCB0aW1lIG9mIGxhc3QgdXNlciBpbnRlcmFjdGlvbiBpbnRvIGFj
Y291bnQuIFRoZSBmaXJzdCBlbGVtZW50IG9uCisgICAgICAgICAgICAgICAgdGhpcyBsaXN0IGlz
IHRoZSBzdHJvbmdlc3QgY2FuZGlkYXRlIGZvciBtYWluIGNvbnRlbnQuCisKKyAgICAgICAgICAg
IDMuICBJZiB0aGlzIHN0cm9uZ2VzdCBjYW5kaWRhdGUgaXMgdmlzaWJsZSBpbiB0aGUgdmlld3Bv
cnQsIG9yIGl0IGlzIHBsYXlpbmcgd2l0aCBhdWRpbywgd2UgcmV0dXJuIHRoaXMKKyAgICAgICAg
ICAgICAgICBhcyB0aGUgY2hvc2VuIGNhbmRpZGF0ZS4gT3RoZXJ3aXNlLCB3ZSByZXR1cm4gdGhp
cyBzZXNzaW9uIG9ubHkgaWYgbm8gb3RoZXIgbm9uLWNhbmRpZGF0ZSB2aWRlbyBjb3VsZCBiZQor
ICAgICAgICAgICAgICAgIGNvbmZ1c2VkIGFzIHRoZSBtYWluIGNvbnRlbnQgKGkuZS4gdGhlIG5v
bi1jYW5kaWRhdGUgdmlkZW8gaXMgbm90IG9ubHkgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQsIGJ1
dCBhbHNvCisgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgbWFp
biBjb250ZW50KS4KKworICAgICAgICBVc2luZyB0aGlzIG5ldyBtZXRob2Qgb2YgZGV0ZXJtaW5p
bmcgdGhlIHZpZGVvIHRvIHNob3cgY29udHJvbHMgZm9yLCB3ZSByZXRhaW4gcHJldmlvdXMgYmVo
YXZpb3IgZm9yIHBhZ2VzIHdpdGgKKyAgICAgICAgYSBzaW5nbGUgdmlkZW8uIE9uIHBhZ2VzIHdp
dGggbXVsdGlwbGUgdmlkZW9zLCB0aGUgYWJvdmUgbG9naWMgZW5zdXJlcyB0aGF0IGlmIHRoZSBj
dXJyZW50IGNvbnRyb2xsZWQgdmlkZW8gaXMKKyAgICAgICAgcGF1c2VkLCBzY3JvbGxlZCBvdXQg
b2YgdmlldywgYW5kIHRoZW4gYSBuZXcgdmlkZW8gaXMgc2Nyb2xsZWQgaW50byB2aWV3LCB3ZSB3
aWxsIGVpdGhlciBoaWRlIG1lZGlhIGNvbnRyb2xzIHRvCisgICAgICAgIGF2b2lkIGNvbmZ1c2lv
biBpZiB0aGF0IHZpZGVvIGNvdWxkIGJlIGNvbmZ1c2VkIGZvciBtYWluIGNvbnRlbnQgKHVzaW5n
IHRoZSBtZWNoYW5pc20gaW4gc3RlcCAzKSwgb3Igd2UKKyAgICAgICAgaG9vayB1cCB0aGUgbWVk
aWEgY29udHJvbHMgdG8gdGhlIG5ldyB2aWRlbyBpZiBpdCBzYXRpc2ZpZXMgbWFpbiBjb250ZW50
ICh1c2luZyB0aGUgbWVjaGFuaXNtIGluIHN0ZXAgMikuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIGFkZHMgNiBuZXcgVGVzdFdlYktpdEFQSSB1bml0IHRlc3RzLgorCisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhRWxlbWVudFNl
c3Npb25JbmZvRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJNZWRpYUNvbnRy
b2xzRm9yQ2FuZGlkYXRlU2Vzc2lvbk92ZXJPdGhlckNhbmRpZGF0ZVNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6bWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpiZXN0TWVkaWFTZXNzaW9uRm9yU2hvd2luZ1BsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRT
aXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1Zpc2li
bGVJblZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmlzVmlzaWJsZUluVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmNhblNob3dDb250cm9sc01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
U2Vzc2lvbjo6aXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRWxlbWVudFNlc3Npb246Om1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OndhbnRzVG9PYnNlcnZlVmlld3Bv
cnRWaXNpYmlsaXR5Rm9yTWVkaWFDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVs
ZW1lbnRTZXNzaW9uOjp3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnJlc2V0UGxheWJhY2tT
ZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2Fu
Q29udHJvbENvbnRyb2xzTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpyZXNldFBs
YXliYWNrU2Vzc2lvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbnNNYXRjaGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJl
bnRTZXNzaW9uTWF0Y2hpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudCk6CisKIDIwMTYtMDgt
MzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGEgdHlwbyBpbnRyb2R1Y2VkIGluIHIyMDUxODQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2VlMTU5M2E0ODRj
YzdmMGRmMzE1Njk1ODU0ZWJkNDQ1ZTlmNTMxYi4uMGI2OWMxNWI3ZjA4MTFjZTRlZDMyYmJkMjRk
ZTFkODRkMjc3NGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA5LTAzICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IHRoZSBoZXVyaXN0aWMgZm9yIHNob3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVk
aWEgc2Vzc2lvbnMgaW50byBhY2NvdW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE1MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHMgYW4g
U1BJIHRlc3RpbmcgaG9vayBmb3Igc2VuZGluZyB0aGUgZWxlbWVudCBJRCBvZiB0aGUgY3VycmVu
dGx5IGNvbnRyb2xsZWQgdmlkZW8gZWxlbWVudCBmcm9tIHRoZSB3ZWIKKyAgICAgICAgcHJvY2Vz
cyB0byB0aGUgVUkgcHJvY2Vzcy4gU2VlIFZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tIGluIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvIGZvciB1c2FnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlcXVlc3RDb250cm9sbGVk
RWxlbWVudElEXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaGFuZGxlQ29udHJvbGxlZEVsZW1l
bnRJRFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2hhc0FjdGl2ZVZpZGVvRm9y
Q29udHJvbHNNYW5hZ2VyXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxl
bWVudElEUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElE
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWVu
dElEUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aGFuZGxlQ29udHJvbGxlZEVsZW1l
bnRJRFJlcXVlc3QpOgorCiAyMDE2LTA4LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBtX2NsaWVudCB0byBpbmRpY2F0ZSB3aGV0
aGVyIGFuIElQQzo6Q29ubmVjdGlvbiBpcyB2YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggMTE5OTJkZjU1NTA2NmMyODY2NDBhMTNmZDFjYTY0YTg4Yzk1
ZmM1Ni4uYjhjYTRiMDRlNjg1NGRmZjUwZjI0NGU2ZTYzMGMxNzhlZjQxMGIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNDYsNiArMzQ2LDc5IEBAIHN0
YXRpYyB1aW50NjRfdCBuZXh0RWxlbWVudElEKCkKIH0KICNlbmRpZgogCitzdHJ1Y3QgTWVkaWFF
bGVtZW50U2Vzc2lvbkluZm8geworICAgIGNvbnN0IE1lZGlhRWxlbWVudFNlc3Npb24qIHNlc3Np
b247CisKKyAgICBkb3VibGUgdGltZU9mTGFzdFVzZXJJbnRlcmFjdGlvbjsKKyAgICBib29sIGNh
blNob3dDb250cm9sc01hbmFnZXIgOiAxOworICAgIGJvb2wgaXNWaXNpYmxlSW5WaWV3cG9ydE9y
RnVsbHNjcmVlbiA6IDE7CisgICAgYm9vbCBpc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQgOiAx
OworICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gOiAxOworfTsKKworc3RhdGljIE1lZGlhRWxlbWVu
dFNlc3Npb25JbmZvIG1lZGlhRWxlbWVudFNlc3Npb25JbmZvRm9yU2Vzc2lvbihjb25zdCBNZWRp
YUVsZW1lbnRTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQgPSBzZXNzaW9uLmVsZW1lbnQoKTsKKyAgICByZXR1cm4geworICAgICAgICAmc2Vz
c2lvbiwKKyAgICAgICAgc2Vzc2lvbi5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSgpLAor
ICAgICAgICBzZXNzaW9uLmNhblNob3dDb250cm9sc01hbmFnZXIoKSwKKyAgICAgICAgZWxlbWVu
dC5pc0Z1bGxzY3JlZW4oKSB8fCBlbGVtZW50LmlzVmlzaWJsZUluVmlld3BvcnQoKSwKKyAgICAg
ICAgc2Vzc2lvbi5pc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoKSwKKyAgICAgICAgZWxlbWVu
dC5pc1BsYXlpbmcoKSAmJiBlbGVtZW50Lmhhc0F1ZGlvKCkgJiYgIWVsZW1lbnQubXV0ZWQoKQor
ICAgIH07Cit9CisKK3N0YXRpYyBib29sIHByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVT
ZXNzaW9uT3Zlck90aGVyQ2FuZGlkYXRlU2Vzc2lvbihjb25zdCBNZWRpYUVsZW1lbnRTZXNzaW9u
SW5mbyYgc2Vzc2lvbiwgY29uc3QgTWVkaWFFbGVtZW50U2Vzc2lvbkluZm8mIG90aGVyU2Vzc2lv
bikKK3sKKyAgICAvLyBQcmlvcml0aXplIHZpc2libGUgbWVkaWEgb3ZlciBvZmZzY3JlZW4gbWVk
aWEuCisgICAgaWYgKHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAhPSBv
dGhlclNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbikKKyAgICAgICAgcmV0
dXJuIHNlc3Npb24uaXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbjsKKworICAgIC8vIEFz
IGEgdGllYnJlYWtlciwgcHJpb3JpdGl6ZSBlbGVtZW50cyB0aGF0IHRoZSB1c2VyIHJlY2VudGx5
IGludGVyYWN0ZWQgd2l0aC4KKyAgICByZXR1cm4gc2Vzc2lvbi50aW1lT2ZMYXN0VXNlckludGVy
YWN0aW9uID4gb3RoZXJTZXNzaW9uLnRpbWVPZkxhc3RVc2VySW50ZXJhY3Rpb247Cit9CisKK3N0
YXRpYyBib29sIG1lZGlhU2Vzc2lvbk1heUJlQ29uZnVzZWRXaXRoTWFpbkNvbnRlbnQoY29uc3Qg
TWVkaWFFbGVtZW50U2Vzc2lvbkluZm8mIHNlc3Npb24pCit7CisgICAgaWYgKCFzZXNzaW9uLmlz
VmlzaWJsZUluVmlld3BvcnRPckZ1bGxzY3JlZW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghc2Vzc2lvbi5pc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIEV2ZW4gaWYgdGhpcyB2aWRlbyBpcyBub3QgYSBjYW5kaWRh
dGUsIGlmIGl0IGlzIHZpc2libGUgdG8gdGhlIHVzZXIgYW5kIGxhcmdlIGVub3VnaAorICAgIC8v
IHRvIGJlIG1haW4gY29udGVudCwgaXQgcG9zZXMgYSByaXNrIGZvciBiZWluZyBjb25mdXNlZCB3
aXRoIG1haW4gY29udGVudC4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGNvbnN0IE1l
ZGlhRWxlbWVudFNlc3Npb24qIGJlc3RNZWRpYVNlc3Npb25Gb3JTaG93aW5nUGxheWJhY2tDb250
cm9sc01hbmFnZXIoKQoreworICAgIGF1dG8gYWxsU2Vzc2lvbnMgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jdXJyZW50U2Vzc2lvbnNNYXRjaGluZyhbXSAo
Y29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIHsKKyAgICAgICAgcmV0dXJuIGlz
PE1lZGlhRWxlbWVudFNlc3Npb24+KHNlc3Npb24pOworICAgIH0pOworCisgICAgVmVjdG9yPE1l
ZGlhRWxlbWVudFNlc3Npb25JbmZvPiBjYW5kaWRhdGVTZXNzaW9uczsKKyAgICBib29sIGF0TGVh
c3RPbmVOb25DYW5kaWRhdGVNYXlCZUNvbmZ1c2VkRm9yTWFpbkNvbnRlbnQgPSBmYWxzZTsKKyAg
ICBmb3IgKGF1dG8mIHNlc3Npb24gOiBhbGxTZXNzaW9ucykgeworICAgICAgICBhdXRvIG1lZGlh
RWxlbWVudFNlc3Npb25JbmZvID0gbWVkaWFFbGVtZW50U2Vzc2lvbkluZm9Gb3JTZXNzaW9uKGRv
d25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+KCpzZXNzaW9uKSk7CisgICAgICAgIGlmIChtZWRp
YUVsZW1lbnRTZXNzaW9uSW5mby5jYW5TaG93Q29udHJvbHNNYW5hZ2VyKQorICAgICAgICAgICAg
Y2FuZGlkYXRlU2Vzc2lvbnMuYXBwZW5kKG1lZGlhRWxlbWVudFNlc3Npb25JbmZvKTsKKyAgICAg
ICAgZWxzZSBpZiAobWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdGhNYWluQ29udGVudChtZWRp
YUVsZW1lbnRTZXNzaW9uSW5mbykpCisgICAgICAgICAgICBhdExlYXN0T25lTm9uQ2FuZGlkYXRl
TWF5QmVDb25mdXNlZEZvck1haW5Db250ZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIWNh
bmRpZGF0ZVNlc3Npb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBz
dGQ6OnNvcnQoY2FuZGlkYXRlU2Vzc2lvbnMuYmVnaW4oKSwgY2FuZGlkYXRlU2Vzc2lvbnMuZW5k
KCksIHByZWZlck1lZGlhQ29udHJvbHNGb3JDYW5kaWRhdGVTZXNzaW9uT3Zlck90aGVyQ2FuZGlk
YXRlU2Vzc2lvbik7CisgICAgYXV0byBzdHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlID0gY2FuZGlk
YXRlU2Vzc2lvbnMuZmlyc3QoKTsKKyAgICBpZiAoIXN0cm9uZ2VzdFNlc3Npb25DYW5kaWRhdGUu
aXNWaXNpYmxlSW5WaWV3cG9ydE9yRnVsbHNjcmVlbiAmJiAhc3Ryb25nZXN0U2Vzc2lvbkNhbmRp
ZGF0ZS5pc1BsYXlpbmdBdWRpbyAmJiBhdExlYXN0T25lTm9uQ2FuZGlkYXRlTWF5QmVDb25mdXNl
ZEZvck1haW5Db250ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBz
dHJvbmdlc3RTZXNzaW9uQ2FuZGlkYXRlLnNlc3Npb247Cit9CisKIEhUTUxNZWRpYUVsZW1lbnQ6
OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKQEAgLTgzNyw4
ICs5MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiB7
CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICBy
ZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9u
LT5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OkludmlzaWJsZUF1
dG9wbGF5Tm90UGVybWl0dGVkKQotICAgICAgICAgICAgfHwgbV9tZWRpYVNlc3Npb24tPmhhc0Jl
aGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6T3ZlcnJpZGVVc2VyR2VzdHVy
ZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpKQorICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24g
JiYgbV9tZWRpYVNlc3Npb24tPndhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0
b3BsYXkoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5yZWdpc3RlckZvclZpc2libGVJblZpZXdw
b3J0Q2FsbGJhY2soKTsKICAgICB9CiAgICAgdXBkYXRlU2hvdWxkQXV0b3BsYXkoKTsKQEAgLTQw
MjEsNiArNDA5MywxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2Vk
KCkKICAgICAgICAgbV9yZWNlaXZlZExheW91dFNpemVDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
c2NoZWR1bGVVcGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogICAgIH0KKworICAgIC8v
IElmIHRoZSB2aWRlbyBpcyBhIGNhbmRpZGF0ZSBmb3IgbWFpbiBjb250ZW50LCB3ZSBzaG91bGQg
cmVnaXN0ZXIgaXQgZm9yIHZpZXdwb3J0IHZpc2liaWxpdHkgY2FsbGJhY2tzCisgICAgLy8gaWYg
aXQgaGFzbid0IGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLgorICAgIGlmIChyZW5kZXJlcigpICYm
IG1fbWVkaWFTZXNzaW9uICYmICFtX21lZGlhU2Vzc2lvbi0+d2FudHNUb09ic2VydmVWaWV3cG9y
dFZpc2liaWxpdHlGb3JBdXRvcGxheSgpICYmIG1fbWVkaWFTZXNzaW9uLT53YW50c1RvT2JzZXJ2
ZVZpZXdwb3J0VmlzaWJpbGl0eUZvck1lZGlhQ29udHJvbHMoKSkKKyAgICAgICAgcmVuZGVyZXIo
KS0+cmVnaXN0ZXJGb3JWaXNpYmxlSW5WaWV3cG9ydENhbGxiYWNrKCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC03MTQwLDYgKzcyMTcsNyBA
QCBzdGF0aWMgYm9vbCBtZWRpYUVsZW1lbnRJc0FsbG93ZWRUb0F1dG9wbGF5KGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVmlzaWJsZUlu
Vmlld3BvcnRDaGFuZ2VkKCkKIHsKICAgICB1cGRhdGVTaG91bGRBdXRvcGxheSgpOworICAgIHNj
aGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKTsKIH0KIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSgpCkBAIC03MTY4LDIwICs3MjQ2LDI5IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkUGxheSgpCiAgICAgICAgIHBsYXko
KTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNldFBsYXliYWNrU2Vzc2lvblN0YXRl
KCkKK3sKKyAgICBpZiAobV9tZWRpYVNlc3Npb24pCisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5y
ZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6
aXNWaXNpYmxlSW5WaWV3cG9ydCgpIGNvbnN0Cit7CisgICAgYXV0byByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT52aXNpYmxlSW5W
aWV3cG9ydFN0YXRlKCkgPT0gUmVuZGVyRWxlbWVudDo6VmlzaWJsZUluVmlld3BvcnQ7Cit9CisK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQog
ewogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBzZXNzaW9uID0gUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY3VycmVudFNlc3Npb25N
YXRjaGluZyhbXSAoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIHsKLSAgICAg
ICAgcmV0dXJuIHNlc3Npb24uY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpOwotICAgIH0pOwot
Ci0gICAgaWYgKCFpczxNZWRpYUVsZW1lbnRTZXNzaW9uPihzZXNzaW9uKSkKLSAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOworICAg
IC8vIEZJWE1FOiBFbnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgaGVyZSBzaG91bGQgYmUgdXAgdG8g
ZGF0ZS4KKyAgICBpZiAoYXV0byBiZXN0TWVkaWFTZXNzaW9uID0gYmVzdE1lZGlhU2Vzc2lvbkZv
clNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpKQorICAgICAgICBwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS5zZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKGJlc3RNZWRpYVNlc3Npb24t
PmVsZW1lbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5z
ZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKGRvd25jYXN0PE1lZGlhRWxlbWVudFNlc3Npb24+
KHNlc3Npb24pLT5lbGVtZW50KCkpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5j
bGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2NoZWR1bGVVcGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDk4ZjNiMDg4OTg2YTk5NmY0ZWE2Yjc1YWVhNzRl
OTYzZDViNjIxOWEuLjg2MjNlM2E3N2QxYjU5YzZlZDQzNjAyMjkyNDU2Y2ZjN2JiZjFkNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NjgsNiArNDY4LDkgQEAg
cHVibGljOgogCiAgICAgUmVuZGVyTWVkaWEqIHJlbmRlcmVyKCkgY29uc3Q7CiAKKyAgICB2b2lk
IHJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKTsKKyAgICBib29sIGlzVmlzaWJsZUluVmlld3Bv
cnQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1
YWwgfkhUTUxNZWRpYUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwCmluZGV4IGU5Yjk3YjlhMTJhYWQ2MzEyOGJhYjlmNTQxNWE0Y2Q4NDZiNjA5
ZmEuLmVjMzZjOGM0OWEzMzI1NDY3YWEwNzM4NWE4Nzg3MTA0OWJjOGQ1MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAK
ICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCkBAIC0xMzcsNiAr
MTM4LDkgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0aW9u
KEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW8KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9uKQogeworICAgIGlmIChyZXN0cmljdGlvbiAmIFJlcXVpcmVVc2VyR2VzdHVyZVRvQ29u
dHJvbENvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCiAgICAgTE9HKE1lZGlhLCAi
TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbiAtIHJlbW92aW5n
ICVzIiwgcmVzdHJpY3Rpb25OYW1lKHJlc3RyaWN0aW9uKS51dGY4KCkuZGF0YSgpKTsKICAgICBt
X3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247CiB9CkBAIC0yMTIsNjkgKzIxNiw4OSBAQCBi
b29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmco
Y29uc3QgSFRNTE1lZGlhRWxlbWVudAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlh
RWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAorYm9vbCBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3QKIHsKICAg
ICBpZiAobV9lbGVtZW50LmlzRnVsbHNjcmVlbigpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1l
ZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcg
VFJVRTogSXMgZnVsbHNjcmVlbiIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIGZ1bGxz
Y3JlZW4iKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKCFtX2VsZW1l
bnQuaGFzQXVkaW8oKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyBhdWRpbyIp
OworICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJv
bHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyBhdWRpbyIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVudC5kb2N1bWVudCgpLmFjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBhY3Rp
dmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFF
bGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTog
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBpZiAoIXBsYXliYWNrUGVybWl0dGVkKG1fZWxlbWVudCkpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFu
YWdlciAtIHJldHVybmluZyBGQUxTRTogUGxheWJhY2sgbm90IHBlcm1pdHRlZCIpOworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBQbGF5YmFjayBub3QgcGVybWl0dGVkIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIWhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVx
dWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKSB8fCBTY3JpcHRDb250cm9s
bGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1
cm5pbmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVpcmVkIik7CisgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5p
bmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVpcmVkIik7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIGlmIChoYXNCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQbGF5YmFj
a1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcikgJiYgIW1fZWxlbWVudC5pc1BsYXlpbmcoKSkgewot
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJv
bHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBOZWVkcyB0byBiZSBwbGF5aW5nIik7CisgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFn
ZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5lZWRzIHRvIGJlIHBsYXlpbmciKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2VsZW1lbnQubXV0ZWQoKSkgewotICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5h
Z2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBNdXRlZCIpOworICAgICAgICBMT0coTWVkaWEsICJNZWRp
YUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNF
OiBNdXRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1fZWxl
bWVudC5pc1ZpZGVvKCkpIHsKICAgICAgICAgaWYgKCFtX2VsZW1lbnQucmVuZGVyZXIoKSkgewot
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENv
bnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gcmVuZGVyZXIiKTsKKyAgICAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFn
ZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHJlbmRlcmVyIik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9lbGVtZW50LmRvY3VtZW50KCkuaXNN
ZWRpYURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgbWVk
aWEgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgbWVkaWEgZG9j
dW1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFtX2VsZW1lbnQuaGFzVmlkZW8oKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBG
QUxTRTogTm8gdmlkZW8iKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHZpZGVv
Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
aXNFbGVtZW50TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChtX2VsZW1lbnQpKSB7Ci0gICAgICAg
ICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNN
YW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1haW4gY29udGVudCIpOworICAgICAgICBpZiAo
aXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwg
Ik1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcg
VFJVRTogSXMgbWFpbiBjb250ZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNv
bnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHVzZXIgZ2VzdHVyZSIp
OworICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01h
bmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHVzZXIgZ2VzdHVyZSIpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjppc0xhcmdlRW5vdWdoRm9yTWFp
bkNvbnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiBpc0VsZW1lbnRMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50KG1fZWxlbWVudCk7Cit9CisKK2RvdWJsZSBNZWRpYUVsZW1lbnRTZXNzaW9uOjpt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWU7Cit9CisKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KCk7Cit9CisKK2Jv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2FudHNUb09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlG
b3JBdXRvcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24o
SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQpIHx8IGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24o
T3ZlcnJpZGVVc2VyR2VzdHVyZVJlcXVpcmVtZW50Rm9yTWFpbkNvbnRlbnQpOworfQorCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpCiB7CkBAIC01MDIsNiArNTI2LDEyIEBAIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVk
aWFFbmdpbmVVcGRhdGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgCiB9
CiAKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgp
Cit7CisgICAgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IDA7CisgICAgYWRkQmVo
YXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFn
ZXIgfCBSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOworfQorCiBib29s
IE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BpY3R1cmVJblBpY3R1cmUoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBl
bGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKaW5kZXggZGE4ZDE1ODRjYTgwZjdjNWQxMTgyMjg2YmRlZjUwMjI2ODFl
OWQ5YS4uNWI1YzVjNmVjZWFjODkzYWIyNjNlNDQ5N2RiMmQ2M2U5NDMxNTQ0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTU0LDggKzU0LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgcGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmKSBjb25zdDsKICAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogCi0gICAgYm9vbCBjYW5Db250cm9sQ29udHJv
bHNNYW5hZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKTsKICAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0
IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKQEAgLTc4LDYgKzc2LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBtZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwogCisg
ICAgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgb3ZlcnJpZGU7CisKICAgICAvLyBS
ZXN0cmljdGlvbnMgdG8gbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3JzLgogICAgIGVudW0gQmVoYXZp
b3JSZXN0cmljdGlvbkZsYWdzIDogdW5zaWduZWQgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9
IDAsCkBAIC0xMTEsNiArMTExLDEyIEBAIHB1YmxpYzoKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KIAorICAgIGJvb2wgd2FudHNU
b09ic2VydmVWaWV3cG9ydFZpc2liaWxpdHlGb3JNZWRpYUNvbnRyb2xzKCkgY29uc3Q7CisgICAg
Ym9vbCB3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1dG9wbGF5KCkgY29uc3Q7
CisgICAgYm9vbCBjYW5TaG93Q29udHJvbHNNYW5hZ2VyKCkgY29uc3Q7CisgICAgYm9vbCBpc0xh
cmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQoKSBjb25zdDsKKyAgICBkb3VibGUgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUoKSBjb25zdDsKKwogcHJpdmF0ZToKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0xNDAsNiArMTQ2LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgeyBmYWxzZSB9Owog
I2VuZGlmCiAKKyAgICBkb3VibGUgbV9tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSB7IDAg
fTsKKwogICAgIG11dGFibGUgYm9vbCBtX2lzTWFpbkNvbnRlbnQgeyBmYWxzZSB9OwogICAgIFRp
bWVyIG1fbWFpbkNvbnRlbnRDaGVja1RpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IGJmY2UyZGZhNDYz
OTc3MDYzMzM3Mjk5YTFlZGZiYTNkYzAyN2E2NmYuLjY1OTIyMWFmODMzMmNhNTdjOTcyNWFmNWM1
NDA4YmNlZTRjMTVkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtMTQ1LDcgKzE0NSw2IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kTG9hZGluZ1Jlc3RyaWN0aW9uKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2lzUGxh
eWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldDsgfQogICAgIHZvaWQgaXNQbGF5aW5nVG9XaXJl
bGVzc1BsYXliYWNrVGFyZ2V0Q2hhbmdlZChib29sKTsKQEAgLTE2Niw2ICsxNjUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDYW5Qcm9kdWNlQXVkaW8oYm9vbCk7CiAKICAgICB2b2lkIHNjaGVk
dWxlQ2xpZW50RGF0YUJ1ZmZlcmluZ0NoZWNrKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0UGxh
eWJhY2tTZXNzaW9uU3RhdGUoKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggZWViYTE1YTA1ZDgwNDE4MzVmMjc2ZDFiZmFjMWNiYjc0
YTZhOTc5NS4uOTc1ZmM1MGUyZmEzMmI3MzI0ZmU1NzE0MDNlMTFmNjIxY2JkOTU1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yODAsMTMgKzI4MCwxNCBAQCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjdXJyZW50U2Vzc2lvbigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc2Vzc2lvbnNbMF07CiB9CiAKLVBsYXRmb3JtTWVkaWFTZXNzaW9u
KiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRTZXNzaW9uTWF0Y2hpbmcoc3Rk
OjpmdW5jdGlvbjxib29sKGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uICYpPiBmaWx0ZXIpCitW
ZWN0b3I8UGxhdGZvcm1NZWRpYVNlc3Npb24qPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmN1cnJlbnRTZXNzaW9uc01hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbiAmKT4gZmlsdGVyKQogeworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbio+IG1hdGNoaW5nU2Vzc2lvbnM7CiAgICAgZm9yIChhdXRvJiBzZXNzaW9uIDogbV9zZXNz
aW9ucykgewogICAgICAgICBpZiAoZmlsdGVyKCpzZXNzaW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBzZXNzaW9uOworICAgICAgICAgICAgbWF0Y2hpbmdTZXNzaW9ucy5hcHBlbmQoc2Vzc2lvbik7
CiAgICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtYXRjaGluZ1Nlc3Npb25z
OwogfQogICAgIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25DYW5M
b2FkTWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oCmluZGV4IDVkMTdhYmQ0ZTI3NTY1ZmFiMGQ3YTBhM2E0OTVjNjY5Mjhh
MmU5NjguLmM3YTgxNmVmMDViMDFhYTdmYWRiMGM3MmVmYzg0MzkxMTIxM2U3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1
cnJlbnRTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb24qIGN1cnJlbnRTZXNzaW9uKCkgY29uc3Q7CiAKLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
biogY3VycmVudFNlc3Npb25NYXRjaGluZyhzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb24mKT4pOworICAgIFZlY3RvcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbio+IGN1
cnJlbnRTZXNzaW9uc01hdGNoaW5nKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiYpPik7CiAKICAgICB2b2lkIHNlc3Npb25Jc1BsYXlpbmdUb1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXRDaGFuZ2VkKFBsYXRmb3JtTWVkaWFTZXNzaW9uJik7CiAgICAgdm9pZCBzZXNz
aW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBkYjA5NzA5NDI4YmUzYTg4ZDM4
NWFiODBmOTI1Mjk3MzI0NzI2OTk2Li43NTM2YmM4MDM5ODczNGQ0OGU4ODhhNTZhMGE3OTlhYTA3
YjQyMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtOTEs
NiArOTEsOSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogICAgIH0KICAgICBtX2lzTGlzdGVu
aW5nID0gZmFsc2U7CiAKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFF
bGVtZW50LT5yZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCk7CisKICAgICBtX21lZGlhRWxlbWVu
dCA9IG1lZGlhRWxlbWVudDsKIAogICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGEyMjhhMTll
MTViZjk1MDgyYzljOTQzZWUwZTBkZWYwY2YwNjZkOWQuLjJiODQ0OTg2MmE0Yjc0ZDg1NjgxODE0
MWE3YmM5NzhkMGM0YTkzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00NTUzLDYgKzQ1NTMsMTcgQEAgLSAoQk9PTClfaGFzQWN0
aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXIKIHsKICAgICByZXR1cm4gX3BhZ2UgJiYgX3BhZ2Ut
Pmhhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKCk7CiB9CisKKy0gKHZvaWQpX3JlcXVl
c3RDb250cm9sbGVkRWxlbWVudElECit7CisgICAgaWYgKF9wYWdlKQorICAgICAgICBfcGFnZS0+
cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKTsKK30KKworLSAodm9pZClfaGFuZGxlQ29udHJv
bGxlZEVsZW1lbnRJRFJlc3BvbnNlOihOU1N0cmluZyAqKWlkZW50aWZpZXIKK3sKKyAgICAvLyBP
dmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCit9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAv
LyBFeGVjdXRlIHRoZSBzdXBwbGllZCBibG9jayBhZnRlciB0aGUgbmV4dCB0cmFuc2FjdGlvbiBm
cm9tIHRoZSBXZWJQcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA0N2E1MzM3OTdkMDMxNzYwMTc4MWIy
ZmU1MTkzYzIwZWQwN2ZkNjQxLi45ZjExMzI1NWQ5MTQwMGYxNmIxODU5YTQ0ZjcyZDA5MDk2NjIy
NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtMjcxLDYgKzI3MSw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIAogI2lmICFUQVJHRVRfT1NfSVBIT05F
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2hhc0FjdGl2ZVZpZGVvRm9y
Q29udHJvbHNNYW5hZ2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0g
KHZvaWQpX3JlcXVlc3RDb250cm9sbGVkRWxlbWVudElEIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX2hhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25z
ZTooTlNTdHJpbmcgKilpZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpKTsKICNlbmRpZgogCiAtICh2b2lkKV9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZToo
dm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKaW5k
ZXggZGZmODI2YTYzMzZjOWFiNGFhY2Q1MzI4MTVlYTY3MDE1N2U1ZGFiYS4uZmU4Y2JiMWU2Njk2
Mzc5ZmY4NjZjMDI1NDg3NDE2NzdiYzZlMDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsK
IAogICAgIFBsYXRmb3JtV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBjb250cm9sc01hbmFn
ZXJJbnRlcmZhY2UoKTsKKyAgICB2b2lkIHJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCk7CiAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dDsKQEAgLTE2OSw2ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKICAgICB2b2lkIHNl
dER1cmF0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsKICAgICB2b2lk
IHNldFJhdGUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUp
OworICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90LCBT
dHJpbmcpIGNvbnN0OwogCiAgICAgLy8gTWVzc2FnZXMgdG8gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlcgogICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTQwM2E0YjRjNjAxNTk3Mjgz
MDgzZWJmYzMwMDYyZDkyMjE1NGZkZC4uODI1YjllYjRkMDk0NGFmZTIzMzNhZjVlNzk0ZGY4YzZk
NzM1NWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0zNSw1ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eSB7CiAgICAgU2V0UmF0ZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5n
LCBkb3VibGUgcmF0ZSkKICAgICBTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBDbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKKwor
ICAgIEhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBjb250ZXh0SWQs
IFN0cmluZyBpZCkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5k
ZXggOGMxZmEwYzMwYzlmMWI1MTRhMGY1ODQ2YjUwMmEwMGI3NzIwODQzMi4uNjIzODg5MzEzZTlk
MTE3OTcyMzViOTkyY2UyZTMwZWJhMzIyYzE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Lm1tCkBAIC0zNDMsNiArMzQzLDE5IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZXRSYXRlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsCiAgICAg
aW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcmF0ZSk7CiB9CiAKKwordm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25z
ZSh1aW50NjRfdCBjb250ZXh0SWQsIFN0cmluZyBpZGVudGlmaWVyKSBjb25zdAoreworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoY29udGV4dElkID09IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKQorICAgICAgICBtX3BhZ2UtPmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZShp
ZGVudGlmaWVyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRJZCk7CisgICAgVU5V
U0VEX1BBUkFNKGlkZW50aWZpZXIpOworI2VuZGlmCit9CisKKwogI3ByYWdtYSBtYXJrIE1lc3Nh
Z2VzIHRvIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKIAogdm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnBsYXkodWludDY0X3QgY29udGV4dElkKQpAQCAtNDA1LDYgKzQxOCwx
MiBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNvbnRl
eHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAordm9pZCBXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCkKK3sKKyAgICBp
ZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlcXVlc3QobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
K30KKwogUGxhdGZvcm1XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKIHsKICAgICBpZiAo
IW1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggMzU4MWEyMTA2MGVhYWUzOTc4NjAzZjIwYjU2MDQ1Yzg0YTNhNTI0MC4uMWIy
NGRiMjc1ZThjZTBiMjBiNmNlZTRmMzA1YjViZjU5YzgxZWE3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yNDcsNiArMjQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVk
U2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsYmFyU3R5bGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnN0IFN0
cmluZyYpID0gMDsKIAogICAgIHZpcnR1YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFj
a2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjJlZmYyMjcyYzc4NzZhYmQ2ZjMx
MTU0YzNhZmE5NzBlZjRjYTljYS4uNjRiN2Q3MTlmZTYwYzY4NWI4N2ZmOWYyMGFkNzFmMmRlY2Iz
NmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYy
OTgsNiArNjI5OCwxOSBAQCBib29sIFdlYlBhZ2VQcm94eTo6aGFzQWN0aXZlVmlkZW9Gb3JDb250
cm9sc01hbmFnZXIoKSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKQorICAgIGlmIChtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpCisgICAgICAg
IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBtX3BhZ2VD
bGllbnQuaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGlkZW50aWZpZXIpOworfQor
CiBib29sIFdlYlBhZ2VQcm94eTo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVsbHNjcmVlbigp
IGNvbnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc4NjI3NjY0OTgzN2ZhY2JkMjdlZjA1
OTc4OTRkMmZkNTYzZDQ0NTIuLjdkZDY3ZjhhNDRlMTIyNmMzNDcyMzQ5NTg4ZGQyN2M5YzhjOTZk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEwMzEsNiAr
MTAzMSw4IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCB2aWRlb0NvbnRy
b2xzTWFuYWdlckRpZENoYW5nZSgpOwogICAgIGJvb2wgaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9s
c01hbmFnZXIoKSBjb25zdDsKKyAgICB2b2lkIHJlcXVlc3RDb250cm9sbGVkRWxlbWVudElEKCkg
Y29uc3Q7CisgICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2Ny
ZWVuKCkgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCmluZGV4IGQyMWNhNTJhNWFmYzdmYTg5YzdiZGY5ZjMzYjg5ZDYwNzQ0
YWQxMjIuLjUyNTlmYjViNzI1Y2E0NzY5MmVhZDdhYTQ4NTkwMTIxM2M3YWI2ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTIwNiw2ICsy
MDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlTmF2aWdh
dGlvbkdlc3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlQ29udHJvbGxl
ZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
aWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0
YSYsIGJvb2wgY29udGVudFByZXZlbnRzRGVmYXVsdCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
ICAgICB2b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJl
c3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3QsIFJlZlB0cjxBUEk6Ok9i
amVjdD4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGwubW0KaW5kZXggNTNiOWJjNzk1NTMwNzJmNDdhNjIwZjU2ZDY4YjFlODA0MmRmMDFi
OC4uNWI1YTEyMWE2OTM5NzZmZjYwYTE4ZGIyNTU2ZjVmNGI5NWUyOTI1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC03NTIsNiArNzUy
LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNo
b3QoKQogICAgICAgICBnZXN0dXJlQ29udHJvbGxlci0+cmVtb3ZlU3dpcGVTbmFwc2hvdCgpOwog
fQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9u
c2UoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworI2lmIFdLX0FQSV9FTkFCTEVECisgICAg
W21fd2ViVmlldyBfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOm5zU3RyaW5nRnJv
bVdlYkNvcmVTdHJpbmcoaWRlbnRpZmllcildOworI2VuZGlmCit9CisKIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZENoYW5nZUJhY2tncm91bmRDb2xvcigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKaW5kZXggMDFmZmVkMjE5ZTFlYTczN2EyMGZkOTZlM2Mw
MzAxYTgyZmQwNjAxMC4uODEyM2E3MjgzNDcxYzcyMjUyNjE4MTU0NGVkZTMyY2MwNTZjYTMyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBlbmRTY2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgc2VsZWN0
QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKICAg
ICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2
NF90IGluZGV4KTsKKyAgICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgdWludDY0X3Q+IG1fbWVkaWFFbGVtZW50czsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiNTZjNTllMzE0MzRh
Njc5ZDU0ZDhhMzYwMzc5YzNhN2ZmM2ZkNTU2Li5iNzE0MDRlY2MyYTlhNWI0ODdhMGFiNzliNjU1
NzNkODYyNGE5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0zNSw1ICszNSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIg
ewogICAgIEVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBTZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiAgICAgU2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCisg
ICAgSGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QodWludDY0X3QgY29udGV4dElkKQog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggOTY2MWZkNjA4NWM3YmNkODUw
ZjdlNjYwMmY3NmY5MzgxNmMxMjcxYi4uZmY2MWYwYWNjZGJjNzNmZjdlNDVjYzUyNjQ5MmM4M2Q2
N2M5NDExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtNDE3LDYgKzQxNywxMyBAQCB2
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1
aW50NjRfdCBjb250ZXh0SWQsIHVpbgogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0
TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4KTsKIH0KIAordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0
SWQpCit7CisgICAgYXV0byBlbGVtZW50ID0gZW5zdXJlTW9kZWwoY29udGV4dElkKS5tZWRpYUVs
ZW1lbnQoKTsKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50
SURSZXNwb25zZShjb250ZXh0SWQsIGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWJhMTRhYWFmNDE4N2U4
MDRiMGE4MzgwMTI4OWQ4YzBlNGMzNTU0NS4uNTQ0MjAyMzkyZDJjZWU2YzU2Y2JmZWM4MTU0Mjhj
ZjkwOTE4MTFkMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA5LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBoZXVyaXN0aWMgZm9yIHNo
b3dpbmcgbWVkaWEgY29udHJvbHMgdG8gdGFrZSBhbGwgbWVkaWEgc2Vzc2lvbnMgaW50byBhY2Nv
dW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1
MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDMzNzgzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZHMgbmV3IHVuaXQgdGVzdHMgdmVyaWZ5aW5n
IHRoZSBiZWhhdmlvciBvZiBtZWRpYSBwbGF5YmFjayBjb250cm9scyB3aGVuIHNjcm9sbGluZyBh
bm90aGVyIHZpZGVvIGludG8gdmlldy4KKyAgICAgICAgUGxlYXNlIHNlZSB0aGUgV2ViQ29yZSBD
aGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzIGNoYW5nZS4gQWxzbyByZWZhY3Rv
cnMgZXhpc3RpbmcKKyAgICAgICAgVmlkZW9Db250cm9sc01hbmFnZXIgdGVzdHMgYnkgZm9sZGlu
ZyBkdXBsaWNhdGVkIHNldHVwIGFuZCB0ZXN0aW5nIGxvZ2ljIGludG8gaGVscGVyIG1ldGhvZHMg
dG8gbWFrZSB0aGUgdW5pdAorICAgICAgICB0ZXN0cyBtb3JlIHJlYWRhYmxlLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9s
c01hbmFnZXIubW06CisgICAgICAgICgtW01lc3NhZ2VIYW5kbGVyIGluaXRXaXRoTWVzc2FnZTpo
YW5kbGVyOl0pOgorICAgICAgICAoLVtNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xs
ZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgICgtW1ZpZGVvQ29udHJvbHNN
YW5hZ2VyVGVzdFdlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpdKToKKyAgICAgICAgKC1bVmlk
ZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpdKToKKyAgICAg
ICAgKC1bVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDph
bmRFeHBlY3RDb250cm9sc01hbmFnZXI6YWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOl0pOgorICAgICAg
ICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6YWN0aW9uOl0pOgorICAgICAgICAoLVtWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RX
ZWJWaWV3IGNvbnRyb2xsZWRFbGVtZW50SURdKToKKyAgICAgICAgKC1bVmlkZW9Db250cm9sc01h
bmFnZXJUZXN0V2ViVmlldyBfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOl0pOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJv
bHNNYW5hZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtN
ZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgaW5pdFdpdGhXS1dlYlZpZXc6ZmluYWxNZXNzYWdl
U3RyaW5nOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtPbkxvYWRNZXNzYWdlSGFuZGxlciBpbml0V2l0aFdLV2ViVmlldzpo
YW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtPbkxvYWRNZXNzYWdlSGFuZGxlciB1c2Vy
Q29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLV2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl0pOiBEZWxldGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXBsYXlp
bmctc2Nyb2xsLWF3YXkuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbDogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBhdXNl
ZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1o
aWRlcy1jb250cm9scy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5o
dG1sOiBBZGRlZC4KKwogMjAxNi0wOC0yOSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgRVdTIHBhdGNoIHN0YXR1cyBwYWdlIHNob3VsZCBpbmRpY2F0ZSBi
b3QgY29ycmVzcG9uZGluZyB0byBlYWNoIHN0YXR1cyBtZXNzYWdlCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGE3MGI5MDJlMzQ4ODFkZTU0Y2E2YWM5NGMwZTRhNjk0NmY2ZGE5NjcuLjkzMmI5
MDI3NDAyNmI5ZjcyYTk4ZjQyY2JhZGRiMDg2NTRhZWIxNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02Miw2ICs2MiwxMiBAQAogCQkyRTFERkRFRDFENDJBNTExMDA3MTRBMDAgLyogbGFy
Z2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRFQzFENDJBNDFDMDA3MTRBMDAgLyogbGFyZ2Ut
dmlkZW9zLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKIAkJMkUxREZERUYxRDQyQTZGMjAwNzE0QTAw
IC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxREZERUUxRDQyQTZFQjAw
NzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwgKi87IH07CiAJ
CTJFMURGREYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmlu
Zy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFy
Z2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87
IH07CisJCTJFNjkxQUVBMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZp
ZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZp
ZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKKwkJMkU2OTFBRUIx
RDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRy
b2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZp
ZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi87IH07CisJCTJFNjkxQUVEMUQ3OEI5MTAwMDEyOTQw
NyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRl
by1oaWRlcy1jb250cm9scy5odG1sICovOyB9OworCQkyRTY5MUFFRjFENzlERTg0MDAxMjk0MDcg
LyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRUUxRDc5
REU2RjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZS5o
dG1sICovOyB9OworCQkyRTY5MUFGMTFENzlFNTFBMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1
dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUYwMUQ3OUU1MTQwMDEyOTQwNyAvKiBs
YXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwgKi87IH07CisJCTJF
NjkxQUYzMUQ3OUU3NUUwMDEyOTQwNyAvKiBsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkU2OTFBRjIxRDc5RTc1NDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xs
LWF3YXkuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVD
QzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsgfTsKIAkJMkU3NzY1Q0YxNkM0RDgx
MTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLzsg
fTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
QkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAg
Ki87IH07CkBAIC01MTYsNiArNTIyLDEyIEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTJF
NjkxQUYzMUQ3OUU3NUUwMDEyOTQwNyAvKiBsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9sbC1hd2F5
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkU2OTFBRjExRDc5RTUxQTAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFFRjFENzlERTg0MDAxMjk0MDcgLyogbGFyZ2Utdmlk
ZW9zLWF1dG9wbGF5aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJMkU2OTFBRUQxRDc4QjkxMDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11
dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJ
MkU2OTFBRUExRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlk
ZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTY5MUFFQjFENzhC
NTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUg
LyogMTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OTAyOEI5
MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVtLnR0ZiBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTczNiw2ICs3NDgsMTIgQEAKIAkJMkUxREZERUMxRDQyQTQxQzAw
NzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFMURGREVFMUQ0MkE2RUIwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mt
d2l0aC1hdWRpby1hdXRvcGxheS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxh
cmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10
by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXIt
ZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTY5MUFFODFENzhC
NTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wYXVzZWQtdmlk
ZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
NjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVw
cy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVv
cy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlp
bmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRUUxRDc5REU2RjAwMTI5
NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1wYXVzZS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10
by1wYXVzZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU2OTFBRjAxRDc5
RTUxNDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8u
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtYXV0b3BsYXlp
bmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
RTY5MUFGMjFENzlFNzU0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdh
eS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXBsYXlpbmct
c2Nyb2xsLWF3YXkuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUND
MTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gbWFpbklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBtYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVz
ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg3LDYgKzE0MDUs
MTIgQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkU2OTFBRjIxRDc5RTc1NDAw
MTI5NDA3IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCAqLywKKwkJCQky
RTY5MUFGMDFENzlFNTE0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9s
bC10by12aWRlby5odG1sICovLAorCQkJCTJFNjkxQUVFMUQ3OURFNkYwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCAqLywKKwkJCQkyRTY5MUFF
QzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlk
ZXMtY29udHJvbHMuaHRtbCAqLywKKwkJCQkyRTY5MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFy
Z2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovLAorCQkJCTJFNjkx
QUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1j
b250cm9scy5odG1sICovLAogCQkJCTVDOUU1OTNFMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNh
dGlvbkNhY2hlLmRiICovLAogCQkJCTVDOUU1OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNh
dGlvbkNhY2hlLmRiLXNobSAqLywKIAkJCQk1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBw
bGljYXRpb25DYWNoZS5kYi13YWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tCmluZGV4
IGZhZDVhM2FlNDhmYjA2MWNmYWM4ZWI2M2VkOWE2N2Y0ZDczYmJhMmYuLjRhYjkxNzJiNWVlY2Vl
YjRiMTZjZmM0MDgzNWEyYjNhZDI5MWUxYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1t
CkBAIC0zNywxNzQgKzM3LDE2MSBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAogCi1zdGF0
aWMgYm9vbCB0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmc7Ci1zdGF0aWMgYm9vbCBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2U7Ci0KLUBpbnRlcmZhY2UgTWVkaWFQbGF5YmFja01lc3NhZ2VI
YW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKLSAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKLX0KLQotQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
ZXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmV0
YWluKSBOU1N0cmluZyAqZmluYWxNZXNzYWdlU3RyaW5nOwotCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBmaW5hbE1lc3NhZ2VTdHJpbmc6KE5T
U3RyaW5nICopZmluYWxNZXNzYWdlU3RyaW5nOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTWVk
aWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyCi0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2Vi
VmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGZpbmFsTWVzc2FnZVN0cmluZzooTlNTdHJpbmcgKilm
aW5hbE1lc3NhZ2VTdHJpbmcKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBfZmluYWxN
ZXNzYWdlU3RyaW5nID0gZmluYWxNZXNzYWdlU3RyaW5nOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19
CitAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tXZWJWaWV3QWRkaXRpb25zKQogCi0tICh2b2lkKXVz
ZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVu
dENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1l
c3NhZ2UKLXsKLSAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSB0cnVlOworLSAodm9pZClfaW50
ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3Rpbmc7CiAKLSAgICBOU1N0cmluZyAqYm9keVN0
cmluZyA9IChOU1N0cmluZyAqKVttZXNzYWdlIGJvZHldOwotICAgIGlmIChbYm9keVN0cmluZyBp
c0VxdWFsVG9TdHJpbmc6c2VsZi5maW5hbE1lc3NhZ2VTdHJpbmddKSB7Ci0gICAgICAgIEJPT0wg
aGFzQ29udHJvbHNNYW5hZ2VyID0gW193ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xz
TWFuYWdlcl07Ci0gICAgICAgIGlmIChzZWxmLmV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2Vy
KQotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFzQ29udHJvbHNNYW5hZ2VyKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhc0NvbnRyb2xzTWFuYWdlcik7Ci0gICAg
ICAgIHRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyA9IHRydWU7Ci0gICAgfQotfQog
QGVuZAogCi1AaW50ZXJmYWNlIE9uTG9hZE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2Ny
aXB0TWVzc2FnZUhhbmRsZXI+IHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsK
K0BpbnRlcmZhY2UgTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4geworICAgIGRpc3BhdGNoX2Jsb2NrX3QgX2hhbmRsZXI7CisgICAgTlNTdHJpbmcgKl9t
ZXNzYWdlOwogfQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBkaXNwYXRjaF9ibG9j
a190IG9ubG9hZEhhbmRsZXI7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0
cmluZyAqKW1lc3NhZ2UgaGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdCloYW5kbGVyOwogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBoYW5kbGVy
OihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBPbkxv
YWRNZXNzYWdlSGFuZGxlcgorQGltcGxlbWVudGF0aW9uIE1lc3NhZ2VIYW5kbGVyCiAKLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGhhbmRsZXI6
KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxlcgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIGhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxlcgog
ewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIF9vbmxvYWRIYW5kbGVyID0gaGFuZGxlcjsK
KyAgICBfaGFuZGxlciA9IFtoYW5kbGVyIGNvcHldOworICAgIF9tZXNzYWdlID0gbWVzc2FnZTsK
IAogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2
ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKIHsKLSAgICBpZiAoIVso
TlNTdHJpbmcgKilbbWVzc2FnZSBib2R5XSBpc0VxdWFsVG9TdHJpbmc6QCJsb2FkZWQiXSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF9vbmxvYWRIYW5kbGVyKQotICAgICAgICBfb25sb2Fk
SGFuZGxlcigpOwotCi0gICAgX29ubG9hZEhhbmRsZXIgPSBuaWw7CisgICAgaWYgKFsoTlNTdHJp
bmcgKilbbWVzc2FnZSBib2R5XSBpc0VxdWFsVG9TdHJpbmc6X21lc3NhZ2VdICYmIF9oYW5kbGVy
KQorICAgICAgICBfaGFuZGxlcigpOwogfQotQGVuZAotCi1AaW50ZXJmYWNlIFdLV2ViVmlldyAo
V0tXZWJWaWV3QWRkaXRpb25zKQotCi0tICh2b2lkKV9pbnRlcmFjdFdpdGhNZWRpYUNvbnRyb2xz
Rm9yVGVzdGluZzsKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdLV2ViVmlldyAoVGVzdGluZ0FkZGl0
aW9ucykKK0BpbnRlcmZhY2UgVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyA6IFdLV2Vi
VmlldwogCiAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7CiAtICh2b2lk
KXBlcmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uczsKKy0gKHZvaWQp
bG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWU7CistICh2b2lkKWxvYWRUZXN0
UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjoo
Qk9PTClleHBlY3RDb250cm9sc01hbmFnZXIgYWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2U7CistICh2b2lkKXBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6KE5TU3Ry
aW5nICopbWVzc2FnZSBhY3Rpb246KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uOworCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpjb250cm9sbGVkRWxlbWVudElEOwog
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RpbmdBZGRpdGlvbnMpCitA
aW1wbGVtZW50YXRpb24gVmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyB7CisgICAgYm9v
bCBfaXNEb25lUXVlcnlpbmdDb250cm9sbGVkRWxlbWVudElEOworICAgIE5TU3RyaW5nICpfY29u
dHJvbGxlZEVsZW1lbnRJRDsKK30KIAogLSAodm9pZCltb3VzZURvd25BdFBvaW50OihOU1BvaW50
KXBvaW50IHsKICAgICBbc2VsZiBtb3VzZURvd246W05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBl
Ok5TRXZlbnRUeXBlTGVmdE1vdXNlRG93biBsb2NhdGlvbjpOU01ha2VQb2ludChwb2ludC54LCBw
b2ludC55KSBtb2RpZmllckZsYWdzOjAgdGltZXN0YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKSB3
aW5kb3dOdW1iZXI6MCBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0g
ZXZlbnROdW1iZXI6MCBjbGlja0NvdW50OjAgcHJlc3N1cmU6MF1dOwogfQogCiAtICh2b2lkKXBl
cmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9ucyB7Ci0gICAgT25Mb2Fk
TWVzc2FnZUhhbmRsZXIgKmhhbmRsZXIgPSBbW09uTG9hZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0V2l0aFdLV2ViVmlldzpzZWxmIGhhbmRsZXI6YWN0aW9uc107CisgICAgTWVzc2FnZUhhbmRs
ZXIgKmhhbmRsZXIgPSBbW01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aE1lc3NhZ2U6QCJs
b2FkZWQiIGhhbmRsZXI6YWN0aW9uc107CiAgICAgTlNTdHJpbmcgKm9ubG9hZFNjcmlwdCA9IEAi
d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVy
cy5vbmxvYWRIYW5kbGVyLnBvc3RNZXNzYWdlKCdsb2FkZWQnKTsgfSI7CiAgICAgV0tVc2VyU2Ny
aXB0ICpzY3JpcHQgPSBbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6b25sb2Fk
U2NyaXB0IGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRT
dGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXTsKLSAgICBbW1tzZWxmIGNvbmZpZ3VyYXRpb25dIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkVXNlclNjcmlwdDpzY3JpcHRdOwotICAgIFtbW3NlbGYg
Y29uZmlndXJhdGlvbl0gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07CisKKyAgICBXS1VzZXJDb250ZW50
Q29udHJvbGxlciogY29udGVudENvbnRyb2xsZXIgPSBbW3NlbGYgY29uZmlndXJhdGlvbl0gdXNl
ckNvbnRlbnRDb250cm9sbGVyXTsKKyAgICBbY29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlw
dDpzY3JpcHRdOworICAgIFtjb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpoYW5kbGVyIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07Cit9CisKKy0gKHZvaWQpbG9hZFRlc3RQ
YWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWUKK3sKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6cGFnZU5hbWUgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFtzZWxmIGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworfQorCistICh2b2lkKWxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VO
YW1lIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjooQk9PTClleHBlY3RDb250cm9sc01hbmFnZXIg
YWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UKK3sKKyAgICBfX2Jsb2Nr
IGJvb2wgZG9uZVdhaXRpbmcgPSBmYWxzZTsKKyAgICBbc2VsZiBwZXJmb3JtQWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOm1lc3NhZ2UgYWN0aW9uOl4geworICAgICAgICBCT09MIGhhc1ZpZGVvRm9yQ29u
dHJvbHNNYW5hZ2VyID0gW3NlbGYgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsK
KyAgICAgICAgaWYgKGV4cGVjdENvbnRyb2xzTWFuYWdlcikKKyAgICAgICAgICAgIEVYUEVDVF9U
UlVFKGhhc1ZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGhhc1ZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyKTsKKyAgICAgICAgZG9u
ZVdhaXRpbmcgPSB0cnVlOworICAgIH1dOworCisgICAgW3NlbGYgbG9hZFRlc3RQYWdlTmFtZWQ6
cGFnZU5hbWVdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZVdhaXRpbmcpOwor
fQorCistICh2b2lkKXBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6KE5TU3RyaW5nICopbWVz
c2FnZSBhY3Rpb246KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uCit7CisgICAgUmV0YWluUHRyPE1l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0V2l0aE1lc3NhZ2U6bWVzc2FnZSBoYW5kbGVyOmFjdGlvbl0pOworICAgIFtbW3NlbGYgY29u
ZmlndXJhdGlvbl0gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworfQorCistIChOU1N0cmlu
ZyAqKWNvbnRyb2xsZWRFbGVtZW50SUQKK3sKKyAgICBfaXNEb25lUXVlcnlpbmdDb250cm9sbGVk
RWxlbWVudElEID0gZmFsc2U7CisgICAgW3NlbGYgX3JlcXVlc3RDb250cm9sbGVkRWxlbWVudElE
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJl9pc0RvbmVRdWVyeWluZ0NvbnRyb2xs
ZWRFbGVtZW50SUQpOworICAgIHJldHVybiBfY29udHJvbGxlZEVsZW1lbnRJRDsKK30KKworLSAo
dm9pZClfaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlOihOU1N0cmluZyAqKWlkZW50
aWZpZXIKK3sKKyAgICBfY29udHJvbGxlZEVsZW1lbnRJRCA9IFtpZGVudGlmaWVyIGNvcHldOwor
ICAgIF9pc0RvbmVRdWVyeWluZ0NvbnRyb2xsZWRFbGVtZW50SUQgPSB0cnVlOwogfQogCiBAZW5k
CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdl
ciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvKQorUmV0YWluUHRyPFZpZGVv
Q29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9D
b250cm9sc01hbmFnZXIoTlNSZWN0IGZyYW1lKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNS
ZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9u
ZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFj
a01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3Nh
Z2VTdHJpbmc6QCJwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBs
YXlpbmdIYW5kbGVyIl07Ci0KKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6Tk9dKTsKICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKIAorICAgIHJldHVybiB3ZWJWaWV3OworfQorCitURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlkZW8pCit7CisgICAgUmV0
YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBX
ZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKwogICAgIC8vIEEgbGFyZ2UgdmlkZW8gd2l0aCBhdWRpbyBzaG91bGQgaGF2ZSBh
IGNvbnRyb2xzIG1hbmFnZXIgZXZlbiBpZiBpdCBpcyBwbGF5ZWQgdmlhIHNjcmlwdCBsaWtlIHRo
aXMgdmlkZW8uCiAgICAgLy8gU28gdGhlIGV4cGVjdGF0aW9uIGlzIFlFUy4KLSAgICBbaGFuZGxl
ciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOwotICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsK
LSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby13aXRoLWF1ZGlvIiBhbmRFeHBlY3RD
b250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0K
IAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVT
bWFsbFZpZGVvKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9u
Rm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBo
YW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5n
Il0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07Ci0K
LSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxv
Y10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVy
bGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7
Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07Cisg
ICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0g
c2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKIAogICAgIC8vIEEgc21hbGwgdmlkZW8gd2lsbCBub3QgaGF2ZSBhIGNv
bnRyb2xzIG1hbmFnZXIgdW5sZXNzIGl0IHN0YXJ0ZWQgcGxheWluZyBiZWNhdXNlIG9mIGEgdXNl
ciBnZXN0dXJlLiBTaW5jZSB0aGlzCiAgICAgLy8gdmlkZW8gaXMgc3RhcnRlZCB3aXRoIGEgc2Ny
aXB0LCB0aGUgZXhwZWN0YXRpb24gaXMgTk8uCi0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hh
dmVDb250cm9sc01hbmFnZXI6Tk9dOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJv
bHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJ2
aWRlby13aXRoLWF1ZGlvIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZp
bmdNZXNzYWdlOkAicGxheWluZyJdOwogfQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBW
aWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlkZW9zV2l0aEF1ZGlvKQogewotICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5Q
dHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEw
MCkpOwogCiAgICAgX19ibG9jayBCT09MIGRpZFNob3dNZWRpYUNvbnRyb2xzOwogICAgIF9fYmxv
Y2sgYm9vbCBpc0RvbmVMb2FkaW5nID0gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+
IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpb
d2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZp
ZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE9uTG9hZE1lc3Nh
Z2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09uTG9hZE1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGhhbmRsZXI6XigpIHsKKyAg
ICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4gewogICAgICAgICBkaWRTaG93TWVkaWFD
b250cm9scyA9IFt3ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl07CiAg
ICAgICAgIGlzRG9uZUxvYWRpbmcgPSB0cnVlOwotICAgIH1dKTsKLSAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRI
YW5kbGVyLmdldCgpIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07CisgICAgfV07CiAKLSAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpbyIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8iXTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lTG9hZGluZyk7CiAgICAgRVhQRUNUX0ZBTFNF
KGRpZFNob3dNZWRpYUNvbnRyb2xzKTsKQEAgLTIxMiwxNzUgKzE5OSwxNTcgQEAgVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1dpdGhB
dWRpbykKIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJN
dWx0aXBsZVZpZGVvc1dpdGhBdWRpb0FuZEF1dG9wbGF5KQogewotICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlh
VHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFU
eXBlTm9uZTsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8VmlkZW9D
b250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0
aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCiAg
ICAgX19ibG9jayBCT09MIGRpZFNob3dNZWRpYUNvbnRyb2xzOwogICAgIF9fYmxvY2sgYm9vbCBp
c0RvbmVMb2FkaW5nID0gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9
IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBm
cmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07Ci0gICAgUmV0YWluUHRyPE9uTG9hZE1lc3NhZ2VIYW5kbGVy
PiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09uTG9hZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGhhbmRsZXI6XigpIHsKKyAgICBbd2ViVmll
dyBwZXJmb3JtQWZ0ZXJMb2FkaW5nOl4gewogICAgICAgICBkaWRTaG93TWVkaWFDb250cm9scyA9
IFt3ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl07CiAgICAgICAgIGlz
RG9uZUxvYWRpbmcgPSB0cnVlOwotICAgIH1dKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdl
dCgpIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07CisgICAgfV07CiAKLSAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXkiXTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lTG9hZGluZyk7CiAgICAgRVhQ
RUNUX1RSVUUoZGlkU2hvd01lZGlhQ29udHJvbHMpOwogfQogCi1URVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3BsYXlpbmdWaWRlbykK
K1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVW
aWRlb3NTY3JvbGxQYXVzZWRWaWRlb091dE9mVmlldykKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5
cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlw
ZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlhUGxh
eWJhY2tNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tIYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxh
eWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQo
KSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwYXVzZWQiXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6cGxheWJhY2tIYW5k
bGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworICAgIFJldGFpblB0cjxWaWRlb0Nv
bnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3Rp
bmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CiAKLSAg
ICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVz
c1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Ci0g
ICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGF1c2VkIl07Cit9CiAKLSAgICBSZXRhaW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRs
ZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxlcjpeKCkgewotICAgICAgICBb
d2ViVmlldyBtb3VzZURvd25BdFBvaW50Ok5TTWFrZVBvaW50KDUwLCA1MCldOwotICAgIH1dKTsK
LSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07CitU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlk
ZW9zU2Nyb2xsUGxheWluZ1ZpZGVvV2l0aFNvdW5kT3V0T2ZWaWV3KQoreworICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDUwMCwgNTAw
KSk7CisKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvcy1wbGF5
aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFm
dGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKK30KIAotICAgIC8vIEEgc21hbGwgdmlk
ZW8gc2hvdWxkIGhhdmUgYSBjb250cm9scyBtYW5hZ2VyIGFmdGVyIHRoZSBmaXJzdCB1c2VyIGdl
c3R1cmUsIHdoaWNoIGluY2x1ZGVzIHBhdXNpbmcgdGhlIHZpZGVvLiBUaGUgZXhwZWN0YXRpb24g
aXMgWUVTLgotICAgIFtwbGF5YmFja0hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01h
bmFnZXI6WUVTXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRv
cGxheWluZy12aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFu
YWdlck11bHRpcGxlVmlkZW9zU2Nyb2xsUGxheWluZ011dGVkVmlkZW9PdXRPZlZpZXcpCit7Cisg
ICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0g
c2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwg
MCwgNTAwLCA1MDApKTsKIAotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29u
dHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scyIgYW5kRXhw
ZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsK
IH0KIAotVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJn
ZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FmdGVyRW5kaW5nKQorVEVTVChWaWRlb0NvbnRyb2xzTWFu
YWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJNdWx0aXBsZVZpZGVvc1Nob3dDb250cm9sc0Zvckxh
c3RJbnRlcmFjdGVkVmlkZW8pCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1Vz
ZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJl
dGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhh
bmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFs
bG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpA
ImVuZGVkIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVy
Il07CisgICAgUmV0YWluUHRyPFZpZGVvQ29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApKTsKKyAgICBOU1BvaW50IGNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCg0MDAsIDMwMCk7CiAKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMo
W1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZl
cmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2Vi
Vmlldy5nZXQoKV07CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKKyAgICAg
ICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpjbGlja1BvaW50XTsKKyAgICB9XTsKIAotICAg
IC8vIFNpbmNlIHRoZSB2aWRlbyBoYXMgZW5kZWQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTyBldmVu
IGlmIHRoZSBwYWdlIHByb2dyYW1tYXRpY2FsbHkgc2Vla3MgdG8gdGhlIGJlZ2lubmluZy4KLSAg
ICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107Ci0gICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1l
bmRpbmciIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBf
X2Jsb2NrIGJvb2wgZmlyc3RWaWRlb1BhdXNlZCA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCBz
ZWNvbmRWaWRlb1BhdXNlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwYXVzZWQiIGFjdGlvbjpeIHsKKyAgICAgICAgTlNTdHJpbmcgKmNvbnRy
b2xsZWRFbGVtZW50SUQgPSBbd2ViVmlldyBjb250cm9sbGVkRWxlbWVudElEXTsKKyAgICAgICAg
aWYgKGZpcnN0VmlkZW9QYXVzZWQpIHsKKyAgICAgICAgICAgIHNlY29uZFZpZGVvUGF1c2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb250cm9sbGVkRWxlbWVudElEIGlzRXF1
YWxUb1N0cmluZzpAInNlY29uZCJdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFt3
ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6Y2xpY2tQb2ludF07CisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbY29udHJvbGxlZEVsZW1lbnRJRCBpc0VxdWFsVG9TdHJpbmc6QCJmaXJzdCJdKTsKKyAg
ICAgICAgfQorICAgICAgICBmaXJzdFZpZGVvUGF1c2VkID0gdHJ1ZTsKKyAgICB9XTsKIAotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5
aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtYXV0b3Bs
YXlpbmctY2xpY2stdG8tcGF1c2UiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNl
Y29uZFZpZGVvUGF1c2VkKTsKIH0KIAotVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FuZFBsYXlzQWZ0ZXJFbmRp
bmcpCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRp
cGxlVmlkZW9zU3dpdGNoQ29udHJvbGxlZFZpZGVvV2hlblNjcm9sbGluZykKIHsKLSAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zp
c3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAx
MDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWlu
UHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRp
YVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcu
Z2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicmVwbGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRs
ZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisgICAgUmV0YWluUHRyPFZpZGVvQ29u
dHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVzdGlu
Z1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApKTsKIAotICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBp
bml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAg
ICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBf
X2Jsb2NrIGJvb2wgc2Nyb2xsZWRTZWNvbmRWaWRlb0ludG9WaWV3ID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xs
LXRvLXZpZGVvIl07CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpA
InNjcm9sbGVkIiBhY3Rpb246XiB7CisgICAgICAgIHNjcm9sbGVkU2Vjb25kVmlkZW9JbnRvVmll
dyA9IHRydWU7CisgICAgfV07CiAKLSAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaXMgc3RpbGwgcGxh
eWluZywgdGhlIGV4cGVjdGF0aW9uIGlzIFlFUyBldmVuIGlmIHRoZSB2aWRlbyBoYXMgZW5kZWQg
b25jZS4KLSAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNd
OwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLXNl
ZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
c2Nyb2xsZWRTZWNvbmRWaWRlb0ludG9WaWV3KTsKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcg
Y29udHJvbGxlZEVsZW1lbnRJRF0gaXNFcXVhbFRvU3RyaW5nOkAic2Vjb25kIl0pOworfQorCitU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlck11bHRpcGxlVmlk
ZW9zU2Nyb2xsT25seUxhcmdlVmlkZW9PdXRPZlZpZXcpCit7CisgICAgUmV0YWluUHRyPFZpZGVv
Q29udHJvbHNNYW5hZ2VyVGVzdFdlYlZpZXcqPiB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yVGVz
dGluZ1ZpZGVvQ29udHJvbHNNYW5hZ2VyKE5TTWFrZVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKIAot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQ
bGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby1wbGF5
aW5nLXNjcm9sbC1hd2F5IiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInNjcm9sbGVkIl07CiB9CiAKLVRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvQWZ0ZXJTZWVraW5nVG9F
bmQpCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmds
ZVNtYWxsQXV0b3BsYXlpbmdWaWRlbykKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0g
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3Ry
aW5nOkAiZW5kZWQiXSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hh
bmRsZXIiXTsKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5k
b3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZp
ZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBh
ZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlckxvYWRp
bmc6XiB7CisgICAgICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6TlNNYWtlUG9pbnQoNTAs
IDUwKV07CisgICAgfV07CisKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0
ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2VkIl07Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvU2Vla3NBZnRl
ckVuZGluZykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmll
dyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIo
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCisgICAgLy8gU2luY2UgdGhlIHZpZGVvIGhh
cyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PIGV2ZW4gaWYgdGhlIHBhZ2UgcHJvZ3JhbW1h
dGljYWxseSBzZWVrcyB0byB0aGUgYmVnaW5uaW5nLgorICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmciIGFuZEV4cGVjdENvbnRyb2xz
TWFuYWdlcjpOTyBhZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJlbmRlZCJdOworfQorCitURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdW
aWRlb1NlZWtzQW5kUGxheXNBZnRlckVuZGluZykKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250
cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5n
VmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCisgICAg
Ly8gU2luY2UgdGhlIHZpZGVvIGlzIHN0aWxsIHBsYXlpbmcsIHRoZSBleHBlY3RhdGlvbiBpcyBZ
RVMgZXZlbiBpZiB0aGUgdmlkZW8gaGFzIGVuZGVkIG9uY2UuCisgICAgW3dlYlZpZXcgbG9hZFRl
c3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRl
ci1lbmRpbmciIGFuZEV4cGVjdENvbnRyb2xzTWFuYWdlcjpZRVMgYWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAicmVwbGF5aW5nIl07Cit9CiAKLSAgICBSZXRhaW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRs
ZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxlcjpeKCkgeworVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlk
ZW9BZnRlclNlZWtpbmdUb0VuZCkKK3sKKyAgICBSZXRhaW5QdHI8VmlkZW9Db250cm9sc01hbmFn
ZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JUZXN0aW5nVmlkZW9Db250
cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkpOworCisgICAgW3dlYlZpZXcg
cGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKICAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2lu
dDpOU01ha2VQb2ludCg1MCwgNTApXTsKLSAgICB9XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6b25sb2FkSGFuZGxl
ci5nZXQoKSBuYW1lOkAib25sb2FkSGFuZGxlciJdOworICAgIH1dOwogCiAgICAgLy8gV2UgZXhw
ZWN0IHRoZXJlIHRvIGJlIG1lZGlhIGNvbnRyb2xzLCBzaW5jZSB0aGlzIGlzIGEgdXNlciBnZXN0
dXJlZCBzZWVrIHRvIHRoZSBlbmQuCiAgICAgLy8gVGhpcyBpcyBha2luIHRvIHNlZWtpbmcgdG8g
dGhlIGVuZCBieSBzY3J1YmJpbmcgaW4gdGhlIGNvbnRyb2xzLgotICAgIFtoYW5kbGVyIHNldEV4
cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10
by1lbmQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5
aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby1oaWRlcy1j
b250cm9scy1hZnRlci1zZWVrLXRvLWVuZCIgYW5kRXhwZWN0Q29udHJvbHNNYW5hZ2VyOllFUyBh
ZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJlbmRlZCJdOwogfQogCiBURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlkZW9XaXRob3V0QXVkaW8p
CiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFj
ayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwotICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBh
ZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7Ci0gICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKLQotICAgIFJldGFp
blB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0
aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93
TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKLSAgICBbW3dp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRhaW5Q
dHI8VmlkZW9Db250cm9sc01hbmFnZXJUZXN0V2ViVmlldyo+IHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXdGb3JUZXN0aW5nVmlkZW9Db250cm9sc01hbmFnZXIoTlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEw
MCkpOwogCiAgICAgLy8gQSBsYXJnZSB2aWRlbyB3aXRoIG5vIGF1ZGlvIHdpbGwgbm90IGhhdmUg
YSBjb250cm9scyBtYW5hZ2VyIHVubGVzcyBpdCBzdGFydGVkIHBsYXlpbmcgYmVjYXVzZSBvZiBh
IHVzZXIgZ2VzdHVyZS4gU2luY2UgdGhpcwogICAgIC8vIHZpZGVvIGlzIHN0YXJ0ZWQgd2l0aCBh
IHNjcmlwdCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVk
VG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJsYXJnZS12aWRlby13aXRob3V0LWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Ci0gICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8td2l0aG91dC1hdWRpbyIgYW5kRXhwZWN0Q29udHJvbHNN
YW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsKIH0KIAogVEVTVChW
aWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJBdWRpb0VsZW1lbnRTdGFy
dGVkV2l0aFNjcmlwdCkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFj
dGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxh
eWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJd
OwotCi0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpO
T10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCld
OworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICAvLyBBbiBhdWRpbyBlbGVtZW50IE1VU1QgYmUgc3Rh
cnRlZCB3aXRoIGEgdXNlciBnZXN0dXJlIGluIG9yZGVyIHRvIGhhdmUgYSBjb250cm9scyBtYW5h
Z2VyLCBzbyB0aGUgZXhwZWN0YXRpb24gaXMgTk8uCi0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRU
b0hhdmVDb250cm9sc01hbmFnZXI6Tk9dOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImF1ZGlvLW9ubHkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNN
YW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJhdWRp
by1vbmx5IiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6Tk8gYWZ0ZXJSZWNlaXZpbmdNZXNzYWdl
OkAicGxheWluZyJdOwogfQogCiBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlclRlYXJzRG93bk1lZGlhQ29udHJvbHNPbkRlYWxsb2MpCiB7Ci0gICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAw
LCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotCi0gICAgUmV0YWlu
UHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFJldGFpblB0
cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAw
KSk7CiAKICAgICBOU1VSTCAqdXJsT2ZWaWRlbyA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ2aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAibXA0IiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFt3ZWJWaWV3IGxvYWRG
aWxlVVJMOnVybE9mVmlkZW8gYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6W3VybE9mVmlkZW8gVVJM
QnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XV07CiAKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNo
ZWRUZXN0ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeKCkKLSAg
ICB7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeIHsKICAgICAgICAgLy8gVmVy
aWZ5IHRoYXQgd2UgdGVhciBkb3duIHRoZSBtZWRpYSBjb250cm9scyBwcm9wZXJseSwgc3VjaCB0
aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlIHdlYiB2aWV3IGlzIHJlbGVhc2VkLgogICAgICAg
ICBpZiAoW3dlYlZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaW50ZXJhY3RXaXRo
TWVkaWFDb250cm9sc0ZvclRlc3RpbmcpXSkKICAgICAgICAgICAgIFt3ZWJWaWV3IF9pbnRlcmFj
dFdpdGhNZWRpYUNvbnRyb2xzRm9yVGVzdGluZ107CkBAIC0zOTQsMTYgKzM2MywxMCBAQCBURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclRlYXJzRG93bk1lZGlh
Q29udHJvbHNPbkRlYWxsb2MpCiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyU21hbGxWaWRlb0luTWVkaWFEb2N1bWVudCkKIHsKLSAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgY29uZmlndXJhdGlvbi5nZXQoKS5t
ZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1l
ZGlhVHlwZU5vbmU7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgCi0gICAgUmV0YWlu
UHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotICAgIAorICAgIFJl
dGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVw
V2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSk7CisKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWRMb2FkID0gZmFsc2U7Ci0gICAg
W3dlYlZpZXcgcGVyZm9ybUFmdGVyTG9hZGluZzpeKCkKLSAgICB7CisgICAgW3dlYlZpZXcgcGVy
Zm9ybUFmdGVyTG9hZGluZzpeIHsKICAgICAgICAgZmluaXNoZWRMb2FkID0gdHJ1ZTsKICAgICB9
XTsKICAgICAKQEAgLTQxOCw0MCArMzgxLDE2IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyU21hbGxWaWRlb0luTWVkaWFEb2N1bWVudCkKIAogVEVTVChW
aWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMb25nU2tpbm55VmlkZW9J
bldpZGVNYWluRnJhbWUpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTYwMCwgODAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0
TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0g
c3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOk5PXSk7Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6
d2ViVmlldy5nZXQoKV07Ci0KLSAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJw
bGF5aW5nIl0pOwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVy
Il07Ci0gICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6Tk9dOwor
ICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdlclRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9
IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRyb2xzTWFuYWdlcihOU01ha2VSZWN0KDAs
IDAsIDE2MDAsIDgwMCkpOwogCi0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8iIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKLSAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgW3dlYlZpZXcgbG9hZFRl
c3RQYWdlTmFtZWQ6QCJza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgYW5kRXhw
ZWN0Q29udHJvbHNNYW5hZ2VyOk5PIGFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciXTsK
IH0KIAogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJGdWxs
U2l6ZVZpZGVvSW5XaWRlTWFpbkZyYW1lKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1
aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsK
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5k
b3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZp
ZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBh
ZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwotCi0gICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tN
ZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdl
U3RyaW5nOkAicGxheWluZyJdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5
aW5nSGFuZGxlciJdOwotICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5h
Z2VyOllFU107Ci0KLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJmdWxs
LXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwotICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFJldGFpblB0cjxWaWRlb0NvbnRyb2xzTWFuYWdl
clRlc3RXZWJWaWV3Kj4gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclRlc3RpbmdWaWRlb0NvbnRy
b2xzTWFuYWdlcihOU01ha2VSZWN0KDAsIDAsIDE2MDAsIDgwMCkpOwogCi0gICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvIiBhbmRFeHBlY3RDb250cm9sc01hbmFnZXI6WUVTIGFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpAInBsYXlpbmciXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Utdmlk
ZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlY2Y5MjkzMzI3NDM4MGIyYjdhY2Q0M2Y0YTdmZTliYjUyYjhjNDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
by1wbGF5aW5nLXNjcm9sbC1hd2F5Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgdmlk
ZW8geworICAgICAgICAgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMyMHB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGl2IHsKKyAgICAgICAgICAg
ICAgICBtYXJnaW4tdG9wOiA1MDAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iikuc2Nyb2xsSW50
b1ZpZXcoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxl
ci5wb3N0TWVzc2FnZSgic2Nyb2xsZWQiKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD1oYW5kbGVMb2FkZWQoKT4KKyAgICAgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZpcnN0
IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgICAgICA8YnI+
CisgICAgICAgIDxkaXY+aGVsbG8gd29ybGQhPC9kaXY+CisgICAgPC9ib2R5PgorPGh0bWw+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12
aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1jbGljay10by1w
YXVzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYmRkZjAwZWFhOTlhZGEzOGFiZWFlYTgxOTg2MTJiYjRj
NGE0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9sYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8tcGF1c2UuaHRtbApAQCAt
MCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICB2aWRlbyB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQ4
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzIwcHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgaXNGaXJzdENs
aWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bigpIHsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGlzRmlyc3RDbGljayA/ICIjZmly
c3QiIDogIiNzZWNvbmQiKS5wYXVzZSgpOworICAgICAgICAgICAgICAgIGlzRmlyc3RDbGljayA9
IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVGaXJz
dFBhdXNlKCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGF1c2VkIik7
CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNlY29uZFBh
dXNlKCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGF1c2VkIik7Cisg
ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgICAgICAgICAgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbm1vdXNlZG93bj1oYW5kbGVNb3VzZURvd24oKT4KKyAgICAgICAgPHZpZGVvIGF1dG9wbGF5
IGxvb3AgaWQ9ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0IiBvbnBhdXNl
PWhhbmRsZUZpcnN0UGF1c2UoKT48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gYXV0b3BsYXkgbG9v
cCBpZD0ic2Vjb25kIiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0IiBvbnBhdXNlPWhh
bmRsZVNlY29uZFBhdXNlKCk+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8aHRtbD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1h
dXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlkZW8u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZDRmZjI5Njc3YWY0MTZmNWU1MTQ4MmM3MGM0MTU3MjMzM2RjMmQz
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvbGFyZ2UtdmlkZW9zLWF1dG9wbGF5aW5nLXNjcm9sbC10by12aWRlby5odG1sCkBAIC0wLDAg
KzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIHZpZGVvIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNDgwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICNzZWNvbmQgeworICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAg
IGZ1bmN0aW9uIGhhbmRsZUxvYWRlZCgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIjc2Vjb25kIikuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgic2Nyb2xsZWQiKTsK
KyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD1oYW5kbGVMb2FkZWQoKT4KKyAgICAgICAg
PHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZpcnN0IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVk
aW8ubXA0Ij48L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAgICAgIDx2aWRlbyBhdXRvcGxheSBs
b29wIGlkPSJzZWNvbmQiIHNyYz0ibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQiPjwvdmlkZW8+
CisgICAgPC9ib2R5PgorPGh0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xz
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
b3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M1ZjI1ZTc0
NWE0Y2Q1YzhlNzMwNDNjY2I2MjI2Y2FkOTkwYWEwMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wYXVzZWQtdmlk
ZW8taGlkZXMtY29udHJvbHMuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPHN0eWxlPgorICAgIHZpZGVvIHsKKyAgICAgICAgd2lkdGg6IDQ4MHB4OworICAg
ICAgICBoZWlnaHQ6IDMyMHB4OworICAgIH0KKyAgICAjYmFyIHsKKyAgICAgICAgbWFyZ2luLXRv
cDogNTAwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGhhbmRs
ZUxvYWRlZCgpIHsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2JhciIpLnNjcm9s
bEludG9WaWV3KCk7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmb28iKS5wYXVz
ZSgpOworICAgIH0KKyAgICBmdW5jdGlvbiBoYW5kbGVQYXVzZWQoKSB7CisgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVyLnBvc3RNZXNzYWdlKCJw
YXVzZWQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgIH0sIDApOworICAg
IH0KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWhhbmRsZUxvYWRlZCgpPgorICAgIDx2aWRlbyBh
dXRvcGxheSBsb29wIGlkPSJmb28iIG9ucGF1c2U9aGFuZGxlUGF1c2VkKCk+PHNvdXJjZSBzcmM9
ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlk
ZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3Zp
ZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9z
LXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVv
LWhpZGVzLWNvbnRyb2xzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFiY2ZmNDA1YjEyYjliZGZiZGRiYjZj
NWFiNGMzNjY2MGUwZGIwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVz
LWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxzdHlsZT4KKyAgICB2aWRlbyB7CisgICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVp
Z2h0OiAzMjBweDsKKyAgICB9CisgICAgI2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQo
KSB7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmb28iKS5tdXRlZCA9IHRydWU7
CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmlldygp
OworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxl
ci5wb3N0TWVzc2FnZSgicGxheWluZyIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAg
ICAgICAgfSwgMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVk
KCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IGxvb3AgaWQ9ImZvbyI+PHNvdXJjZSBzcmM9Imxhcmdl
LXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9
ImJhciI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgor
PC9ib2R5PgorPGh0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXBsYXlp
bmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzExMGJiNzcxYWI3ZGE5ZjA5ZmQ0NDJlOWY1OTIxNTg3MWIyMmY2MQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L2xhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICB2aWRlbyB7Cisg
ICAgICAgIHdpZHRoOiA0ODBweDsKKyAgICAgICAgaGVpZ2h0OiAzMjBweDsKKyAgICB9CisgICAg
I2JhciB7CisgICAgICAgIG1hcmdpbi10b3A6IDUwMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgICBmdW5jdGlvbiBoYW5kbGVMb2FkZWQoKSB7CisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNiYXIiKS5zY3JvbGxJbnRvVmlldygpOworICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicGxheWlu
ZyIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICAgICAgfSwgMCk7CisgICAgfQor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9aGFuZGxlTG9hZGVkKCk+CisgICAgPHZpZGVvIGF1dG9w
bGF5IGxvb3AgaWQ9ImZvbyI+PHNvdXJjZSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0
Ij48L3ZpZGVvPgorICAgIDxicj4KKyAgICA8dmlkZW8gaWQ9ImJhciI+PHNvdXJjZSBzcmM9Imxh
cmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPGh0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>