<?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>237979</bug_id>
          
          <creation_ts>2022-03-16 14:22:16 -0700</creation_ts>
          <short_desc>[iOS] Add `WKWebView` API to control CSS &quot;small viewport&quot; `sv*` and &quot;large viewport&quot; `lv*` units</short_desc>
          <delta_ts>2022-07-26 18:38:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219287</dependson>
          <blocked>238173</blocked>
    
    <blocked>240959</blocked>
    
    <blocked>242758</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bdakin</cc>
    
    <cc>hi</cc>
    
    <cc>ntim</cc>
    
    <cc>rbuis</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851985</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-16 14:22:16 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851986</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-16 14:22:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/89434696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851987</commentid>
    <comment_count>2</comment_count>
      <attachid>454894</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-16 14:25:59 -0700</bug_when>
    <thetext>Created attachment 454894
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852004</commentid>
    <comment_count>3</comment_count>
      <attachid>454894</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-16 14:52:49 -0700</bug_when>
    <thetext>Comment on attachment 454894
[fast-cq] Patch

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

&gt; Source/WebCore/page/FrameView.cpp:349
&gt; +void FrameView::willReplaceMainFrameView(FrameView&amp; oldMainFrameView)

This seems reminiscent of the propagation that usually happens in e.g. WebFrameLoaderClient::transitionToCommittedForNewPage; is there are reason you&apos;re doing it a different way than everything else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853265</commentid>
    <comment_count>4</comment_count>
      <attachid>455257</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-21 11:33:42 -0700</bug_when>
    <thetext>Created attachment 455257
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853432</commentid>
    <comment_count>5</comment_count>
      <attachid>455305</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-21 17:29:40 -0700</bug_when>
    <thetext>Created attachment 455305
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854973</commentid>
    <comment_count>6</comment_count>
      <attachid>455305</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-24 17:56:07 -0700</bug_when>
    <thetext>Comment on attachment 455305
[fast-cq] Patch

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

&gt; Source/WebCore/page/FrameView.h:245
&gt; +    WEBCORE_EXPORT void copyCSSViewportUnits(FrameView&amp;);

Not sure about &quot;copy&quot; (would expect a method named &quot;copy&quot; to return a copy of something, but it does not). Also &quot;copy CSS Viewport units&quot; isn&apos;t quite right either, it&apos;s copying the viewport sizes for the units. IDK, I feel like the name could use a re-think.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:626
&gt; + @discussion For apps with size-changing UI around the @link WKWebView @/link, specify minimumViewportInset and

&quot;size-changing UI&quot; reads a little weird, but I assume you&apos;ll review this text elsewhere

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:-3271
&gt; -    _lastSentMinimumUnobscuredSize = newMinimumUnobscuredSize;
&gt; -    _lastSentMaximumUnobscuredSize = newMaximumUnobscuredSize;

I have some vague and non-concrete fears about some of the deletions here re: rotation in apps that use animated resize. We can chat elsewhere, but should make sure we are careful.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:2444
&gt; +    maximumUnobscuredSize.scale(1 / m_viewportConfiguration.initialScaleIgnoringContentSize());

I don&apos;t remember the deal with initialScaleIgnoringContentSize vs. initialScale; was this choice well-considered? Does it make sense in all the weird viewport modes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854976</commentid>
    <comment_count>7</comment_count>
      <attachid>455305</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-03-24 18:04:56 -0700</bug_when>
    <thetext>Comment on attachment 455305
[fast-cq] Patch

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

&gt; Source/WebCore/page/FrameView.cpp:5636
&gt; +    if (m_defaultViewportSizeOverride &amp;&amp; *m_defaultViewportSizeOverride == size)

Nit - I think just `m_defaultViewportSizeOverride == size` should work here.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1869
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +

Should this go in `WKWebViewIOS.mm`?

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:2444
&gt;&gt; +    maximumUnobscuredSize.scale(1 / m_viewportConfiguration.initialScaleIgnoringContentSize());
&gt; 
&gt; I don&apos;t remember the deal with initialScaleIgnoringContentSize vs. initialScale; was this choice well-considered? Does it make sense in all the weird viewport modes?

I _believe_ the rationale for using `initialScaleIgnoringContentSize()` here is that it&apos;s what (regular) viewport units use, in order to avoid an ever-changing initial scale when there&apos;s content that&apos;s sized using viewport units.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854982</commentid>
    <comment_count>8</comment_count>
      <attachid>455305</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-24 18:26:21 -0700</bug_when>
    <thetext>Comment on attachment 455305
[fast-cq] Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:-3271
&gt;&gt; -    _lastSentMaximumUnobscuredSize = newMaximumUnobscuredSize;
&gt; 
&gt; I have some vague and non-concrete fears about some of the deletions here re: rotation in apps that use animated resize. We can chat elsewhere, but should make sure we are careful.

Specifically and more concretely, my worry is about https://trac.webkit.org/changeset/221153/webkit and whether you have lost the fix for it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855201</commentid>
    <comment_count>9</comment_count>
      <attachid>455305</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-03-25 12:30:13 -0700</bug_when>
    <thetext>Comment on attachment 455305
[fast-cq] Patch

style bot seems unhappy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855639</commentid>
    <comment_count>10</comment_count>
      <attachid>455305</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-28 09:33:08 -0700</bug_when>
    <thetext>Comment on attachment 455305
[fast-cq] Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:626
&gt;&gt; + @discussion For apps with size-changing UI around the @link WKWebView @/link, specify minimumViewportInset and
&gt; 
&gt; &quot;size-changing UI&quot; reads a little weird, but I assume you&apos;ll review this text elsewhere

I did have this reviewed, and nobody else mentioned this 😅  Do you have a suggestion for an alternative?

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1869
&gt;&gt; +
&gt; 
&gt; Should this go in `WKWebViewIOS.mm`?

I wanted to leave this here because I have a followup bug to add this API to macOS &lt;https://webkit.org/b/238173&gt; and figured it&apos;d make things a bit easier/cleaner.

&gt;&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:-3271
&gt;&gt;&gt; -    _lastSentMaximumUnobscuredSize = newMaximumUnobscuredSize;
&gt;&gt; 
&gt;&gt; I have some vague and non-concrete fears about some of the deletions here re: rotation in apps that use animated resize. We can chat elsewhere, but should make sure we are careful.
&gt; 
&gt; Specifically and more concretely, my worry is about https://trac.webkit.org/changeset/221153/webkit and whether you have lost the fix for it...

I just moved these checks to `WebPageProxy::setDefaultUnobscuredSize`/`WebPageProxy::setMinimumUnobscuredSize`/`WebPageProxy::setMaximumUnobscuredSize` instead of having them be iOS only.  This is because it&apos;s also used by the followup &lt;https://webkit.org/b/238173&gt;.  I will test again just in case :)

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:2444
&gt;&gt;&gt; +    maximumUnobscuredSize.scale(1 / m_viewportConfiguration.initialScaleIgnoringContentSize());
&gt;&gt; 
&gt;&gt; I don&apos;t remember the deal with initialScaleIgnoringContentSize vs. initialScale; was this choice well-considered? Does it make sense in all the weird viewport modes?
&gt; 
&gt; I _believe_ the rationale for using `initialScaleIgnoringContentSize()` here is that it&apos;s what (regular) viewport units use, in order to avoid an ever-changing initial scale when there&apos;s content that&apos;s sized using viewport units.

FWIW this is existing code that was moved from `Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm` to support the followup &lt;https://webkit.org/b/238173&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855668</commentid>
    <comment_count>11</comment_count>
      <attachid>455926</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-28 10:26:07 -0700</bug_when>
    <thetext>Created attachment 455926
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855690</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-28 11:20:00 -0700</bug_when>
    <thetext>Committed r291980 (248939@main): &lt;https://commits.webkit.org/248939@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455926.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855951</commentid>
    <comment_count>13</comment_count>
      <attachid>455926</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-29 02:09:32 -0700</bug_when>
    <thetext>Comment on attachment 455926
[fast-cq] Patch

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

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1527
&gt; +    auto oldView = m_frame-&gt;coreFrame()-&gt;view();

This probably needs to be a RefPtr, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856043</commentid>
    <comment_count>14</comment_count>
      <attachid>455926</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-29 09:27:17 -0700</bug_when>
    <thetext>Comment on attachment 455926
[fast-cq] Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1527
&gt;&gt; +    auto oldView = m_frame-&gt;coreFrame()-&gt;view();
&gt; 
&gt; This probably needs to be a RefPtr, right?

yyyuuuppp oops

i&apos;ll fix this asap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856064</commentid>
    <comment_count>15</comment_count>
      <attachid>456037</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-29 10:05:19 -0700</bug_when>
    <thetext>Created attachment 456037
[fast-cq] [Patch] fix UAF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856086</commentid>
    <comment_count>16</comment_count>
      <attachid>455926</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-29 10:38:13 -0700</bug_when>
    <thetext>Comment on attachment 455926
[fast-cq] Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1527
&gt;&gt;&gt; +    auto oldView = m_frame-&gt;coreFrame()-&gt;view();
&gt;&gt; 
&gt;&gt; This probably needs to be a RefPtr, right?
&gt; 
&gt; yyyuuuppp oops
&gt; 
&gt; i&apos;ll fix this asap

r292042</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454894</attachid>
            <date>2022-03-16 14:25:59 -0700</date>
            <delta_ts>2022-03-21 11:33:40 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237979-20220316152558.patch</filename>
            <type>text/plain</type>
            <size>99985</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZDhkMGYwMzA3YzhmZTM3ZmJjZDM5ZTQxOGRlODFiNTM2MzlhYTUzLi4z
MTA1OGQyMGM1YTgzZDg2NThmMTI3OGI2YzM0YjZhOTYxOGU3MjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTUgQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8gY29udHJvbCBDU1MgInNtYWxsIHZp
ZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTc5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogQ1NTVmlld3BvcnRVbml0cy5OZWdhdGl2ZU1pbmltdW1W
aWV3cG9ydEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWF4
aW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11
bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAg
ICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuRnJhbWUK
KyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRMYXJn
ZXJUaGFuRnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdw
b3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0
SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5z
ZXRXaXRoWm9vbQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3Bv
cnRJbnNldFdpdGhab29tCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1W
aWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVu
aXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlCisgICAgICAgICAgICAgICBD
U1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lCisgICAgICAgICAg
ICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lCisgICAg
ICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEJvdW5k
cworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdp
dGhCb3VuZHMKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0
SW5zZXRXaXRoQ29udGVudEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1h
eGltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmll
d3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cworICAgICAg
ICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJl
YUluc2V0cworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlc0lnbm9yZU1heGltdW1WaWV3cG9ydEluc2V0QVBJCisKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6d2lsbFJlcGxhY2VNYWluRnJhbWVWaWV3KTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1TaXplVG9Db250ZW50QXV0b1NpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjplbmFibGVBdXRvU2l6ZU1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpjbGVhclNpemVPdmVycmlkZUZvckNTU0RlZmF1bHRWaWV3cG9y
dFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNpemVGb3JD
U1NEZWZhdWx0Vmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpvdmVycmlkZVdpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRPdmVycmlkZGVuV2lkdGhGb3JDU1NEZWZh
dWx0Vmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpv
dmVycmlkZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMgY29uc3Qp
OiBSZW5hbWVkIGZyb20gYHNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0c2AuCisgICAgICAg
IEFkZCBhbGwgdGhlIHZhcmlvdXMgbWV0aG9kcyBmb3IgZ2V0dGluZy9zZXR0aW5nL292ZXJyaWRp
bmcvY2xlYXJpbmcgYW4gb3ZlcnJpZGUgdmFsdWUgZm9yCisgICAgICAgIENTUyAiZGVmYXVsdCB2
aWV3cG9ydCIgYHYqYCB1bml0cy4gVGhpcyBhbGxvd3MgZm9yIGBXS1dlYlZpZXdgIGNsaWVudHMg
dG8gcHJlc2VydmUgZXhpc3RpbmcKKyAgICAgICAgYmVoYXZpb3IgKHdoZXJlIENTUyAiZGVmYXVs
dCB2aWV3cG9ydCIgYHYqYCB1bml0cyBtYXRjaCB0aGUgc2l6ZSBvZiB0aGUgYFdLV2ViVmlld2Ap
IHdoaWxlCisgICAgICAgIGFkZGluZyBzdXBwb3J0aW5nIENTUyAic21hbGwgdmlld3BvcnQiIGBz
dipgIHVuaXRzIGFuZCBDU1MgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cy4KKworICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFZpZXcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZVZpZXcpOgorICAgICAgICBFbnN1cmUgdGhh
dCB0aGUgc21hbGwgKGFuZCBsYXJnZSkgdmlld3BvcnQgc2l6ZSBvdmVycmlkZSBpcyBwcm9wYWdh
dGVkIHdoZW4gdGhlIHZpZXcgb2YgdGhlCisgICAgICAgIG1haW4gZnJhbWUgY2hhbmdlcywgYXMg
dGhpcyB2YWx1ZSBpcyBvbmx5IHNldCBieSB0aGUgV2ViS2l0IGxheWVyIChXZWJQcm9jZXNzKSBh
bmQgZXZlbiB0aGVuCisgICAgICAgIG9ubHkgd2hlbiBpdCdzIGNoYW5nZWQgaW4gdGhlIFVJUHJv
Y2Vzcy4KKwogMjAyMi0wMy0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1vdmUgb3RoZXIgY2xhc3NlcyBvdXQgb2YgR3JhcGhp
Y3NDb250ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzE3NGIyZmQ4YjliZGQ2ZTA4NTUwM2MwNjQ1NGFlMjUw
YjRjZGE5OC4uNzgxYzU0MTc2Yjk2ZWEyNjhjOWI1YjEwMWQyMTMwMzlkZTZiYjBmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMjUgQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8gY29udHJvbCBDU1Mg
InNtYWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTc5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWNlbnRseSB0aGUgVzNDIENTUyB3b3JraW5nIGdy
b3VwIGFkZGVkIFtzb21lIG5ldyB1bml0IHR5cGVzIHRvIENTU10oaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy12YWx1ZXMtNC8jdmlld3BvcnQtdmFyaWFudHMpCisgICAgICAgIHdpdGggdGhl
IGdvYWwgb2YgaGVscGluZyB3ZWIgZGV2ZWxvcGVycyBiZXR0ZXIgZGVhbCB3aXRoIGJyb3dzZXJz
IHRoYXQgaGF2ZSBkeW5hbWljIFVJCisgICAgICAgIGVsZW1lbnRzIHRoYXQgY2hhbmdlIGFwcGVy
YW5jZS9zaXplL2V0Yy4gYmFzZWQgb24gdXNlciBhY3Rpb25zIChlLmcuIHRoZSBVUkwgYmFyCisg
ICAgICAgIGNvbGxhcHNpbmcvInNxdWlzaGluZyIgYW5kIGV4cGFuZGluZy8idW5zcXVpc2hpbmci
IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyIGhhcyBtb3N0CisgICAgICAgIHJlY2VudGx5
IHNjcm9sbGVkL3N3aXBlZCBkb3duIHRoZSBwYWdlKS4KKworICAgICAgICBUaGVzZSBuZXcgdW5p
dHMgY29tZSBpbiB0aHJlZSBjYXRlZ29yaWVzOgorICAgICAgICAtIHRoZSAibGFyZ2Ugdmlld3Bv
cnQiIHVuaXRzIChgbHZ3YCwgYGx2aGAsIGV0Yy4pIGVhY2ggcmVwcmVzZW50IDElIG9mIG9uZSBk
aW1lbnNpb24gb2YgdGhlCisgICAgICAgICAgc2l6ZSBvZiB0aGUgdmlzdWFsIGFyZWEgb2YgdGhl
IHBhZ2Ugd2hlbiBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4gdGhlaXIgc21hbGxlc3QK
KyAgICAgICAgICBzdGF0ZSAoZS5nLiB3aGVuIHRoZSBVUkwgYmFyIGlzIGNvbGxhcHNlZC8ic3F1
aXNoZWQiKQorICAgICAgICAtIHRoZSAic21hbGwgdmlld3BvcnQiIHVuaXRzIChgc3Z3YCwgYHN2
aGAsIGV0Yy4pIGVhY2ggcmVwcmVzZW50IDElIG9mIG9uZSBkaW1lbnNpb24gb2YgdGhlCisgICAg
ICAgICAgc2l6ZSBvZiB0aGUgdmlzdWFsIGFyZWEgb2YgdGhlIHBhZ2Ugd2hlbiBhbGwgYnJvd3Nl
ciBVSSBlbGVtZW50cyBhcmUgaW4gdGhlaXIgbGFyZ2VzdAorICAgICAgICAgIHN0YXRlIChlLmcu
IHdoZW4gdGhlIFVSTCBiYXIgaXMgZXhwYW5kZWQvInVuc3F1aXNoZWQiKQorICAgICAgICAtIHRo
ZSAiZHluYW1pYyB2aWV3cG9ydCIgdW5pdHMgKGBkdndgLCBgZHZoYCwgZXRjLikgZWFjaCByZXBy
ZXNlbnQgMSUgb2Ygb25lIGRpbWVuc2lvbiBvZgorICAgICAgICAgIHRoZSBzaXplIG9mIHRoZSBj
dXJyZW50IHZpc3VhbCBhcmVhIG9mIHRoZSBwYWdlLCB3aGljaCBkZXBlbmRzIG9uIHRoZSBjdXJy
ZW50IHN0YXRlIG9mIGFsbAorICAgICAgICAgIGJyb3dzZXIgVUkgZWxlbWVudHMKKworICAgICAg
ICBUaGlzIHdheSwgZGV2ZWxvcGVyIGNvdWxkIHVzZSBgMTAwc3ZoYCB0byBlbnN1cmUgdGhhdCBu
byBtYXR0ZXIgd2hhdCBzdGF0ZSB0aGUgYnJvd3NlciBVSQorICAgICAgICBlbGVtZW50cyBhcmUg
aW4gdGhlIGVudGlyZSBlbGVtZW50IHdpbGwgYWx3YXlzIGJlIHZpc2libGUgb24gdGhlIHNjcmVl
biwgb3IgdXNlIGAxMDBkdmhgIHRvCisgICAgICAgIHJlc3BvbmQgdG8gYnJvd3NlciBVSSBlbGVt
ZW50IGNoYW5nZXMgYnkgYXV0b21hdGljYWxseSByZXNpemluZyB2YXJpb3VzIGVsZW1lbnRzIHRv
IGFsd2F5cworICAgICAgICBmdWxseSB0YWtlIGFkdmFudGFnZSBvZiB0aGUgYXZhaWxhYmxlIHNw
YWNlLgorCisgICAgICAgIE5vdGhpbmcgbmVlZHMgdG8gYmUgYWRkZWQgdG8gc3VwcG9ydCAiZHlu
YW1pYyB2aWV3cG9ydCIgYGR2KmAgdW5pdHMgYXMgdGhlcmUgYWxyZWFkeSBleGlzdHMKKyAgICAg
ICAgb3RoZXIgbWV0aG9kcyB0byBhZGp1c3QgdGhlIHZpc3VhbCBhcmVhIG9mIHRoZSBgV0tXZWJW
aWV3YCB3aXRob3V0IGFkanVzdGluZyBpdHMgYGZyYW1lYAorICAgICAgICAoZS5nLiBgLVtXS1dl
YlZpZXcgc2V0Qm91bmRzOl1gLCBgLVtVSVNjcm9sbFZpZXcgc2V0Q29udGVudEluc2V0Ol1gLCBl
dGMuKS4KKworICAgICAgICBCdXQgZm9yICJzbWFsbCB2aWV3cG9ydCIgYHN2KmAgdW5pdHMgYW5k
ICJsYXJnZSB2aWV3cG9ydCIgYGx2KmAgdW5pdHMsIGhvd2V2ZXIsIHRoZXJlIGlzCisgICAgICAg
IHVuZm9ydHVuYXRlbHkgbm8gd2F5IHRvIHRlbGwgYSBgV0tXZWJWaWV3YCBhbnl0aGluZyBsaWtl
ICJ0aGlzIGlzIHRoZSBzbWFsbGVzdC9sYXJnZXN0IHRoYXQKKyAgICAgICAgdGhpcyBgV0tXZWJW
aWV3YCB3aWxsIGV2ZXIgYmUiLCBzbyB0aGVyZSdzIG5vIHdheSB0byBrbm93IGFoZWFkIG9mIHRp
bWUgd2hhdCB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdmlzdWFsIGFyZWEgd291bGQgYmUgd2hl
biBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4gdGhlaXIgc21hbGxlc3QvbGFyZ2VzdCBz
dGF0ZS4gQXMKKyAgICAgICAgc3VjaCwgdGhpcyBwYXRjaCBhZGRzIGEgbmV3IEFQSSB0byBhbGxv
dyBmb3IgYFdLV2ViVmlld2AgY2xpZW50cyB0byB0ZWxsIFdlYktpdCB0aGlzCisgICAgICAgIGlu
Zm9ybWF0aW9uIGFoZWFkIG9mIHRpbWUuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZXJlIGFscmVh
ZHkgZXhpc3RzIHRoZSBjb25jZXB0IG9mICJkZWZhdWx0IHZpZXdwb3J0IiB1bml0cyAoYHZ3YCwg
YHZoYCwgZXRjLikKKyAgICAgICAgdGhhdCBlYWNoIHJlcHJlc2VudCAxJSBvZiBvbmUgZGltZW5z
aW9uIG9mIHRoZSBzaXplIG9mIHRoZSB2aXN1YWwgYXJlYSBvZiB0aGUgcGFnZSB3aGVuIGFsbAor
ICAgICAgICBicm93c2VyIFVJIGVsZW1lbnRzIGFyZSBpbiB0aGVpciBkZWZhdWx0IHN0YXRlLiBU
aGUgYmVoYXZpb3Igb2YgdGhlc2UgdW5pdHMgcmVtYWluIHRoZSBzYW1lLAorICAgICAgICBhbmQg
dGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIHZpYSB0aGUgZXhpc3RpbmcgYC1bV0tXZWJWaWV3IHNl
dEZyYW1lOl1gLgorCisgICAgICAgIFRlc3RzOiBDU1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWlu
aW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTmVnYXRp
dmVNYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5N
aW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5NYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAg
ICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5G
cmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNl
dExhcmdlclRoYW5GcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVt
Vmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmll
d3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3Bv
cnRJbnNldFdpdGhab29tCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1W
aWV3cG9ydEluc2V0V2l0aFpvb20KKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWlu
aW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUKKyAgICAgICAgICAgICAgIENTU1ZpZXdw
b3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUKKyAgICAgICAgICAg
ICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUKKyAgICAg
ICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUK
KyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRo
Qm91bmRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydElu
c2V0V2l0aEJvdW5kcworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmll
d3BvcnRJbnNldFdpdGhDb250ZW50SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5p
dHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVudEluc2V0CisgICAgICAgICAgICAgICBD
U1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzCisg
ICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFNh
ZmVBcmVhSW5zZXRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLlVub2JzY3VyZWRT
aXplT3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0SW5zZXRBUEkKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlY2FsY3VsYXRlVmlld3BvcnRT
aXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDptYXhpbXVtVmlld3BvcnRJbnNldDp0aHJvd09u
SW52YWxpZElucHV0Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldE1pbmltdW1W
aWV3cG9ydEluc2V0Om1heGltdW1WaWV3cG9ydEluc2V0Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
cHJvY2Vzc1dpbGxTd2FwT3JEaWRFeGl0XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZnJhbWVP
ckJvdW5kc0NoYW5nZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1h
dGVkUmVzaXplXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11bVVub2JzY3VyZWRT
aXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWF4aW11bVVub2JzY3Vy
ZWRTaXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYmVnaW5BbmltYXRlZFJl
c2l6ZVdpdGhVcGRhdGVzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Rpc3BhdGNoU2V0TWlu
aW11bVVub2JzY3VyZWRTaXplOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Rp
c3BhdGNoU2V0TWF4aW11bVVub2JzY3VyZWRTaXplOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNl
dEZyYW1lU2l6ZTpdKToKKyAgICAgICAgUmVjYWxjdWxhdGUgdGhlIHNpemUgZm9yIENTUyAic21h
bGwgdmlld3BvcnQiIGBzdipgIHVuaXRzIHdoZW5ldmVyIHRoZSBgZnJhbWVgIGNoYW5nZXMuIEFs
c28KKyAgICAgICAgbW92ZSB0aGUgZGVkdXBsaWNhdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIHRo
ZSBzYW1lIHZhbHVlIGZyb20gYmVpbmcgc2VudCB0byB0aGUgV2ViUHJvY2VzcworICAgICAgICBt
b3JlIHRoYW4gb25jZSB0byB0aGUgc2V0dGVyIG1ldGhvZHMgb24gYFdlYlBhZ2VQcm94eWAgc28g
dGhhdCBpdCBjYW4gYmUgdXNlZCBieSBtb3JlIHRoYW4KKyAgICAgICAganVzdCBpT1Mtb25seSBj
b2RlcGF0aHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldERlZmF1bHRVbm9ic2N1
cmVkU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNaW5pbXVtVW5v
YnNjdXJlZFNpemUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5p
dHMpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJl
ZFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgQWRkIGFsbCB0aGUg
dmFyaW91cyBtZXRob2RzIGZvciBnZXR0aW5nL3NldHRpbmcvb3ZlcnJpZGluZy9jbGVhcmluZyBh
biBvdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgQ1NTICJkZWZhdWx0IHZpZXdwb3J0IiBgdipg
IHVuaXRzLiBUaGlzIGFsbG93cyBmb3IgYFdLV2ViVmlld2AgY2xpZW50cyB0byBwcmVzZXJ2ZSBl
eGlzdGluZworICAgICAgICBiZWhhdmlvciAod2hlcmUgQ1NTICJkZWZhdWx0IHZpZXdwb3J0IiBg
dipgIHVuaXRzIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBgV0tXZWJWaWV3YCkgd2hpbGUKKyAgICAg
ICAgYWRkaW5nIHN1cHBvcnRpbmcgQ1NTICJzbWFsbCB2aWV3cG9ydCIgYHN2KmAgdW5pdHMgYW5k
IENTUyAibGFyZ2Ugdmlld3BvcnQiIGBsdipgIHVuaXRzLgorICAgICAgICBNb3ZlIGlPUy1vbmx5
IGNvZGUgdG8gYmUgZm9yIGFsbCBwbGF0Zm9ybXMuCisKIDIwMjItMDMtMTYgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtXZWJH
TF0gQ3Jhc2ggaW4gV2ViS2l0OjpXQ0NvbnRlbnRCdWZmZXI6OnBsYXRmb3JtTGF5ZXJXaWxsQmVE
ZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ZmFmOGFkZjY5YjVjYzU1YzJiM2Fm
YTdhYTYxY2UyYmRjMGEwNDdmLi4wM2MzZTg2MDhiZjViYTM4YjUzNjBlODI4OGZmNGJiYzMxZTAx
ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMjY2LDYgKzI2NiwxMSBAQCB2b2lkIEZyYW1l
OjpzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYgdmlldykKIAogICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2RvYyB8fCAhbV9kb2MtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSk7CiAKKyAgICBpZiAoaXNN
YWluRnJhbWUoKSkgeworICAgICAgICBpZiAodmlldyAmJiBtX3ZpZXcpCisgICAgICAgICAgICB2
aWV3LT53aWxsUmVwbGFjZU1haW5GcmFtZVZpZXcoKm1fdmlldyk7CisgICAgfQorCiAgICAgbV92
aWV3ID0gV1RGTW92ZSh2aWV3KTsKICAgICAKICAgICAvLyBPbmx5IG9uZSBmb3JtIHN1Ym1pc3Np
b24gaXMgYWxsb3dlZCBwZXIgdmlldyBvZiBhIHBhcnQuCkBAIC04NzksOCArODg0LDkgQEAgdm9p
ZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8Q29sb3I+JgogCiAgICAgYm9vbCBpc01haW5GcmFtZSA9IHRoaXMtPmlzTWFp
bkZyYW1lKCk7CiAKLSAgICBpZiAoaXNNYWluRnJhbWUgJiYgdmlldygpKQotICAgICAgICB2aWV3
KCktPnNldFBhcmVudFZpc2libGUoZmFsc2UpOworICAgIGF1dG8gb2xkRnJhbWVWaWV3ID0gbV92
aWV3OworICAgIGlmIChpc01haW5GcmFtZSAmJiBvbGRGcmFtZVZpZXcpCisgICAgICAgIG9sZEZy
YW1lVmlldy0+c2V0UGFyZW50VmlzaWJsZShmYWxzZSk7CiAKICAgICBzZXRWaWV3KG51bGxwdHIp
OwogCkBAIC04OTksNiArOTA1LDkgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q29sb3I+JgogCiAgICAgZnJh
bWVWaWV3LT5zZXRTY3JvbGxiYXJNb2Rlcyhob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSwgdmVydGlj
YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGljYWxMb2NrKTsKIAorICAgIGlm
IChpc01haW5GcmFtZSAmJiBvbGRGcmFtZVZpZXcpCisgICAgICAgIGZyYW1lVmlldy0+d2lsbFJl
cGxhY2VNYWluRnJhbWVWaWV3KCpvbGRGcmFtZVZpZXcpOworCiAgICAgc2V0VmlldyhmcmFtZVZp
ZXcuY29weVJlZigpKTsKIAogICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2
ZWx5KGJhY2tncm91bmRDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYzlm
NWQ0OGRjYjQ2YzgyNGM4MWUyODY2NjNhZmI3MWE0YTU1MmRiNC4uNWZmMzY1YmMxZThmYzExNjMx
ZDVlOTYxMWIxNzFhYTViNmViMDViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAt
MzQ2LDYgKzM0NiwxMyBAQCB2b2lkIEZyYW1lVmlldzo6cHJlcGFyZUZvckRldGFjaCgpCiAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKCp0aGlz
KTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OndpbGxSZXBsYWNlTWFpbkZyYW1lVmlldyhGcmFtZVZp
ZXcmIG9sZE1haW5GcmFtZVZpZXcpCit7CisgICAgbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJp
ZGUgPSBvbGRNYWluRnJhbWVWaWV3Lm1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlOworICAg
IG1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZSA9IG9sZE1haW5GcmFtZVZpZXcubV9zbWFsbFZp
ZXdwb3J0U2l6ZU92ZXJyaWRlOworICAgIG1fbGFyZ2VWaWV3cG9ydFNpemVPdmVycmlkZSA9IG9s
ZE1haW5GcmFtZVZpZXcubV9sYXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlOworfQorCiB2b2lkIEZy
YW1lVmlldzo6ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpCiB7CiAgICAgU2Nyb2xsYmFyKiBob3Jp
em9udGFsQmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpAQCAtMzYyNCw2ICszNjMxLDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1TaXplVG9Db250ZW50QXV0b1NpemUoKQogICAgICAgICBk
b2N1bWVudC51cGRhdGVMYXlvdXQoKTsKICAgICB9OwogCisgICAgcmVzZXRPdmVycmlkZGVuV2lk
dGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpOwogICAgIHJlc2V0T3ZlcnJpZGRlbldpZHRo
Rm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCk7CiAgICAgcmVzZXRPdmVycmlkZGVuV2lkdGhGb3JD
U1NMYXJnZVZpZXdwb3J0VW5pdHMoKTsKIApAQCAtMzY4Niw2ICszNjk0LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OnBlcmZvcm1TaXplVG9Db250ZW50QXV0b1NpemUoKQogICAgICAgICByZXNpemUobmV3
U2l6ZS53aWR0aCgpLCBpID8gbmV3U2l6ZS5oZWlnaHQoKSA6IG1pbkF1dG9TaXplLmhlaWdodCgp
KTsKICAgICAgICAgLy8gUHJvdGVjdCB0aGUgY29udGVudCBmcm9tIGV2ZXJncm93aW5nIGxheW91
dC4KICAgICAgICAgYXV0byBwcmVmZXJyZWRWaWV3cG9ydFdpZHRoID0gc3RkOjptaW4obmV3U2l6
ZS53aWR0aCgpLCBtX2F1dG9TaXplQ29uc3RyYWludC53aWR0aCgpKTsKKyAgICAgICAgb3ZlcnJp
ZGVXaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKHByZWZlcnJlZFZpZXdwb3J0V2lkdGgp
OwogICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKHByZWZlcnJl
ZFZpZXdwb3J0V2lkdGgpOwogICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NTTGFyZ2VWaWV3cG9y
dFVuaXRzKHByZWZlcnJlZFZpZXdwb3J0V2lkdGgpOwogICAgICAgICAvLyBGb3JjZSB0aGUgc2Ny
b2xsYmFyIHN0YXRlIHRvIGF2b2lkIHRoZSBzY3JvbGxiYXIgY29kZSBhZGRpbmcgdGhlbSBhbmQg
Y2F1c2luZyB0aGVtIHRvIGJlIG5lZWRlZC4gRm9yIGV4YW1wbGUsCkBAIC00NzY3LDExICs0Nzc2
LDEzIEBAIHZvaWQgRnJhbWVWaWV3OjplbmFibGVBdXRvU2l6ZU1vZGUoYm9vbCBlbmFibGUsIGNv
bnN0IEludFNpemUmIHZpZXdTaXplLCBBdXRvU2l6CiAgICAgc2V0TmVlZHNMYXlvdXRBZnRlclZp
ZXdDb25maWd1cmF0aW9uQ2hhbmdlKCk7CiAgICAgbGF5b3V0Q29udGV4dCgpLnNjaGVkdWxlTGF5
b3V0KCk7CiAgICAgaWYgKG1fc2hvdWxkQXV0b1NpemUpIHsKKyAgICAgICAgb3ZlcnJpZGVXaWR0
aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCkp
OwogICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKG1fYXV0b1Np
emVDb25zdHJhaW50LndpZHRoKCkpOwogICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NTTGFyZ2VW
aWV3cG9ydFVuaXRzKG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgY2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3BvcnRV
bml0cygpOwogICAgIGNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCk7
CiAgICAgY2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKTsKICAgICAv
LyBTaW5jZSBhdXRvc2l6ZSBtb2RlIGZvcmNlcyB0aGUgc2Nyb2xsYmFyIG1vZGUsIGNoYW5nZSB0
aGVtIHRvIGJlaW5nIGF1dG8uCkBAIC01NjAyLDYgKzU2MTMsNDcgQEAgdm9pZCBGcmFtZVZpZXc6
OnNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KQogICAgIH0KIH0KIAordm9pZCBGcmFtZVZpZXc6OmNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NT
RGVmYXVsdFZpZXdwb3J0VW5pdHMoKQoreworICAgIGlmICghbV9kZWZhdWx0Vmlld3BvcnRTaXpl
T3ZlcnJpZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92
ZXJyaWRlID0gc3RkOjpudWxsb3B0OworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCku
ZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHls
ZVNoZWV0RW52aXJvbm1lbnQoKTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnNldFNpemVGb3JDU1NE
ZWZhdWx0Vmlld3BvcnRVbml0cyhGbG9hdFNpemUgc2l6ZSkKK3sKKyAgICBvdmVycmlkZVNpemVG
b3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyh7IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSB9
KTsKK30KKwordm9pZCBGcmFtZVZpZXc6Om92ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3Bv
cnRVbml0cyhmbG9hdCB3aWR0aCkKK3sKKyAgICBvdmVycmlkZVNpemVGb3JDU1NEZWZhdWx0Vmll
d3BvcnRVbml0cyh7IHdpZHRoLCBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA/IG1fZGVm
YXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlLT5oZWlnaHQgOiBzdGQ6Om51bGxvcHQgfSk7Cit9CisK
K3ZvaWQgRnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9y
dFVuaXRzKCkKK3sKKyAgICBvdmVycmlkZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyh7
IHsgfSwgbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUgPyBtX2RlZmF1bHRWaWV3cG9ydFNp
emVPdmVycmlkZS0+aGVpZ2h0IDogc3RkOjpudWxsb3B0IH0pOworfQorCit2b2lkIEZyYW1lVmll
dzo6b3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoT3ZlcnJpZGVWaWV3cG9y
dFNpemUgc2l6ZSkKK3sKKyAgICBpZiAobV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUgJiYg
Km1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID09IHNpemUpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID0gc2l6ZTsKKworICAgIGlmIChh
dXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQtPnN0
eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKK30KKworRmxvYXRT
aXplIEZyYW1lVmlldzo6c2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gY2FsY3VsYXRlU2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHNPdmVycmlkZShtX2Rl
ZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSk7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpjbGVhclNp
emVPdmVycmlkZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpCiB7CiAgICAgaWYgKCFtX3NtYWxs
Vmlld3BvcnRTaXplT3ZlcnJpZGUpCkBAIC01NzE2LDExICs1NzY4LDYgQEAgRmxvYXRTaXplIEZy
YW1lVmlldzo6c2l6ZUZvckNTU0R5bmFtaWNWaWV3cG9ydFVuaXRzKCkgY29uc3QKICAgICByZXR1
cm4gcmVjdEZvckZpeGVkUG9zaXRpb25MYXlvdXQoKS5zaXplKCk7CiB9CiAKLUZsb2F0U2l6ZSBG
cmFtZVZpZXc6OnNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKTsKLX0KLQogYm9vbCBGcmFtZVZp
ZXc6OnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKSBjb25zdAogewogICAgIHJl
dHVybiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5zaG91bGRQbGFjZVZlcnRpY2FsU2Ny
b2xsYmFyT25MZWZ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA2MDJkNjBjOWM5NzA1
NWY2NDhjYTQ4ZmZmYmY5YzQyYjVjMTZmOTMzLi5kMGFjYjUwYTI3ZTE5YTU5OGQwMTU5MzczN2Vm
NDY5ZWFlMjcxNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTE4OCw2ICsxODgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFNjcm9sbGJhcnMoKTsKICAgICB2b2lkIHJlc2V0U2Ny
b2xsYmFyc0FuZENsZWFyQ29udGVudHNTaXplKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGV0YWNo
KCk7CisgICAgdm9pZCB3aWxsUmVwbGFjZU1haW5GcmFtZVZpZXcoRnJhbWVWaWV3Jik7CiAgICAg
dm9pZCBkZXRhY2hDdXN0b21TY3JvbGxiYXJzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKQpAQCAtMjI4LDYgKzIyOSwxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkanVzdFZpZXdTaXplKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNpemVG
b3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhGbG9hdFNpemUpOworICAgIHZvaWQgY2xlYXJTaXpl
T3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpOworICAgIEZsb2F0U2l6ZSBzaXpl
Rm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyhGbG9hdFNpemUpOwogICAgIHZv
aWQgY2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKTsKICAgICBGbG9h
dFNpemUgc2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpIGNvbnN0OwpAQCAtMjM4LDggKzI0
Myw2IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0U2l6ZSBzaXplRm9yQ1NTRHluYW1pY1ZpZXdwb3J0
VW5pdHMoKSBjb25zdDsKIAotICAgIEZsb2F0U2l6ZSBzaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0
VW5pdHMoKSBjb25zdDsKLQogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0Rm9yRnJhbWVPd25l
cihjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBib29sIGNsaXBUb0xheWVyQ29udGVudHMp
IGNvbnN0OwogCkBAIC04NjcsNiArODcwLDEwIEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBGbG9h
dFNpemUgY2FsY3VsYXRlU2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHNPdmVycmlkZShzdGQ6Om9wdGlv
bmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPikgY29uc3Q7CiAKKyAgICB2b2lkIG92ZXJyaWRlU2l6
ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKE92ZXJyaWRlVmlld3BvcnRTaXplKTsKKyAgICB2
b2lkIG92ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhmbG9hdCk7CisgICAg
dm9pZCByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCk7CisK
ICAgICB2b2lkIG92ZXJyaWRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyhPdmVycmlkZVZp
ZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBvdmVycmlkZVdpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVu
aXRzKGZsb2F0KTsKICAgICB2b2lkIHJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTU21hbGxWaWV3
cG9ydFVuaXRzKCk7CkBAIC05NDQsNiArOTUxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPEludFNpemU+IG1fY3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50OwogI2VuZGlmCiAKKyAgICBz
dGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBtX2RlZmF1bHRWaWV3cG9ydFNpemVP
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBtX3NtYWxs
Vmlld3BvcnRTaXplT3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxPdmVycmlkZVZpZXdwb3J0
U2l6ZT4gbV9sYXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGVjNDM5ZDA2NzE0
ZTZkZTViOTRlMjFmYjljZThlZTIzOWM5NjIyZmEuLjExYWEzZTRiNWUyODUyNjg4YmExYWJiZjY3
ZDE0YmU0OWM0NDM4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAgICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsK
ICAgICBlbmNvZGVyIDw8IGZpeGVkTGF5b3V0U2l6ZTsKKyAgICBlbmNvZGVyIDw8IGRlZmF1bHRV
bm9ic2N1cmVkU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAg
ICBlbmNvZGVyIDw8IG1heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBlbmNvZGVyIDw8IHZpZXdF
eHBvc2VkUmVjdDsKICAgICBlbmNvZGVyIDw8IGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVy
OwogICAgIGVuY29kZXIgPDwgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyOwpAQCAtMTAyLDgg
KzEwNSw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGF2YWlsYWJsZVNjcmVlblNpemU7
CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZVNjcmVlblNpemU7CiAgICAgZW5jb2RlciA8PCB0ZXh0
QXV0b3NpemluZ1dpZHRoOwotICAgIGVuY29kZXIgPDwgbWluaW11bVVub2JzY3VyZWRTaXplOwot
ICAgIGVuY29kZXIgPDwgbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGVuY29kZXIgPDwgZGV2
aWNlT3JpZW50YXRpb247CiAgICAgZW5jb2RlciA8PCBrZXlib2FyZElzQXR0YWNoZWQ7CiAgICAg
ZW5jb2RlciA8PCBjYW5TaG93V2hpbGVMb2NrZWQ7CkBAIC0yMjUsNiArMjI2LDEyIEBAIHN0ZDo6
b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZpeGVkTGF5b3V0U2l6ZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRl
ZmF1bHRVbm9ic2N1cmVkU2l6ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSkKQEAgLTM2NiwxMCArMzcz
LDYgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudGV4dEF1dG9zaXppbmdXaWR0
aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1heGltdW1Vbm9i
c2N1cmVkU2l6ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRldmljZU9yaWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMua2V5Ym9h
cmRJc0F0dGFjaGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCBjYjc0MTY5M2RiMzBhNzUwMmI0ODljODM5N2NlZjZjNzM5ZmVk
YTkxLi45MGU1Y2VhNTIyZTVmNDE3NDM2ZTM3ZjM0ZTgxZTkzZTdiZmNlYzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04NCw2
ICs4NCwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1
c2VGaXhlZExheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAor
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWZhdWx0VW5vYnNjdXJlZFNpemU7CisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNp
emUgbWF4aW11bVVub2JzY3VyZWRTaXplOworCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdDsKIAogICAgIGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXI7CkBAIC0xNjIsOCArMTY2LDYgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplOwog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdmVycmlkZVNjcmVlblNpemU7CiAgICAgZmxvYXQgdGV4
dEF1dG9zaXppbmdXaWR0aDsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bVVub2JzY3Vy
ZWRTaXplOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAg
ICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsKICAgICBib29sIGtleWJvYXJkSXNB
dHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4
IDVkOWU4NmM3ZTYxODk5NzA0N2ZiYTE2ZmUyYWJkM2VjOTBkYzQ3OTMuLjNkOGQwNTc5YmJkNzMy
MGNiM2YyYTVlMjAyNzNkYjdhOTI3OWZhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTYyMSw2ICs2MjEsMjkgQEAgVGhlIHVuaWZvcm0g
dHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVs
YXRlZCBwYXN0ZWIKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0Z1bGxz
Y3JlZW5TdGF0ZSBmdWxsc2NyZWVuU3RhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyohIEBhYnN0cmFjdCBJbnNldHMgZnJvbSB0aGUg
QGxpbmsgZnJhbWUgQC9saW5rIHRoYXQgcmVwcmVzZW50IHRoZSBzbWFsbGVzdCBhbmQgbGFyZ2Vz
dCBwb3NzaWJsZSBzaXplIG9mIHRoZQorIHZpc3VhbCBhcmVhIG9mIHRoZSBAbGluayBXS1dlYlZp
ZXcgQC9saW5rIGJhc2VkIG9uIHRoZSBzdGF0ZSBvZiB0aGUgc3Vycm91bmRpbmcgVUkuCisgQGRp
c2N1c3Npb24gRm9yIGFwcHMgd2l0aCBzaXplLWNoYW5naW5nIFVJIGFyb3VuZCB0aGUgQGxpbmsg
V0tXZWJWaWV3IEAvbGluaywgc3BlY2lmeSBtaW5pbXVtVmlld3BvcnRJbnNldCBhbmQKKyBtYXhp
bXVtVmlld3BvcnRJbnNldCB0byBzdXBwbHkgd2VicGFnZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUg
dmFsdWUgZm9yIENTUyAibGFyZ2Ugdmlld3BvcnQiIGBsdipgCisgdW5pdHMgYW5kIENTUyAic21h
bGwgdmlld3BvcnQiIGBzdipgIHVuaXRzIHJlc3BlY3RpdmVseSBAbGluayBodHRwczovL3d3dy53
My5vcmcvVFIvY3NzLXZhbHVlcy00LyN2aWV3cG9ydC12YXJpYW50cyBAL2xpbmsuCisgU2V0IG1p
bmltdW1WaWV3cG9ydEluc2V0IHRvIHRoZSBzbWFsbGVzdCBpbnNldCBhIHdlYnBhZ2UgbWF5IGV4
cGVyaWVuY2UgaW4geW91ciBhcHAncyBtYXhpbWFsbHkKKyBjb2xsYXBzZWQgVUkgY29uZmlndXJh
dGlvbi4gU2V0IG1heGltdW1WaWV3cG9ydEluc2V0IHRvIHRoZSBsYXJnZXN0IGluc2V0IGEgd2Vi
cGFnZSBtYXkgZXhwZXJpZW5jZQorIGluIHlvdXIgYXBwJ3MgbWF4aW1hbGx5IGV4cGFuZGVkIFVJ
IGNvbmZpZ3VyYXRpb24uIEZvciBhcHBzIHdoZXJlIHRoZSBtYXhpbWFsbHkgY29sbGFwc2VkIFVJ
CisgY29uZmlndXJhdGlvbiBpcyBzdWNoIHRoYXQgdGhlIEBsaW5rIFdLV2ViVmlldyBAL2xpbmsg
aXMgbm90IHN1cnJvdW5kZWQgYnkgYW55dGhpbmcsIHRoZXJlIGlzIG5vIG5lZWQgdG8gc3BlY2lm
eQorIG1pbmltdW1WaWV3cG9ydEluc2V0LiBGb3IgYXBwcyB3aXRoIGZpeGVkLXNpemVkIFVJIHN1
cnJvdW5kaW5nIHRoZSBAbGluayBXS1dlYlZpZXcgQC9saW5rLCB0aGVyZSBpcyBubyBuZWVkIHRv
Cisgc3BlY2lmeSBlaXRoZXIgdmFsdWUuIEJvdGggdmFsdWVzIG11c3QgYmUgZWl0aGVyIHplcm8g
b3IgcG9zaXRpdmUsIGFuZCBtYXhpbXVtVmlld3BvcnRJbnNldCBtdXN0IGJlCisgbGFyZ2VyIHRo
YW4gbWluaW11bVZpZXdwb3J0SW5zZXQuCisgKi8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0cyBtaW5pbXVtVmlld3BvcnRJ
bnNldCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0cyBtYXhpbXVtVmlld3BvcnRJbnNldCBXS19BUElf
QVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXNldE1pbmltdW1WaWV3cG9ydElu
c2V0OihVSUVkZ2VJbnNldHMpbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5z
ZXQ6KFVJRWRnZUluc2V0cyltYXhpbXVtVmlld3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CisjZWxzZQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBO
U0VkZ2VJbnNldHMgbWluaW11bVZpZXdwb3J0SW5zZXQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRWRnZUluc2V0
cyBtYXhpbXVtVmlld3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
KTsKKy0gKHZvaWQpc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6KE5TRWRnZUluc2V0cyltaW5pbXVt
Vmlld3BvcnRJbnNldCBtYXhpbXVtVmlld3BvcnRJbnNldDooTlNFZGdlSW5zZXRzKW1heGltdW1W
aWV3cG9ydEluc2V0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpOworI2VuZGlm
CisKIEBlbmQKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBkNzhiOTMxZjEzMGIwNjYxZmM4OGI4
NDZkOTBjNmNlY2Y0MGNjYWM4Li4yZmI2NjEyODQwZTNjOTI3MGI5MGE1MzRmMGMzZWJkNjlhNWE0
NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTE1NDksNiArMTU0OSw0MSBAQCAtICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jayB3aXRobwogICAgIH0p
OwogfQogCistICh2b2lkKV9yZWNhbGN1bGF0ZVZpZXdwb3J0U2l6ZXNXaXRoTWluaW11bVZpZXdw
b3J0SW5zZXQ6KENvY29hRWRnZUluc2V0cyltaW5pbXVtVmlld3BvcnRJbnNldCBtYXhpbXVtVmll
d3BvcnRJbnNldDooQ29jb2FFZGdlSW5zZXRzKW1heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25J
bnZhbGlkSW5wdXQ6KEJPT0wpdGhyb3dPbkludmFsaWRJbnB1dAoreworICAgIGF1dG8gZnJhbWUg
PSBXZWJDb3JlOjpGbG9hdFNpemUoc2VsZi5mcmFtZS5zaXplKTsKKworICAgIGF1dG8gbWluaW11
bVVub2JzY3VyZWRTaXplID0gZnJhbWUgLSBXZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVZpZXdw
b3J0SW5zZXQubGVmdCArIG1heGltdW1WaWV3cG9ydEluc2V0LnJpZ2h0LCBtYXhpbXVtVmlld3Bv
cnRJbnNldC50b3AgKyBtYXhpbXVtVmlld3BvcnRJbnNldC5ib3R0b20pOworICAgIGlmIChtaW5p
bXVtVW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICh0aHJvd09uSW52YWxp
ZElucHV0KSB7CisgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAibWF4aW11bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxhcmdl
ciB0aGFuIGZyYW1lIl07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihWaWV3cG9ydFNpemluZywgIm1heGltdW1WaWV3cG9ydEluc2V0
IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBmcmFtZSIpOworICAgICAgICBtaW5pbXVtVW5vYnNjdXJl
ZFNpemUgPSBmcmFtZTsKKyAgICB9CisKKyAgICBhdXRvIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9
IGZyYW1lIC0gV2ViQ29yZTo6RmxvYXRTaXplKG1pbmltdW1WaWV3cG9ydEluc2V0LmxlZnQgKyBt
aW5pbXVtVmlld3BvcnRJbnNldC5yaWdodCwgbWluaW11bVZpZXdwb3J0SW5zZXQudG9wICsgbWlu
aW11bVZpZXdwb3J0SW5zZXQuYm90dG9tKTsKKyAgICBpZiAobWF4aW11bVVub2JzY3VyZWRTaXpl
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAodGhyb3dPbkludmFsaWRJbnB1dCkgeworICAgICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIm1pbmltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBmcmFtZSJdOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoVmlld3BvcnRTaXppbmcsICJtaW5pbXVtVmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbGFyZ2Vy
IHRoYW4gZnJhbWUiKTsKKyAgICAgICAgbWF4aW11bVVub2JzY3VyZWRTaXplID0gZnJhbWU7Cisg
ICAgfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoX3ZpZXdMYXlvdXRTaXpl
T3ZlcnJpZGUgfHwgX21pbmltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlIHx8IF9tYXhpbXVtVW5v
YnNjdXJlZFNpemVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBfcGFn
ZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXplKG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk7CisgICAg
X3BhZ2UtPnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShtYXhpbXVtVW5vYnNjdXJlZFNpemUpOwor
fQorCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogLSAodm9pZClfZGlkSW5zZXJ0
QXR0YWNobWVudDooQVBJOjpBdHRhY2htZW50JilhdHRhY2htZW50IHdpdGhTb3VyY2U6KE5TU3Ry
aW5nICopc291cmNlCkBAIC0xODMwLDYgKzE4NjUsMjMgQEAgLSAoV0tGdWxsc2NyZWVuU3RhdGUp
ZnVsbHNjcmVlblN0YXRlCiAjZW5kaWYKIH0KIAorLSAodm9pZClzZXRNaW5pbXVtVmlld3BvcnRJ
bnNldDooQ29jb2FFZGdlSW5zZXRzKW1pbmltdW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3cG9y
dEluc2V0OihDb2NvYUVkZ2VJbnNldHMpbWF4aW11bVZpZXdwb3J0SW5zZXQKK3sKKyAgICBpZiAo
bWluaW11bVZpZXdwb3J0SW5zZXQudG9wIDwgMCB8fCBtaW5pbXVtVmlld3BvcnRJbnNldC5sZWZ0
IDwgMCB8fCBtaW5pbXVtVmlld3BvcnRJbnNldC5ib3R0b20gPCAwIHx8IG1pbmltdW1WaWV3cG9y
dEluc2V0LnJpZ2h0IDwgMCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIm1pbmltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBu
ZWdhdGl2ZSJdOworCisgICAgaWYgKG1heGltdW1WaWV3cG9ydEluc2V0LnRvcCA8IDAgfHwgbWF4
aW11bVZpZXdwb3J0SW5zZXQubGVmdCA8IDAgfHwgbWF4aW11bVZpZXdwb3J0SW5zZXQuYm90dG9t
IDwgMCB8fCBtYXhpbXVtVmlld3BvcnRJbnNldC5yaWdodCA8IDApCisgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJtYXhpbXVtVmll
d3BvcnRJbnNldCBjYW5ub3QgYmUgbmVnYXRpdmUiXTsKKworICAgIGlmIChtaW5pbXVtVmlld3Bv
cnRJbnNldC50b3AgKyBtaW5pbXVtVmlld3BvcnRJbnNldC5ib3R0b20gPiBtYXhpbXVtVmlld3Bv
cnRJbnNldC50b3AgKyBtYXhpbXVtVmlld3BvcnRJbnNldC5ib3R0b20gfHwgbWluaW11bVZpZXdw
b3J0SW5zZXQucmlnaHQgKyBtaW5pbXVtVmlld3BvcnRJbnNldC5sZWZ0ID4gbWF4aW11bVZpZXdw
b3J0SW5zZXQucmlnaHQgKyBtYXhpbXVtVmlld3BvcnRJbnNldC5sZWZ0KQorICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAibWluaW11
bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxhcmdlciB0aGFuIG1heGltdW1WaWV3cG9ydEluc2V0
Il07CisKKyAgICBbc2VsZiBfcmVjYWxjdWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3
cG9ydEluc2V0Om1pbmltdW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3cG9ydEluc2V0Om1heGlt
dW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6WUVTXTsKKworICAgIF9taW5pbXVt
Vmlld3BvcnRJbnNldCA9IG1pbmltdW1WaWV3cG9ydEluc2V0OworICAgIF9tYXhpbXVtVmlld3Bv
cnRJbnNldCA9IG1heGltdW1WaWV3cG9ydEluc2V0OworfQorCiBAZW5kCiAKICNwcmFnbWEgbWFy
ayAtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdJbnRlcm5hbC5oCmluZGV4IGMzMjg1MGIyNmE4ZjkwMTgwMThlYjg0NWRlMDNjOTRmNjBlYjE1
ZTMuLjUyYjYzOTc0OWM4NmJmYTY2NzZjNDQyYmVhY2NhNzRmMWNhZThlYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CkBAIC01OSw2ICs1OSwxNCBAQAogI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMKICNlbmRp
ZgogCisjaWYgVVNFKEFQUEtJVCkKK3VzaW5nIENvY29hRWRnZUluc2V0cyA9IE5TRWRnZUluc2V0
czsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3VzaW5nIENvY29hRWRnZUlu
c2V0cyA9IFVJRWRnZUluc2V0czsKKyNlbmRpZgorCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1BhZ2UqIFdLUGFnZVJlZjsKIAogbmFtZXNwYWNlIEFQSSB7CkBAIC0xMzIsNiArMTQwLDkg
QEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzIF9vYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzOwogICAgIEJPT0wgX3VzZVBs
YXRmb3JtRmluZFVJOwogCisgICAgQ29jb2FFZGdlSW5zZXRzIF9taW5pbXVtVmlld3BvcnRJbnNl
dDsKKyAgICBDb2NvYUVkZ2VJbnNldHMgX21heGltdW1WaWV3cG9ydEluc2V0OworCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OldlYlZpZXdJbXBsPiBfaW1w
bDsKICAgICBSZXRhaW5QdHI8V0tUZXh0RmluZGVyQ2xpZW50PiBfdGV4dEZpbmRlckNsaWVudDsK
QEAgLTE2MSw5ICsxNzIsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgc3Rk
OjpvcHRpb25hbDxDR1NpemU+IF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZTsKICAgICBz
dGQ6Om9wdGlvbmFsPENHU2l6ZT4gX21pbmltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwotICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBfbGFzdFNlbnRNaW5pbXVtVW5vYnNj
dXJlZFNpemU7CiAgICAgc3RkOjpvcHRpb25hbDxDR1NpemU+IF9tYXhpbXVtVW5vYnNjdXJlZFNp
emVPdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gX2xhc3RT
ZW50TWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIENHUmVjdCBfaW5wdXRWaWV3Qm91bmRzSW5X
aW5kb3c7CiAKICAgICBDR0Zsb2F0IF92aWV3cG9ydE1ldGFUYWdXaWR0aDsKQEAgLTI4Myw2ICsy
OTIsOCBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKIC0gKHZvaWQpX2ludGVybmFs
RG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2Nr
IHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJPT0wpd2l0aG91dFdhaXRpbmdGb3JQYWludGlu
ZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVzaXplOihCT09MKXdpdGhvdXRXYWl0aW5nRm9y
QW5pbWF0ZWRSZXNpemU7CiAKKy0gKHZvaWQpX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhN
aW5pbXVtVmlld3BvcnRJbnNldDooQ29jb2FFZGdlSW5zZXRzKW1pbmltdW1WaWV3cG9ydEluc2V0
IG1heGltdW1WaWV3cG9ydEluc2V0OihDb2NvYUVkZ2VJbnNldHMpbWF4aW11bVZpZXdwb3J0SW5z
ZXQgdGhyb3dPbkludmFsaWRJbnB1dDooQk9PTCl0aHJvd09uSW52YWxpZElucHV0OworCiAtICh2
b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0OjpTYWZlQnJvd3NpbmdX
YXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6dmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2NsZWFyU2FmZUJyb3dzaW5nV2FybmluZzsKIC0gKHZv
aWQpX2NsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lmRm9yTWFpbkZyYW1lTmF2aWdhdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXgg
NDkwMjVlMTA1MzFlNDZhNzYxYzQxNmM2NmVjZWY1MWFiMTg2MDY3OS4uZjVkNDEwZTU0MDJjMWYy
MzA2NTEwMWI4MmM0MWMyODkyZWNkZWMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTcyNCw4ICs3MjQsNiBAQCAtICh2b2lkKV9w
cm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzRm9yVW5zdGFibGVTY3JvbGxWaWV3ID0gTk87CiAgICAgX2N1cnJlbnRseUFkanVzdGlu
Z1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCA9IE5POwogICAgIF9sYXN0U2VudFZpZXdMYXlv
dXRTaXplID0gc3RkOjpudWxsb3B0OwotICAgIF9sYXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBfbGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgX2xhc3RTZW50RGV2aWNlT3JpZW50YXRpb24gPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OwpAQCAt
MTkzNSwyNCArMTkzMyw2IEBAIC0gKHZvaWQpX2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6KFdl
YkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0U2l6ZQogICAgIF9sYXN0U2VudFZpZXdMYXlvdXRT
aXplID0gdmlld0xheW91dFNpemU7CiB9CiAKLS0gKHZvaWQpX2Rpc3BhdGNoU2V0TWluaW11bVVu
b2JzY3VyZWRTaXplOihXZWJDb3JlOjpGbG9hdFNpemUpbWluaW11bVVub2JzY3VyZWRTaXplCi17
Ci0gICAgaWYgKF9sYXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSAmJiBDR1NpemVFcXVhbFRv
U2l6ZShfbGFzdFNlbnRNaW5pbXVtVW5vYnNjdXJlZFNpemUudmFsdWUoKSwgbWluaW11bVVub2Jz
Y3VyZWRTaXplKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX3BhZ2UtPnNldE1pbmltdW1Vbm9i
c2N1cmVkU2l6ZShtaW5pbXVtVW5vYnNjdXJlZFNpemUpOwotICAgIF9sYXN0U2VudE1pbmltdW1V
bm9ic2N1cmVkU2l6ZSA9IG1pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKLX0KLQotLSAodm9pZClfZGlz
cGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSltYXhpbXVt
VW5vYnNjdXJlZFNpemUKLXsKLSAgICBpZiAoX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXpl
ICYmIENHU2l6ZUVxdWFsVG9TaXplKF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZS52YWx1
ZSgpLCBtYXhpbXVtVW5vYnNjdXJlZFNpemUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcGFn
ZS0+c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6ZSk7Ci0gICAg
X2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplID0gbWF4aW11bVVub2JzY3VyZWRTaXplOwot
fQotCiAtICh2b2lkKV9kaXNwYXRjaFNldERldmljZU9yaWVudGF0aW9uOihpbnQzMl90KWRldmlj
ZU9yaWVudGF0aW9uCiB7CiAgICAgaWYgKF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uICYmIF9s
YXN0U2VudERldmljZU9yaWVudGF0aW9uLnZhbHVlKCkgPT0gZGV2aWNlT3JpZW50YXRpb24pCkBA
IC0xOTc5LDEwICsxOTU5LDkgQEAgLSAodm9pZClfZnJhbWVPckJvdW5kc0NoYW5nZWQKICAgICBp
ZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRV
cGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAgICBpZiAoIV92aWV3TGF5b3V0U2l6ZU92
ZXJyaWRlKQogICAgICAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6W3Nl
bGYgYWN0aXZlVmlld0xheW91dFNpemU6c2VsZi5ib3VuZHNdXTsKLSAgICAgICAgaWYgKCFfbWlu
aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpCi0gICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hT
ZXRNaW5pbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKV07
CiAgICAgICAgIGlmICghX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKQotICAgICAgICAg
ICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWF4aW11bVVub2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0
U2l6ZShib3VuZHMuc2l6ZSldOworICAgICAgICAgICAgX3BhZ2UtPnNldERlZmF1bHRVbm9ic2N1
cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoYm91bmRzLnNpemUpKTsKKyAgICAgICAgW3NlbGYg
X3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDpfbWluaW11
bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQ6X21heGltdW1WaWV3cG9ydEluc2V0
IHRocm93T25JbnZhbGlkSW5wdXQ6Tk9dOwogCiAgICAgICAgIEJPT0wgc2l6ZUNoYW5nZWQgPSBO
TzsKICAgICAgICAgaWYgKF9wYWdlKSB7CkBAIC0yNDMzLDExICsyNDEyLDEzIEBAIC0gKHZvaWQp
X2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemUKICAgICBpZiAoIV9sYXN0U2VudFZpZXdMYXlvdXRT
aXplIHx8IG5ld1ZpZXdMYXlvdXRTaXplICE9IF9sYXN0U2VudFZpZXdMYXlvdXRTaXplLnZhbHVl
KCkpCiAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldFZpZXdMYXlvdXRTaXplOm5ld1ZpZXdMYXlv
dXRTaXplXTsKIAotICAgIGlmICghX2xhc3RTZW50TWluaW11bVVub2JzY3VyZWRTaXplIHx8IG5l
d01pbmltdW1Vbm9ic2N1cmVkU2l6ZSAhPSBfbGFzdFNlbnRNaW5pbXVtVW5vYnNjdXJlZFNpemUu
dmFsdWUoKSkKLSAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXpl
OldlYkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5pbXVtVW5vYnNjdXJlZFNpemUpXTsKLQotICAgIGlm
ICghX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplIHx8IG5ld01heGltdW1Vbm9ic2N1cmVk
U2l6ZSAhPSBfbGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUudmFsdWUoKSkKLSAgICAgICAg
W3NlbGYgX2Rpc3BhdGNoU2V0TWF4aW11bVVub2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6
ZShuZXdNYXhpbXVtVW5vYnNjdXJlZFNpemUpXTsKKyAgICBpZiAoX21pbmltdW1Vbm9ic2N1cmVk
U2l6ZU92ZXJyaWRlKQorICAgICAgICBfcGFnZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdl
YkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5pbXVtVW5vYnNjdXJlZFNpemUpKTsKKyAgICBpZiAoX21h
eGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKSB7CisgICAgICAgIF9wYWdlLT5zZXREZWZhdWx0
VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6
ZSkpOworICAgICAgICBfcGFnZS0+c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZs
b2F0U2l6ZShuZXdNYXhpbXVtVW5vYnNjdXJlZFNpemUpKTsKKyAgICB9CisgICAgW3NlbGYgX3Jl
Y2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDpfbWluaW11bVZp
ZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQ6X21heGltdW1WaWV3cG9ydEluc2V0IHRo
cm93T25JbnZhbGlkSW5wdXQ6Tk9dOwogCiAgICAgaWYgKCFfbGFzdFNlbnREZXZpY2VPcmllbnRh
dGlvbiB8fCBuZXdPcmllbnRhdGlvbiAhPSBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbi52YWx1
ZSgpKQogICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXREZXZpY2VPcmllbnRhdGlvbjpuZXdPcmll
bnRhdGlvbl07CkBAIC0yODExLDcgKzI3OTIsNyBAQCAtICh2b2lkKV9zZXRNaW5pbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZTooQ0dTaXplKXNpemUKICAgICBfbWluaW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGUgPSBzaXplOwogCiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09
IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpCi0gICAgICAg
IFtzZWxmIF9kaXNwYXRjaFNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9hdFNp
emUoc2l6ZSldOworICAgICAgICBfcGFnZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNv
cmU6OkZsb2F0U2l6ZShzaXplKSk7CiB9CiAKIC8vIERlcHJlY2F0ZWQgU1BJCkBAIC0yODI2LDgg
KzI4MDcsMTAgQEAgLSAodm9pZClfc2V0TWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6KENH
U2l6ZSlzaXplCiAgICAgQVNTRVJUKHNpemUud2lkdGggPD0gc2VsZi5ib3VuZHMuc2l6ZS53aWR0
aCAmJiBzaXplLmhlaWdodCA8PSBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCk7CiAgICAgX21heGlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlID0gc2l6ZTsKIAotICAgIGlmIChfZHluYW1pY1ZpZXdw
b3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5vdFJl
c2l6aW5nKQotICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6
V2ViQ29yZTo6RmxvYXRTaXplKHNpemUpXTsKKyAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykg
eworICAgICAgICBfcGFnZS0+c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0
U2l6ZShzaXplKSk7CisgICAgICAgIF9wYWdlLT5zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2Vi
Q29yZTo6RmxvYXRTaXplKHNpemUpKTsKKyAgICB9CiB9CiAKIC0gKFVJRWRnZUluc2V0cylfb2Jz
Y3VyZWRJbnNldHMKQEAgLTMxNjksOSArMzE1MiwxMSBAQCAtICh2b2lkKV9iZWdpbkFuaW1hdGVk
UmVzaXplV2l0aFVwZGF0ZXM6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiAgICAgICAgIGlm
IChfdmlld0xheW91dFNpemVPdmVycmlkZSkKICAgICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNl
dFZpZXdMYXlvdXRTaXplOm5ld1ZpZXdMYXlvdXRTaXplXTsKICAgICAgICAgaWYgKF9taW5pbXVt
VW5vYnNjdXJlZFNpemVPdmVycmlkZSkKLSAgICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1p
bmltdW1Vbm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9hdFNpemUobmV3TWluaW11bVVub2JzY3Vy
ZWRTaXplKV07Ci0gICAgICAgIGlmIChfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpCi0g
ICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29y
ZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSldOworICAgICAgICAgICAgX3Bh
Z2UtPnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3TWluaW11
bVVub2JzY3VyZWRTaXplKSk7CisgICAgICAgIGlmIChfbWF4aW11bVVub2JzY3VyZWRTaXplT3Zl
cnJpZGUpIHsKKyAgICAgICAgICAgIF9wYWdlLT5zZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2Vi
Q29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSkpOworICAgICAgICAgICAg
X3BhZ2UtPnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3TWF4
aW11bVVub2JzY3VyZWRTaXplKSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKF9vdmVycmlkZXNJ
bnRlcmZhY2VPcmllbnRhdGlvbikKICAgICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldERldmlj
ZU9yaWVudGF0aW9uOm5ld09yaWVudGF0aW9uXTsKIApAQCAtMzI0OCw4ICszMjMzLDYgQEAgLSAo
dm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRh
dGVCbG9jawogICAgIFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50IHVub2JzY3VyZWRTYWZlQXJlYUlu
c2V0c0V4dGVudCh1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMudG9wLCB1bm9ic2N1cmVkU2FmZUFy
ZWFJbnNldHMucmlnaHQsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5ib3R0b20sIHVub2JzY3Vy
ZWRTYWZlQXJlYUluc2V0cy5sZWZ0KTsKIAogICAgIF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0g
bmV3Vmlld0xheW91dFNpemU7Ci0gICAgX2xhc3RTZW50TWluaW11bVVub2JzY3VyZWRTaXplID0g
bmV3TWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVk
U2l6ZSA9IG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBfbGFzdFNlbnREZXZpY2VPcmll
bnRhdGlvbiA9IG5ld09yaWVudGF0aW9uOwogCiAgICAgX3BhZ2UtPmR5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGUobmV3Vmlld0xheW91dFNpemUsIG5ld01pbmltdW1Vbm9ic2N1cmVkU2l6ZSwgbmV3
TWF4aW11bVVub2JzY3VyZWRTaXplLCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCB1
bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBmdXR1cmVVbm9ic2N1cmVkUmVjdElu
U2VsZkNvb3JkaW5hdGVzLCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHNFeHRlbnQsIHRhcmdldFNj
YWxlLCBuZXdPcmllbnRhdGlvbiwgbmV3TWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoLCArK19j
dXJyZW50RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KaW5kZXggZGU2OTkwNDU3NWQ1NmE5ZmYx
YzRhOWJlZjMyZmNjZThmZWJjNmE3YS4uZDI5Y2M1Y2QzOTkxZThhNTlhY2U5ODBhMTFkZjAzMWQy
Mjc0NjIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dl
YlZpZXdNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZp
ZXdNYWMubW0KQEAgLTE0MCw2ICsxNDAsOCBAQCAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXpl
KXNpemUKICAgICBbX3NhZmVCcm93c2luZ1dhcm5pbmcgc2V0RnJhbWU6c2VsZi5ib3VuZHNdOwog
ICAgIGlmIChfaW1wbCkKICAgICAgICAgX2ltcGwtPnNldEZyYW1lU2l6ZShOU1NpemVUb0NHU2l6
ZShzaXplKSk7CisKKyAgICBbc2VsZiBfcmVjYWxjdWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmlt
dW1WaWV3cG9ydEluc2V0Ol9taW5pbXVtVmlld3BvcnRJbnNldCBtYXhpbXVtVmlld3BvcnRJbnNl
dDpfbWF4aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDpOT107CiB9CiAKIC0g
KHZvaWQpc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjooTlNVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKXVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZmZDEzMmQ3MTczZjViOGM1ODUwZjQxOWU0
ZmJhNWUxNzg0NmIzOGUuLjIxODgwNWFkMGQ3YTQyODdhNDFlZTAxZGY3NDJhMWVkZTIyN2Q3MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA2Myw2ICs0
MDYzLDQ1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNp
emUoc2l6ZSkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGVmYXVsdFVub2JzY3VyZWRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA9PSBtX2RlZmF1bHRV
bm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0VW5vYnNjdXJl
ZFNpemUgPSBzaXplOworCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZhdWx0VW5vYnNjdXJl
ZFNpemUobV9kZWZhdWx0VW5vYnNjdXJlZFNpemUpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAg
aWYgKHNpemUgPT0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbWluaW11bVVub2JzY3VyZWRTaXplID0gc2l6ZTsKKworICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TWluaW11bVVub2JzY3VyZWRTaXplKG1fbWluaW11bVVub2JzY3VyZWRTaXplKSk7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplID09IG1fbWF4aW11bVVub2JzY3VyZWRTaXpl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IHNpemU7
CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShtX21heGlt
dW1Vbm9ic2N1cmVkU2l6ZSkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld0V4cG9z
ZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3Qp
CiB7CiAgICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0ID09IHZpZXdFeHBvc2VkUmVjdCkKQEAgLTgy
MzQsNiArODI3Myw5IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5Ojpj
cmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy51
bmRlcmxheUNvbG9yID0gbV91bmRlcmxheUNvbG9yOwogICAgIHBhcmFtZXRlcnMudXNlRml4ZWRM
YXlvdXQgPSBtX3VzZUZpeGVkTGF5b3V0OwogICAgIHBhcmFtZXRlcnMuZml4ZWRMYXlvdXRTaXpl
ID0gbV9maXhlZExheW91dFNpemU7CisgICAgcGFyYW1ldGVycy5kZWZhdWx0VW5vYnNjdXJlZFNp
emUgPSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKyAgICBwYXJhbWV0ZXJzLm1pbmltdW1Vbm9i
c2N1cmVkU2l6ZSA9IG1fbWluaW11bVVub2JzY3VyZWRTaXplOworICAgIHBhcmFtZXRlcnMubWF4
aW11bVVub2JzY3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgcGFyYW1l
dGVycy52aWV3RXhwb3NlZFJlY3QgPSBtX3ZpZXdFeHBvc2VkUmVjdDsKICAgICBwYXJhbWV0ZXJz
LmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyID0gbV9hbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlcjsKICAgICBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciA9IG1f
YWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyOwpAQCAtODI5Miw4ICs4MzM0LDYgQEAgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlU2NyZWVuU2l6ZSA9IG92
ZXJyaWRlU2NyZWVuU2l6ZSgpOwogICAgIHBhcmFtZXRlcnMudGV4dEF1dG9zaXppbmdXaWR0aCA9
IHRleHRBdXRvc2l6aW5nV2lkdGgoKTsKICAgICBwYXJhbWV0ZXJzLm1pbWVUeXBlc1dpdGhDdXN0
b21Db250ZW50UHJvdmlkZXJzID0gcGFnZUNsaWVudCgpLm1pbWVUeXBlc1dpdGhDdXN0b21Db250
ZW50UHJvdmlkZXJzKCk7Ci0gICAgcGFyYW1ldGVycy5taW5pbXVtVW5vYnNjdXJlZFNpemUgPSBt
X21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAgICBwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVk
U2l6ZSA9IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIHBhcmFtZXRlcnMuZGV2aWNlT3Jp
ZW50YXRpb24gPSBtX2RldmljZU9yaWVudGF0aW9uOwogICAgIHBhcmFtZXRlcnMua2V5Ym9hcmRJ
c0F0dGFjaGVkID0gaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCk7CiAgICAgcGFyYW1ldGVycy5j
YW5TaG93V2hpbGVMb2NrZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmNhblNob3dXaGlsZUxvY2tlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwNmI3MzdhZTAzYWUy
ZjNjMWIyY2QzYTI2YjM5YmFjYjFjNGUyNTJkLi44NDg0Zjc0MjYwZWE3ZWQ1YmY5OTQxZTZjNDFj
ZGQxOTMxYTg3MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
ODUwLDEwICs4NTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkeW5hbWljVmlld3BvcnRTaXplVXBk
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbWluaW11bVVub2JzY3VyZWRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0
YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0
VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJl
ZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywgZG91YmxlIHRhcmdldFNjYWxlLCBpbnQzMl90
IGRldmljZU9yaWVudGF0aW9uLCBkb3VibGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoLCBE
eW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpOwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydENvbmZp
Z3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBkb3VibGUg
c2NhbGVGYWN0b3IsIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwotICAgIHZv
aWQgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwot
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsgfQotICAgIHZvaWQgc2V0TWF4aW11bVVub2Jz
Y3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1Vbm9i
c2N1cmVkU2l6ZTsgfQogICAgIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCk7CiAg
ICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3Jp
ZW50YXRpb247IH0KICAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4mKTsKQEAgLTExMjEsNiAr
MTExNywxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH07CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml4
ZWRMYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9maXhlZExheW91dFNpemU7IH07CiAKKyAg
ICB2b2lkIHNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
KTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVmYXVsdFVub2JzY3VyZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0VW5vYnNjdXJlZFNpemU7IH0KKyAgICB2b2lkIHNldE1pbmltdW1V
bm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbWluaW11bVVub2JzY3VyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVt
VW5vYnNjdXJlZFNpemU7IH0KKyAgICB2b2lkIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVu
b2JzY3VyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7IH0K
KwogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0Pik7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBv
c2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CiAKQEAgLTI4Mjcs
NiArMjgzMCwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFNpemUgbV9maXhlZExheW91
dFNpemU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9z
ZWRSZWN0OwogCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fZGVmYXVsdFVub2JzY3VyZWRTaXpl
OworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CisKICAgICBib29sIG1f
YWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdh
eXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIgeyBmYWxzZSB9OwogCkBAIC0zMDY0LDggKzMwNzEsNiBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRnVuY3Rpb248Ym9vbCgp
PiBtX2RldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzsKICAg
ICBib29sIG1fd2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNp
bmdFbGVtZW50IHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5v
YnNjdXJlZFNpemU7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRT
aXplOwogICAgIGJvb2wgbV9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgeyBmYWxzZSB9
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IDc3YWZhZTg3Y2ZmNDc5N2U4MWM5YTdjNDA3MTUzZWNlNzY1ODQ0MWQuLjYw
NWY1NjFjNTZjYzdhMzJkOGVlNzMyMjkwNzljZGY0NWI3N2E4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMjczLDYgKzI3Myw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgdmlld0xheW91dFNpemUsIGNvCiAgICAgaGlkZVZhbGlkYXRpb25NZXNzYWdlKCk7CiAK
ICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplID0gdmlld0xheW91dFNp
emU7CisgICAgbV9kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7
CisgICAgbV9taW5pbXVtVW5vYnNjdXJlZFNpemUgPSBtaW5pbXVtVW5vYnNjdXJlZFNpemU7Cisg
ICAgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEeW5hbWljVmlld3BvcnRTaXplVXBk
YXRlKHZpZXdMYXlvdXRTaXplLAogICAgICAgICBtaW5pbXVtVW5vYnNjdXJlZFNpemUsIG1heGlt
dW1Vbm9ic2N1cmVkU2l6ZSwgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCB0YXJnZXRVbm9ic2N1
cmVkUmVjdCwKICAgICAgICAgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlcywgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLApAQCAtMzAxLDIyICszMDQsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFi
bGUpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9yY2VB
bHdheXNVc2VyU2NhbGFibGUodXNlclNjYWxhYmxlKSwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IHNpemU7Ci0K
LSAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUoc2l6ZSksIG1fd2ViUGFn
ZUlEKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgbV9tYXhpbXVtVW5vYnNjdXJl
ZFNpemUgPSBzaXplOwotCi0gICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF4aW11bVVub2JzY3VyZWRTaXpl
KHNpemUpLCBtX3dlYlBhZ2VJRCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREZXZpY2VP
cmllbnRhdGlvbihpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKQogewogICAgIGlmIChkZXZpY2VP
cmllbnRhdGlvbiAhPSBtX2RldmljZU9yaWVudGF0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGViNDhjN2IyZDEzODM5MmFiYmYxNDEx
OGY4ZTI1M2MwYWU5ZjRlMjIuLmM5Nzk5YzdjOTZiZjBkYTMxOWFjZTI0ZjgzODBjMWU3NWU5ZmM3
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC03NDQsNiArNzQ0LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldFVzZUZp
eGVkTGF5b3V0KHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQpOwogCisgICAgc2V0RGVmYXVsdFVu
b2JzY3VyZWRTaXplKHBhcmFtZXRlcnMuZGVmYXVsdFVub2JzY3VyZWRTaXplKTsKKyAgICBzZXRN
aW5pbXVtVW5vYnNjdXJlZFNpemUocGFyYW1ldGVycy5taW5pbXVtVW5vYnNjdXJlZFNpemUpOwor
ICAgIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVk
U2l6ZSk7CisKICAgICBzZXRVbmRlcmxheUNvbG9yKHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcik7
CiAKICAgICBzZXRQYWdpbmF0aW9uTW9kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKTsKQEAg
LTg2Niw4ICs4NzAsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHBh
cmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUsIHBhcmFtZXRlcnMu
dmlld3BvcnRDb25maWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yLCBwYXJhbWV0ZXJzLnZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7Ci0gICAgc2V0
TWluaW11bVVub2JzY3VyZWRTaXplKHBhcmFtZXRlcnMubWluaW11bVVub2JzY3VyZWRTaXplKTsK
LSAgICBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUocGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJl
ZFNpemUpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKQEAgLTIzNjksNiArMjM3
MSw4MSBAQCBJbnRTaXplIFdlYlBhZ2U6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldERlZmF1
bHRVbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9hdFNpemUmIGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSkK
K3sKKyAgICBpZiAoZGVmYXVsdFVub2JzY3VyZWRTaXplID09IG1fZGVmYXVsdFVub2JzY3VyZWRT
aXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZSA9IGRl
ZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKworICAgIHVwZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3Bv
cnRVbml0cygpOworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmll
d3BvcnRVbml0cygpCit7CisgICAgYXV0byogbWFpbkZyYW1lVmlldyA9IHRoaXMtPm1haW5GcmFt
ZVZpZXcoKTsKKyAgICBpZiAoIW1haW5GcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gZGVmYXVsdFVub2JzY3VyZWRTaXplID0gbV9kZWZhdWx0VW5vYnNjdXJlZFNpemU7Cisj
aWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgaWYgKGRlZmF1bHRVbm9ic2N1cmVkU2l6ZS5p
c0VtcHR5KCkpCisgICAgICAgIGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSA9IG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLnZpZXdMYXlvdXRTaXplKCk7CisgICAgZGVmYXVsdFVub2JzY3VyZWRTaXplLnNj
YWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRl
bnRTaXplKCkpOworI2VuZGlmCisgICAgbWFpbkZyYW1lVmlldy0+c2V0U2l6ZUZvckNTU0RlZmF1
bHRWaWV3cG9ydFVuaXRzKGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bVVub2Jz
Y3VyZWRTaXplKQoreworICAgIGlmIChtaW5pbXVtVW5vYnNjdXJlZFNpemUgPT0gbV9taW5pbXVt
VW5vYnNjdXJlZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWluaW11bVVub2JzY3Vy
ZWRTaXplID0gbWluaW11bVVub2JzY3VyZWRTaXplOworCisgICAgdXBkYXRlU2l6ZUZvckNTU1Nt
YWxsVmlld3BvcnRVbml0cygpOworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NT
bWFsbFZpZXdwb3J0VW5pdHMoKQoreworICAgIGF1dG8qIG1haW5GcmFtZVZpZXcgPSB0aGlzLT5t
YWluRnJhbWVWaWV3KCk7CisgICAgaWYgKCFtYWluRnJhbWVWaWV3KQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fbWluaW11bVVub2JzY3VyZWRT
aXplOworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgIGlmIChtaW5pbXVtVW5vYnNjdXJl
ZFNpemUuaXNFbXB0eSgpKQorICAgICAgICBtaW5pbXVtVW5vYnNjdXJlZFNpemUgPSBtX3ZpZXdw
b3J0Q29uZmlndXJhdGlvbi52aWV3TGF5b3V0U2l6ZSgpOworICAgIG1pbmltdW1Vbm9ic2N1cmVk
U2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSWdub3Jp
bmdDb250ZW50U2l6ZSgpKTsKKyNlbmRpZgorICAgIG1haW5GcmFtZVZpZXctPnNldFNpemVGb3JD
U1NTbWFsbFZpZXdwb3J0VW5pdHMobWluaW11bVVub2JzY3VyZWRTaXplKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBtYXhpbXVt
VW5vYnNjdXJlZFNpemUpCit7CisgICAgaWYgKG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9PSBtX21h
eGltdW1Vbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tYXhpbXVtVW5v
YnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CisKKyAgICB1cGRhdGVTaXplRm9y
Q1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2l6ZUZv
ckNTU0xhcmdlVmlld3BvcnRVbml0cygpCit7CisgICAgYXV0byogbWFpbkZyYW1lVmlldyA9IHRo
aXMtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBpZiAoIW1haW5GcmFtZVZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbWF4aW11bVVub2JzY3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNj
dXJlZFNpemU7CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgaWYgKG1heGltdW1Vbm9i
c2N1cmVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1f
dmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdMYXlvdXRTaXplKCk7CisgICAgbWF4aW11bVVub2Jz
Y3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJ
Z25vcmluZ0NvbnRlbnRTaXplKCkpOworI2VuZGlmCisgICAgbWFpbkZyYW1lVmlldy0+c2V0U2l6
ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhtYXhpbXVtVW5vYnNjdXJlZFNpemUpOworfQorCiB2
b2lkIFdlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlvbnNEaWRDaGFuZ2UoY29uc3QgT3B0aW9uU2V0
PERpc2FibGVkQWRhcHRhdGlvbnM+JiBkaXNhYmxlZEFkYXB0YXRpb25zKQogewogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggNmU1ZjhmMGE1MTE2ZTFhYTI2MmJhMGFkMzFiMmM5MjdiYzM2ZmRjZi4uODExYTJi
N2Y0NDM4ZmU4MGJhZGYwNjA4MmZkZTMyNmQyYzFjYmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjE3LDYgKzYxNywxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAg
IFdlYkNvcmU6OkludFNpemUgZml4ZWRMYXlvdXRTaXplKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNl
dERlZmF1bHRVbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2
b2lkIHNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsK
KyAgICB2b2lkIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmKTsKKwogICAgIHZvaWQgbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPik7CiAKICAgICB2b2lkIHNldFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyhib29sKTsKQEAgLTExMDYsOCArMTExMCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHVwZGF0ZVZpc2liaWxpdHlTdGF0ZShib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHNldE1pbmltdW1Vbm9ic2N1cmVkU2l6
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNldE1heGltdW1Vbm9ic2N1
cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIHNldERldmljZU9y
aWVudGF0aW9uKGludDMyX3QpOwogICAgIHZvaWQgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0
RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFVub2Jz
Y3VyZWRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiB0
YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgaW50MzJfdCBkZXZp
Y2VPcmllbnRhdGlvbiwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCwgRHluYW1p
Y1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKTsKICAgICBib29sIHNjYWxlV2FzU2V0QnlVSVByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3NjYWxlV2FzU2V0QnlVSVByb2Nlc3M7IH0KQEAgLTE1NTgsOSAr
MTU2MCwxMSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgdXBkYXRlVmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworICAgIHZvaWQgdXBkYXRlU2l6ZUZvckNTU0Rl
ZmF1bHRWaWV3cG9ydFVuaXRzKCk7CisgICAgdm9pZCB1cGRhdGVTaXplRm9yQ1NTU21hbGxWaWV3
cG9ydFVuaXRzKCk7CisgICAgdm9pZCB1cGRhdGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRz
KCk7CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6b3B0aW9uYWw8Rm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbj4gZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbigpOwogICAgIHZv
aWQgZ2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUpOwogICAgIHZvaWQgaGFuZGxlU3ludGhldGljQ2xpY2soV2ViQ29yZTo6Tm9kZSYgbm9k
ZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBsb2NhdGlvbiwg
T3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgV2ViQ29yZTo6UG9pbnRlcklE
ID0gV2ViQ29yZTo6bW91c2VQb2ludGVySUQpOwpAQCAtMjAwNSw2ICsyMDA5LDEwIEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fdXNlRml4ZWRMYXlvdXQgeyBmYWxzZSB9OwogCisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIG1fZGVmYXVsdFVub2JzY3VyZWRTaXplOworICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9t
YXhpbXVtVW5vYnNjdXJlZFNpemU7CisKICAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5Q29s
b3I7CiAKICNpZiBFTkFCTEUoVUlfUFJPQ0VTU19QREZfSFVEKQpAQCAtMjI5OCw4ICsyMzA2LDYg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IG1f
aW5pdGlhbFNlbGVjdGlvbjsKICAgICBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIG1fc3RvcmVk
U2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eSB7IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24oKSB9
OwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgaW50MzJfdCBt
X2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwogICAgIGJvb2wgbV9rZXlib2FyZElzQXR0YWNoZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggZmNjNWI3ZTAzNDI1ZDI4ZWM4ZTdiNjI0MmZkOGQ0NTJiMzFkNzJkYy4uODc4M2Ex
NmJjN2UzODg5Nzc4ZDUwYjY1ZDgxN2Q3ODhlN2M0YWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OSw4ICs0
OSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIE1vdXNlRXZl
bnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IHNhbmRib3hFeHRlbnNpb25zKQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91
dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIGRvdWJsZSBzY2FsZUZhY3RvciwgZG91Ymxl
IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkKLSAgICBTZXRNaW5pbXVtVW5vYnNjdXJlZFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0gICAgU2V0TWF4aW11bVVub2JzY3VyZWRTaXpl
KFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogICAgIFNldERldmljZU9yaWVudGF0aW9uKGludDMy
X3QgZGV2aWNlT3JpZW50YXRpb24pCiAgICAgU2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBhcmd1bWVudHMpCiAgICAg
RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUgdmlld0xheW91dFNp
emUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtVW5vYnNjdXJlZFNpemUsIFdlYkNvcmU6OkZs
b2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRF
eHBvc2VkQ29udGVudFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVj
dCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29v
cmRpbmF0ZXMsIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gdGFyZ2V0VW5vYnNjdXJlZFNhZmVB
cmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24sIGRvdWJs
ZSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgsIHVpbnQ2NF90IGR5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGVJRCkKQEAgLTI5NSw2ICsyOTMsMTEgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogICAgIFNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgU2V0Rml4ZWRMYXlvdXRT
aXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkKKworICAgIFNldERlZmF1bHRVbm9ic2N1cmVkU2l6
ZShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKyAgICBTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUo
V2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCisgICAgU2V0TWF4aW11bVVub2JzY3VyZWRTaXplKFdl
YkNvcmU6OkZsb2F0U2l6ZSBzaXplKQorCiAgICAgTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhP
cHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBsYXlvdXRNaWxlc3RvbmVzKQogICAg
IFNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0aW9ucykK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCBiYzNhOGVjNmE0Mzc0Y2M1Zjc3M2M3YjUwZDhjNDVkNmI5YWI1MWM3Li5jMzRl
ZmRkYmI2ZmYwYTRlNDgxYzNlNDk5NGUyYzMwMDZmMmI4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzU2NiwxOCAr
MzU2Niw2IEBAIHZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91
dFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBkb3ViCiAgICAgdmlld3BvcnRDb25maWd1cmF0
aW9uQ2hhbmdlZCh6b29tVG9Jbml0aWFsU2NhbGUpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldE1p
bmltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1Vbm9ic2N1cmVkU2l6
ZSkKLXsKLSAgICBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1pbmltdW1Vbm9ic2N1cmVkU2l6
ZTsKLSAgICB1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7Ci19Ci0KLXZv
aWQgV2ViUGFnZTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbWF4
aW11bVVub2JzY3VyZWRTaXplKQotewotICAgIG1fbWF4aW11bVVub2JzY3VyZWRTaXplID0gbWF4
aW11bVVub2JzY3VyZWRTaXplOwotICAgIHVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKTsKLX0KLQogdm9pZCBXZWJQYWdlOjpzZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90
IGRldmljZU9yaWVudGF0aW9uKQogewogICAgIGlmIChkZXZpY2VPcmllbnRhdGlvbiA9PSBtX2Rl
dmljZU9yaWVudGF0aW9uKQpAQCAtMzYzOSw2ICszNjI3LDcgQEAgdm9pZCBXZWJQYWdlOjpkeW5h
bWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIGNv
bnN0IFcKICAgICBpZiAoc2V0Rml4ZWRMYXlvdXRTaXplKG5ld0xheW91dFNpemUpKQogICAgICAg
ICByZXNldFRleHRBdXRvc2l6aW5nKCk7CiAKKyAgICBzZXREZWZhdWx0VW5vYnNjdXJlZFNpemUo
bWF4aW11bVVub2JzY3VyZWRTaXplKTsKICAgICBzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUobWlu
aW11bVVub2JzY3VyZWRTaXplKTsKICAgICBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUobWF4aW11
bVVub2JzY3VyZWRTaXplKTsKICAgICBtX3BhZ2UtPnNldFVub2JzY3VyZWRTYWZlQXJlYUluc2V0
cyh0YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMpOwpAQCAtMzk1OCw3ICszOTQ3LDkgQEAg
dm9pZCBXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKFpvb21Ub0luaXRpYWxT
Y2FsZSB6b29tVG9Jbml0aWFsU2NhbGUKIAogICAgIG1fcGFnZS0+c2V0Wm9vbWVkT3V0UGFnZVNj
YWxlRmFjdG9yKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpKTsKIAotICAg
IHVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKyAgICB1cGRhdGVTaXpl
Rm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKTsKKyAgICB1cGRhdGVTaXplRm9yQ1NTU21hbGxW
aWV3cG9ydFVuaXRzKCk7CisgICAgdXBkYXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygp
OwogCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbWFpbkZyYW1lVmlldygpOwogICAgIElu
dFBvaW50IHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCk7CkBAIC0z
OTg0LDIzICszOTc1LDYgQEAgdm9pZCBXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFu
Z2VkKFpvb21Ub0luaXRpYWxTY2FsZSB6b29tVG9Jbml0aWFsU2NhbGUKICAgICB9CiB9CiAKLXZv
aWQgV2ViUGFnZTo6dXBkYXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpCi17Ci0g
ICAgRmxvYXRTaXplIHNtYWxsZXN0VW5vYnNjdXJlZFNpemUgPSBtX21pbmltdW1Vbm9ic2N1cmVk
U2l6ZTsKLSAgICBpZiAoc21hbGxlc3RVbm9ic2N1cmVkU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAg
IHNtYWxsZXN0VW5vYnNjdXJlZFNpemUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3TGF5
b3V0U2l6ZSgpOwotCi0gICAgRmxvYXRTaXplIGxhcmdlc3RVbm9ic2N1cmVkU2l6ZSA9IG1fbWF4
aW11bVVub2JzY3VyZWRTaXplOwotICAgIGlmIChsYXJnZXN0VW5vYnNjdXJlZFNpemUuaXNFbXB0
eSgpKQotICAgICAgICBsYXJnZXN0VW5vYnNjdXJlZFNpemUgPSBtX3ZpZXdwb3J0Q29uZmlndXJh
dGlvbi52aWV3TGF5b3V0U2l6ZSgpOwotCi0gICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbWFp
bkZyYW1lVmlldygpOwotICAgIHNtYWxsZXN0VW5vYnNjdXJlZFNpemUuc2NhbGUoMSAvIG1fdmll
d3BvcnRDb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlnbm9yaW5nQ29udGVudFNpemUoKSk7Ci0g
ICAgbGFyZ2VzdFVub2JzY3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5pbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKCkpOwotICAgIGZyYW1lVmlldy5zZXRT
aXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKHNtYWxsZXN0VW5vYnNjdXJlZFNpemUpOwotICAg
IGZyYW1lVmlldy5zZXRTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKGxhcmdlc3RVbm9ic2N1
cmVkU2l6ZSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZl
KCkKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9u
IG9iamVjdDpuaWxdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDkyOWIyM2IyNmJlZTMxMmVhMGYxNjllZjNjYTU1OTgxYzZkNjE5MTkuLjkzNzli
ZWJjNjE2NjdkMTU0YjM1NTg2MmEyZjkxNjBiMDMyNmRiY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMi0wMy0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGBXS1dl
YlZpZXdgIEFQSSB0byBjb250cm9sIENTUyAic21hbGwgdmlld3BvcnQiIGBzdipgIGFuZCAibGFy
Z2Ugdmlld3BvcnQiIGBsdipgIHVuaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzc5NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg5NDM0Njk2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DU1NWaWV3cG9ydFVuaXRzLm1tOgorICAgICAg
ICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWluaW11bVZpZXdwb3J0SW5zZXQpOiBB
ZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5OZWdhdGl2ZU1heGltdW1WaWV3
cG9ydEluc2V0KTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWluaW11
bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5zZXQpOiBBZGRlZC4KKyAg
ICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRo
YW5GcmFtZSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1W
aWV3cG9ydEluc2V0TGFyZ2VyVGhhbkZyYW1lKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1Zp
ZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1Qu
Q1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldCk6IEFkZGVkLgorICAgICAgICAo
VEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20pOiBBZGRl
ZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdp
dGhab29tKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZp
ZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmll
d3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhXcml0aW5nTW9kZSk6IEFkZGVkLgor
ICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEZy
YW1lKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdw
b3J0SW5zZXRXaXRoRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0
cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKFRFU1Qu
Q1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhCb3VuZHMpOiBBZGRlZC4K
KyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhD
b250ZW50SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NYXhp
bXVtVmlld3BvcnRJbnNldFdpdGhDb250ZW50SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1Qu
Q1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cyk6
IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydElu
c2V0V2l0aFNhZmVBcmVhSW5zZXRzKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0
VW5pdHMuVW5vYnNjdXJlZFNpemVPdmVycmlkZXNJZ25vcmVNYXhpbXVtVmlld3BvcnRJbnNldEFQ
SSk6IEFkZGVkLgorCiAyMDIyLTAzLTE2ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KIAogICAgICAgICBTdXBwcmVzcyB3YXJuaW5ncyBmb3IgaW1wbGljaXQgY29udmVy
c2lvbiBmcm9tIHVuc2lnbmVkIGxvbmcgdG8gZG91YmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0KaW5kZXgg
NjdjOTZkZWY5MGEyMzBjZTA4ZjBkM2RiODRjMTQwM2U0ZGY2Yzg1My4uMTk2MTJhNjE0YjQwOWI4
OTkyZWJiYWVlOTAyM2RlYThkYTY1YWE5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9DU1NWaWV3cG9ydFVuaXRzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ1NTVmlld3BvcnRVbml0cy5tbQpAQCAtMTY5LDcg
KzE2OSw3ODIgQEAgVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBBbGxTYW1lKQogICAgIH0KIH0KIAor
I2lmIFVTRShBUFBLSVQpCisjZGVmaW5lIENvY29hRWRnZUluc2V0c01ha2UgTlNFZGdlSW5zZXRz
TWFrZQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBDb2NvYUVk
Z2VJbnNldHNNYWtlIFVJRWRnZUluc2V0c01ha2UKKyNlbmRpZgorCisjZGVmaW5lIENvY29hRWRn
ZUluc2V0c1plcm8gQ29jb2FFZGdlSW5zZXRzTWFrZSgwLCAwLCAwLCAwKQorCitURVNUKENTU1Zp
ZXdwb3J0VW5pdHMsIE5lZ2F0aXZlTWluaW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKworICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsK
KyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29j
b2FFZGdlSW5zZXRzTWFrZSgtMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0OkNv
Y29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICB9IEBjYXRjaCAoTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBkaWRUaHJvdyA9IHRydWU7CisgICAgfQorICAg
IEVYUEVDVF9UUlVFKGRpZFRocm93KTsKK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBOZWdh
dGl2ZU1heGltdW1WaWV3cG9ydEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAg
ICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1plcm8g
bWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgtMTIsIDIyLCAzMiwgNDIp
XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgeworICAgICAgICBkaWRU
aHJvdyA9IHRydWU7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGRpZFRocm93KTsKK30KKworVEVT
VChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5NYXhpbXVt
Vmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwor
CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmll
dyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIs
IDQyKSBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDExLCAyMSwgMzEs
IDQxKV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAg
ZGlkVGhyb3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9CisK
K1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRUaGFuTGFyZ2VyRnJh
bWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKworICAgIGJvb2wg
ZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgc2V0TWluaW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMTAwLCAyMTAwLCAzMTAwLCA0MTAw
KSBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQy
KV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgZGlk
VGhyb3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9CisKK1RF
U1QoQ1NTVmlld3BvcnRVbml0cywgTWF4aW11bVZpZXdwb3J0SW5zZXRUaGFuTGFyZ2VyRnJhbWUp
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKworICAgIGJvb2wgZGlk
VGhyb3cgPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgc2V0TWluaW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMjAwLCAyMjAwLCAzMjAwLCA0MjAwKV07
CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgZGlkVGhy
b3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9CisKK1RFU1Qo
Q1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJ
bnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDExLCAyMSwgMzEsIDQxKSBtYXhpbXVtVmlld3BvcnRJ
bnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisg
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9F
USg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1h
eCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZF
bGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVp
Z2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQor
fQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0KQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzWmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpD
b2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FU
X0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZp
IikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50
V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0g
aGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRo
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1h
eCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdp
ZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitU
RVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20pCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5p
bXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDExLCAyMSwgMzEsIDQxKSBtYXhp
bXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRV
bml0cyJdOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbd2ViVmlldyBzY3JvbGxW
aWV3XS56b29tU2NhbGUgPSAyOworI2VsaWYgUExBVEZPUk0oTUFDKQorICAgIFt3ZWJWaWV3IHNl
dEFsbG93c01hZ25pZmljYXRpb246WUVTXTsKKyAgICBbd2ViVmlldyBzZXRNYWduaWZpY2F0aW9u
OjJdOworI2VuZGlmCisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUw
MCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Zo
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWlu
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhl
ZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAg
ICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJm
aXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRI
ZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4
ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWF4aW11bVZpZXdw
b3J0SW5zZXRXaXRoWm9vbSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1pl
cm8gbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0
MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1Zp
ZXdwb3J0VW5pdHMiXTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW3dlYlZpZXcg
c2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBbd2Vi
VmlldyBzZXRBbGxvd3NNYWduaWZpY2F0aW9uOllFU107CisgICAgW3dlYlZpZXcgc2V0TWFnbmlm
aWNhdGlvbjoyXTsKKyNlbmRpZgorCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRp
b25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3Vi
bGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsK
KyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZp
ZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VR
KGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAg
ICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FU
X0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmlt
dW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29j
b2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29j
b2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuc3R5bGUud3JpdGluZ01vZGUgPSAndmVydGljYWwtbHInIl07CisKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisK
KyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQo
d2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRP
ZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAg
ICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOwor
ICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NT
Vmlld3BvcnRVbml0cywgTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5p
bXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0
OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnN0eWxlLndyaXRpbmdNb2RlID0gJ3ZlcnRpY2FsLWxyJyJdOworCisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2
bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikp
OworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0
aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVp
Z2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsK
KyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNU
KENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lKQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5p
dHMiXTsKKworICAgIFt3ZWJWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjIwLCA0MDAp
XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgxNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDE1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MzU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDE1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDM1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3
aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBm
aXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxP
QVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOwor
ICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNYXhpbXVtVmlld3BvcnRJbnNldFdp
dGhGcmFtZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3
ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1plcm8gbWF4aW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5p
dHMiXTsKKworICAgIFt3ZWJWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjIwLCA0MDAp
XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgxNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDE1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NDAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDIyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3
aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBm
aXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxP
QVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOwor
ICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldFdp
dGhCb3VuZHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBb
d2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDExLCAy
MSwgMzEsIDQxKSBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAy
MiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgW3dlYlZpZXcgc2V0Qm91bmRzOkNHUmVjdE1h
a2UoNTAsIDYwLCAzMjAsIDUwMCldOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50
YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
c3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBk
b3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQi
KTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdl
YlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FU
X0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1h
eGltdW1WaWV3cG9ydEluc2V0V2l0aEJvdW5kcykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29h
RWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgx
MiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHNldEJvdW5kczpDR1Jl
Y3RNYWtlKDUwLCA2MCwgMzIwLCA1MDApXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIp
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAg
ICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZp
eGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJ
RCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRo
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikp
OworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdo
dCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVD
VF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZi
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQ29u
dGVudEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAg
W3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwg
MjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwg
MjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1l
ZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmNvbnRl
bnRJbnNldCA9IENvY29hRWRnZUluc2V0c01ha2UoNTAsIDYwLCA3MCwgODApOworCisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FU
X0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZp
IikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50
V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0g
aGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRo
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1h
eCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdp
ZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitU
RVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNl
dCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3
IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdw
b3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsK
KworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmNvbnRlbnRJbnNldCA9IENvY29hRWRnZUluc2V0
c01ha2UoNTAsIDYwLCA3MCwgODApOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50
YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
c3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBk
b3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQi
KTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdl
YlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FU
X0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1p
bmltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5z
ZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5z
ZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAg
IGF1dG8gdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10g
aW5pdF0pOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRBZGRpdGlvbmFsU2FmZUFyZWFJbnNldHM6
Q29jb2FFZGdlSW5zZXRzTWFrZSg1MCwgNjAsIDcwLCA4MCldOworICAgIFt2aWV3Q29udHJvbGxl
ciBzZXRWaWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1
OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAg
ICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4
ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElE
KHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIi
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMs
IE1heGltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0
SW5zZXQ6Q29jb2FFZGdlSW5zZXRzWmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJ
bnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgYXV0byB2aWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAg
W3ZpZXdDb250cm9sbGVyIHNldEFkZGl0aW9uYWxTYWZlQXJlYUluc2V0czpDb2NvYUVkZ2VJbnNl
dHNNYWtlKDUwLCA2MCwgNzAsIDgwKV07CisgICAgW3ZpZXdDb250cm9sbGVyIHNldFZpZXc6d2Vi
Vmlldy5nZXQoKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUw
MCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Zo
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWlu
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhl
ZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAg
ICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJm
aXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRI
ZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4
ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgVW5vYnNjdXJlZFNp
emVPdmVycmlkZXNJZ25vcmVNaW5pbXVtVmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAg
ICBbd2ViVmlldyBfb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXpl
OkNHU2l6ZU1ha2UoMTAuNSwgMjAuNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
eGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOkNHU2l6ZU1ha2UoMzAuNSwgNDAuNSldOworCisg
ICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg0MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDEwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1p
biIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuNSwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMw
LjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4
ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAg
ICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAi
Zml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVk
SGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJk
dm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZp
eGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIFVub2JzY3VyZWRT
aXplT3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJ
bnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUlu
c2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBfb3Zl
cnJpZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOkNHU2l6ZU1ha2UoMTAu
NSwgMjAuNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1Vbm9ic2N1cmVk
U2l6ZU92ZXJyaWRlOkNHU2l6ZU1ha2UoMzAuNSwgNDAuNSldOworCisgICAgW3dlYlZpZXcgd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9F
USg0MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1h
eCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjUsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9F
USgxMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRo
T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVk
SGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAg
ICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAg
ICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9F
UShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAg
fQorfQogCiBURVNUKENTU1ZpZXdwb3J0VW5pdHMsIEVtcHR5VW5vYnNjdXJlZFNpemVPdmVycmlk
ZXMpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455257</attachid>
            <date>2022-03-21 11:33:42 -0700</date>
            <delta_ts>2022-03-21 17:29:37 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237979-20220321123341.patch</filename>
            <type>text/plain</type>
            <size>100487</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwOTlmYjJiZmYyZDdiNTlhZjUwZmNjZjhhYmVmNmVhNmZmODgzN2UzLi43
ZGJiOTAxYTQxOGFlM2I1NTQ0Y2ExYWEwNmE3ZWVmYWZhZWFkZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8gY29udHJvbCBDU1MgInNtYWxsIHZp
ZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTc5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogQ1NTVmlld3BvcnRVbml0cy5OZWdhdGl2ZU1pbmltdW1W
aWV3cG9ydEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWF4
aW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11
bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAg
ICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuRnJhbWUK
KyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRMYXJn
ZXJUaGFuRnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdw
b3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0
SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5z
ZXRXaXRoWm9vbQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3Bv
cnRJbnNldFdpdGhab29tCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1W
aWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVu
aXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlCisgICAgICAgICAgICAgICBD
U1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lCisgICAgICAgICAg
ICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lCisgICAg
ICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEJvdW5k
cworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdp
dGhCb3VuZHMKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0
SW5zZXRXaXRoQ29udGVudEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1h
eGltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmll
d3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cworICAgICAg
ICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJl
YUluc2V0cworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlc0lnbm9yZU1heGltdW1WaWV3cG9ydEluc2V0QVBJCisKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmVuYWJsZUF1dG9TaXplTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0U2l6ZUZvckNTU0RlZmF1
bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om92
ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0RlZmF1bHRWaWV3
cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om92ZXJyaWRl
U2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyBjb25zdCk6IFJlbmFt
ZWQgZnJvbSBgc2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzYC4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6Y29weUNTU1ZpZXdwb3J0VW5pdHMgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgQWRkIGFsbCB0aGUgdmFyaW91cyBtZXRob2RzIGZvciBnZXR0aW5nL3NldHRpbmcvb3ZlcnJp
ZGluZy9jbGVhcmluZyBhbiBvdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgQ1NTICJkZWZhdWx0
IHZpZXdwb3J0IiBgdipgIHVuaXRzLiBUaGlzIGFsbG93cyBmb3IgYFdLV2ViVmlld2AgY2xpZW50
cyB0byBwcmVzZXJ2ZSBleGlzdGluZworICAgICAgICBiZWhhdmlvciAod2hlcmUgQ1NTICJkZWZh
dWx0IHZpZXdwb3J0IiBgdipgIHVuaXRzIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBgV0tXZWJWaWV3
YCkgd2hpbGUKKyAgICAgICAgYWRkaW5nIHN1cHBvcnRpbmcgQ1NTICJzbWFsbCB2aWV3cG9ydCIg
YHN2KmAgdW5pdHMgYW5kIENTUyAibGFyZ2Ugdmlld3BvcnQiIGBsdipgIHVuaXRzLgorCiAyMDIy
LTAzLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NT
IENvbnRhaW5lciBRdWVyaWVzXSBFbnN1cmUgY29udGFpbmVyIHN0eWxlIGNoYW5nZXMgYXJlIHBy
b3BhZ2F0ZWQgdG8gZGVzY2VuZGFudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzVjMGFmZTZhNjk4ZjM4MDQyMDQz
M2U4NmRiYjM5ZjAzYzcwMDJkMi4uNzgxY2Y5MjI3ODdlYjA0ZGFiNjhlZmE2ZWNhOGQwZmNkMmQy
MmIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzEgQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8g
Y29udHJvbCBDU1MgInNtYWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBg
bHYqYCB1bml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3OTc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWNlbnRseSB0aGUgVzNDIENT
UyB3b3JraW5nIGdyb3VwIGFkZGVkIFtzb21lIG5ldyB1bml0IHR5cGVzIHRvIENTU10oaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMtNC8jdmlld3BvcnQtdmFyaWFudHMpCisgICAg
ICAgIHdpdGggdGhlIGdvYWwgb2YgaGVscGluZyB3ZWIgZGV2ZWxvcGVycyBiZXR0ZXIgZGVhbCB3
aXRoIGJyb3dzZXJzIHRoYXQgaGF2ZSBkeW5hbWljIFVJCisgICAgICAgIGVsZW1lbnRzIHRoYXQg
Y2hhbmdlIGFwcGVyYW5jZS9zaXplL2V0Yy4gYmFzZWQgb24gdXNlciBhY3Rpb25zIChlLmcuIHRo
ZSBVUkwgYmFyCisgICAgICAgIGNvbGxhcHNpbmcvInNxdWlzaGluZyIgYW5kIGV4cGFuZGluZy8i
dW5zcXVpc2hpbmciIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyIGhhcyBtb3N0CisgICAg
ICAgIHJlY2VudGx5IHNjcm9sbGVkL3N3aXBlZCBkb3duIHRoZSBwYWdlKS4KKworICAgICAgICBU
aGVzZSBuZXcgdW5pdHMgY29tZSBpbiB0aHJlZSBjYXRlZ29yaWVzOgorICAgICAgICAtIHRoZSAi
bGFyZ2Ugdmlld3BvcnQiIHVuaXRzIChgbHZ3YCwgYGx2aGAsIGV0Yy4pIGVhY2ggcmVwcmVzZW50
IDElIG9mIG9uZSBkaW1lbnNpb24gb2YgdGhlCisgICAgICAgICAgc2l6ZSBvZiB0aGUgdmlzdWFs
IGFyZWEgb2YgdGhlIHBhZ2Ugd2hlbiBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4gdGhl
aXIgc21hbGxlc3QKKyAgICAgICAgICBzdGF0ZSAoZS5nLiB3aGVuIHRoZSBVUkwgYmFyIGlzIGNv
bGxhcHNlZC8ic3F1aXNoZWQiKQorICAgICAgICAtIHRoZSAic21hbGwgdmlld3BvcnQiIHVuaXRz
IChgc3Z3YCwgYHN2aGAsIGV0Yy4pIGVhY2ggcmVwcmVzZW50IDElIG9mIG9uZSBkaW1lbnNpb24g
b2YgdGhlCisgICAgICAgICAgc2l6ZSBvZiB0aGUgdmlzdWFsIGFyZWEgb2YgdGhlIHBhZ2Ugd2hl
biBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4gdGhlaXIgbGFyZ2VzdAorICAgICAgICAg
IHN0YXRlIChlLmcuIHdoZW4gdGhlIFVSTCBiYXIgaXMgZXhwYW5kZWQvInVuc3F1aXNoZWQiKQor
ICAgICAgICAtIHRoZSAiZHluYW1pYyB2aWV3cG9ydCIgdW5pdHMgKGBkdndgLCBgZHZoYCwgZXRj
LikgZWFjaCByZXByZXNlbnQgMSUgb2Ygb25lIGRpbWVuc2lvbiBvZgorICAgICAgICAgIHRoZSBz
aXplIG9mIHRoZSBjdXJyZW50IHZpc3VhbCBhcmVhIG9mIHRoZSBwYWdlLCB3aGljaCBkZXBlbmRz
IG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbAorICAgICAgICAgIGJyb3dzZXIgVUkgZWxlbWVu
dHMKKworICAgICAgICBUaGlzIHdheSwgZGV2ZWxvcGVyIGNvdWxkIHVzZSBgMTAwc3ZoYCB0byBl
bnN1cmUgdGhhdCBubyBtYXR0ZXIgd2hhdCBzdGF0ZSB0aGUgYnJvd3NlciBVSQorICAgICAgICBl
bGVtZW50cyBhcmUgaW4gdGhlIGVudGlyZSBlbGVtZW50IHdpbGwgYWx3YXlzIGJlIHZpc2libGUg
b24gdGhlIHNjcmVlbiwgb3IgdXNlIGAxMDBkdmhgIHRvCisgICAgICAgIHJlc3BvbmQgdG8gYnJv
d3NlciBVSSBlbGVtZW50IGNoYW5nZXMgYnkgYXV0b21hdGljYWxseSByZXNpemluZyB2YXJpb3Vz
IGVsZW1lbnRzIHRvIGFsd2F5cworICAgICAgICBmdWxseSB0YWtlIGFkdmFudGFnZSBvZiB0aGUg
YXZhaWxhYmxlIHNwYWNlLgorCisgICAgICAgIE5vdGhpbmcgbmVlZHMgdG8gYmUgYWRkZWQgdG8g
c3VwcG9ydCAiZHluYW1pYyB2aWV3cG9ydCIgYGR2KmAgdW5pdHMgYXMgdGhlcmUgYWxyZWFkeSBl
eGlzdHMKKyAgICAgICAgb3RoZXIgbWV0aG9kcyB0byBhZGp1c3QgdGhlIHZpc3VhbCBhcmVhIG9m
IHRoZSBgV0tXZWJWaWV3YCB3aXRob3V0IGFkanVzdGluZyBpdHMgYGZyYW1lYAorICAgICAgICAo
ZS5nLiBgLVtXS1dlYlZpZXcgc2V0Qm91bmRzOl1gLCBgLVtVSVNjcm9sbFZpZXcgc2V0Q29udGVu
dEluc2V0Ol1gLCBldGMuKS4KKworICAgICAgICBCdXQgZm9yICJzbWFsbCB2aWV3cG9ydCIgYHN2
KmAgdW5pdHMgYW5kICJsYXJnZSB2aWV3cG9ydCIgYGx2KmAgdW5pdHMsIGhvd2V2ZXIsIHRoZXJl
IGlzCisgICAgICAgIHVuZm9ydHVuYXRlbHkgbm8gd2F5IHRvIHRlbGwgYSBgV0tXZWJWaWV3YCBh
bnl0aGluZyBsaWtlICJ0aGlzIGlzIHRoZSBzbWFsbGVzdC9sYXJnZXN0IHRoYXQKKyAgICAgICAg
dGhpcyBgV0tXZWJWaWV3YCB3aWxsIGV2ZXIgYmUiLCBzbyB0aGVyZSdzIG5vIHdheSB0byBrbm93
IGFoZWFkIG9mIHRpbWUgd2hhdCB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdmlzdWFsIGFyZWEg
d291bGQgYmUgd2hlbiBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4gdGhlaXIgc21hbGxl
c3QvbGFyZ2VzdCBzdGF0ZS4gQXMKKyAgICAgICAgc3VjaCwgdGhpcyBwYXRjaCBhZGRzIGEgbmV3
IEFQSSB0byBhbGxvdyBmb3IgYFdLV2ViVmlld2AgY2xpZW50cyB0byB0ZWxsIFdlYktpdCB0aGlz
CisgICAgICAgIGluZm9ybWF0aW9uIGFoZWFkIG9mIHRpbWUuCisKKyAgICAgICAgTm90ZSB0aGF0
IHRoZXJlIGFscmVhZHkgZXhpc3RzIHRoZSBjb25jZXB0IG9mICJkZWZhdWx0IHZpZXdwb3J0IiB1
bml0cyAoYHZ3YCwgYHZoYCwgZXRjLikKKyAgICAgICAgdGhhdCBlYWNoIHJlcHJlc2VudCAxJSBv
ZiBvbmUgZGltZW5zaW9uIG9mIHRoZSBzaXplIG9mIHRoZSB2aXN1YWwgYXJlYSBvZiB0aGUgcGFn
ZSB3aGVuIGFsbAorICAgICAgICBicm93c2VyIFVJIGVsZW1lbnRzIGFyZSBpbiB0aGVpciBkZWZh
dWx0IHN0YXRlLiBUaGUgYmVoYXZpb3Igb2YgdGhlc2UgdW5pdHMgcmVtYWluIHRoZSBzYW1lLAor
ICAgICAgICBhbmQgdGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIHZpYSB0aGUgZXhpc3RpbmcgYC1b
V0tXZWJWaWV3IHNldEZyYW1lOl1gLgorCisgICAgICAgIFRlc3RzOiBDU1NWaWV3cG9ydFVuaXRz
Lk5lZ2F0aXZlTWluaW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0
VW5pdHMuTmVnYXRpdmVNYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmll
d3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5NYXhpbXVtVmlld3BvcnRJ
bnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNl
dExhcmdlclRoYW5GcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVt
Vmlld3BvcnRJbnNldExhcmdlclRoYW5GcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRV
bml0cy5NaW5pbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0
cy5NYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5N
aW5pbXVtVmlld3BvcnRJbnNldFdpdGhab29tCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVu
aXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20KKyAgICAgICAgICAgICAgIENTU1ZpZXdw
b3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUKKyAgICAgICAgICAg
ICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUK
KyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRo
RnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5z
ZXRXaXRoRnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdw
b3J0SW5zZXRXaXRoQm91bmRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGlt
dW1WaWV3cG9ydEluc2V0V2l0aEJvdW5kcworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0
cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhDb250ZW50SW5zZXQKKyAgICAgICAgICAgICAgIENT
U1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVudEluc2V0CisgICAg
ICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVB
cmVhSW5zZXRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9y
dEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRz
LlVub2JzY3VyZWRTaXplT3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0SW5zZXRBUEkKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3JlY2FsY3Vs
YXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDptYXhpbXVtVmlld3BvcnRJ
bnNldDp0aHJvd09uSW52YWxpZElucHV0Ol0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3
IHNldE1pbmltdW1WaWV3cG9ydEluc2V0Om1heGltdW1WaWV3cG9ydEluc2V0Ol0pOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfcHJvY2Vzc1dpbGxTd2FwT3JEaWRFeGl0XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZnJhbWVPckJvdW5kc0NoYW5nZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRD
b21wbGV0ZUFuaW1hdGVkUmVzaXplXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11
bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWF4
aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYmVn
aW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Rp
c3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2Rpc3BhdGNoU2V0TWF4aW11bVVub2JzY3VyZWRTaXplOl0pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IHNldEZyYW1lU2l6ZTpdKToKKyAgICAgICAgUmVjYWxjdWxhdGUgdGhlIHNpemUg
Zm9yIENTUyAic21hbGwgdmlld3BvcnQiIGBzdipgIHVuaXRzIHdoZW5ldmVyIHRoZSBgZnJhbWVg
IGNoYW5nZXMuIEFsc28KKyAgICAgICAgbW92ZSB0aGUgZGVkdXBsaWNhdGlvbiBsb2dpYyB0aGF0
IHByZXZlbnRzIHRoZSBzYW1lIHZhbHVlIGZyb20gYmVpbmcgc2VudCB0byB0aGUgV2ViUHJvY2Vz
cworICAgICAgICBtb3JlIHRoYW4gb25jZSB0byB0aGUgc2V0dGVyIG1ldGhvZHMgb24gYFdlYlBh
Z2VQcm94eWAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBieSBtb3JlIHRoYW4KKyAgICAgICAganVz
dCBpT1Mtb25seSBjb2RlcGF0aHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRT
aXplKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9i
c2N1cmVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0RGVmYXVsdFVub2JzY3Vy
ZWRTaXplKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1pbmltdW1Vbm9i
c2N1cmVkU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNYXhpbXVt
VW5vYnNjdXJlZFNpemUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
U2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0
cyk6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1heGltdW1Vbm9ic2N1cmVk
U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOiBEZWxldGVkLgorICAgICAgICBBZGQgYWxsIHRoZSB2
YXJpb3VzIG1ldGhvZHMgZm9yIGdldHRpbmcvc2V0dGluZy9vdmVycmlkaW5nL2NsZWFyaW5nIGFu
IG92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICBDU1MgImRlZmF1bHQgdmlld3BvcnQiIGB2KmAg
dW5pdHMuIFRoaXMgYWxsb3dzIGZvciBgV0tXZWJWaWV3YCBjbGllbnRzIHRvIHByZXNlcnZlIGV4
aXN0aW5nCisgICAgICAgIGJlaGF2aW9yICh3aGVyZSBDU1MgImRlZmF1bHQgdmlld3BvcnQiIGB2
KmAgdW5pdHMgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGBXS1dlYlZpZXdgKSB3aGlsZQorICAgICAg
ICBhZGRpbmcgc3VwcG9ydGluZyBDU1MgInNtYWxsIHZpZXdwb3J0IiBgc3YqYCB1bml0cyBhbmQg
Q1NTICJsYXJnZSB2aWV3cG9ydCIgYGx2KmAgdW5pdHMuCisgICAgICAgIE1vdmUgaU9TLW9ubHkg
Y29kZSB0byBiZSBmb3IgYWxsIHBsYXRmb3Jtcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6Cisg
ICAgICAgIFByb3BhZ2F0ZSBhbGwgdmlld3BvcnQgc2l6ZSBvdmVycmlkZXMgd2hlbiBhIG5ldyBg
RnJhbWVWaWV3YCBpcyBjcmVhdGVkLgorCiAyMDIyLTAzLTE4ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCBjOWY1ZDQ4ZGNiNDZjODI0YzgxZTI4NjY2M2FmYjcxYTRhNTUy
ZGI0Li4yOTVkYzA4ZTY1ZGMwODU2MWVlNGM0NjEyOTM3ZTkzOTJhNGU5ZWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNjI0LDYgKzM2MjQsNyBAQCB2b2lkIEZyYW1lVmlldzo6
cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSgpCiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUxh
eW91dCgpOwogICAgIH07CiAKKyAgICByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0RlZmF1bHRW
aWV3cG9ydFVuaXRzKCk7CiAgICAgcmVzZXRPdmVycmlkZGVuV2lkdGhGb3JDU1NTbWFsbFZpZXdw
b3J0VW5pdHMoKTsKICAgICByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0xhcmdlVmlld3BvcnRV
bml0cygpOwogCkBAIC0zNjg2LDYgKzM2ODcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVNp
emVUb0NvbnRlbnRBdXRvU2l6ZSgpCiAgICAgICAgIHJlc2l6ZShuZXdTaXplLndpZHRoKCksIGkg
PyBuZXdTaXplLmhlaWdodCgpIDogbWluQXV0b1NpemUuaGVpZ2h0KCkpOwogICAgICAgICAvLyBQ
cm90ZWN0IHRoZSBjb250ZW50IGZyb20gZXZlcmdyb3dpbmcgbGF5b3V0LgogICAgICAgICBhdXRv
IHByZWZlcnJlZFZpZXdwb3J0V2lkdGggPSBzdGQ6Om1pbihuZXdTaXplLndpZHRoKCksIG1fYXV0
b1NpemVDb25zdHJhaW50LndpZHRoKCkpOworICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NTRGVm
YXVsdFZpZXdwb3J0VW5pdHMocHJlZmVycmVkVmlld3BvcnRXaWR0aCk7CiAgICAgICAgIG92ZXJy
aWRlV2lkdGhGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMocHJlZmVycmVkVmlld3BvcnRXaWR0aCk7
CiAgICAgICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMocHJlZmVycmVk
Vmlld3BvcnRXaWR0aCk7CiAgICAgICAgIC8vIEZvcmNlIHRoZSBzY3JvbGxiYXIgc3RhdGUgdG8g
YXZvaWQgdGhlIHNjcm9sbGJhciBjb2RlIGFkZGluZyB0aGVtIGFuZCBjYXVzaW5nIHRoZW0gdG8g
YmUgbmVlZGVkLiBGb3IgZXhhbXBsZSwKQEAgLTQ3NjcsMTEgKzQ3NjksMTMgQEAgdm9pZCBGcmFt
ZVZpZXc6OmVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZSwgY29uc3QgSW50U2l6ZSYgdmll
d1NpemUsIEF1dG9TaXoKICAgICBzZXROZWVkc0xheW91dEFmdGVyVmlld0NvbmZpZ3VyYXRpb25D
aGFuZ2UoKTsKICAgICBsYXlvdXRDb250ZXh0KCkuc2NoZWR1bGVMYXlvdXQoKTsKICAgICBpZiAo
bV9zaG91bGRBdXRvU2l6ZSkgeworICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NTRGVmYXVsdFZp
ZXdwb3J0VW5pdHMobV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSk7CiAgICAgICAgIG92ZXJy
aWRlV2lkdGhGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMobV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lk
dGgoKSk7CiAgICAgICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMobV9h
dXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBjbGVhclNpemVPdmVycmlkZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCk7CiAgICAgY2xl
YXJTaXplT3ZlcnJpZGVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKTsKICAgICBjbGVhclNpemVP
dmVycmlkZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpOwogICAgIC8vIFNpbmNlIGF1dG9zaXpl
IG1vZGUgZm9yY2VzIHRoZSBzY3JvbGxiYXIgbW9kZSwgY2hhbmdlIHRoZW0gdG8gYmVpbmcgYXV0
by4KQEAgLTU2MDIsNiArNTYwNiw0NyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRS
ZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAgICAgfQogfQog
Cit2b2lkIEZyYW1lVmlldzo6Y2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3BvcnRV
bml0cygpCit7CisgICAgaWYgKCFtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUgPSBzdGQ6Om51
bGxvcHQ7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpKQorICAg
ICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVu
dCgpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2V0U2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVu
aXRzKEZsb2F0U2l6ZSBzaXplKQoreworICAgIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3
cG9ydFVuaXRzKHsgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpIH0pOworfQorCit2b2lkIEZy
YW1lVmlldzo6b3ZlcnJpZGVXaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKGZsb2F0IHdp
ZHRoKQoreworICAgIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKHsgd2lk
dGgsIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID8gbV9kZWZhdWx0Vmlld3BvcnRTaXpl
T3ZlcnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKK30KKwordm9pZCBGcmFtZVZpZXc6
OnJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKQoreworICAg
IG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKHsgeyB9LCBtX2RlZmF1bHRW
aWV3cG9ydFNpemVPdmVycmlkZSA/IG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlLT5oZWln
aHQgOiBzdGQ6Om51bGxvcHQgfSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpvdmVycmlkZVNpemVG
b3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSBzaXplKQorewor
ICAgIGlmIChtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSAmJiAqbV9kZWZhdWx0Vmlld3Bv
cnRTaXplT3ZlcnJpZGUgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0
Vmlld3BvcnRTaXplT3ZlcnJpZGUgPSBzaXplOworCisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0g
ZnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmRpZENo
YW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOworfQorCitGbG9hdFNpemUgRnJhbWVWaWV3Ojpz
aXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKSBjb25zdAoreworICAgIHJldHVybiBjYWxj
dWxhdGVTaXplRm9yQ1NTVmlld3BvcnRVbml0c092ZXJyaWRlKG1fZGVmYXVsdFZpZXdwb3J0U2l6
ZU92ZXJyaWRlKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OmNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NT
U21hbGxWaWV3cG9ydFVuaXRzKCkKIHsKICAgICBpZiAoIW1fc21hbGxWaWV3cG9ydFNpemVPdmVy
cmlkZSkKQEAgLTU3MTYsOSArNTc2MSwxMSBAQCBGbG9hdFNpemUgRnJhbWVWaWV3OjpzaXplRm9y
Q1NTRHluYW1pY1ZpZXdwb3J0VW5pdHMoKSBjb25zdAogICAgIHJldHVybiByZWN0Rm9yRml4ZWRQ
b3NpdGlvbkxheW91dCgpLnNpemUoKTsKIH0KIAotRmxvYXRTaXplIEZyYW1lVmlldzo6c2l6ZUZv
ckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCkgY29uc3QKK3ZvaWQgRnJhbWVWaWV3Ojpjb3B5Q1NT
Vmlld3BvcnRVbml0cyhGcmFtZVZpZXcmIHZpZXcpCiB7Ci0gICAgcmV0dXJuIHNpemVGb3JDU1NM
YXJnZVZpZXdwb3J0VW5pdHMoKTsKKyAgICBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA9
IHZpZXcubV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGU7CisgICAgbV9zbWFsbFZpZXdwb3J0
U2l6ZU92ZXJyaWRlID0gdmlldy5tX3NtYWxsVmlld3BvcnRTaXplT3ZlcnJpZGU7CisgICAgbV9s
YXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlID0gdmlldy5tX2xhcmdlVmlld3BvcnRTaXplT3ZlcnJp
ZGU7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25M
ZWZ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDYwMmQ2MGM5Yzk3MDU1ZjY0
OGNhNDhmZmZiZjljNDJiNWMxNmY5MzMuLjU4NzZlN2VjZDBlZTNjM2QwYWM5NWRmNWNiMzQzOWU0
MDgwNjRlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjI4LDYgKzIyOCwxMCBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkanVzdFZpZXdTaXplKCk7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhG
bG9hdFNpemUpOworICAgIHZvaWQgY2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3Bv
cnRVbml0cygpOworICAgIEZsb2F0U2l6ZSBzaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMo
KSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2l6ZUZvckNTU1NtYWxsVmll
d3BvcnRVbml0cyhGbG9hdFNpemUpOwogICAgIHZvaWQgY2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NT
bWFsbFZpZXdwb3J0VW5pdHMoKTsKICAgICBGbG9hdFNpemUgc2l6ZUZvckNTU1NtYWxsVmlld3Bv
cnRVbml0cygpIGNvbnN0OwpAQCAtMjM4LDcgKzI0Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0
U2l6ZSBzaXplRm9yQ1NTRHluYW1pY1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIAotICAgIEZsb2F0
U2l6ZSBzaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNvcHlDU1NWaWV3cG9ydFVuaXRzKEZyYW1lVmlldyYpOwogCiAgICAgSW50
UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIElu
dFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxl
bWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7CkBAIC04NjcsNiArODcxLDEw
IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBGbG9hdFNpemUgY2FsY3VsYXRlU2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHNPdmVycmlkZShzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPikg
Y29uc3Q7CiAKKyAgICB2b2lkIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRz
KE92ZXJyaWRlVmlld3BvcnRTaXplKTsKKyAgICB2b2lkIG92ZXJyaWRlV2lkdGhGb3JDU1NEZWZh
dWx0Vmlld3BvcnRVbml0cyhmbG9hdCk7CisgICAgdm9pZCByZXNldE92ZXJyaWRkZW5XaWR0aEZv
ckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCk7CisKICAgICB2b2lkIG92ZXJyaWRlU2l6ZUZvckNT
U1NtYWxsVmlld3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBvdmVy
cmlkZVdpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKGZsb2F0KTsKICAgICB2b2lkIHJlc2V0
T3ZlcnJpZGRlbldpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCk7CkBAIC05NDQsNiArOTUy
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fY3VzdG9tU2l6ZUZv
clJlc2l6ZUV2ZW50OwogI2VuZGlmCiAKKyAgICBzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3Bv
cnRTaXplPiBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PE92ZXJyaWRlVmlld3BvcnRTaXplPiBtX3NtYWxsVmlld3BvcnRTaXplT3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxPdmVycmlkZVZpZXdwb3J0U2l6ZT4gbV9sYXJnZVZpZXdwb3J0U2l6ZU92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IGVjNDM5ZDA2NzE0ZTZkZTViOTRlMjFmYjljZThlZTIzOWM5NjIy
ZmEuLjExYWEzZTRiNWUyODUyNjg4YmExYWJiZjY3ZDE0YmU0OWM0NDM4NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC00
NCw2ICs0NCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAg
ICAgZW5jb2RlciA8PCB1c2VGaXhlZExheW91dDsKICAgICBlbmNvZGVyIDw8IGZpeGVkTGF5b3V0
U2l6ZTsKKyAgICBlbmNvZGVyIDw8IGRlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKyAgICBlbmNvZGVy
IDw8IG1pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1heGltdW1Vbm9ic2N1
cmVkU2l6ZTsKICAgICBlbmNvZGVyIDw8IHZpZXdFeHBvc2VkUmVjdDsKICAgICBlbmNvZGVyIDw8
IGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyOwogICAgIGVuY29kZXIgPDwgYWx3YXlzU2hv
d3NWZXJ0aWNhbFNjcm9sbGVyOwpAQCAtMTAyLDggKzEwNSw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IGF2YWlsYWJsZVNjcmVlblNpemU7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZVNj
cmVlblNpemU7CiAgICAgZW5jb2RlciA8PCB0ZXh0QXV0b3NpemluZ1dpZHRoOwotICAgIGVuY29k
ZXIgPDwgbWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIGVuY29kZXIgPDwgbWF4aW11bVVub2Jz
Y3VyZWRTaXplOwogICAgIGVuY29kZXIgPDwgZGV2aWNlT3JpZW50YXRpb247CiAgICAgZW5jb2Rl
ciA8PCBrZXlib2FyZElzQXR0YWNoZWQ7CiAgICAgZW5jb2RlciA8PCBjYW5TaG93V2hpbGVMb2Nr
ZWQ7CkBAIC0yMjUsNiArMjI2LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmZpeGVkTGF5b3V0U2l6ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRVbm9ic2N1cmVkU2l6ZSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpv
bnRhbFNjcm9sbGVyKSkKQEAgLTM2NiwxMCArMzczLDYgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudGV4dEF1dG9zaXppbmdXaWR0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1pbmltdW1Vbm9ic2N1
cmVkU2l6ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRldmlj
ZU9yaWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMua2V5Ym9hcmRJc0F0dGFjaGVkKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjYjc0MTY5
M2RiMzBhNzUwMmI0ODljODM5N2NlZjZjNzM5ZmVkYTkxLi45MGU1Y2VhNTIyZTVmNDE3NDM2ZTM3
ZjM0ZTgxZTkzZTdiZmNlYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04NCw2ICs4NCwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dDsKICAgICBXZWJDb3Jl
OjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZTsKIAorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWZh
dWx0VW5vYnNjdXJlZFNpemU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1pbmltdW1Vbm9ic2N1
cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplOwor
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdDsK
IAogICAgIGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXI7CkBAIC0xNjIsOCArMTY2
LDYgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdmVy
cmlkZVNjcmVlblNpemU7CiAgICAgZmxvYXQgdGV4dEF1dG9zaXppbmdXaWR0aDsKLSAgICBXZWJD
b3JlOjpGbG9hdFNpemUgbWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlv
biB7IDAgfTsKICAgICBib29sIGtleWJvYXJkSXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IDVkOWU4NmM3ZTYxODk5NzA0N2ZiYTE2ZmUy
YWJkM2VjOTBkYzQ3OTMuLjNkOGQwNTc5YmJkNzMyMGNiM2YyYTVlMjAyNzNkYjdhOTI3OWZhZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAg
LTYyMSw2ICs2MjEsMjkgQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJB
cmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKICAqLwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0Z1bGxzY3JlZW5TdGF0ZSBmdWxsc2NyZWVuU3RhdGUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAor
LyohIEBhYnN0cmFjdCBJbnNldHMgZnJvbSB0aGUgQGxpbmsgZnJhbWUgQC9saW5rIHRoYXQgcmVw
cmVzZW50IHRoZSBzbWFsbGVzdCBhbmQgbGFyZ2VzdCBwb3NzaWJsZSBzaXplIG9mIHRoZQorIHZp
c3VhbCBhcmVhIG9mIHRoZSBAbGluayBXS1dlYlZpZXcgQC9saW5rIGJhc2VkIG9uIHRoZSBzdGF0
ZSBvZiB0aGUgc3Vycm91bmRpbmcgVUkuCisgQGRpc2N1c3Npb24gRm9yIGFwcHMgd2l0aCBzaXpl
LWNoYW5naW5nIFVJIGFyb3VuZCB0aGUgQGxpbmsgV0tXZWJWaWV3IEAvbGluaywgc3BlY2lmeSBt
aW5pbXVtVmlld3BvcnRJbnNldCBhbmQKKyBtYXhpbXVtVmlld3BvcnRJbnNldCB0byBzdXBwbHkg
d2VicGFnZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUgZm9yIENTUyAibGFyZ2Ugdmlld3Bv
cnQiIGBsdipgCisgdW5pdHMgYW5kIENTUyAic21hbGwgdmlld3BvcnQiIGBzdipgIHVuaXRzIHJl
c3BlY3RpdmVseSBAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy00LyN2aWV3
cG9ydC12YXJpYW50cyBAL2xpbmsuCisgU2V0IG1pbmltdW1WaWV3cG9ydEluc2V0IHRvIHRoZSBz
bWFsbGVzdCBpbnNldCBhIHdlYnBhZ2UgbWF5IGV4cGVyaWVuY2UgaW4geW91ciBhcHAncyBtYXhp
bWFsbHkKKyBjb2xsYXBzZWQgVUkgY29uZmlndXJhdGlvbi4gU2V0IG1heGltdW1WaWV3cG9ydElu
c2V0IHRvIHRoZSBsYXJnZXN0IGluc2V0IGEgd2VicGFnZSBtYXkgZXhwZXJpZW5jZQorIGluIHlv
dXIgYXBwJ3MgbWF4aW1hbGx5IGV4cGFuZGVkIFVJIGNvbmZpZ3VyYXRpb24uIEZvciBhcHBzIHdo
ZXJlIHRoZSBtYXhpbWFsbHkgY29sbGFwc2VkIFVJCisgY29uZmlndXJhdGlvbiBpcyBzdWNoIHRo
YXQgdGhlIEBsaW5rIFdLV2ViVmlldyBAL2xpbmsgaXMgbm90IHN1cnJvdW5kZWQgYnkgYW55dGhp
bmcsIHRoZXJlIGlzIG5vIG5lZWQgdG8gc3BlY2lmeQorIG1pbmltdW1WaWV3cG9ydEluc2V0LiBG
b3IgYXBwcyB3aXRoIGZpeGVkLXNpemVkIFVJIHN1cnJvdW5kaW5nIHRoZSBAbGluayBXS1dlYlZp
ZXcgQC9saW5rLCB0aGVyZSBpcyBubyBuZWVkIHRvCisgc3BlY2lmeSBlaXRoZXIgdmFsdWUuIEJv
dGggdmFsdWVzIG11c3QgYmUgZWl0aGVyIHplcm8gb3IgcG9zaXRpdmUsIGFuZCBtYXhpbXVtVmll
d3BvcnRJbnNldCBtdXN0IGJlCisgbGFyZ2VyIHRoYW4gbWluaW11bVZpZXdwb3J0SW5zZXQuCisg
Ki8KKyNpZiBUQVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IFVJRWRnZUluc2V0cyBtaW5pbXVtVmlld3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKGlvcyhX
S19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0
cyBtYXhpbXVtVmlld3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKXNldE1pbmltdW1WaWV3cG9ydEluc2V0OihVSUVkZ2VJbnNldHMpbWluaW11bVZp
ZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQ6KFVJRWRnZUluc2V0cyltYXhpbXVtVmll
d3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisjZWxzZQorQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0VkZ2VJbnNldHMgbWluaW11bVZpZXdwb3J0
SW5zZXQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TRWRnZUluc2V0cyBtYXhpbXVtVmlld3BvcnRJbnNldCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpc2V0TWluaW11bVZpZXdw
b3J0SW5zZXQ6KE5TRWRnZUluc2V0cyltaW5pbXVtVmlld3BvcnRJbnNldCBtYXhpbXVtVmlld3Bv
cnRJbnNldDooTlNFZGdlSW5zZXRzKW1heGltdW1WaWV3cG9ydEluc2V0IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSkpOworI2VuZGlmCisKIEBlbmQKIAogI2lmICFUQVJHRVRfT1Nf
SVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBkNzhiOTMxZjEzMGIwNjYxZmM4OGI4NDZkOTBjNmNlY2Y0MGNjYWM4Li4yZmI2NjEy
ODQwZTNjOTI3MGI5MGE1MzRmMGMzZWJkNjlhNWE0NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1NDksNiArMTU0OSw0MSBAQCAt
ICh2b2lkKV9pbnRlcm5hbERvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2
b2lkKSl1cGRhdGVCbG9jayB3aXRobwogICAgIH0pOwogfQogCistICh2b2lkKV9yZWNhbGN1bGF0
ZVZpZXdwb3J0U2l6ZXNXaXRoTWluaW11bVZpZXdwb3J0SW5zZXQ6KENvY29hRWRnZUluc2V0cylt
aW5pbXVtVmlld3BvcnRJbnNldCBtYXhpbXVtVmlld3BvcnRJbnNldDooQ29jb2FFZGdlSW5zZXRz
KW1heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6KEJPT0wpdGhyb3dPbklu
dmFsaWRJbnB1dAoreworICAgIGF1dG8gZnJhbWUgPSBXZWJDb3JlOjpGbG9hdFNpemUoc2VsZi5m
cmFtZS5zaXplKTsKKworICAgIGF1dG8gbWluaW11bVVub2JzY3VyZWRTaXplID0gZnJhbWUgLSBX
ZWJDb3JlOjpGbG9hdFNpemUobWF4aW11bVZpZXdwb3J0SW5zZXQubGVmdCArIG1heGltdW1WaWV3
cG9ydEluc2V0LnJpZ2h0LCBtYXhpbXVtVmlld3BvcnRJbnNldC50b3AgKyBtYXhpbXVtVmlld3Bv
cnRJbnNldC5ib3R0b20pOworICAgIGlmIChtaW5pbXVtVW5vYnNjdXJlZFNpemUuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmICh0aHJvd09uSW52YWxpZElucHV0KSB7CisgICAgICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAibWF4aW11
bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxhcmdlciB0aGFuIGZyYW1lIl07CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaWV3cG9y
dFNpemluZywgIm1heGltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBmcmFt
ZSIpOworICAgICAgICBtaW5pbXVtVW5vYnNjdXJlZFNpemUgPSBmcmFtZTsKKyAgICB9CisKKyAg
ICBhdXRvIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IGZyYW1lIC0gV2ViQ29yZTo6RmxvYXRTaXpl
KG1pbmltdW1WaWV3cG9ydEluc2V0LmxlZnQgKyBtaW5pbXVtVmlld3BvcnRJbnNldC5yaWdodCwg
bWluaW11bVZpZXdwb3J0SW5zZXQudG9wICsgbWluaW11bVZpZXdwb3J0SW5zZXQuYm90dG9tKTsK
KyAgICBpZiAobWF4aW11bVVub2JzY3VyZWRTaXplLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
dGhyb3dPbkludmFsaWRJbnB1dCkgeworICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIm1pbmltdW1WaWV3cG9ydEluc2V0IGNh
bm5vdCBiZSBsYXJnZXIgdGhhbiBmcmFtZSJdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoVmlld3BvcnRTaXppbmcsICJtaW5pbXVt
Vmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZnJhbWUiKTsKKyAgICAgICAgbWF4
aW11bVVub2JzY3VyZWRTaXplID0gZnJhbWU7CisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBpZiAoX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGUgfHwgX21pbmltdW1Vbm9ic2N1
cmVkU2l6ZU92ZXJyaWRlIHx8IF9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBfcGFnZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXpl
KG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk7CisgICAgX3BhZ2UtPnNldE1heGltdW1Vbm9ic2N1cmVk
U2l6ZShtYXhpbXVtVW5vYnNjdXJlZFNpemUpOworfQorCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKIAogLSAodm9pZClfZGlkSW5zZXJ0QXR0YWNobWVudDooQVBJOjpBdHRhY2htZW50
JilhdHRhY2htZW50IHdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlCkBAIC0xODMwLDYgKzE4
NjUsMjMgQEAgLSAoV0tGdWxsc2NyZWVuU3RhdGUpZnVsbHNjcmVlblN0YXRlCiAjZW5kaWYKIH0K
IAorLSAodm9pZClzZXRNaW5pbXVtVmlld3BvcnRJbnNldDooQ29jb2FFZGdlSW5zZXRzKW1pbmlt
dW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3cG9ydEluc2V0OihDb2NvYUVkZ2VJbnNldHMpbWF4
aW11bVZpZXdwb3J0SW5zZXQKK3sKKyAgICBpZiAobWluaW11bVZpZXdwb3J0SW5zZXQudG9wIDwg
MCB8fCBtaW5pbXVtVmlld3BvcnRJbnNldC5sZWZ0IDwgMCB8fCBtaW5pbXVtVmlld3BvcnRJbnNl
dC5ib3R0b20gPCAwIHx8IG1pbmltdW1WaWV3cG9ydEluc2V0LnJpZ2h0IDwgMCkKKyAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIm1p
bmltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBuZWdhdGl2ZSJdOworCisgICAgaWYgKG1heGlt
dW1WaWV3cG9ydEluc2V0LnRvcCA8IDAgfHwgbWF4aW11bVZpZXdwb3J0SW5zZXQubGVmdCA8IDAg
fHwgbWF4aW11bVZpZXdwb3J0SW5zZXQuYm90dG9tIDwgMCB8fCBtYXhpbXVtVmlld3BvcnRJbnNl
dC5yaWdodCA8IDApCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCJtYXhpbXVtVmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbmVnYXRp
dmUiXTsKKworICAgIGlmIChtaW5pbXVtVmlld3BvcnRJbnNldC50b3AgKyBtaW5pbXVtVmlld3Bv
cnRJbnNldC5ib3R0b20gPiBtYXhpbXVtVmlld3BvcnRJbnNldC50b3AgKyBtYXhpbXVtVmlld3Bv
cnRJbnNldC5ib3R0b20gfHwgbWluaW11bVZpZXdwb3J0SW5zZXQucmlnaHQgKyBtaW5pbXVtVmll
d3BvcnRJbnNldC5sZWZ0ID4gbWF4aW11bVZpZXdwb3J0SW5zZXQucmlnaHQgKyBtYXhpbXVtVmll
d3BvcnRJbnNldC5sZWZ0KQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAibWluaW11bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxh
cmdlciB0aGFuIG1heGltdW1WaWV3cG9ydEluc2V0Il07CisKKyAgICBbc2VsZiBfcmVjYWxjdWxh
dGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3cG9ydEluc2V0Om1pbmltdW1WaWV3cG9ydElu
c2V0IG1heGltdW1WaWV3cG9ydEluc2V0Om1heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZh
bGlkSW5wdXQ6WUVTXTsKKworICAgIF9taW5pbXVtVmlld3BvcnRJbnNldCA9IG1pbmltdW1WaWV3
cG9ydEluc2V0OworICAgIF9tYXhpbXVtVmlld3BvcnRJbnNldCA9IG1heGltdW1WaWV3cG9ydElu
c2V0OworfQorCiBAZW5kCiAKICNwcmFnbWEgbWFyayAtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGMzMjg1MGIy
NmE4ZjkwMTgwMThlYjg0NWRlMDNjOTRmNjBlYjE1ZTMuLjUyYjYzOTc0OWM4NmJmYTY2NzZjNDQy
YmVhY2NhNzRmMWNhZThlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01OSw2ICs1OSwxNCBAQAogI2RlZmlu
ZSBXS19XRUJfVklFV19QUk9UT0NPTFMKICNlbmRpZgogCisjaWYgVVNFKEFQUEtJVCkKK3VzaW5n
IENvY29hRWRnZUluc2V0cyA9IE5TRWRnZUluc2V0czsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKK3VzaW5nIENvY29hRWRnZUluc2V0cyA9IFVJRWRnZUluc2V0czsKKyNlbmRp
ZgorCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFnZVJlZjsKIAogbmFt
ZXNwYWNlIEFQSSB7CkBAIC0xMzIsNiArMTQwLDkgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9s
bGVyOwogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIF9vYnNlcnZlZFJlbmRlcmluZ1By
b2dyZXNzRXZlbnRzOwogICAgIEJPT0wgX3VzZVBsYXRmb3JtRmluZFVJOwogCisgICAgQ29jb2FF
ZGdlSW5zZXRzIF9taW5pbXVtVmlld3BvcnRJbnNldDsKKyAgICBDb2NvYUVkZ2VJbnNldHMgX21h
eGltdW1WaWV3cG9ydEluc2V0OworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJLaXQ6OldlYlZpZXdJbXBsPiBfaW1wbDsKICAgICBSZXRhaW5QdHI8V0tUZXh0Rmlu
ZGVyQ2xpZW50PiBfdGV4dEZpbmRlckNsaWVudDsKQEAgLTE2MSw5ICsxNzIsNyBAQCBjbGFzcyBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgc3RkOjpvcHRpb25hbDxDR1NpemU+IF92aWV3TGF5
b3V0U2l6ZU92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBf
bGFzdFNlbnRWaWV3TGF5b3V0U2l6ZTsKICAgICBzdGQ6Om9wdGlvbmFsPENHU2l6ZT4gX21pbmlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRTaXplPiBfbGFzdFNlbnRNaW5pbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgc3RkOjpvcHRpb25h
bDxDR1NpemU+IF9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplOwog
ICAgIENHUmVjdCBfaW5wdXRWaWV3Qm91bmRzSW5XaW5kb3c7CiAKICAgICBDR0Zsb2F0IF92aWV3
cG9ydE1ldGFUYWdXaWR0aDsKQEAgLTI4Myw2ICsyOTIsOCBAQCBjbGFzcyBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI7CiAKIC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6
KEJPT0wpd2l0aG91dFdhaXRpbmdGb3JQYWludGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVk
UmVzaXplOihCT09MKXdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU7CiAKKy0gKHZvaWQp
X3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDooQ29jb2FF
ZGdlSW5zZXRzKW1pbmltdW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3cG9ydEluc2V0OihDb2Nv
YUVkZ2VJbnNldHMpbWF4aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDooQk9P
TCl0aHJvd09uSW52YWxpZElucHV0OworCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2Fybmlu
ZzooY29uc3QgV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25I
YW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dmFyaWFudDxXZWJLaXQ6OkNvbnRp
bnVlVW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2Ns
ZWFyU2FmZUJyb3dzaW5nV2FybmluZzsKIC0gKHZvaWQpX2NsZWFyU2FmZUJyb3dzaW5nV2Fybmlu
Z0lmRm9yTWFpbkZyYW1lTmF2aWdhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggNTQ0YzcxNGFjNjEwZjRkZWEwN2JjMTYxZDQw
M2IxNmU3NmEyMWYxMi4uZDY2MzAxOGNmZWNmNjhmYjhhZmY0ZTEyMmI5ZmQ1Y2I5NTYyMmUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0K
QEAgLTcyNCw4ICs3MjQsNiBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKICAg
ICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3JvbGxWaWV3
ID0gTk87CiAgICAgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2Fy
ZCA9IE5POwogICAgIF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gc3RkOjpudWxsb3B0OwotICAg
IF9sYXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBfbGFz
dFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgX2xhc3RTZW50
RGV2aWNlT3JpZW50YXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfZnJvemVuVmlzaWJsZUNv
bnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OwpAQCAtMTk0MiwyNCArMTk0MCw2IEBAIC0gKHZvaWQp
X2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0
U2l6ZQogICAgIF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gdmlld0xheW91dFNpemU7CiB9CiAK
LS0gKHZvaWQpX2Rpc3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOihXZWJDb3JlOjpGbG9h
dFNpemUpbWluaW11bVVub2JzY3VyZWRTaXplCi17Ci0gICAgaWYgKF9sYXN0U2VudE1pbmltdW1V
bm9ic2N1cmVkU2l6ZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShfbGFzdFNlbnRNaW5pbXVtVW5vYnNj
dXJlZFNpemUudmFsdWUoKSwgbWluaW11bVVub2JzY3VyZWRTaXplKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgX3BhZ2UtPnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShtaW5pbXVtVW5vYnNjdXJl
ZFNpemUpOwotICAgIF9sYXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1pbmltdW1Vbm9i
c2N1cmVkU2l6ZTsKLX0KLQotLSAodm9pZClfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNp
emU6KFdlYkNvcmU6OkZsb2F0U2l6ZSltYXhpbXVtVW5vYnNjdXJlZFNpemUKLXsKLSAgICBpZiAo
X2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplICYmIENHU2l6ZUVxdWFsVG9TaXplKF9sYXN0
U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZS52YWx1ZSgpLCBtYXhpbXVtVW5vYnNjdXJlZFNpemUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcGFnZS0+c2V0TWF4aW11bVVub2JzY3VyZWRTaXpl
KG1heGltdW1Vbm9ic2N1cmVkU2l6ZSk7Ci0gICAgX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRT
aXplID0gbWF4aW11bVVub2JzY3VyZWRTaXplOwotfQotCiAtICh2b2lkKV9kaXNwYXRjaFNldERl
dmljZU9yaWVudGF0aW9uOihpbnQzMl90KWRldmljZU9yaWVudGF0aW9uCiB7CiAgICAgaWYgKF9s
YXN0U2VudERldmljZU9yaWVudGF0aW9uICYmIF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uLnZh
bHVlKCkgPT0gZGV2aWNlT3JpZW50YXRpb24pCkBAIC0xOTg2LDEwICsxOTY2LDkgQEAgLSAodm9p
ZClfZnJhbWVPckJvdW5kc0NoYW5nZWQKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1v
ZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewog
ICAgICAgICBpZiAoIV92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICAgICAgW3NlbGYg
X2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6W3NlbGYgYWN0aXZlVmlld0xheW91dFNpemU6c2Vs
Zi5ib3VuZHNdXTsKLSAgICAgICAgaWYgKCFfbWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUp
Ci0gICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemU6V2Vi
Q29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKV07CiAgICAgICAgIGlmICghX21heGltdW1Vbm9i
c2N1cmVkU2l6ZU92ZXJyaWRlKQotICAgICAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWF4aW11
bVVub2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6ZShib3VuZHMuc2l6ZSldOworICAgICAg
ICAgICAgX3BhZ2UtPnNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUo
Ym91bmRzLnNpemUpKTsKKyAgICAgICAgW3NlbGYgX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dp
dGhNaW5pbXVtVmlld3BvcnRJbnNldDpfbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdw
b3J0SW5zZXQ6X21heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6Tk9dOwog
CiAgICAgICAgIEJPT0wgc2l6ZUNoYW5nZWQgPSBOTzsKICAgICAgICAgaWYgKF9wYWdlKSB7CkBA
IC0yNDQwLDExICsyNDE5LDEzIEBAIC0gKHZvaWQpX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemUK
ICAgICBpZiAoIV9sYXN0U2VudFZpZXdMYXlvdXRTaXplIHx8IG5ld1ZpZXdMYXlvdXRTaXplICE9
IF9sYXN0U2VudFZpZXdMYXlvdXRTaXplLnZhbHVlKCkpCiAgICAgICAgIFtzZWxmIF9kaXNwYXRj
aFNldFZpZXdMYXlvdXRTaXplOm5ld1ZpZXdMYXlvdXRTaXplXTsKIAotICAgIGlmICghX2xhc3RT
ZW50TWluaW11bVVub2JzY3VyZWRTaXplIHx8IG5ld01pbmltdW1Vbm9ic2N1cmVkU2l6ZSAhPSBf
bGFzdFNlbnRNaW5pbXVtVW5vYnNjdXJlZFNpemUudmFsdWUoKSkKLSAgICAgICAgW3NlbGYgX2Rp
c3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5p
bXVtVW5vYnNjdXJlZFNpemUpXTsKLQotICAgIGlmICghX2xhc3RTZW50TWF4aW11bVVub2JzY3Vy
ZWRTaXplIHx8IG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSAhPSBfbGFzdFNlbnRNYXhpbXVtVW5v
YnNjdXJlZFNpemUudmFsdWUoKSkKLSAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWF4aW11bVVu
b2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6ZShuZXdNYXhpbXVtVW5vYnNjdXJlZFNpemUp
XTsKKyAgICBpZiAoX21pbmltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKQorICAgICAgICBfcGFn
ZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5pbXVt
VW5vYnNjdXJlZFNpemUpKTsKKyAgICBpZiAoX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRl
KSB7CisgICAgICAgIF9wYWdlLT5zZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6Rmxv
YXRTaXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSkpOworICAgICAgICBfcGFnZS0+c2V0TWF4
aW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShuZXdNYXhpbXVtVW5vYnNjdXJl
ZFNpemUpKTsKKyAgICB9CisgICAgW3NlbGYgX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhN
aW5pbXVtVmlld3BvcnRJbnNldDpfbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0
SW5zZXQ6X21heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6Tk9dOwogCiAg
ICAgaWYgKCFfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbiB8fCBuZXdPcmllbnRhdGlvbiAhPSBf
bGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbi52YWx1ZSgpKQogICAgICAgICBbc2VsZiBfZGlzcGF0
Y2hTZXREZXZpY2VPcmllbnRhdGlvbjpuZXdPcmllbnRhdGlvbl07CkBAIC0yODMwLDcgKzI4MTEs
NyBAQCAtICh2b2lkKV9zZXRNaW5pbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dTaXplKXNp
emUKICAgICBfbWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUgPSBzaXplOwogCiAgICAgaWYg
KF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBk
YXRlTW9kZTo6Tm90UmVzaXppbmcpCi0gICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1pbmltdW1V
bm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSldOworICAgICAgICBfcGFnZS0+
c2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplKSk7CiB9CiAK
IC8vIERlcHJlY2F0ZWQgU1BJCkBAIC0yODQ1LDggKzI4MjYsMTAgQEAgLSAodm9pZClfc2V0TWF4
aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6KENHU2l6ZSlzaXplCiAgICAgQVNTRVJUKHNpemUu
d2lkdGggPD0gc2VsZi5ib3VuZHMuc2l6ZS53aWR0aCAmJiBzaXplLmhlaWdodCA8PSBzZWxmLmJv
dW5kcy5zaXplLmhlaWdodCk7CiAgICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlID0g
c2l6ZTsKIAotICAgIGlmIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5
bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5vdFJlc2l6aW5nKQotICAgICAgICBbc2VsZiBfZGlz
cGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKHNpemUpXTsK
KyAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmll
d3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgeworICAgICAgICBfcGFnZS0+c2V0RGVmYXVs
dFVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplKSk7CisgICAgICAgIF9wYWdl
LT5zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKKyAg
ICB9CiB9CiAKIC0gKFVJRWRnZUluc2V0cylfb2JzY3VyZWRJbnNldHMKQEAgLTMxODgsOSArMzE3
MSwxMSBAQCAtICh2b2lkKV9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6KHZvaWQgKF4p
KHZvaWQpKXVwZGF0ZUJsb2NrCiAgICAgICAgIGlmIChfdmlld0xheW91dFNpemVPdmVycmlkZSkK
ICAgICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldFZpZXdMYXlvdXRTaXplOm5ld1ZpZXdMYXlv
dXRTaXplXTsKICAgICAgICAgaWYgKF9taW5pbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSkKLSAg
ICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZTpXZWJDb3Jl
OjpGbG9hdFNpemUobmV3TWluaW11bVVub2JzY3VyZWRTaXplKV07Ci0gICAgICAgIGlmIChfbWF4
aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpCi0gICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hT
ZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9i
c2N1cmVkU2l6ZSldOworICAgICAgICAgICAgX3BhZ2UtPnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6
ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3TWluaW11bVVub2JzY3VyZWRTaXplKSk7CisgICAgICAg
IGlmIChfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpIHsKKyAgICAgICAgICAgIF9wYWdl
LT5zZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1V
bm9ic2N1cmVkU2l6ZSkpOworICAgICAgICAgICAgX3BhZ2UtPnNldE1heGltdW1Vbm9ic2N1cmVk
U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3TWF4aW11bVVub2JzY3VyZWRTaXplKSk7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKF9vdmVycmlkZXNJbnRlcmZhY2VPcmllbnRhdGlvbikKICAgICAg
ICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldERldmljZU9yaWVudGF0aW9uOm5ld09yaWVudGF0aW9u
XTsKIApAQCAtMzI2Nyw4ICszMjUyLDYgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdp
dGhVcGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogICAgIFdlYkNvcmU6OkZsb2F0
Qm94RXh0ZW50IHVub2JzY3VyZWRTYWZlQXJlYUluc2V0c0V4dGVudCh1bm9ic2N1cmVkU2FmZUFy
ZWFJbnNldHMudG9wLCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMucmlnaHQsIHVub2JzY3VyZWRT
YWZlQXJlYUluc2V0cy5ib3R0b20sIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5sZWZ0KTsKIAog
ICAgIF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gbmV3Vmlld0xheW91dFNpemU7Ci0gICAgX2xh
c3RTZW50TWluaW11bVVub2JzY3VyZWRTaXplID0gbmV3TWluaW11bVVub2JzY3VyZWRTaXplOwot
ICAgIF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG5ld01heGltdW1Vbm9ic2N1cmVk
U2l6ZTsKICAgICBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbiA9IG5ld09yaWVudGF0aW9uOwog
CiAgICAgX3BhZ2UtPmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUobmV3Vmlld0xheW91dFNpemUs
IG5ld01pbmltdW1Vbm9ic2N1cmVkU2l6ZSwgbmV3TWF4aW11bVVub2JzY3VyZWRTaXplLCB2aXNp
YmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3Jk
aW5hdGVzLCBmdXR1cmVVbm9ic2N1cmVkUmVjdEluU2VsZkNvb3JkaW5hdGVzLCB1bm9ic2N1cmVk
U2FmZUFyZWFJbnNldHNFeHRlbnQsIHRhcmdldFNjYWxlLCBuZXdPcmllbnRhdGlvbiwgbmV3TWlu
aW11bUVmZmVjdGl2ZURldmljZVdpZHRoLCArK19jdXJyZW50RHluYW1pY1ZpZXdwb3J0U2l6ZVVw
ZGF0ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tX
ZWJWaWV3TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdN
YWMubW0KaW5kZXggZGU2OTkwNDU3NWQ1NmE5ZmYxYzRhOWJlZjMyZmNjZThmZWJjNmE3YS4uZDI5
Y2M1Y2QzOTkxZThhNTlhY2U5ODBhMTFkZjAzMWQyMjc0NjIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KQEAgLTE0MCw2ICsxNDAsOCBA
QCAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXplKXNpemUKICAgICBbX3NhZmVCcm93c2luZ1dh
cm5pbmcgc2V0RnJhbWU6c2VsZi5ib3VuZHNdOwogICAgIGlmIChfaW1wbCkKICAgICAgICAgX2lt
cGwtPnNldEZyYW1lU2l6ZShOU1NpemVUb0NHU2l6ZShzaXplKSk7CisKKyAgICBbc2VsZiBfcmVj
YWxjdWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3cG9ydEluc2V0Ol9taW5pbXVtVmll
d3BvcnRJbnNldCBtYXhpbXVtVmlld3BvcnRJbnNldDpfbWF4aW11bVZpZXdwb3J0SW5zZXQgdGhy
b3dPbkludmFsaWRJbnB1dDpOT107CiB9CiAKIC0gKHZvaWQpc2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbjooTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKXVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGY2YjQ0MDY0NTYwZDUwZTYzNzg4Y2QzN2ExMmQ4YTVjMDg0NmIyY2EuLmM3ZThjZmYwZjNj
NmI2YWM1N2M5MTkwNjFkYmNkZjRhYzYyZDBiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNDA2Myw2ICs0MDYzLDQ1IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6ZSkpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
K3sKKyAgICBpZiAoc2l6ZSA9PSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBzaXplOworCisgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXREZWZhdWx0VW5vYnNjdXJlZFNpemUobV9kZWZhdWx0VW5vYnNjdXJlZFNp
emUpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKHNpemUgPT0gbV9taW5pbXVtVW5vYnNj
dXJlZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWluaW11bVVub2JzY3VyZWRTaXpl
ID0gc2l6ZTsKKworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVVub2JzY3VyZWRTaXpl
KG1fbWluaW11bVVub2JzY3VyZWRTaXplKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRN
YXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChz
aXplID09IG1fbWF4aW11bVVub2JzY3VyZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X21heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IHNpemU7CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dE1heGltdW1Vbm9ic2N1cmVkU2l6ZShtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSkpOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgaWYgKG1fdmlld0V4cG9zZWRS
ZWN0ID09IHZpZXdFeHBvc2VkUmVjdCkKQEAgLTgyMzYsNiArODI3NSw5IEBAIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy51bmRlcmxheUNvbG9yID0gbV91bmRlcmxheUNv
bG9yOwogICAgIHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQgPSBtX3VzZUZpeGVkTGF5b3V0Owog
ICAgIHBhcmFtZXRlcnMuZml4ZWRMYXlvdXRTaXplID0gbV9maXhlZExheW91dFNpemU7CisgICAg
cGFyYW1ldGVycy5kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6
ZTsKKyAgICBwYXJhbWV0ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fbWluaW11bVVub2Jz
Y3VyZWRTaXplOworICAgIHBhcmFtZXRlcnMubWF4aW11bVVub2JzY3VyZWRTaXplID0gbV9tYXhp
bXVtVW5vYnNjdXJlZFNpemU7CiAgICAgcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QgPSBtX3Zp
ZXdFeHBvc2VkUmVjdDsKICAgICBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9s
bGVyID0gbV9hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcjsKICAgICBwYXJhbWV0ZXJzLmFs
d2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciA9IG1fYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVy
OwpAQCAtODI5NCw4ICs4MzM2LDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdl
UHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJh
bWV0ZXJzLm92ZXJyaWRlU2NyZWVuU2l6ZSA9IG92ZXJyaWRlU2NyZWVuU2l6ZSgpOwogICAgIHBh
cmFtZXRlcnMudGV4dEF1dG9zaXppbmdXaWR0aCA9IHRleHRBdXRvc2l6aW5nV2lkdGgoKTsKICAg
ICBwYXJhbWV0ZXJzLm1pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzID0gcGFnZUNs
aWVudCgpLm1pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzKCk7Ci0gICAgcGFyYW1l
dGVycy5taW5pbXVtVW5vYnNjdXJlZFNpemUgPSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAg
ICBwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fbWF4aW11bVVub2JzY3VyZWRT
aXplOwogICAgIHBhcmFtZXRlcnMuZGV2aWNlT3JpZW50YXRpb24gPSBtX2RldmljZU9yaWVudGF0
aW9uOwogICAgIHBhcmFtZXRlcnMua2V5Ym9hcmRJc0F0dGFjaGVkID0gaXNJbkhhcmR3YXJlS2V5
Ym9hcmRNb2RlKCk7CiAgICAgcGFyYW1ldGVycy5jYW5TaG93V2hpbGVMb2NrZWQgPSBtX2NvbmZp
Z3VyYXRpb24tPmNhblNob3dXaGlsZUxvY2tlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCAwOTRiNDU1NjQxYWRmNGQ0ZjI0ZTRlN2I0YTRjNGJlYTcwZGMxYWFm
Li40ODg3ODU3YmYyMGFiYjRhOWJkYTIzYTAwMjI0Nzg3YjBiNWU3MTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODUxLDEwICs4NTEsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgdmlld0xheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWluaW11bVVub2Jz
Y3VyZWRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0
cywgZG91YmxlIHRhcmdldFNjYWxlLCBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uLCBkb3VibGUg
bWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoLCBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQp
OwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGRvdWJsZSBtaW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGgpOwotICAgIHZvaWQgc2V0TWluaW11bVVub2JzY3VyZWRTaXpl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5p
bXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1Vbm9ic2N1cmVkU2l6
ZTsgfQotICAgIHZvaWQgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsgfQogICAgIHZvaWQgc2V0
RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCk7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0KICAgICB2b2lkIHNldE92
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cz4mKTsKQEAgLTExMjIsNiArMTExOCwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCB1c2VGaXhlZExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH07CiAg
ICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml4ZWRMYXlvdXRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9maXhlZExheW91dFNpemU7IH07CiAKKyAgICB2b2lkIHNldERlZmF1bHRVbm9ic2N1cmVk
U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUg
ZGVmYXVsdFVub2JzY3VyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VW5vYnNjdXJl
ZFNpemU7IH0KKyAgICB2b2lkIHNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bVVub2JzY3VyZWRT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7IH0KKyAgICB2b2lk
IHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAg
ICBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7IH0KKwogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRS
ZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld0V4cG9zZWRSZWN0OyB9CiAKQEAgLTI4MzIsNiArMjgzNSwxMCBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkludFNpemUgbV9maXhlZExheW91dFNpemU7CiAgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwogCisgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1fZGVmYXVsdFVub2JzY3VyZWRTaXplOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBt
X21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhpbXVt
VW5vYnNjdXJlZFNpemU7CisKICAgICBib29sIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xs
ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIgeyBm
YWxzZSB9OwogCkBAIC0zMDY5LDggKzMwNzYsNiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgRnVuY3Rpb248Ym9vbCgpPiBtX2RldmljZU9yaWVudGF0aW9uVXNlclBl
cm1pc3Npb25IYW5kbGVyRm9yVGVzdGluZzsKICAgICBib29sIG1fd2FpdGluZ0ZvclBvc3RMYXlv
dXRFZGl0b3JTdGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50IHsgZmFsc2UgfTsKLSAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgV2ViQ29yZTo6
RmxvYXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGJvb2wgbV9sYXN0T2JzZXJ2
ZWRTdGF0ZVdhc0JhY2tncm91bmQgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Bl
cmZvcm1BY3Rpb25PbkVsZW1lbnRBdXRoVG9rZW5zOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA3NGE0YjdkMjY0OGYwODc1
YzcxY2IyMmE3MDg1ZTM5ZjQ1MWQ1MjBjLi5mYmY4ZGMwYmE1ZDY4MjM4YmVlZGVlZGI4MWEwNDk5
ZTIwMGRhNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTI3Myw2ICsyNzMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHluYW1pY1Zp
ZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBjbwogICAg
IGhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogCiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb25W
aWV3TGF5b3V0U2l6ZSA9IHZpZXdMYXlvdXRTaXplOworICAgIG1fZGVmYXVsdFVub2JzY3VyZWRT
aXplID0gbWF4aW11bVVub2JzY3VyZWRTaXplOworICAgIG1fbWluaW11bVVub2JzY3VyZWRTaXpl
ID0gbWluaW11bVVub2JzY3VyZWRTaXplOworICAgIG1fbWF4aW11bVVub2JzY3VyZWRTaXplID0g
bWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSh2aWV3TGF5b3V0U2l6ZSwKICAgICAgICAg
bWluaW11bVVub2JzY3VyZWRTaXplLCBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIHRhcmdldEV4cG9z
ZWRDb250ZW50UmVjdCwgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsCiAgICAgICAgIHRhcmdldFVub2Jz
Y3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0
cywKQEAgLTMwMSwyMiArMzA0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcmNlQWx3YXlz
VXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKHVzZXJTY2FsYWJs
ZSksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmltdW1Vbm9i
c2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgbV9taW5p
bXVtVW5vYnNjdXJlZFNpemUgPSBzaXplOwotCi0gICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVVu
b2JzY3VyZWRTaXplKHNpemUpLCBtX3dlYlBhZ2VJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXpl
KQotewotICAgIG1fbWF4aW11bVVub2JzY3VyZWRTaXplID0gc2l6ZTsKLQotICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShzaXplKSwgbV93ZWJQYWdlSUQpOwotfQotCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbikKIHsKICAgICBpZiAoZGV2aWNlT3JpZW50YXRpb24gIT0gbV9kZXZpY2VPcmllbnRh
dGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZjZmMmQ0YTIwNzU4
MDEzZGQwNmQyYzk2ZDgzMmVjNWMwNDYxZDMxOS4uODJhNzUwNzE4MDA2N2VhZjQ3ZWMwZjRhYzJh
OGM0ZDEzZjRiYzFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTI0
LDkgKzE1MjQsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3Vs
ZERpc2FibGVTY3JvbGxpbmc7CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdDsK
IAorICAgIGF1dG8gb2xkVmlldyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT52aWV3KCkpCi0gICAgICAgIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICBpZiAob2xk
VmlldykKKyAgICAgICAgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSBvbGRWaWV3LT5maXhlZFZp
c2libGVDb250ZW50UmVjdCgpOwogICAgIGlmIChzaG91bGRVc2VGaXhlZExheW91dCkKICAgICAg
ICAgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSB0cnVlOwogI2VuZGlmCkBAIC0xNTQ5LDYgKzE1NTEs
MTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCiAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9j
aywgdmVydGljYWxTY3JvbGxiYXJNb2RlLCB2ZXJ0aWNhbExvY2spOwogCiAgICAgUmVmUHRyPEZy
YW1lVmlldz4gdmlldyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisKKyAgICBpZiAo
dmlldyAmJiBvbGRWaWV3KQorICAgICAgICB2aWV3LT5jb3B5Q1NTVmlld3BvcnRVbml0cygqb2xk
Vmlldyk7CisKICAgICBpZiAoaW50IHdpZHRoID0gd2ViUGFnZS0+bWluaW11bVNpemVGb3JBdXRv
TGF5b3V0KCkud2lkdGgoKSkgewogICAgICAgICBpbnQgaGVpZ2h0ID0gc3RkOjptYXgod2ViUGFn
ZS0+bWluaW11bVNpemVGb3JBdXRvTGF5b3V0KCkuaGVpZ2h0KCksIDEpOwogICAgICAgICB2aWV3
LT5lbmFibGVGaXhlZFdpZHRoQXV0b1NpemVNb2RlKHRydWUsIHsgd2lkdGgsIGhlaWdodCB9KTsK
QEAgLTE1NjcsNyArMTU3Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIH0KIAogICAgIGlmIChhdXRvIHZpZXdwb3J0
U2l6ZUZvclZpZXdwb3J0VW5pdHMgPSB3ZWJQYWdlLT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCkpCi0gICAgICAgIHZpZXctPnNldFNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMo
KnZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMpOworICAgICAgICB2aWV3LT5zZXRTaXplRm9y
Q1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKnZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMpOwog
ICAgIHZpZXctPnNldFByb2hpYml0c1Njcm9sbGluZyhzaG91bGREaXNhYmxlU2Nyb2xsaW5nKTsK
ICAgICB2aWV3LT5zZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50KCF3ZWJQYWdlLT5zaG91
bGRFeHRlbmRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uKCkpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAwOTk2YzBjYzgxYzRmOTVkYTE1YjNiNTI2OWM1ZDdmYTZjZThlYjMyLi43M2ExYjMxZWUz
MGM3Mzc2NzA0YTZmZTY0MTE0YzhkNjljNTI2MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzQ0LDYgKzc0NCwxMCBAQCBXZWJQYWdlOjpX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAKICAgICBzZXRVc2VGaXhlZExheW91dChwYXJhbWV0ZXJzLnVzZUZpeGVk
TGF5b3V0KTsKIAorICAgIHNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShwYXJhbWV0ZXJzLmRlZmF1
bHRVbm9ic2N1cmVkU2l6ZSk7CisgICAgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKHBhcmFtZXRl
cnMubWluaW11bVVub2JzY3VyZWRTaXplKTsKKyAgICBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUo
cGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJlZFNpemUpOworCiAgICAgc2V0VW5kZXJsYXlDb2xv
cihwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpOwogCiAgICAgc2V0UGFnaW5hdGlvbk1vZGUocGFy
YW1ldGVycy5wYWdpbmF0aW9uTW9kZSk7CkBAIC04NjYsOCArODcwLDYgQEAgV2ViUGFnZTo6V2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlv
blZpZXdMYXlvdXRTaXplLCBwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvbkxheW91dFNp
emVTY2FsZUZhY3RvciwgcGFyYW1ldGVycy52aWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtRWZm
ZWN0aXZlRGV2aWNlV2lkdGgpOwotICAgIHNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShwYXJhbWV0
ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk7Ci0gICAgc2V0TWF4aW11bVVub2JzY3VyZWRTaXpl
KHBhcmFtZXRlcnMubWF4aW11bVVub2JzY3VyZWRTaXplKTsKICNlbmRpZgogCiAjaWYgVVNFKEFV
RElPX1NFU1NJT04pCkBAIC0yMzY5LDYgKzIzNzEsODEgQEAgSW50U2l6ZSBXZWJQYWdlOjpmaXhl
ZExheW91dFNpemUoKSBjb25zdAogICAgIHJldHVybiB2aWV3LT5maXhlZExheW91dFNpemUoKTsK
IH0KIAordm9pZCBXZWJQYWdlOjpzZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoY29uc3QgRmxvYXRT
aXplJiBkZWZhdWx0VW5vYnNjdXJlZFNpemUpCit7CisgICAgaWYgKGRlZmF1bHRVbm9ic2N1cmVk
U2l6ZSA9PSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBkZWZhdWx0VW5vYnNjdXJlZFNpemU7CisKKyAgICB1
cGRhdGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKTsKK30KKwordm9pZCBXZWJQYWdl
Ojp1cGRhdGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKQoreworICAgIGF1dG8qIG1h
aW5GcmFtZVZpZXcgPSB0aGlzLT5tYWluRnJhbWVWaWV3KCk7CisgICAgaWYgKCFtYWluRnJhbWVW
aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSA9
IG1fZGVmYXVsdFVub2JzY3VyZWRTaXplOworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAg
IGlmIChkZWZhdWx0VW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKQorICAgICAgICBkZWZhdWx0VW5v
YnNjdXJlZFNpemUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3TGF5b3V0U2l6ZSgpOwor
ICAgIGRlZmF1bHRVbm9ic2N1cmVkU2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uaW5pdGlhbFNjYWxlSWdub3JpbmdDb250ZW50U2l6ZSgpKTsKKyNlbmRpZgorICAgIG1haW5G
cmFtZVZpZXctPnNldFNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhkZWZhdWx0VW5vYnNj
dXJlZFNpemUpOworfQorCit2b2lkIFdlYlBhZ2U6OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShj
b25zdCBGbG9hdFNpemUmIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSkKK3sKKyAgICBpZiAobWluaW11
bVVub2JzY3VyZWRTaXplID09IG1fbWluaW11bVVub2JzY3VyZWRTaXplKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1pbmltdW1Vbm9ic2N1cmVkU2l6
ZTsKKworICAgIHVwZGF0ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKTsKK30KKwordm9p
ZCBXZWJQYWdlOjp1cGRhdGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCkKK3sKKyAgICBh
dXRvKiBtYWluRnJhbWVWaWV3ID0gdGhpcy0+bWFpbkZyYW1lVmlldygpOworICAgIGlmICghbWFp
bkZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBtaW5pbXVtVW5vYnNjdXJl
ZFNpemUgPSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKKyNpZiBFTkFCTEUoTUVUQV9WSUVXUE9S
VCkKKyAgICBpZiAobWluaW11bVVub2JzY3VyZWRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgbWlu
aW11bVVub2JzY3VyZWRTaXplID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24udmlld0xheW91dFNp
emUoKTsKKyAgICBtaW5pbXVtVW5vYnNjdXJlZFNpemUuc2NhbGUoMSAvIG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLmluaXRpYWxTY2FsZUlnbm9yaW5nQ29udGVudFNpemUoKSk7CisjZW5kaWYKKyAg
ICBtYWluRnJhbWVWaWV3LT5zZXRTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKG1pbmltdW1V
bm9ic2N1cmVkU2l6ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2V0TWF4aW11bVVub2JzY3VyZWRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYgbWF4aW11bVVub2JzY3VyZWRTaXplKQoreworICAgIGlmICht
YXhpbXVtVW5vYnNjdXJlZFNpemUgPT0gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fbWF4aW11bVVub2JzY3VyZWRTaXplID0gbWF4aW11bVVub2JzY3Vy
ZWRTaXplOworCisgICAgdXBkYXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpOworfQor
Cit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKQorewor
ICAgIGF1dG8qIG1haW5GcmFtZVZpZXcgPSB0aGlzLT5tYWluRnJhbWVWaWV3KCk7CisgICAgaWYg
KCFtYWluRnJhbWVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1heGltdW1Vbm9i
c2N1cmVkU2l6ZSA9IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOworI2lmIEVOQUJMRShNRVRBX1ZJ
RVdQT1JUKQorICAgIGlmIChtYXhpbXVtVW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKQorICAgICAg
ICBtYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3TGF5
b3V0U2l6ZSgpOworICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9y
dENvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSWdub3JpbmdDb250ZW50U2l6ZSgpKTsKKyNlbmRp
ZgorICAgIG1haW5GcmFtZVZpZXctPnNldFNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMobWF4
aW11bVVub2JzY3VyZWRTaXplKTsKK30KKwogdm9pZCBXZWJQYWdlOjpkaXNhYmxlZEFkYXB0YXRp
b25zRGlkQ2hhbmdlKGNvbnN0IE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiYgZGlzYWJs
ZWRBZGFwdGF0aW9ucykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNjQwMyw3ICs2
NDgwLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXoKIAogICAgIG1fdmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0cyA9IHZpZXdwb3J0U2l6ZTsKICAgICBpZiAobV92aWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzKQotICAgICAgICBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3
KCktPnNldFNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKm1fdmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cyk7CisgICAgICAgIGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+
c2V0U2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCptX3ZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMpOwogfQogCiBib29sIFdlYlBhZ2U6OmlzU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2
YWVmMjBkZWYzMGMwNjkyNjE2ZWM4MDUyNjQwYTQyMzgxN2Q0ZDMzLi5iMDdlYjg3NDNjMGJmZGYx
MjQ0MThiZGQ0OWIyZTczYWRiZjdhM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC02MTcsNiArNjE3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNl
dEZpeGVkTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgV2ViQ29yZTo6
SW50U2l6ZSBmaXhlZExheW91dFNpemUoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0RGVmYXVsdFVu
b2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0TWlu
aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQg
c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCiAg
ICAgdm9pZCBsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmU+KTsKIAogICAgIHZvaWQgc2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25z
KGJvb2wpOwpAQCAtMTEwNiw4ICsxMTEwLDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVmlz
aWJpbGl0eVN0YXRlKGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHZvaWQgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIHZvaWQgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRpb24o
aW50MzJfdCk7CiAgICAgdm9pZCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bWluaW11bVVub2JzY3VyZWRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1V
bm9ic2N1cmVkU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29u
dGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIHRhcmdldFVub2Jz
Y3VyZWRTYWZlQXJlYUluc2V0cywgZG91YmxlIHNjYWxlLCBpbnQzMl90IGRldmljZU9yaWVudGF0
aW9uLCBkb3VibGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoLCBEeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlSUQpOwogICAgIGJvb2wgc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2VzczsgfQpAQCAtMTU1OCw5ICsxNTYwLDExIEBA
IHByaXZhdGU6CiAKICAgICBib29sIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemVGb3JD
U1NWaWV3cG9ydFVuaXRzKCk7CisgICAgdm9pZCB1cGRhdGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdw
b3J0VW5pdHMoKTsKKyAgICB2b2lkIHVwZGF0ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMo
KTsKKyAgICB2b2lkIHVwZGF0ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKTsKIAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uPiBmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCk7CiAgICAgdm9pZCBnZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSk7CiAg
ICAgdm9pZCBoYW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVzcG9uZGlu
Z1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpQb2ludGVySUQgPSBXZWJDb3Jl
Ojptb3VzZVBvaW50ZXJJRCk7CkBAIC0yMDA1LDYgKzIwMDksMTAgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV91c2VGaXhlZExheW91dCB7IGZhbHNlIH07CiAKKyAgICBXZWJDb3JlOjpGbG9hdFNp
emUgbV9kZWZhdWx0VW5vYnNjdXJlZFNpemU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWlu
aW11bVVub2JzY3VyZWRTaXplOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9i
c2N1cmVkU2l6ZTsKKwogICAgIFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJsYXlDb2xvcjsKIAogI2lm
IEVOQUJMRShVSV9QUk9DRVNTX1BERl9IVUQpCkBAIC0yMjk4LDggKzIzMDYsNiBAQCBwcml2YXRl
OgogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gbV9pbml0aWFsU2Vs
ZWN0aW9uOwogICAgIFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24gbV9zdG9yZWRTZWxlY3Rpb25G
b3JBY2Nlc3NpYmlsaXR5IHsgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbigpIH07Ci0gICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG1fbWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBpbnQzMl90IG1fZGV2aWNlT3Jp
ZW50YXRpb24geyAwIH07CiAgICAgYm9vbCBtX2tleWJvYXJkSXNBdHRhY2hlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2NhblNob3dXaGlsZUxvY2tlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4
MGUxYTQwOTBlZTBlM2U4N2E2M2E1M2NhNDU3MzAzMzgwNzFiZjBjLi5hNjNlOWNmMmI4YWUyYTVi
NThiNGVhMWFkNjMzNTE5NDk2Y2YxMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ5LDggKzQ5LDYgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgTW91c2VFdmVudChXZWJLaXQ6
OldlYk1vdXNlRXZlbnQgZXZlbnQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPj4gc2FuZGJveEV4dGVuc2lvbnMpCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShXZWJD
b3JlOjpGbG9hdFNpemUgc2l6ZSwgZG91YmxlIHNjYWxlRmFjdG9yLCBkb3VibGUgbWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoKQotICAgIFNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3Jl
OjpGbG9hdFNpemUgc2l6ZSkKLSAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6
RmxvYXRTaXplIHNpemUpCiAgICAgU2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VP
cmllbnRhdGlvbikKICAgICBTZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IGFyZ3VtZW50cykKICAgICBEeW5hbWljVmll
d3BvcnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3TGF5b3V0U2l6ZSwgV2ViQ29y
ZTo6RmxvYXRTaXplIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSwgV2ViQ29yZTo6RmxvYXRTaXplIG1h
eGltdW1Vbm9ic2N1cmVkU2l6ZSwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldEV4cG9zZWRDb250
ZW50UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0LCBXZWJDb3Jl
OjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywg
V2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiB0YXJnZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMs
IGRvdWJsZSBzY2FsZSwgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbiwgZG91YmxlIG1pbmltdW1F
ZmZlY3RpdmVEZXZpY2VXaWR0aCwgdWludDY0X3QgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlE
KQpAQCAtMjk1LDYgKzI5MywxMSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2V0
VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKICAgICBTZXRGaXhlZExheW91dFNpemUoV2ViQ29y
ZTo6SW50U2l6ZSBzaXplKQorCisgICAgU2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKFdlYkNvcmU6
OkZsb2F0U2l6ZSBzaXplKQorICAgIFNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSkKKyAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6Rmxv
YXRTaXplIHNpemUpCisKICAgICBMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1pbGVzdG9uZXMpCiAgICAgU2V0U3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IGM3YjI4NjYxOTk3NzAwNTRkZmMwMmRhOGYyOGRjODlhMDllZDQzNmMuLjcxYzI5YTkwYzM3NGZm
MDBlZjEyZGMwOWZmNDI1ZWM5NjQyMTRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zNTY4LDE4ICszNTY4LDYgQEAg
dm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIGRvdWIKICAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2Vk
KHpvb21Ub0luaXRpYWxTY2FsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0TWluaW11bVVub2Jz
Y3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bVVub2JzY3VyZWRTaXplKQotewotICAg
IG1fbWluaW11bVVub2JzY3VyZWRTaXplID0gbWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIHVw
ZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKLX0KLQotdm9pZCBXZWJQYWdl
OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBtYXhpbXVtVW5vYnNj
dXJlZFNpemUpCi17Ci0gICAgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNj
dXJlZFNpemU7Ci0gICAgdXBkYXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwot
fQotCiB2b2lkIFdlYlBhZ2U6OnNldERldmljZU9yaWVudGF0aW9uKGludDMyX3QgZGV2aWNlT3Jp
ZW50YXRpb24pCiB7CiAgICAgaWYgKGRldmljZU9yaWVudGF0aW9uID09IG1fZGV2aWNlT3JpZW50
YXRpb24pCkBAIC0zNjQxLDYgKzM2MjksNyBAQCB2b2lkIFdlYlBhZ2U6OmR5bmFtaWNWaWV3cG9y
dFNpemVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSwgY29uc3QgVwogICAg
IGlmIChzZXRGaXhlZExheW91dFNpemUobmV3TGF5b3V0U2l6ZSkpCiAgICAgICAgIHJlc2V0VGV4
dEF1dG9zaXppbmcoKTsKIAorICAgIHNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShtYXhpbXVtVW5v
YnNjdXJlZFNpemUpOwogICAgIHNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShtaW5pbXVtVW5vYnNj
dXJlZFNpemUpOwogICAgIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShtYXhpbXVtVW5vYnNjdXJl
ZFNpemUpOwogICAgIG1fcGFnZS0+c2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzKHRhcmdldFVu
b2JzY3VyZWRTYWZlQXJlYUluc2V0cyk7CkBAIC0zOTYwLDcgKzM5NDksOSBAQCB2b2lkIFdlYlBh
Z2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoWm9vbVRvSW5pdGlhbFNjYWxlIHpvb21U
b0luaXRpYWxTY2FsZQogCiAgICAgbV9wYWdlLT5zZXRab29tZWRPdXRQYWdlU2NhbGVGYWN0b3Io
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKCkpOwogCi0gICAgdXBkYXRlVmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworICAgIHVwZGF0ZVNpemVGb3JDU1NEZWZh
dWx0Vmlld3BvcnRVbml0cygpOworICAgIHVwZGF0ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5p
dHMoKTsKKyAgICB1cGRhdGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCk7CiAKICAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldyA9ICptYWluRnJhbWVWaWV3KCk7CiAgICAgSW50UG9pbnQgc2Ny
b2xsUG9zaXRpb24gPSBmcmFtZVZpZXcuc2Nyb2xsUG9zaXRpb24oKTsKQEAgLTM5ODYsMjMgKzM5
NzcsNiBAQCB2b2lkIFdlYlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoWm9vbVRv
SW5pdGlhbFNjYWxlIHpvb21Ub0luaXRpYWxTY2FsZQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdl
Ojp1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkKLXsKLSAgICBGbG9hdFNp
emUgc21hbGxlc3RVbm9ic2N1cmVkU2l6ZSA9IG1fbWluaW11bVVub2JzY3VyZWRTaXplOwotICAg
IGlmIChzbWFsbGVzdFVub2JzY3VyZWRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgc21hbGxlc3RV
bm9ic2N1cmVkU2l6ZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdMYXlvdXRTaXplKCk7
Ci0KLSAgICBGbG9hdFNpemUgbGFyZ2VzdFVub2JzY3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNj
dXJlZFNpemU7Ci0gICAgaWYgKGxhcmdlc3RVbm9ic2N1cmVkU2l6ZS5pc0VtcHR5KCkpCi0gICAg
ICAgIGxhcmdlc3RVbm9ic2N1cmVkU2l6ZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdM
YXlvdXRTaXplKCk7Ci0KLSAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICptYWluRnJhbWVWaWV3
KCk7Ci0gICAgc21hbGxlc3RVbm9ic2N1cmVkU2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZp
Z3VyYXRpb24uaW5pdGlhbFNjYWxlSWdub3JpbmdDb250ZW50U2l6ZSgpKTsKLSAgICBsYXJnZXN0
VW5vYnNjdXJlZFNpemUuc2NhbGUoMSAvIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmluaXRpYWxT
Y2FsZUlnbm9yaW5nQ29udGVudFNpemUoKSk7Ci0gICAgZnJhbWVWaWV3LnNldFNpemVGb3JDU1NT
bWFsbFZpZXdwb3J0VW5pdHMoc21hbGxlc3RVbm9ic2N1cmVkU2l6ZSk7Ci0gICAgZnJhbWVWaWV3
LnNldFNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMobGFyZ2VzdFVub2JzY3VyZWRTaXplKTsK
LX0KLQogdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogewogICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5h
bWU6V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MTU0MzJjNDdiYWU3Nzg3OGI1MWEwNzg1YzYzOWJlMzhkZGMyYzAzOS4uMTEyZTExNzljNGE5Mzlm
MjAzYmI4MmVkYTQzMzM4ZTg1YTA5Njg1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAzLTE2ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYFdLV2ViVmlld2AgQVBJ
IHRvIGNvbnRyb2wgQ1NTICJzbWFsbCB2aWV3cG9ydCIgYHN2KmAgYW5kICJsYXJnZSB2aWV3cG9y
dCIgYGx2KmAgdW5pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzk3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODk0MzQ2OTY+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW06CisgICAgICAgIChURVNULkNT
U1ZpZXdwb3J0VW5pdHMuTmVnYXRpdmVNaW5pbXVtVmlld3BvcnRJbnNldCk6IEFkZGVkLgorICAg
ICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWF4aW11bVZpZXdwb3J0SW5zZXQp
OiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJ
bnNldExhcmdlclRoYW5NYXhpbXVtVmlld3BvcnRJbnNldCk6IEFkZGVkLgorICAgICAgICAoVEVT
VC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0TGFyZ2VyVGhhbkZyYW1lKTog
QWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5z
ZXRMYXJnZXJUaGFuRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0
cy5NaW5pbXVtVmlld3BvcnRJbnNldCk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9y
dFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0KTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1Zp
ZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoWm9vbSk6IEFkZGVkLgorICAgICAg
ICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20pOiBB
ZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNl
dFdpdGhXcml0aW5nTW9kZSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRz
Lk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlKTogQWRkZWQuCisgICAgICAgIChU
RVNULkNTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUpOiBBZGRl
ZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdp
dGhGcmFtZSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1W
aWV3cG9ydEluc2V0V2l0aEJvdW5kcyk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9y
dFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aEJvdW5kcyk6IEFkZGVkLgorICAgICAgICAo
VEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNl
dCk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9y
dEluc2V0V2l0aENvbnRlbnRJbnNldCk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9y
dFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzKTogQWRkZWQuCisg
ICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoU2Fm
ZUFyZWFJbnNldHMpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5Vbm9i
c2N1cmVkU2l6ZU92ZXJyaWRlc0lnbm9yZU1heGltdW1WaWV3cG9ydEluc2V0QVBJKTogQWRkZWQu
CisKIDIwMjItMDMtMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcg
aW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9DU1NWaWV3cG9ydFVuaXRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9DU1NWaWV3cG9ydFVuaXRzLm1tCmluZGV4IDY3Yzk2ZGVmOTBh
MjMwY2UwOGYwZDNkYjg0YzE0MDNlNGRmNmM4NTMuLjE5NjEyYTYxNGI0MDliODk5MmViYmFlZTkw
MjNkZWE4ZGE2NWFhOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ1NTVmlld3BvcnRVbml0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0KQEAgLTE2OSw3ICsxNjksNzgyIEBA
IFRFU1QoQ1NTVmlld3BvcnRVbml0cywgQWxsU2FtZSkKICAgICB9CiB9CiAKKyNpZiBVU0UoQVBQ
S0lUKQorI2RlZmluZSBDb2NvYUVkZ2VJbnNldHNNYWtlIE5TRWRnZUluc2V0c01ha2UKKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNkZWZpbmUgQ29jb2FFZGdlSW5zZXRzTWFr
ZSBVSUVkZ2VJbnNldHNNYWtlCisjZW5kaWYKKworI2RlZmluZSBDb2NvYUVkZ2VJbnNldHNaZXJv
IENvY29hRWRnZUluc2V0c01ha2UoMCwgMCwgMCwgMCkKKworVEVTVChDU1NWaWV3cG9ydFVuaXRz
LCBOZWdhdGl2ZU1pbmltdW1WaWV3cG9ydEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7
CisgICAgICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0
c01ha2UoLTExLCAyMSwgMzEsIDQxKSBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNl
dHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNl
cHRpb24pIHsKKyAgICAgICAgZGlkVGhyb3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJV
RShkaWRUaHJvdyk7Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTmVnYXRpdmVNYXhpbXVt
Vmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwor
CisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmll
dyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3
cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoLTEyLCAyMiwgMzIsIDQyKV07CisgICAgfSBA
Y2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgZGlkVGhyb3cgPSB0cnVl
OworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9CisKK1RFU1QoQ1NTVmlld3Bv
cnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5z
ZXQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKworICAgIGJvb2wg
ZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgc2V0TWluaW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MikgbWF4aW11
bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSldOworICAg
IH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIGRpZFRocm93ID0g
dHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkVGhyb3cpOworfQorCitURVNUKENTU1Zp
ZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0VGhhbkxhcmdlckZyYW1lKQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0g
ZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEwMCwgMjEwMCwgMzEwMCwgNDEwMCkgbWF4aW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIGRpZFRocm93ID0gdHJ1
ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkVGhyb3cpOworfQorCitURVNUKENTU1ZpZXdw
b3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0VGhhbkxhcmdlckZyYW1lKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFs
c2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0
OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0
OkNvY29hRWRnZUluc2V0c01ha2UoMTIwMCwgMjIwMCwgMzIwMCwgNDIwMCldOworICAgIH0gQGNh
dGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsK
KyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkVGhyb3cpOworfQorCitURVNUKENTU1ZpZXdwb3J0
VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FF
ZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FF
ZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3
IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1h
eCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1
Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1
OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsK
KworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJ
RCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdo
dE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChD
U1NWaWV3cG9ydFVuaXRzLCBNYXhpbXVtVmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5z
ZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1
MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2
YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIp
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAg
IHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJW
aWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxl
bWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAg
ICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3
cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldFdpdGhab29tKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0
SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0
SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNj
YWxlID0gMjsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBbd2ViVmlldyBzZXRBbGxvd3NNYWdu
aWZpY2F0aW9uOllFU107CisgICAgW3dlYlZpZXcgc2V0TWFnbmlmaWNhdGlvbjoyXTsKKyNlbmRp
ZgorCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0
NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdp
ZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZp
eGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9F
UShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7Cisg
ICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0V2l0
aFpvb20pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2Vi
VmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1W
aWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRz
Il07CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXdd
Lnpvb21TY2FsZSA9IDI7CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgW3dlYlZpZXcgc2V0QWxs
b3dzTWFnbmlmaWNhdGlvbjpZRVNdOworICAgIFt3ZWJWaWV3IHNldE1hZ25pZmljYXRpb246Ml07
CisjZW5kaWYKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
c3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
bHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lk
dGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRv
dWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVk
Iik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdo
dCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1Rf
RkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4i
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhl
aWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZp
IikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJ
bnNldFdpdGhXcml0aW5nTW9kZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0
c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0
c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndy
aXRpbmdNb2RlID0gJ3ZlcnRpY2FsLWxyJyJdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQ
cmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMy
MCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZp
IikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAg
ICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAi
Zml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0
aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lk
dGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgi
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVp
Z2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5p
dHMsIE1heGltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0
SW5zZXQ6Q29jb2FFZGdlSW5zZXRzWmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJ
bnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgW3dlYlZpZXcgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHls
ZS53cml0aW5nTW9kZSA9ICd2ZXJ0aWNhbC1sciciXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JO
ZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9F
USgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1
Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMy
MCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsK
KyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3
LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVu
dFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9y
dFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldFdpdGhGcmFtZSkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAg
ICBbd2ViVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIyMCwgNDAwKV07CisKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWlu
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIyMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1
Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgxNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU4LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1OCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTgs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgzNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJs
dmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1l
bnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQg
PSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lk
dGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVk
V2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisK
K1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRN
aW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAg
ICBbd2ViVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIyMCwgNDAwKV07CisKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWlu
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIyMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1
Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgxNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJs
dmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1l
bnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQg
PSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lk
dGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVk
V2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisK
K1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQm91bmRzKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0
TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkg
bWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0Mild
OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdw
b3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHNldEJvdW5kczpDR1JlY3RNYWtlKDUwLCA2MCwg
MzIwLCA1MDApXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVD
VF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVk
V2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAg
IGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZp
eGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhl
aWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZt
aW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNYXhpbXVtVmlld3Bv
cnRJbnNldFdpdGhCb3VuZHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCld
KTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNa
ZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwg
NDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NW
aWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzZXRCb3VuZHM6Q0dSZWN0TWFrZSg1MCwg
NjAsIDMyMCwgNTAwKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
c3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBm
aXhlZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAg
ICAgICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywg
QCJmaXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4
ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEo
Zml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAg
ICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImR2aSIpKTsKKyAgICB9Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitURVNU
KENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldCkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEp
IG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIp
XTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3
cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS5jb250ZW50SW5zZXQgPSBD
b2NvYUVkZ2VJbnNldHNNYWtlKDUwLCA2MCwgNzAsIDgwKTsKKworICAgIFt3ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1
MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2
YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIp
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAg
IHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJW
aWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxl
bWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAg
ICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3
cG9ydFVuaXRzLCBNYXhpbXVtVmlld3BvcnRJbnNldFdpdGhDb250ZW50SW5zZXQpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVt
Vmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNv
Y29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2Vi
VmlldyBzY3JvbGxWaWV3XS5jb250ZW50SW5zZXQgPSBDb2NvYUVkZ2VJbnNldHNNYWtlKDUwLCA2
MCwgNzAsIDgwKTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVD
VF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVk
V2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAg
IGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZp
eGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhl
aWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZt
aW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3Bv
cnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRn
ZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRn
ZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBhdXRvIHZpZXdD
b250cm9sbGVyID0gYWRvcHROUyhbW1VJVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbdmlld0NvbnRyb2xsZXIgc2V0QWRkaXRpb25hbFNhZmVBcmVhSW5zZXRzOkNvY29hRWRnZUlu
c2V0c01ha2UoNTAsIDYwLCA3MCwgODApXTsKKyAgICBbdmlld0NvbnRyb2xsZXIgc2V0Vmlldzp3
ZWJWaWV3LmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9B
VF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZt
aW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZp
eGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAg
ICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBA
ImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAg
ICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNYXhpbXVtVmll
d3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29h
RWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgx
MiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIGF1dG8gdmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIFt2aWV3Q29udHJv
bGxlciBzZXRBZGRpdGlvbmFsU2FmZUFyZWFJbnNldHM6Q29jb2FFZGdlSW5zZXRzTWFrZSg1MCwg
NjAsIDcwLCA4MCldOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRWaWV3OndlYlZpZXcuZ2V0KCld
OworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1
MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdp
ZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZp
eGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9F
UShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7Cisg
ICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIFVub2JzY3VyZWRTaXplT3ZlcnJpZGVz
SWdub3JlTWluaW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVk
Z2VJbnNldHNNYWtlKDExLCAyMSwgMzEsIDQxKSBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVk
Z2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgW3dlYlZpZXcg
X292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTpDR1NpemVNYWtl
KDEwLjUsIDIwLjUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZTpDR1NpemVNYWtlKDMwLjUsIDQwLjUpXTsKKworICAgIFt3ZWJWaWV3
IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC41LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIw
LjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMTAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjUsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3
aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBm
aXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxP
QVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOwor
ICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBVbm9ic2N1cmVkU2l6ZU92ZXJyaWRl
c0lnbm9yZU1heGltdW1WaWV3cG9ydEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FF
ZGdlSW5zZXRzWmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEy
LCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5h
bWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgW3dlYlZpZXcgX292ZXJyaWRlTGF5b3V0
UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTpDR1NpemVNYWtlKDEwLjUsIDIwLjUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlk
ZTpDR1NpemVNYWtlKDMwLjUsIDQwLjUpXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMw
LjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuNSwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgyMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2
aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQw
LjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg0MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIp
KTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdp
dGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhl
aWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgi
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0
aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KIAogVEVT
VChDU1NWaWV3cG9ydFVuaXRzLCBFbXB0eVVub2JzY3VyZWRTaXplT3ZlcnJpZGVzKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455305</attachid>
            <date>2022-03-21 17:29:40 -0700</date>
            <delta_ts>2022-03-28 10:26:05 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237979-20220321182939.patch</filename>
            <type>text/plain</type>
            <size>99394</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwOTlmYjJiZmYyZDdiNTlhZjUwZmNjZjhhYmVmNmVhNmZmODgzN2UzLi45
MjY5OTQ0MTk4NTcyYjQzYjA2MjNmYWUxMjUwMGMyMzZhYTIzM2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8gY29udHJvbCBDU1MgInNt
YWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTc5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogQ1NTVmlld3BvcnRVbml0cy5OZWdhdGl2ZU1p
bmltdW1WaWV3cG9ydEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk5lZ2F0
aXZlTWF4aW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMu
TWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5zZXQKKyAgICAg
ICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFu
RnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5z
ZXRMYXJnZXJUaGFuRnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11
bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZp
ZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdw
b3J0SW5zZXRXaXRoWm9vbQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVt
Vmlld3BvcnRJbnNldFdpdGhab29tCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1p
bmltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlCisgICAgICAgICAgICAgICBDU1NWaWV3
cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2RlCisgICAgICAgICAg
ICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lCisgICAg
ICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1l
CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0
aEJvdW5kcworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJ
bnNldFdpdGhCb3VuZHMKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZp
ZXdwb3J0SW5zZXRXaXRoQ29udGVudEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVu
aXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldAorICAgICAgICAgICAgICAg
Q1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cwor
ICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhT
YWZlQXJlYUluc2V0cworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5Vbm9ic2N1cmVk
U2l6ZU92ZXJyaWRlc0lnbm9yZU1heGltdW1WaWV3cG9ydEluc2V0QVBJCisKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVuYWJsZUF1dG9TaXplTW9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NTRGVmYXVsdFZpZXdwb3J0
VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0U2l6ZUZvckNT
U0RlZmF1bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6Om92ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0RlZmF1
bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om92
ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgc2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzYC4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6Y29weUNTU1ZpZXdwb3J0VW5pdHMgY29uc3QpOiBBZGRlZC4K
KyAgICAgICAgQWRkIGFsbCB0aGUgdmFyaW91cyBtZXRob2RzIGZvciBnZXR0aW5nL3NldHRpbmcv
b3ZlcnJpZGluZy9jbGVhcmluZyBhbiBvdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAgICAgQ1NTICJk
ZWZhdWx0IHZpZXdwb3J0IiBgdipgIHVuaXRzLiBUaGlzIGFsbG93cyBmb3IgYFdLV2ViVmlld2Ag
Y2xpZW50cyB0byBwcmVzZXJ2ZSBleGlzdGluZworICAgICAgICBiZWhhdmlvciAod2hlcmUgQ1NT
ICJkZWZhdWx0IHZpZXdwb3J0IiBgdipgIHVuaXRzIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBgV0tX
ZWJWaWV3YCkgd2hpbGUKKyAgICAgICAgYWRkaW5nIHN1cHBvcnRpbmcgQ1NTICJzbWFsbCB2aWV3
cG9ydCIgYHN2KmAgdW5pdHMgYW5kIENTUyAibGFyZ2Ugdmlld3BvcnQiIGBsdipgIHVuaXRzLgor
CiAyMDIyLTAzLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ1NTIENvbnRhaW5lciBRdWVyaWVzXSBFbnN1cmUgY29udGFpbmVyIHN0eWxlIGNoYW5nZXMg
YXJlIHByb3BhZ2F0ZWQgdG8gZGVzY2VuZGFudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzVjMGFmZTZhNjk4ZjM4
MDQyMDQzM2U4NmRiYjM5ZjAzYzcwMDJkMi4uYjU0N2EyOTRlZGE5MzMyYjk0MGI0YzdjMjUwZDU4
ZmY2NTc2ZWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMjItMDMtMTYgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBgV0tXZWJW
aWV3YCBBUEkgdG8gY29udHJvbCBDU1MgInNtYWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdl
IHZpZXdwb3J0IiBgbHYqYCB1bml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3OTc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWNlbnRs
eSB0aGUgVzNDIENTUyB3b3JraW5nIGdyb3VwIGFkZGVkIFtzb21lIG5ldyB1bml0IHR5cGVzIHRv
IENTU10oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMtNC8jdmlld3BvcnQtdmFy
aWFudHMpCisgICAgICAgIHdpdGggdGhlIGdvYWwgb2YgaGVscGluZyB3ZWIgZGV2ZWxvcGVycyBi
ZXR0ZXIgZGVhbCB3aXRoIGJyb3dzZXJzIHRoYXQgaGF2ZSBkeW5hbWljIFVJCisgICAgICAgIGVs
ZW1lbnRzIHRoYXQgY2hhbmdlIGFwcGVyYW5jZS9zaXplL2V0Yy4gYmFzZWQgb24gdXNlciBhY3Rp
b25zIChlLmcuIHRoZSBVUkwgYmFyCisgICAgICAgIGNvbGxhcHNpbmcvInNxdWlzaGluZyIgYW5k
IGV4cGFuZGluZy8idW5zcXVpc2hpbmciIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyIGhh
cyBtb3N0CisgICAgICAgIHJlY2VudGx5IHNjcm9sbGVkL3N3aXBlZCBkb3duIHRoZSBwYWdlKS4K
KworICAgICAgICBUaGVzZSBuZXcgdW5pdHMgY29tZSBpbiB0aHJlZSBjYXRlZ29yaWVzOgorICAg
ICAgICAtIHRoZSAibGFyZ2Ugdmlld3BvcnQiIHVuaXRzIChgbHZ3YCwgYGx2aGAsIGV0Yy4pIGVh
Y2ggcmVwcmVzZW50IDElIG9mIG9uZSBkaW1lbnNpb24gb2YgdGhlCisgICAgICAgICAgc2l6ZSBv
ZiB0aGUgdmlzdWFsIGFyZWEgb2YgdGhlIHBhZ2Ugd2hlbiBhbGwgYnJvd3NlciBVSSBlbGVtZW50
cyBhcmUgaW4gdGhlaXIgc21hbGxlc3QKKyAgICAgICAgICBzdGF0ZSAoZS5nLiB3aGVuIHRoZSBV
UkwgYmFyIGlzIGNvbGxhcHNlZC8ic3F1aXNoZWQiKQorICAgICAgICAtIHRoZSAic21hbGwgdmll
d3BvcnQiIHVuaXRzIChgc3Z3YCwgYHN2aGAsIGV0Yy4pIGVhY2ggcmVwcmVzZW50IDElIG9mIG9u
ZSBkaW1lbnNpb24gb2YgdGhlCisgICAgICAgICAgc2l6ZSBvZiB0aGUgdmlzdWFsIGFyZWEgb2Yg
dGhlIHBhZ2Ugd2hlbiBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4gdGhlaXIgbGFyZ2Vz
dAorICAgICAgICAgIHN0YXRlIChlLmcuIHdoZW4gdGhlIFVSTCBiYXIgaXMgZXhwYW5kZWQvInVu
c3F1aXNoZWQiKQorICAgICAgICAtIHRoZSAiZHluYW1pYyB2aWV3cG9ydCIgdW5pdHMgKGBkdndg
LCBgZHZoYCwgZXRjLikgZWFjaCByZXByZXNlbnQgMSUgb2Ygb25lIGRpbWVuc2lvbiBvZgorICAg
ICAgICAgIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHZpc3VhbCBhcmVhIG9mIHRoZSBwYWdlLCB3
aGljaCBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbAorICAgICAgICAgIGJyb3dz
ZXIgVUkgZWxlbWVudHMKKworICAgICAgICBUaGlzIHdheSwgZGV2ZWxvcGVyIGNvdWxkIHVzZSBg
MTAwc3ZoYCB0byBlbnN1cmUgdGhhdCBubyBtYXR0ZXIgd2hhdCBzdGF0ZSB0aGUgYnJvd3NlciBV
SQorICAgICAgICBlbGVtZW50cyBhcmUgaW4gdGhlIGVudGlyZSBlbGVtZW50IHdpbGwgYWx3YXlz
IGJlIHZpc2libGUgb24gdGhlIHNjcmVlbiwgb3IgdXNlIGAxMDBkdmhgIHRvCisgICAgICAgIHJl
c3BvbmQgdG8gYnJvd3NlciBVSSBlbGVtZW50IGNoYW5nZXMgYnkgYXV0b21hdGljYWxseSByZXNp
emluZyB2YXJpb3VzIGVsZW1lbnRzIHRvIGFsd2F5cworICAgICAgICBmdWxseSB0YWtlIGFkdmFu
dGFnZSBvZiB0aGUgYXZhaWxhYmxlIHNwYWNlLgorCisgICAgICAgIE5vdGhpbmcgbmVlZHMgdG8g
YmUgYWRkZWQgdG8gc3VwcG9ydCAiZHluYW1pYyB2aWV3cG9ydCIgYGR2KmAgdW5pdHMgYXMgdGhl
cmUgYWxyZWFkeSBleGlzdHMKKyAgICAgICAgb3RoZXIgbWV0aG9kcyB0byBhZGp1c3QgdGhlIHZp
c3VhbCBhcmVhIG9mIHRoZSBgV0tXZWJWaWV3YCB3aXRob3V0IGFkanVzdGluZyBpdHMgYGZyYW1l
YAorICAgICAgICAoZS5nLiBgLVtXS1dlYlZpZXcgc2V0Qm91bmRzOl1gLCBgLVtVSVNjcm9sbFZp
ZXcgc2V0Q29udGVudEluc2V0Ol1gLCBldGMuKS4KKworICAgICAgICBCdXQgZm9yICJzbWFsbCB2
aWV3cG9ydCIgYHN2KmAgdW5pdHMgYW5kICJsYXJnZSB2aWV3cG9ydCIgYGx2KmAgdW5pdHMsIGhv
d2V2ZXIsIHRoZXJlIGlzCisgICAgICAgIHVuZm9ydHVuYXRlbHkgbm8gd2F5IHRvIHRlbGwgYSBg
V0tXZWJWaWV3YCBhbnl0aGluZyBsaWtlICJ0aGlzIGlzIHRoZSBzbWFsbGVzdC9sYXJnZXN0IHRo
YXQKKyAgICAgICAgdGhpcyBgV0tXZWJWaWV3YCB3aWxsIGV2ZXIgYmUiLCBzbyB0aGVyZSdzIG5v
IHdheSB0byBrbm93IGFoZWFkIG9mIHRpbWUgd2hhdCB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAg
dmlzdWFsIGFyZWEgd291bGQgYmUgd2hlbiBhbGwgYnJvd3NlciBVSSBlbGVtZW50cyBhcmUgaW4g
dGhlaXIgc21hbGxlc3QvbGFyZ2VzdCBzdGF0ZS4gQXMKKyAgICAgICAgc3VjaCwgdGhpcyBwYXRj
aCBhZGRzIGEgbmV3IEFQSSB0byBhbGxvdyBmb3IgYFdLV2ViVmlld2AgY2xpZW50cyB0byB0ZWxs
IFdlYktpdCB0aGlzCisgICAgICAgIGluZm9ybWF0aW9uIGFoZWFkIG9mIHRpbWUuCisKKyAgICAg
ICAgTm90ZSB0aGF0IHRoZXJlIGFscmVhZHkgZXhpc3RzIHRoZSBjb25jZXB0IG9mICJkZWZhdWx0
IHZpZXdwb3J0IiB1bml0cyAoYHZ3YCwgYHZoYCwgZXRjLikKKyAgICAgICAgdGhhdCBlYWNoIHJl
cHJlc2VudCAxJSBvZiBvbmUgZGltZW5zaW9uIG9mIHRoZSBzaXplIG9mIHRoZSB2aXN1YWwgYXJl
YSBvZiB0aGUgcGFnZSB3aGVuIGFsbAorICAgICAgICBicm93c2VyIFVJIGVsZW1lbnRzIGFyZSBp
biB0aGVpciBkZWZhdWx0IHN0YXRlLiBUaGUgYmVoYXZpb3Igb2YgdGhlc2UgdW5pdHMgcmVtYWlu
IHRoZSBzYW1lLAorICAgICAgICBhbmQgdGhlIHZhbHVlIGNhbiBiZSBjaGFuZ2VkIHZpYSB0aGUg
ZXhpc3RpbmcgYC1bV0tXZWJWaWV3IHNldEZyYW1lOl1gLgorCisgICAgICAgIFRlc3RzOiBDU1NW
aWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWluaW11bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAg
IENTU1ZpZXdwb3J0VW5pdHMuTmVnYXRpdmVNYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAg
ICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5NYXhp
bXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVt
Vmlld3BvcnRJbnNldExhcmdlclRoYW5GcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRV
bml0cy5NYXhpbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5GcmFtZQorICAgICAgICAgICAgICAg
Q1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NT
Vmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmll
d3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhab29tCisgICAgICAgICAgICAgICBD
U1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20KKyAgICAgICAgICAg
ICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUK
KyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRo
V3JpdGluZ01vZGUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdw
b3J0SW5zZXRXaXRoRnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11
bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMu
TWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQm91bmRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9y
dFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aEJvdW5kcworICAgICAgICAgICAgICAgQ1NT
Vmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhDb250ZW50SW5zZXQKKyAgICAg
ICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVu
dEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydElu
c2V0V2l0aFNhZmVBcmVhSW5zZXRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1h
eGltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzCisgICAgICAgICAgICAgICBDU1NW
aWV3cG9ydFVuaXRzLlVub2JzY3VyZWRTaXplT3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0
SW5zZXRBUEkKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDptYXhp
bXVtVmlld3BvcnRJbnNldDp0aHJvd09uSW52YWxpZElucHV0Ol0pOiBBZGRlZC4KKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0Om1heGltdW1WaWV3cG9ydEluc2V0
Ol0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfcHJvY2Vzc1dpbGxTd2FwT3JEaWRFeGl0XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZnJhbWVPckJvdW5kc0NoYW5nZWRdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9kaWRDb21wbGV0ZUFuaW1hdGVkUmVzaXplXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2V0TWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2V0TWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2Rpc3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2Rpc3BhdGNoU2V0TWF4aW11bVVub2JzY3VyZWRTaXplOl0p
OiBEZWxldGVkLgorICAgICAgICBSZWNhbGN1bGF0ZSB0aGUgc2l6ZSBmb3IgQ1NTICJzbWFsbCB2
aWV3cG9ydCIgYHN2KmAgdW5pdHMgd2hlbmV2ZXIgdGhlIGBmcmFtZWAgY2hhbmdlcy4gQWxzbwor
ICAgICAgICBtb3ZlIHRoZSBkZWR1cGxpY2F0aW9uIGxvZ2ljIHRoYXQgcHJldmVudHMgdGhlIHNh
bWUgdmFsdWUgZnJvbSBiZWluZyBzZW50IHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIG1vcmUg
dGhhbiBvbmNlIHRvIHRoZSBzZXR0ZXIgbWV0aG9kcyBvbiBgV2ViUGFnZVByb3h5YCBzbyB0aGF0
IGl0IGNhbiBiZSB1c2VkIGJ5IG1vcmUgdGhhbgorICAgICAgICBqdXN0IGlPUy1vbmx5IGNvZGVw
YXRocy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXREZWZhdWx0VW5vYnNjdXJlZFNpemUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXREZWZhdWx0VW5vYnNjdXJlZFNpemUpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTaXplRm9yQ1NTRGVmYXVs
dFZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
U2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cGRhdGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyk6IERlbGV0ZWQuCisgICAgICAgIEFkZCBhbGwgdGhlIHZhcmlvdXMgbWV0aG9kcyBm
b3IgZ2V0dGluZy9zZXR0aW5nL292ZXJyaWRpbmcvY2xlYXJpbmcgYW4gb3ZlcnJpZGUgdmFsdWUg
Zm9yCisgICAgICAgIENTUyAiZGVmYXVsdCB2aWV3cG9ydCIgYHYqYCB1bml0cy4gVGhpcyBhbGxv
d3MgZm9yIGBXS1dlYlZpZXdgIGNsaWVudHMgdG8gcHJlc2VydmUgZXhpc3RpbmcKKyAgICAgICAg
YmVoYXZpb3IgKHdoZXJlIENTUyAiZGVmYXVsdCB2aWV3cG9ydCIgYHYqYCB1bml0cyBtYXRjaCB0
aGUgc2l6ZSBvZiB0aGUgYFdLV2ViVmlld2ApIHdoaWxlCisgICAgICAgIGFkZGluZyBzdXBwb3J0
aW5nIENTUyAic21hbGwgdmlld3BvcnQiIGBzdipgIHVuaXRzIGFuZCBDU1MgImxhcmdlIHZpZXdw
b3J0IiBgbHYqYCB1bml0cy4KKyAgICAgICAgTW92ZSBpT1Mtb25seSBjb2RlIHRvIGJlIGZvciBh
bGwgcGxhdGZvcm1zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgUHJvcGFnYXRl
IGFsbCB2aWV3cG9ydCBzaXplIG92ZXJyaWRlcyB3aGVuIGEgbmV3IGBGcmFtZVZpZXdgIGlzIGNy
ZWF0ZWQuCisKIDIwMjItMDMtMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0
ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IGM5ZjVkNDhkY2I0NmM4MjRjODFlMjg2NjYzYWZiNzFhNGE1NTJkYjQuLjI5NWRjMDhlNjVk
YzA4NTYxZWU0YzQ2MTI5MzdlOTM5MmE0ZTllZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTM2MjQsNiArMzYyNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtU2l6ZVRvQ29u
dGVudEF1dG9TaXplKCkKICAgICAgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CiAgICAgfTsK
IAorICAgIHJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKTsK
ICAgICByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpOwogICAg
IHJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCk7CiAKQEAgLTM2
ODYsNiArMzY4Nyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtU2l6ZVRvQ29udGVudEF1dG9T
aXplKCkKICAgICAgICAgcmVzaXplKG5ld1NpemUud2lkdGgoKSwgaSA/IG5ld1NpemUuaGVpZ2h0
KCkgOiBtaW5BdXRvU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIC8vIFByb3RlY3QgdGhlIGNvbnRl
bnQgZnJvbSBldmVyZ3Jvd2luZyBsYXlvdXQuCiAgICAgICAgIGF1dG8gcHJlZmVycmVkVmlld3Bv
cnRXaWR0aCA9IHN0ZDo6bWluKG5ld1NpemUud2lkdGgoKSwgbV9hdXRvU2l6ZUNvbnN0cmFpbnQu
d2lkdGgoKSk7CisgICAgICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0
cyhwcmVmZXJyZWRWaWV3cG9ydFdpZHRoKTsKICAgICAgICAgb3ZlcnJpZGVXaWR0aEZvckNTU1Nt
YWxsVmlld3BvcnRVbml0cyhwcmVmZXJyZWRWaWV3cG9ydFdpZHRoKTsKICAgICAgICAgb3ZlcnJp
ZGVXaWR0aEZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhwcmVmZXJyZWRWaWV3cG9ydFdpZHRoKTsK
ICAgICAgICAgLy8gRm9yY2UgdGhlIHNjcm9sbGJhciBzdGF0ZSB0byBhdm9pZCB0aGUgc2Nyb2xs
YmFyIGNvZGUgYWRkaW5nIHRoZW0gYW5kIGNhdXNpbmcgdGhlbSB0byBiZSBuZWVkZWQuIEZvciBl
eGFtcGxlLApAQCAtNDc2NywxMSArNDc2OSwxMyBAQCB2b2lkIEZyYW1lVmlldzo6ZW5hYmxlQXV0
b1NpemVNb2RlKGJvb2wgZW5hYmxlLCBjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgQXV0b1Npegog
ICAgIHNldE5lZWRzTGF5b3V0QWZ0ZXJWaWV3Q29uZmlndXJhdGlvbkNoYW5nZSgpOwogICAgIGxh
eW91dENvbnRleHQoKS5zY2hlZHVsZUxheW91dCgpOwogICAgIGlmIChtX3Nob3VsZEF1dG9TaXpl
KSB7CisgICAgICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhtX2F1
dG9TaXplQ29uc3RyYWludC53aWR0aCgpKTsKICAgICAgICAgb3ZlcnJpZGVXaWR0aEZvckNTU1Nt
YWxsVmlld3BvcnRVbml0cyhtX2F1dG9TaXplQ29uc3RyYWludC53aWR0aCgpKTsKICAgICAgICAg
b3ZlcnJpZGVXaWR0aEZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhtX2F1dG9TaXplQ29uc3RyYWlu
dC53aWR0aCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGNsZWFyU2l6ZU92ZXJy
aWRlRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKTsKICAgICBjbGVhclNpemVPdmVycmlkZUZv
ckNTU1NtYWxsVmlld3BvcnRVbml0cygpOwogICAgIGNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NTTGFy
Z2VWaWV3cG9ydFVuaXRzKCk7CiAgICAgLy8gU2luY2UgYXV0b3NpemUgbW9kZSBmb3JjZXMgdGhl
IHNjcm9sbGJhciBtb2RlLCBjaGFuZ2UgdGhlbSB0byBiZWluZyBhdXRvLgpAQCAtNTYwMiw2ICs1
NjA2LDQ3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVWaWV3
OjpjbGVhclNpemVPdmVycmlkZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCkKK3sKKyAgICBp
ZiAoIW1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgIGRvY3VtZW50LT5z
dHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7Cit9CisKK3ZvaWQg
RnJhbWVWaWV3OjpzZXRTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoRmxvYXRTaXplIHNp
emUpCit7CisgICAgb3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoeyBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkgfSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpvdmVycmlk
ZVdpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoZmxvYXQgd2lkdGgpCit7CisgICAgb3Zl
cnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoeyB3aWR0aCwgbV9kZWZhdWx0Vmll
d3BvcnRTaXplT3ZlcnJpZGUgPyBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZS0+aGVpZ2h0
IDogc3RkOjpudWxsb3B0IH0pOworfQorCit2b2lkIEZyYW1lVmlldzo6cmVzZXRPdmVycmlkZGVu
V2lkdGhGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpCit7CisgICAgb3ZlcnJpZGVTaXplRm9y
Q1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoeyB7IH0sIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJy
aWRlID8gbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9w
dCB9KTsKK30KKwordm9pZCBGcmFtZVZpZXc6Om92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3
cG9ydFVuaXRzKE92ZXJyaWRlVmlld3BvcnRTaXplIHNpemUpCit7CisgICAgaWYgKG1fZGVmYXVs
dFZpZXdwb3J0U2l6ZU92ZXJyaWRlICYmICptX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA9
PSBzaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVy
cmlkZSA9IHNpemU7CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50
KCkpCisgICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVu
dmlyb25tZW50KCk7Cit9CisKK0Zsb2F0U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JDU1NEZWZhdWx0
Vmlld3BvcnRVbml0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzT3ZlcnJpZGUobV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUpOworfQor
CiB2b2lkIEZyYW1lVmlldzo6Y2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NTbWFsbFZpZXdwb3J0VW5p
dHMoKQogewogICAgIGlmICghbV9zbWFsbFZpZXdwb3J0U2l6ZU92ZXJyaWRlKQpAQCAtNTcxNiw5
ICs1NzYxLDExIEBAIEZsb2F0U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JDU1NEeW5hbWljVmlld3Bv
cnRVbml0cygpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3RGb3JGaXhlZFBvc2l0aW9uTGF5b3V0KCku
c2l6ZSgpOwogfQogCi1GbG9hdFNpemUgRnJhbWVWaWV3OjpzaXplRm9yQ1NTRGVmYXVsdFZpZXdw
b3J0VW5pdHMoKSBjb25zdAordm9pZCBGcmFtZVZpZXc6OmNvcHlDU1NWaWV3cG9ydFVuaXRzKEZy
YW1lVmlldyYgdmlldykKIHsKLSAgICByZXR1cm4gc2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0
cygpOworICAgIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID0gdmlldy5tX2RlZmF1bHRW
aWV3cG9ydFNpemVPdmVycmlkZTsKKyAgICBtX3NtYWxsVmlld3BvcnRTaXplT3ZlcnJpZGUgPSB2
aWV3Lm1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZTsKKyAgICBtX2xhcmdlVmlld3BvcnRTaXpl
T3ZlcnJpZGUgPSB2aWV3Lm1fbGFyZ2VWaWV3cG9ydFNpemVPdmVycmlkZTsKIH0KIAogYm9vbCBG
cmFtZVZpZXc6OnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVmNjQ4Y2E0OGZmZmJmOWM0MmI1
YzE2ZjkzMy4uNTg3NmU3ZWNkMGVlM2MzZDBhYzk1ZGY1Y2IzNDM5ZTQwODA2NGUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yMjgsNiArMjI4LDEwIEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0Vmlld1NpemUoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKEZsb2F0U2l6ZSk7CisgICAg
dm9pZCBjbGVhclNpemVPdmVycmlkZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCk7CisgICAg
RmxvYXRTaXplIHNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpIGNvbnN0OworCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKEZsb2F0
U2l6ZSk7CiAgICAgdm9pZCBjbGVhclNpemVPdmVycmlkZUZvckNTU1NtYWxsVmlld3BvcnRVbml0
cygpOwogICAgIEZsb2F0U2l6ZSBzaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCkgY29uc3Q7
CkBAIC0yMzgsNyArMjQyLDcgQEAgcHVibGljOgogCiAgICAgRmxvYXRTaXplIHNpemVGb3JDU1NE
eW5hbWljVmlld3BvcnRVbml0cygpIGNvbnN0OwogCi0gICAgRmxvYXRTaXplIHNpemVGb3JDU1NE
ZWZhdWx0Vmlld3BvcnRVbml0cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eUNTU1ZpZXdwb3J0VW5pdHMoRnJhbWVWaWV3Jik7CiAKICAgICBJbnRSZWN0IHdpbmRvd0NsaXBS
ZWN0KCkgY29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCB3aW5kb3dDbGlw
UmVjdEZvckZyYW1lT3duZXIoY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgYm9vbCBjbGlw
VG9MYXllckNvbnRlbnRzKSBjb25zdDsKQEAgLTg2Nyw2ICs4NzEsMTAgQEAgcHJpdmF0ZToKICAg
ICB9OwogICAgIEZsb2F0U2l6ZSBjYWxjdWxhdGVTaXplRm9yQ1NTVmlld3BvcnRVbml0c092ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9ydFNpemU+KSBjb25zdDsKIAorICAgIHZv
aWQgb3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoT3ZlcnJpZGVWaWV3cG9y
dFNpemUpOworICAgIHZvaWQgb3ZlcnJpZGVXaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRz
KGZsb2F0KTsKKyAgICB2b2lkIHJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZpZXdw
b3J0VW5pdHMoKTsKKwogICAgIHZvaWQgb3ZlcnJpZGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVu
aXRzKE92ZXJyaWRlVmlld3BvcnRTaXplKTsKICAgICB2b2lkIG92ZXJyaWRlV2lkdGhGb3JDU1NT
bWFsbFZpZXdwb3J0VW5pdHMoZmxvYXQpOwogICAgIHZvaWQgcmVzZXRPdmVycmlkZGVuV2lkdGhG
b3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKTsKQEAgLTk0NCw2ICs5NTIsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gbV9jdXN0b21TaXplRm9yUmVzaXplRXZlbnQ7CiAj
ZW5kaWYKIAorICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9ydFNpemU+IG1fZGVmYXVs
dFZpZXdwb3J0U2l6ZU92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9y
dFNpemU+IG1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPE92
ZXJyaWRlVmlld3BvcnRTaXplPiBtX2xhcmdlVmlld3BvcnRTaXplT3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5k
ZXggZWM0MzlkMDY3MTRlNmRlNWI5NGUyMWZiOWNlOGVlMjM5Yzk2MjJmYS4uMTFhYTNlNGI1ZTI4
NTI2ODhiYTFhYmJmNjdkMTRiZTQ5YzQ0Mzg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTQ0LDYgKzQ0LDkgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgdW5kZXJsYXlDb2xvcjsKICAgICBlbmNvZGVyIDw8IHVz
ZUZpeGVkTGF5b3V0OwogICAgIGVuY29kZXIgPDwgZml4ZWRMYXlvdXRTaXplOworICAgIGVuY29k
ZXIgPDwgZGVmYXVsdFVub2JzY3VyZWRTaXplOworICAgIGVuY29kZXIgPDwgbWluaW11bVVub2Jz
Y3VyZWRTaXplOworICAgIGVuY29kZXIgPDwgbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGVu
Y29kZXIgPDwgdmlld0V4cG9zZWRSZWN0OwogICAgIGVuY29kZXIgPDwgYWx3YXlzU2hvd3NIb3Jp
em9udGFsU2Nyb2xsZXI7CiAgICAgZW5jb2RlciA8PCBhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xs
ZXI7CkBAIC0xMDIsOCArMTA1LDYgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYXZhaWxh
YmxlU2NyZWVuU2l6ZTsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRlU2NyZWVuU2l6ZTsKICAgICBl
bmNvZGVyIDw8IHRleHRBdXRvc2l6aW5nV2lkdGg7Ci0gICAgZW5jb2RlciA8PCBtaW5pbXVtVW5v
YnNjdXJlZFNpemU7Ci0gICAgZW5jb2RlciA8PCBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAg
ZW5jb2RlciA8PCBkZXZpY2VPcmllbnRhdGlvbjsKICAgICBlbmNvZGVyIDw8IGtleWJvYXJkSXNB
dHRhY2hlZDsKICAgICBlbmNvZGVyIDw8IGNhblNob3dXaGlsZUxvY2tlZDsKQEAgLTIyNSw2ICsy
MjYsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZml4ZWRMYXlvdXRTaXpl
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuZGVmYXVsdFVub2JzY3VyZWRTaXplKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWluaW11bVVub2Jz
Y3VyZWRTaXplKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMubWF4aW11bVVub2JzY3VyZWRTaXplKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmll
d0V4cG9zZWRSZWN0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpKQpA
QCAtMzY2LDEwICszNzMsNiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXh0
QXV0b3NpemluZ1dpZHRoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWluaW11bVVub2JzY3VyZWRTaXplKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMubWF4aW11bVVub2JzY3VyZWRTaXplKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGV2aWNlT3JpZW50YXRpb24pKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5rZXlib2FyZElzQXR0YWNoZWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGNiNzQxNjkzZGIzMGE3NTAyYjQ4OWM4
Mzk3Y2VmNmM3MzlmZWRhOTEuLjkwZTVjZWE1MjJlNWY0MTc0MzZlMzdmMzRlODFlOTNlN2JmY2Vj
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKQEAgLTg0LDYgKzg0LDEwIEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0OwogICAgIFdlYkNvcmU6OkludFNpemUgZml4ZWRM
YXlvdXRTaXplOwogCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIGRlZmF1bHRVbm9ic2N1cmVkU2l6
ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bVVub2JzY3VyZWRTaXplOworICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CisKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0OwogCiAgICAgYm9vbCBhbHdh
eXNTaG93c0hvcml6b250YWxTY3JvbGxlcjsKQEAgLTE2Miw4ICsxNjYsNiBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIGF2YWlsYWJs
ZVNjcmVlblNpemU7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG92ZXJyaWRlU2NyZWVuU2l6ZTsK
ICAgICBmbG9hdCB0ZXh0QXV0b3NpemluZ1dpZHRoOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBt
aW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9i
c2N1cmVkU2l6ZTsKICAgICBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uIHsgMCB9OwogICAgIGJv
b2wga2V5Ym9hcmRJc0F0dGFjaGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhblNob3dXaGlsZUxv
Y2tlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmgKaW5kZXggNWQ5ZTg2YzdlNjE4OTk3MDQ3ZmJhMTZmZTJhYmQzZWM5MGRjNDc5My4u
NDA3MDQwOGMzZGMwODhmM2Y1MWNhMWE3OTViMmE4Mzc4OTA0Zjg4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtNjIxLDYgKzYyMSwyNSBA
QCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVz
ZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLRnVsbHNjcmVlblN0YXRlIGZ1bGxzY3JlZW5TdGF0ZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisvKiEgQGFic3RyYWN0IElu
c2V0cyBmcm9tIHRoZSBAbGluayBmcmFtZSBAL2xpbmsgdGhhdCByZXByZXNlbnQgdGhlIHNtYWxs
ZXN0IGFuZCBsYXJnZXN0IHBvc3NpYmxlIHNpemUgb2YgdGhlCisgdmlzdWFsIGFyZWEgb2YgdGhl
IEBsaW5rIFdLV2ViVmlldyBAL2xpbmsgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZSBzdXJyb3Vu
ZGluZyBVSS4KKyBAZGlzY3Vzc2lvbiBGb3IgYXBwcyB3aXRoIHNpemUtY2hhbmdpbmcgVUkgYXJv
dW5kIHRoZSBAbGluayBXS1dlYlZpZXcgQC9saW5rLCBzcGVjaWZ5IG1pbmltdW1WaWV3cG9ydElu
c2V0IGFuZAorIG1heGltdW1WaWV3cG9ydEluc2V0IHRvIHN1cHBseSB3ZWJwYWdlcyB3aXRoIHRo
ZSBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgQ1NTICJsYXJnZSB2aWV3cG9ydCIgYGx2KmAKKyB1bml0
cyBhbmQgQ1NTICJzbWFsbCB2aWV3cG9ydCIgYHN2KmAgdW5pdHMgcmVzcGVjdGl2ZWx5IEBsaW5r
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdmFsdWVzLTQvI3ZpZXdwb3J0LXZhcmlhbnRzIEAv
bGluay4KKyBTZXQgbWluaW11bVZpZXdwb3J0SW5zZXQgdG8gdGhlIHNtYWxsZXN0IGluc2V0IGEg
d2VicGFnZSBtYXkgZXhwZXJpZW5jZSBpbiB5b3VyIGFwcCdzIG1heGltYWxseQorIGNvbGxhcHNl
ZCBVSSBjb25maWd1cmF0aW9uLiBTZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQgdG8gdGhlIGxhcmdl
c3QgaW5zZXQgYSB3ZWJwYWdlIG1heSBleHBlcmllbmNlCisgaW4geW91ciBhcHAncyBtYXhpbWFs
bHkgZXhwYW5kZWQgVUkgY29uZmlndXJhdGlvbi4gRm9yIGFwcHMgd2hlcmUgdGhlIG1heGltYWxs
eSBjb2xsYXBzZWQgVUkKKyBjb25maWd1cmF0aW9uIGlzIHN1Y2ggdGhhdCB0aGUgQGxpbmsgV0tX
ZWJWaWV3IEAvbGluayBpcyBub3Qgc3Vycm91bmRlZCBieSBhbnl0aGluZywgdGhlcmUgaXMgbm8g
bmVlZCB0byBzcGVjaWZ5CisgbWluaW11bVZpZXdwb3J0SW5zZXQuIEZvciBhcHBzIHdpdGggZml4
ZWQtc2l6ZWQgVUkgc3Vycm91bmRpbmcgdGhlIEBsaW5rIFdLV2ViVmlldyBAL2xpbmssIHRoZXJl
IGlzIG5vIG5lZWQgdG8KKyBzcGVjaWZ5IGVpdGhlciB2YWx1ZS4gQm90aCB2YWx1ZXMgbXVzdCBi
ZSBlaXRoZXIgemVybyBvciBwb3NpdGl2ZSwgYW5kIG1heGltdW1WaWV3cG9ydEluc2V0IG11c3Qg
YmUKKyBsYXJnZXIgdGhhbiBtaW5pbXVtVmlld3BvcnRJbnNldC4KKyAqLworI2lmIFRBUkdFVF9P
U19JUEhPTkUKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIG1p
bmltdW1WaWV3cG9ydEluc2V0IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIG1heGltdW1WaWV3cG9y
dEluc2V0IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpc2V0TWlu
aW11bVZpZXdwb3J0SW5zZXQ6KFVJRWRnZUluc2V0cyltaW5pbXVtVmlld3BvcnRJbnNldCBtYXhp
bXVtVmlld3BvcnRJbnNldDooVUlFZGdlSW5zZXRzKW1heGltdW1WaWV3cG9ydEluc2V0IFdLX0FQ
SV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKyNlbmRpZgorCiBAZW5kCiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggZDc4YjkzMWYxMzBiMDY2MWZjODhiODQ2ZDkwYzZjZWNmNDBjY2FjOC4u
MjMwZjA2YzhjZDg2NGIxNmIwNGYxOTI1OTViNWExNTI1ZjdmYmFkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTQ5LDYgKzE1NDks
NDEgQEAgLSAodm9pZClfaW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZToodm9p
ZCAoXikodm9pZCkpdXBkYXRlQmxvY2sgd2l0aG8KICAgICB9KTsKIH0KIAorLSAodm9pZClfcmVj
YWxjdWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3cG9ydEluc2V0OihDb2NvYUVkZ2VJ
bnNldHMpbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQ6KENvY29hRWRn
ZUluc2V0cyltYXhpbXVtVmlld3BvcnRJbnNldCB0aHJvd09uSW52YWxpZElucHV0OihCT09MKXRo
cm93T25JbnZhbGlkSW5wdXQKK3sKKyAgICBhdXRvIGZyYW1lID0gV2ViQ29yZTo6RmxvYXRTaXpl
KHNlbGYuZnJhbWUuc2l6ZSk7CisKKyAgICBhdXRvIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IGZy
YW1lIC0gV2ViQ29yZTo6RmxvYXRTaXplKG1heGltdW1WaWV3cG9ydEluc2V0LmxlZnQgKyBtYXhp
bXVtVmlld3BvcnRJbnNldC5yaWdodCwgbWF4aW11bVZpZXdwb3J0SW5zZXQudG9wICsgbWF4aW11
bVZpZXdwb3J0SW5zZXQuYm90dG9tKTsKKyAgICBpZiAobWluaW11bVVub2JzY3VyZWRTaXplLmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAodGhyb3dPbkludmFsaWRJbnB1dCkgeworICAgICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
Im1heGltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBmcmFtZSJdOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
Vmlld3BvcnRTaXppbmcsICJtYXhpbXVtVmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbGFyZ2VyIHRo
YW4gZnJhbWUiKTsKKyAgICAgICAgbWluaW11bVVub2JzY3VyZWRTaXplID0gZnJhbWU7CisgICAg
fQorCisgICAgYXV0byBtYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBmcmFtZSAtIFdlYkNvcmU6OkZs
b2F0U2l6ZShtaW5pbXVtVmlld3BvcnRJbnNldC5sZWZ0ICsgbWluaW11bVZpZXdwb3J0SW5zZXQu
cmlnaHQsIG1pbmltdW1WaWV3cG9ydEluc2V0LnRvcCArIG1pbmltdW1WaWV3cG9ydEluc2V0LmJv
dHRvbSk7CisgICAgaWYgKG1heGltdW1Vbm9ic2N1cmVkU2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaWYgKHRocm93T25JbnZhbGlkSW5wdXQpIHsKKyAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJtaW5pbXVtVmlld3BvcnRJ
bnNldCBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZnJhbWUiXTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFZpZXdwb3J0U2l6aW5nLCAi
bWluaW11bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxhcmdlciB0aGFuIGZyYW1lIik7CisgICAg
ICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IGZyYW1lOworICAgIH0KKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgaWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlIHx8IF9taW5pbXVt
VW5vYnNjdXJlZFNpemVPdmVycmlkZSB8fCBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUp
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgX3BhZ2UtPnNldE1pbmltdW1Vbm9ic2N1
cmVkU2l6ZShtaW5pbXVtVW5vYnNjdXJlZFNpemUpOworICAgIF9wYWdlLT5zZXRNYXhpbXVtVW5v
YnNjdXJlZFNpemUobWF4aW11bVVub2JzY3VyZWRTaXplKTsKK30KKwogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKIC0gKHZvaWQpX2RpZEluc2VydEF0dGFjaG1lbnQ6KEFQSTo6QXR0
YWNobWVudCYpYXR0YWNobWVudCB3aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZQpAQCAtMTgz
MCw2ICsxODY1LDI3IEBAIC0gKFdLRnVsbHNjcmVlblN0YXRlKWZ1bGxzY3JlZW5TdGF0ZQogI2Vu
ZGlmCiB9CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCistICh2b2lkKXNldE1pbmltdW1W
aWV3cG9ydEluc2V0OihDb2NvYUVkZ2VJbnNldHMpbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11
bVZpZXdwb3J0SW5zZXQ6KENvY29hRWRnZUluc2V0cyltYXhpbXVtVmlld3BvcnRJbnNldAorewor
ICAgIGlmIChtaW5pbXVtVmlld3BvcnRJbnNldC50b3AgPCAwIHx8IG1pbmltdW1WaWV3cG9ydElu
c2V0LmxlZnQgPCAwIHx8IG1pbmltdW1WaWV3cG9ydEluc2V0LmJvdHRvbSA8IDAgfHwgbWluaW11
bVZpZXdwb3J0SW5zZXQucmlnaHQgPCAwKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAibWluaW11bVZpZXdwb3J0SW5zZXQgY2Fu
bm90IGJlIG5lZ2F0aXZlIl07CisKKyAgICBpZiAobWF4aW11bVZpZXdwb3J0SW5zZXQudG9wIDwg
MCB8fCBtYXhpbXVtVmlld3BvcnRJbnNldC5sZWZ0IDwgMCB8fCBtYXhpbXVtVmlld3BvcnRJbnNl
dC5ib3R0b20gPCAwIHx8IG1heGltdW1WaWV3cG9ydEluc2V0LnJpZ2h0IDwgMCkKKyAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIm1h
eGltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBuZWdhdGl2ZSJdOworCisgICAgaWYgKG1pbmlt
dW1WaWV3cG9ydEluc2V0LnRvcCArIG1pbmltdW1WaWV3cG9ydEluc2V0LmJvdHRvbSA+IG1heGlt
dW1WaWV3cG9ydEluc2V0LnRvcCArIG1heGltdW1WaWV3cG9ydEluc2V0LmJvdHRvbSB8fCBtaW5p
bXVtVmlld3BvcnRJbnNldC5yaWdodCArIG1pbmltdW1WaWV3cG9ydEluc2V0LmxlZnQgPiBtYXhp
bXVtVmlld3BvcnRJbnNldC5yaWdodCArIG1heGltdW1WaWV3cG9ydEluc2V0LmxlZnQpCisgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCJtaW5pbXVtVmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gbWF4aW11bVZpZXdw
b3J0SW5zZXQiXTsKKworICAgIFtzZWxmIF9yZWNhbGN1bGF0ZVZpZXdwb3J0U2l6ZXNXaXRoTWlu
aW11bVZpZXdwb3J0SW5zZXQ6bWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5z
ZXQ6bWF4aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDpZRVNdOworCisgICAg
X21pbmltdW1WaWV3cG9ydEluc2V0ID0gbWluaW11bVZpZXdwb3J0SW5zZXQ7CisgICAgX21heGlt
dW1WaWV3cG9ydEluc2V0ID0gbWF4aW11bVZpZXdwb3J0SW5zZXQ7Cit9CisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQorCiBAZW5kCiAKICNwcmFnbWEgbWFyayAtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmlu
ZGV4IGMzMjg1MGIyNmE4ZjkwMTgwMThlYjg0NWRlMDNjOTRmNjBlYjE1ZTMuLjFlOTg1NzVmZjk3
NWY5NjBkNzE1YmFhMGFjMTZjYmVlZTM2ZGJkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01OSw2ICs1OSwx
NCBAQAogI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMKICNlbmRpZgogCisjaWYgVVNFKEFQ
UEtJVCkKK3VzaW5nIENvY29hRWRnZUluc2V0cyA9IE5TRWRnZUluc2V0czsKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3VzaW5nIENvY29hRWRnZUluc2V0cyA9IFVJRWRnZUlu
c2V0czsKKyNlbmRpZgorCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFn
ZVJlZjsKIAogbmFtZXNwYWNlIEFQSSB7CkBAIC0xMzIsNiArMTQwLDExIEBAIGNsYXNzIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjsKICAgICBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBfb2JzZXJ2
ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50czsKICAgICBCT09MIF91c2VQbGF0Zm9ybUZpbmRVSTsK
IAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQ29jb2FFZGdlSW5zZXRzIF9taW5pbXVt
Vmlld3BvcnRJbnNldDsKKyAgICBDb2NvYUVkZ2VJbnNldHMgX21heGltdW1WaWV3cG9ydEluc2V0
OworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6V2ViVmlld0ltcGw+IF9pbXBsOwogICAgIFJldGFpblB0cjxXS1RleHRGaW5kZXJDbGllbnQ+
IF90ZXh0RmluZGVyQ2xpZW50OwpAQCAtMTYxLDkgKzE3NCw3IEBAIGNsYXNzIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjsKICAgICBzdGQ6Om9wdGlvbmFsPENHU2l6ZT4gX3ZpZXdMYXlvdXRTaXplT3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9sYXN0U2VudFZp
ZXdMYXlvdXRTaXplOwogICAgIHN0ZDo6b3B0aW9uYWw8Q0dTaXplPiBfbWluaW11bVVub2JzY3Vy
ZWRTaXplT3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IF9s
YXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBzdGQ6Om9wdGlvbmFsPENHU2l6ZT4g
X21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRTaXplPiBfbGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgQ0dSZWN0
IF9pbnB1dFZpZXdCb3VuZHNJbldpbmRvdzsKIAogICAgIENHRmxvYXQgX3ZpZXdwb3J0TWV0YVRh
Z1dpZHRoOwpAQCAtMjgzLDYgKzI5NCw4IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsK
IAogLSAodm9pZClfaW50ZXJuYWxEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZToodm9pZCAo
Xikodm9pZCkpdXBkYXRlQmxvY2sgd2l0aG91dFdhaXRpbmdGb3JQYWludGluZzooQk9PTCl3aXRo
b3V0V2FpdGluZ0ZvclBhaW50aW5nIHdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU6KEJP
T0wpd2l0aG91dFdhaXRpbmdGb3JBbmltYXRlZFJlc2l6ZTsKIAorLSAodm9pZClfcmVjYWxjdWxh
dGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3cG9ydEluc2V0OihDb2NvYUVkZ2VJbnNldHMp
bWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQ6KENvY29hRWRnZUluc2V0
cyltYXhpbXVtVmlld3BvcnRJbnNldCB0aHJvd09uSW52YWxpZElucHV0OihCT09MKXRocm93T25J
bnZhbGlkSW5wdXQ7CisKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJuaW5nOihjb25zdCBX
ZWJLaXQ6OlNhZmVCcm93c2luZ1dhcm5pbmcmKXdhcm5pbmcgY29tcGxldGlvbkhhbmRsZXI6KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjp2YXJpYW50PFdlYktpdDo6Q29udGludWVVbnNhZmVM
b2FkLCBVUkw+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfY2xlYXJTYWZlQnJv
d3NpbmdXYXJuaW5nOwogLSAodm9pZClfY2xlYXJTYWZlQnJvd3NpbmdXYXJuaW5nSWZGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQppbmRleCA1NDRjNzE0YWM2MTBmNGRlYTA3YmMxNjFkNDAzYjE2ZTc2YTIx
ZjEyLi5kNjYzMDE4Y2ZlY2Y2OGZiOGFmZjRlMTIyYjlmZDVjYjk1NjIyZTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtNzI0LDgg
KzcyNCw2IEBAIC0gKHZvaWQpX3Byb2Nlc3NXaWxsU3dhcE9yRGlkRXhpdAogICAgIF9kaWREZWZl
clVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JVbnN0YWJsZVNjcm9sbFZpZXcgPSBOTzsKICAg
ICBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJkID0gTk87CiAg
ICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgX2xhc3RTZW50
TWluaW11bVVub2JzY3VyZWRTaXplID0gc3RkOjpudWxsb3B0OwotICAgIF9sYXN0U2VudE1heGlt
dW1Vbm9ic2N1cmVkU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBfbGFzdFNlbnREZXZpY2VPcmll
bnRhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3Qg
PSBzdGQ6Om51bGxvcHQ7CkBAIC0xOTQyLDI0ICsxOTQwLDYgQEAgLSAodm9pZClfZGlzcGF0Y2hT
ZXRWaWV3TGF5b3V0U2l6ZTooV2ViQ29yZTo6RmxvYXRTaXplKXZpZXdMYXlvdXRTaXplCiAgICAg
X2xhc3RTZW50Vmlld0xheW91dFNpemUgPSB2aWV3TGF5b3V0U2l6ZTsKIH0KIAotLSAodm9pZClf
ZGlzcGF0Y2hTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSltaW5p
bXVtVW5vYnNjdXJlZFNpemUKLXsKLSAgICBpZiAoX2xhc3RTZW50TWluaW11bVVub2JzY3VyZWRT
aXplICYmIENHU2l6ZUVxdWFsVG9TaXplKF9sYXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZS52
YWx1ZSgpLCBtaW5pbXVtVW5vYnNjdXJlZFNpemUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBf
cGFnZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXplKG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk7Ci0g
ICAgX2xhc3RTZW50TWluaW11bVVub2JzY3VyZWRTaXplID0gbWluaW11bVVub2JzY3VyZWRTaXpl
OwotfQotCi0tICh2b2lkKV9kaXNwYXRjaFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZTooV2ViQ29y
ZTo6RmxvYXRTaXplKW1heGltdW1Vbm9ic2N1cmVkU2l6ZQotewotICAgIGlmIChfbGFzdFNlbnRN
YXhpbXVtVW5vYnNjdXJlZFNpemUgJiYgQ0dTaXplRXF1YWxUb1NpemUoX2xhc3RTZW50TWF4aW11
bVVub2JzY3VyZWRTaXplLnZhbHVlKCksIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIF9wYWdlLT5zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUobWF4aW11bVVu
b2JzY3VyZWRTaXplKTsKLSAgICBfbGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhp
bXVtVW5vYnNjdXJlZFNpemU7Ci19Ci0KIC0gKHZvaWQpX2Rpc3BhdGNoU2V0RGV2aWNlT3JpZW50
YXRpb246KGludDMyX3QpZGV2aWNlT3JpZW50YXRpb24KIHsKICAgICBpZiAoX2xhc3RTZW50RGV2
aWNlT3JpZW50YXRpb24gJiYgX2xhc3RTZW50RGV2aWNlT3JpZW50YXRpb24udmFsdWUoKSA9PSBk
ZXZpY2VPcmllbnRhdGlvbikKQEAgLTE5ODYsMTAgKzE5NjYsOSBAQCAtICh2b2lkKV9mcmFtZU9y
Qm91bmRzQ2hhbmdlZAogICAgIGlmIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJL
aXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5vdFJlc2l6aW5nKSB7CiAgICAgICAgIGlm
ICghX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGUpCiAgICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hT
ZXRWaWV3TGF5b3V0U2l6ZTpbc2VsZiBhY3RpdmVWaWV3TGF5b3V0U2l6ZTpzZWxmLmJvdW5kc11d
OwotICAgICAgICBpZiAoIV9taW5pbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSkKLSAgICAgICAg
ICAgIFtzZWxmIF9kaXNwYXRjaFNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9h
dFNpemUoYm91bmRzLnNpemUpXTsKICAgICAgICAgaWYgKCFfbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGUpCi0gICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJl
ZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKV07CisgICAgICAgICAgICBfcGFn
ZS0+c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShib3VuZHMuc2l6
ZSkpOworICAgICAgICBbc2VsZiBfcmVjYWxjdWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1W
aWV3cG9ydEluc2V0Ol9taW5pbXVtVmlld3BvcnRJbnNldCBtYXhpbXVtVmlld3BvcnRJbnNldDpf
bWF4aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDpOT107CiAKICAgICAgICAg
Qk9PTCBzaXplQ2hhbmdlZCA9IE5POwogICAgICAgICBpZiAoX3BhZ2UpIHsKQEAgLTI0NDAsMTEg
KzI0MTksMTMgQEAgLSAodm9pZClfZGlkQ29tcGxldGVBbmltYXRlZFJlc2l6ZQogICAgIGlmICgh
X2xhc3RTZW50Vmlld0xheW91dFNpemUgfHwgbmV3Vmlld0xheW91dFNpemUgIT0gX2xhc3RTZW50
Vmlld0xheW91dFNpemUudmFsdWUoKSkKICAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0Vmlld0xh
eW91dFNpemU6bmV3Vmlld0xheW91dFNpemVdOwogCi0gICAgaWYgKCFfbGFzdFNlbnRNaW5pbXVt
VW5vYnNjdXJlZFNpemUgfHwgbmV3TWluaW11bVVub2JzY3VyZWRTaXplICE9IF9sYXN0U2VudE1p
bmltdW1Vbm9ic2N1cmVkU2l6ZS52YWx1ZSgpKQotICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRN
aW5pbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKG5ld01pbmltdW1Vbm9ic2N1
cmVkU2l6ZSldOwotCi0gICAgaWYgKCFfbGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUgfHwg
bmV3TWF4aW11bVVub2JzY3VyZWRTaXplICE9IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6
ZS52YWx1ZSgpKQotICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNp
emU6V2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSldOworICAgIGlm
IChfbWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpCisgICAgICAgIF9wYWdlLT5zZXRNaW5p
bXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01pbmltdW1Vbm9ic2N1cmVk
U2l6ZSkpOworICAgIGlmIChfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpIHsKKyAgICAg
ICAgX3BhZ2UtPnNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3
TWF4aW11bVVub2JzY3VyZWRTaXplKSk7CisgICAgICAgIF9wYWdlLT5zZXRNYXhpbXVtVW5vYnNj
dXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSkpOwor
ICAgIH0KKyAgICBbc2VsZiBfcmVjYWxjdWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3
cG9ydEluc2V0Ol9taW5pbXVtVmlld3BvcnRJbnNldCBtYXhpbXVtVmlld3BvcnRJbnNldDpfbWF4
aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDpOT107CiAKICAgICBpZiAoIV9s
YXN0U2VudERldmljZU9yaWVudGF0aW9uIHx8IG5ld09yaWVudGF0aW9uICE9IF9sYXN0U2VudERl
dmljZU9yaWVudGF0aW9uLnZhbHVlKCkpCiAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldERldmlj
ZU9yaWVudGF0aW9uOm5ld09yaWVudGF0aW9uXTsKQEAgLTI4MzAsNyArMjgxMSw3IEBAIC0gKHZv
aWQpX3NldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1NpemUpc2l6ZQogICAgIF9t
aW5pbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSA9IHNpemU7CiAKICAgICBpZiAoX2R5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpO
b3RSZXNpemluZykKLSAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRT
aXplOldlYkNvcmU6OkZsb2F0U2l6ZShzaXplKV07CisgICAgICAgIF9wYWdlLT5zZXRNaW5pbXVt
VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKIH0KIAogLy8gRGVwcmVj
YXRlZCBTUEkKQEAgLTI4NDUsOCArMjgyNiwxMCBAQCAtICh2b2lkKV9zZXRNYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZTooQ0dTaXplKXNpemUKICAgICBBU1NFUlQoc2l6ZS53aWR0aCA8PSBz
ZWxmLmJvdW5kcy5zaXplLndpZHRoICYmIHNpemUuaGVpZ2h0IDw9IHNlbGYuYm91bmRzLnNpemUu
aGVpZ2h0KTsKICAgICBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUgPSBzaXplOwogCi0g
ICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6RHluYW1pY1ZpZXdw
b3J0VXBkYXRlTW9kZTo6Tm90UmVzaXppbmcpCi0gICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1h
eGltdW1Vbm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSldOworICAgIGlmIChf
ZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFtaWNWaWV3cG9ydFVwZGF0
ZU1vZGU6Ok5vdFJlc2l6aW5nKSB7CisgICAgICAgIF9wYWdlLT5zZXREZWZhdWx0VW5vYnNjdXJl
ZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKKyAgICAgICAgX3BhZ2UtPnNldE1heGlt
dW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOworICAgIH0KIH0KIAog
LSAoVUlFZGdlSW5zZXRzKV9vYnNjdXJlZEluc2V0cwpAQCAtMzE4OCw5ICszMTcxLDExIEBAIC0g
KHZvaWQpX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBk
YXRlQmxvY2sKICAgICAgICAgaWYgKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICAg
ICAgW3NlbGYgX2Rpc3BhdGNoU2V0Vmlld0xheW91dFNpemU6bmV3Vmlld0xheW91dFNpemVdOwog
ICAgICAgICBpZiAoX21pbmltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKQotICAgICAgICAgICAg
W3NlbGYgX2Rpc3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6
ZShuZXdNaW5pbXVtVW5vYnNjdXJlZFNpemUpXTsKLSAgICAgICAgaWYgKF9tYXhpbXVtVW5vYnNj
dXJlZFNpemVPdmVycmlkZSkKLSAgICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1heGltdW1V
bm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9hdFNpemUobmV3TWF4aW11bVVub2JzY3VyZWRTaXpl
KV07CisgICAgICAgICAgICBfcGFnZS0+c2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6
OkZsb2F0U2l6ZShuZXdNaW5pbXVtVW5vYnNjdXJlZFNpemUpKTsKKyAgICAgICAgaWYgKF9tYXhp
bXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSkgeworICAgICAgICAgICAgX3BhZ2UtPnNldERlZmF1
bHRVbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3TWF4aW11bVVub2JzY3VyZWRT
aXplKSk7CisgICAgICAgICAgICBfcGFnZS0+c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKFdlYkNv
cmU6OkZsb2F0U2l6ZShuZXdNYXhpbXVtVW5vYnNjdXJlZFNpemUpKTsKKyAgICAgICAgfQogICAg
ICAgICBpZiAoX292ZXJyaWRlc0ludGVyZmFjZU9yaWVudGF0aW9uKQogICAgICAgICAgICAgW3Nl
bGYgX2Rpc3BhdGNoU2V0RGV2aWNlT3JpZW50YXRpb246bmV3T3JpZW50YXRpb25dOwogCkBAIC0z
MjY3LDggKzMyNTIsNiBAQCAtICh2b2lkKV9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6
KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrCiAgICAgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQg
dW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzRXh0ZW50KHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy50
b3AsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5yaWdodCwgdW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXRzLmJvdHRvbSwgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLmxlZnQpOwogCiAgICAgX2xhc3RT
ZW50Vmlld0xheW91dFNpemUgPSBuZXdWaWV3TGF5b3V0U2l6ZTsKLSAgICBfbGFzdFNlbnRNaW5p
bXVtVW5vYnNjdXJlZFNpemUgPSBuZXdNaW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgX2xhc3RT
ZW50TWF4aW11bVVub2JzY3VyZWRTaXplID0gbmV3TWF4aW11bVVub2JzY3VyZWRTaXplOwogICAg
IF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uID0gbmV3T3JpZW50YXRpb247CiAKICAgICBfcGFn
ZS0+ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShuZXdWaWV3TGF5b3V0U2l6ZSwgbmV3TWluaW11
bVVub2JzY3VyZWRTaXplLCBuZXdNYXhpbXVtVW5vYnNjdXJlZFNpemUsIHZpc2libGVSZWN0SW5D
b250ZW50Q29vcmRpbmF0ZXMsIHVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIGZ1
dHVyZVVub2JzY3VyZWRSZWN0SW5TZWxmQ29vcmRpbmF0ZXMsIHVub2JzY3VyZWRTYWZlQXJlYUlu
c2V0c0V4dGVudCwgdGFyZ2V0U2NhbGUsIG5ld09yaWVudGF0aW9uLCBuZXdNaW5pbXVtRWZmZWN0
aXZlRGV2aWNlV2lkdGgsICsrX2N1cnJlbnREeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjZiNDQwNjQ1NjBk
NTBlNjM3ODhjZDM3YTEyZDhhNWMwODQ2YjJjYS4uYzdlOGNmZjBmM2M2YjZhYzU3YzkxOTA2MWRi
Y2RmNGFjNjJkMGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MDYzLDYgKzQwNjMsNDUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEZpeGVkTGF5b3V0U2l6ZShzaXplKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXREZWZh
dWx0VW5vYnNjdXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChzaXpl
ID09IG1fZGVmYXVsdFVub2JzY3VyZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rl
ZmF1bHRVbm9ic2N1cmVkU2l6ZSA9IHNpemU7CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERl
ZmF1bHRVbm9ic2N1cmVkU2l6ZShtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZSkpOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA9PSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9taW5pbXVtVW5vYnNjdXJlZFNpemUgPSBzaXplOworCisgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUobV9taW5pbXVtVW5vYnNj
dXJlZFNpemUpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9ic2N1cmVk
U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKHNpemUgPT0gbV9tYXhpbXVt
VW5vYnNjdXJlZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWF4aW11bVVub2JzY3Vy
ZWRTaXplID0gc2l6ZTsKKworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF4aW11bVVub2JzY3Vy
ZWRTaXplKG1fbWF4aW11bVVub2JzY3VyZWRTaXplKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZp
ZXdFeHBvc2VkUmVjdCkKIHsKICAgICBpZiAobV92aWV3RXhwb3NlZFJlY3QgPT0gdmlld0V4cG9z
ZWRSZWN0KQpAQCAtODIzNiw2ICs4Mjc1LDkgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBX
ZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAg
ICBwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IgPSBtX3VuZGVybGF5Q29sb3I7CiAgICAgcGFyYW1l
dGVycy51c2VGaXhlZExheW91dCA9IG1fdXNlRml4ZWRMYXlvdXQ7CiAgICAgcGFyYW1ldGVycy5m
aXhlZExheW91dFNpemUgPSBtX2ZpeGVkTGF5b3V0U2l6ZTsKKyAgICBwYXJhbWV0ZXJzLmRlZmF1
bHRVbm9ic2N1cmVkU2l6ZSA9IG1fZGVmYXVsdFVub2JzY3VyZWRTaXplOworICAgIHBhcmFtZXRl
cnMubWluaW11bVVub2JzY3VyZWRTaXplID0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7CisgICAg
cGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtX21heGltdW1Vbm9ic2N1cmVkU2l6
ZTsKICAgICBwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCA9IG1fdmlld0V4cG9zZWRSZWN0Owog
ICAgIHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgPSBtX2Fsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyOwogICAgIHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NWZXJ0aWNh
bFNjcm9sbGVyID0gbV9hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXI7CkBAIC04Mjk0LDggKzgz
MzYsNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVT
Y3JlZW5TaXplID0gb3ZlcnJpZGVTY3JlZW5TaXplKCk7CiAgICAgcGFyYW1ldGVycy50ZXh0QXV0
b3NpemluZ1dpZHRoID0gdGV4dEF1dG9zaXppbmdXaWR0aCgpOwogICAgIHBhcmFtZXRlcnMubWlt
ZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMgPSBwYWdlQ2xpZW50KCkubWltZVR5cGVz
V2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMoKTsKLSAgICBwYXJhbWV0ZXJzLm1pbmltdW1Vbm9i
c2N1cmVkU2l6ZSA9IG1fbWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIHBhcmFtZXRlcnMubWF4
aW11bVVub2JzY3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgcGFyYW1l
dGVycy5kZXZpY2VPcmllbnRhdGlvbiA9IG1fZGV2aWNlT3JpZW50YXRpb247CiAgICAgcGFyYW1l
dGVycy5rZXlib2FyZElzQXR0YWNoZWQgPSBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKTsKICAg
ICBwYXJhbWV0ZXJzLmNhblNob3dXaGlsZUxvY2tlZCA9IG1fY29uZmlndXJhdGlvbi0+Y2FuU2hv
d1doaWxlTG9ja2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDA5NGI0NTU2NDFhZGY0ZDRmMjRlNGU3YjRhNGM0YmVhNzBkYzFhYWYuLjQ4ODc4NTdiZjIwYWJi
NGE5YmRhMjNhMDAyMjQ3ODdiMGI1ZTcxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC04NTEsMTAgKzg1MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGR5bmFtaWNW
aWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtVW5vYnNjdXJlZFNpemUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11bVVub2JzY3VyZWRTaXplLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0
YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudCYgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgdGFyZ2V0
U2NhbGUsIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24sIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZl
RGV2aWNlV2lkdGgsIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCk7CiAKICAgICB2b2lkIHNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGRvdWJsZSBzY2FsZUZhY3RvciwgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VX
aWR0aCk7Ci0gICAgdm9pZCBzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJik7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1pbmltdW1Vbm9ic2N1cmVkU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bVVub2JzY3VyZWRTaXplOyB9Ci0gICAgdm9pZCBz
ZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAg
V2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOyB9CiAgICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlv
bihpbnQzMl90KTsKICAgICBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kZXZpY2VPcmllbnRhdGlvbjsgfQogICAgIHZvaWQgc2V0T3ZlcnJpZGVWaWV3cG9ydEFy
Z3VtZW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYp
OwpAQCAtMTEyMiw2ICsxMTE4LDEzIEBAIHB1YmxpYzoKICAgICBib29sIHVzZUZpeGVkTGF5b3V0
KCkgY29uc3QgeyByZXR1cm4gbV91c2VGaXhlZExheW91dDsgfTsKICAgICBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBmaXhlZExheW91dFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkTGF5b3V0
U2l6ZTsgfTsKIAorICAgIHZvaWQgc2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWZhdWx0VW5vYnNjdXJl
ZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZTsgfQorICAgIHZv
aWQgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwor
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsgfQorICAgIHZvaWQgc2V0TWF4aW11bVVub2Jz
Y3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1Vbm9i
c2N1cmVkU2l6ZTsgfQorCiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+KTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7
IH0KIApAQCAtMjgzMiw2ICsyODM1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6
ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gbV92aWV3RXhwb3NlZFJlY3Q7CiAKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9kZWZhdWx0
VW5vYnNjdXJlZFNpemU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWluaW11bVVub2JzY3Vy
ZWRTaXplOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsK
KwogICAgIGJvb2wgbV9hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2Fsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciB7IGZhbHNlIH07CiAKQEAgLTMw
NjksOCArMzA3Niw2IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBG
dW5jdGlvbjxib29sKCk+IG1fZGV2aWNlT3JpZW50YXRpb25Vc2VyUGVybWlzc2lvbkhhbmRsZXJG
b3JUZXN0aW5nOwogICAgIGJvb2wgbV93YWl0aW5nRm9yUG9zdExheW91dEVkaXRvclN0YXRlVXBk
YXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhp
bXVtVW5vYnNjdXJlZFNpemU7CiAgICAgYm9vbCBtX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFja2dy
b3VuZCB7IGZhbHNlIH07CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGVyZm9ybUFjdGlvbk9uRWxl
bWVudEF1dGhUb2tlbnM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDc0YTRiN2QyNjQ4ZjA4NzVjNzFjYjIyYTcwODVlMzlm
NDUxZDUyMGMuLmZiZjhkYzBiYTVkNjgyMzhiZWVkZWVkYjgxYTA0OTllMjAwZGE1N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMjcz
LDYgKzI3Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIGNvCiAgICAgaGlkZVZhbGlkYXRpb25N
ZXNzYWdlKCk7CiAKICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplID0g
dmlld0xheW91dFNpemU7CisgICAgbV9kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5v
YnNjdXJlZFNpemU7CisgICAgbV9taW5pbXVtVW5vYnNjdXJlZFNpemUgPSBtaW5pbXVtVW5vYnNj
dXJlZFNpemU7CisgICAgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJl
ZFNpemU7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEeW5hbWljVmll
d3BvcnRTaXplVXBkYXRlKHZpZXdMYXlvdXRTaXplLAogICAgICAgICBtaW5pbXVtVW5vYnNjdXJl
ZFNpemUsIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCB0
YXJnZXRVbm9ic2N1cmVkUmVjdCwKICAgICAgICAgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlcywgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLApAQCAtMzAxLDIyICsz
MDQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9v
bCB1c2VyU2NhbGFibGUpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUodXNlclNjYWxhYmxlKSwgbV93ZWJQYWdlSUQp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX21pbmltdW1Vbm9ic2N1cmVkU2l6
ZSA9IHNpemU7Ci0KLSAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUoc2l6
ZSksIG1fd2ViUGFnZUlEKTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9i
c2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgbV9tYXhp
bXVtVW5vYnNjdXJlZFNpemUgPSBzaXplOwotCi0gICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF4aW11bVVu
b2JzY3VyZWRTaXplKHNpemUpLCBtX3dlYlBhZ2VJRCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKQogewogICAg
IGlmIChkZXZpY2VPcmllbnRhdGlvbiAhPSBtX2RldmljZU9yaWVudGF0aW9uKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmNmYyZDRhMjA3NTgwMTNkZDA2ZDJjOTZkODMy
ZWM1YzA0NjFkMzE5Li44MmE3NTA3MTgwMDY3ZWFmNDdlYzBmNGFjMmE4YzRkMTNmNGJjMWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1MjQsOSArMTUyNCwxMSBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KCkKICAgICBib29sIHNob3VsZEhpZGVTY3JvbGxiYXJzID0gc2hvdWxkRGlzYWJsZVNjcm9sbGlu
ZzsKICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0OwogCisgICAgYXV0byBvbGRW
aWV3ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKwogI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLSAgICBpZiAobV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkKLSAgICAg
ICAgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygp
LT5maXhlZFZpc2libGVDb250ZW50UmVjdCgpOworICAgIGlmIChvbGRWaWV3KQorICAgICAgICBm
aXhlZFZpc2libGVDb250ZW50UmVjdCA9IG9sZFZpZXctPmZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAgICAgaWYgKHNob3VsZFVzZUZpeGVkTGF5b3V0KQogICAgICAgICBzaG91bGRIaWRlU2Ny
b2xsYmFycyA9IHRydWU7CiAjZW5kaWYKQEAgLTE1NDksNiArMTU1MSwxMCBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICAg
ICAgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIGhvcml6b250YWxMb2NrLCB2ZXJ0aWNhbFNjcm9s
bGJhck1vZGUsIHZlcnRpY2FsTG9jayk7CiAKICAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0g
bV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKworICAgIGlmICh2aWV3ICYmIG9sZFZpZXcp
CisgICAgICAgIHZpZXctPmNvcHlDU1NWaWV3cG9ydFVuaXRzKCpvbGRWaWV3KTsKKwogICAgIGlm
IChpbnQgd2lkdGggPSB3ZWJQYWdlLT5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoKS53aWR0aCgp
KSB7CiAgICAgICAgIGludCBoZWlnaHQgPSBzdGQ6Om1heCh3ZWJQYWdlLT5taW5pbXVtU2l6ZUZv
ckF1dG9MYXlvdXQoKS5oZWlnaHQoKSwgMSk7CiAgICAgICAgIHZpZXctPmVuYWJsZUZpeGVkV2lk
dGhBdXRvU2l6ZU1vZGUodHJ1ZSwgeyB3aWR0aCwgaGVpZ2h0IH0pOwpAQCAtMTU2Nyw3ICsxNTcz
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCiAgICAgfQogCiAgICAgaWYgKGF1dG8gdmlld3BvcnRTaXplRm9yVmlld3BvcnRV
bml0cyA9IHdlYlBhZ2UtPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSkKLSAgICAg
ICAgdmlldy0+c2V0U2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygqdmlld3BvcnRTaXplRm9y
Vmlld3BvcnRVbml0cyk7CisgICAgICAgIHZpZXctPnNldFNpemVGb3JDU1NEZWZhdWx0Vmlld3Bv
cnRVbml0cygqdmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cyk7CiAgICAgdmlldy0+c2V0UHJv
aGliaXRzU2Nyb2xsaW5nKHNob3VsZERpc2FibGVTY3JvbGxpbmcpOwogICAgIHZpZXctPnNldFZp
c3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQoIXdlYlBhZ2UtPnNob3VsZEV4dGVuZEluY3JlbWVu
dGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA5OTZjMGNjODFj
NGY5NWRhMTViM2I1MjY5YzVkN2ZhNmNlOGViMzIuLjczYTFiMzFlZTMwYzczNzY3MDRhNmZlNjQx
MTRjOGQ2OWM1MjYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC03NDQsNiArNzQ0LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAog
ICAgIHNldFVzZUZpeGVkTGF5b3V0KHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQpOwogCisgICAg
c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKHBhcmFtZXRlcnMuZGVmYXVsdFVub2JzY3VyZWRTaXpl
KTsKKyAgICBzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUocGFyYW1ldGVycy5taW5pbXVtVW5vYnNj
dXJlZFNpemUpOworICAgIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShwYXJhbWV0ZXJzLm1heGlt
dW1Vbm9ic2N1cmVkU2l6ZSk7CisKICAgICBzZXRVbmRlcmxheUNvbG9yKHBhcmFtZXRlcnMudW5k
ZXJsYXlDb2xvcik7CiAKICAgICBzZXRQYWdpbmF0aW9uTW9kZShwYXJhbWV0ZXJzLnBhZ2luYXRp
b25Nb2RlKTsKQEAgLTg2Niw4ICs4NzAsNiBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdM
YXlvdXRTaXplKHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUs
IHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yLCBw
YXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0
aCk7Ci0gICAgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKHBhcmFtZXRlcnMubWluaW11bVVub2Jz
Y3VyZWRTaXplKTsKLSAgICBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUocGFyYW1ldGVycy5tYXhp
bXVtVW5vYnNjdXJlZFNpemUpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKQEAg
LTIzNjksNiArMjM3MSw4MSBAQCBJbnRTaXplIFdlYlBhZ2U6OmZpeGVkTGF5b3V0U2l6ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpOwogfQogCit2b2lkIFdlYlBh
Z2U6OnNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9hdFNpemUmIGRlZmF1bHRVbm9i
c2N1cmVkU2l6ZSkKK3sKKyAgICBpZiAoZGVmYXVsdFVub2JzY3VyZWRTaXplID09IG1fZGVmYXVs
dFVub2JzY3VyZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlZmF1bHRVbm9ic2N1
cmVkU2l6ZSA9IGRlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKworICAgIHVwZGF0ZVNpemVGb3JDU1NE
ZWZhdWx0Vmlld3BvcnRVbml0cygpOworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNpemVGb3JD
U1NEZWZhdWx0Vmlld3BvcnRVbml0cygpCit7CisgICAgYXV0byogbWFpbkZyYW1lVmlldyA9IHRo
aXMtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBpZiAoIW1haW5GcmFtZVZpZXcpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gZGVmYXVsdFVub2JzY3VyZWRTaXplID0gbV9kZWZhdWx0VW5vYnNj
dXJlZFNpemU7CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgaWYgKGRlZmF1bHRVbm9i
c2N1cmVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSA9IG1f
dmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdMYXlvdXRTaXplKCk7CisgICAgZGVmYXVsdFVub2Jz
Y3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJ
Z25vcmluZ0NvbnRlbnRTaXplKCkpOworI2VuZGlmCisgICAgbWFpbkZyYW1lVmlldy0+c2V0U2l6
ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSk7Cit9CisK
K3ZvaWQgV2ViUGFnZTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYg
bWluaW11bVVub2JzY3VyZWRTaXplKQoreworICAgIGlmIChtaW5pbXVtVW5vYnNjdXJlZFNpemUg
PT0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWlu
aW11bVVub2JzY3VyZWRTaXplID0gbWluaW11bVVub2JzY3VyZWRTaXplOworCisgICAgdXBkYXRl
U2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpOworfQorCit2b2lkIFdlYlBhZ2U6OnVwZGF0
ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKQoreworICAgIGF1dG8qIG1haW5GcmFtZVZp
ZXcgPSB0aGlzLT5tYWluRnJhbWVWaWV3KCk7CisgICAgaWYgKCFtYWluRnJhbWVWaWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fbWluaW11
bVVub2JzY3VyZWRTaXplOworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQorICAgIGlmIChtaW5p
bXVtVW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKQorICAgICAgICBtaW5pbXVtVW5vYnNjdXJlZFNp
emUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3TGF5b3V0U2l6ZSgpOworICAgIG1pbmlt
dW1Vbm9ic2N1cmVkU2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaW5pdGlh
bFNjYWxlSWdub3JpbmdDb250ZW50U2l6ZSgpKTsKKyNlbmRpZgorICAgIG1haW5GcmFtZVZpZXct
PnNldFNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMobWluaW11bVVub2JzY3VyZWRTaXplKTsK
K30KKwordm9pZCBXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgRmxvYXRT
aXplJiBtYXhpbXVtVW5vYnNjdXJlZFNpemUpCit7CisgICAgaWYgKG1heGltdW1Vbm9ic2N1cmVk
U2l6ZSA9PSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CisKKyAgICB1
cGRhdGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
dXBkYXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpCit7CisgICAgYXV0byogbWFpbkZy
YW1lVmlldyA9IHRoaXMtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBpZiAoIW1haW5GcmFtZVZpZXcp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWF4aW11bVVub2JzY3VyZWRTaXplID0gbV9t
YXhpbXVtVW5vYnNjdXJlZFNpemU7CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAgaWYg
KG1heGltdW1Vbm9ic2N1cmVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1heGltdW1Vbm9ic2N1
cmVkU2l6ZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdMYXlvdXRTaXplKCk7CisgICAg
bWF4aW11bVVub2JzY3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5p
bml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKCkpOworI2VuZGlmCisgICAgbWFpbkZyYW1l
Vmlldy0+c2V0U2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhtYXhpbXVtVW5vYnNjdXJlZFNp
emUpOworfQorCiB2b2lkIFdlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlvbnNEaWRDaGFuZ2UoY29u
c3QgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+JiBkaXNhYmxlZEFkYXB0YXRpb25zKQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC02NDAzLDcgKzY0ODAsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFNpegogCiAgICAgbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
ID0gdmlld3BvcnRTaXplOwogICAgIGlmIChtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHMpCi0gICAgICAgIGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2l6ZUZvckNT
U0xhcmdlVmlld3BvcnRVbml0cygqbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKTsK
KyAgICAgICAgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRTaXplRm9yQ1NTRGVm
YXVsdFZpZXdwb3J0VW5pdHMoKm1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyk7CiB9
CiAKIGJvb2wgV2ViUGFnZTo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZhZWYyMGRlZjMwYzA2OTI2
MTZlYzgwNTI2NDBhNDIzODE3ZDRkMzMuLmIwN2ViODc0M2MwYmZkZjEyNDQxOGJkZDQ5YjJlNzNh
ZGJmN2EzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTYxNyw2ICs2MTcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2V0Rml4ZWRMYXlvdXRTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJbnRTaXplIGZpeGVkTGF5
b3V0U2l6ZSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBzZXRNaW5pbXVtVW5vYnNjdXJlZFNp
emUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBzZXRNYXhpbXVtVW5vYnNj
dXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisKICAgICB2b2lkIGxpc3RlbkZv
ckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwog
CiAgICAgdm9pZCBzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCk7CkBAIC0xMTA2
LDggKzExMTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVWaXNpYmlsaXR5U3RhdGUoYm9v
bCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgdm9pZCBzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
Jik7Ci0gICAgdm9pZCBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJik7CiAgICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90KTsKICAgICB2
b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB2
aWV3TGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtVW5vYnNjdXJl
ZFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11bVVub2JzY3VyZWRTaXplLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBj
b25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgdGFyZ2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2aWNlT3JpZW50YXRpb24sIGRvdWJsZSBtaW5p
bXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgsIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCk7CiAg
ICAgYm9vbCBzY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZVdh
c1NldEJ5VUlQcm9jZXNzOyB9CkBAIC0xNTU4LDkgKzE1NjAsMTEgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
KTsKKyAgICB2b2lkIHVwZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpOworICAg
IHZvaWQgdXBkYXRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpOworICAgIHZvaWQgdXBk
YXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpOwogCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+IGZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24oKTsKICAgICB2b2lkIGdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlKTsKICAgICB2b2lkIGhhbmRsZVN5
bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50
OjpNb2RpZmllcj4sIFdlYkNvcmU6OlBvaW50ZXJJRCA9IFdlYkNvcmU6Om1vdXNlUG9pbnRlcklE
KTsKQEAgLTIwMDUsNiArMjAwOSwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3VzZUZpeGVk
TGF5b3V0IHsgZmFsc2UgfTsKIAorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2RlZmF1bHRVbm9i
c2N1cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNp
emU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRTaXplOworCiAg
ICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOwogCiAjaWYgRU5BQkxFKFVJX1BST0NF
U1NfUERGX0hVRCkKQEAgLTIyOTgsOCArMjMwNiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtX2luaXRpYWxTZWxlY3Rpb247CiAgICAgV2Vi
Q29yZTo6VmlzaWJsZVNlbGVjdGlvbiBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkg
eyBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKCkgfTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUg
bV9taW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWF4aW11
bVVub2JzY3VyZWRTaXplOwogICAgIGludDMyX3QgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsK
ICAgICBib29sIG1fa2V5Ym9hcmRJc0F0dGFjaGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2Fu
U2hvd1doaWxlTG9ja2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDgwZTFhNDA5MGVlMGUzZTg3
YTYzYTUzY2E0NTczMDMzODA3MWJmMGMuLmE2M2U5Y2YyYjhhZTJhNWI1OGI0ZWExYWQ2MzM1MTk0
OTZjZjEwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDksOCArNDksNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBNb3VzZUV2ZW50KFdlYktpdDo6V2ViTW91c2VFdmVudCBl
dmVudCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+PiBzYW5kYm94RXh0ZW5zaW9ucykKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZSBz
aXplLCBkb3VibGUgc2NhbGVGYWN0b3IsIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lk
dGgpCi0gICAgU2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXpl
KQotICAgIFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkK
ICAgICBTZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKQogICAg
IFNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cz4gYXJndW1lbnRzKQogICAgIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUo
V2ViQ29yZTo6RmxvYXRTaXplIHZpZXdMYXlvdXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgbWlu
aW11bVVub2JzY3VyZWRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRT
aXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBXZWJDb3Jl
OjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJn
ZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpSZWN0RWRn
ZXM8ZmxvYXQ+IHRhcmdldFVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywgZG91YmxlIHNjYWxlLCBp
bnQzMl90IGRldmljZU9yaWVudGF0aW9uLCBkb3VibGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoLCB1aW50NjRfdCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpCkBAIC0yOTUsNiArMjkz
LDExIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICBTZXRVc2VGaXhlZExheW91dChi
b29sIGZpeGVkKQogICAgIFNldEZpeGVkTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUp
CisKKyAgICBTZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
CisgICAgU2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQor
ICAgIFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKwog
ICAgIExpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcykKICAgICBTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYzdiMjg2NjE5OTc3MDA1
NGRmYzAyZGE4ZjI4ZGM4OWEwOWVkNDM2Yy4uNzFjMjlhOTBjMzc0ZmYwMGVmMTJkYzA5ZmY0MjVl
Yzk2NDIxNGM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTM1NjgsMTggKzM1NjgsNiBAQCB2b2lkIFdlYlBhZ2U6OnNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZG91YgogICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoem9vbVRvSW5pdGlhbFNj
YWxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUoY29uc3Qg
RmxvYXRTaXplJiBtaW5pbXVtVW5vYnNjdXJlZFNpemUpCi17Ci0gICAgbV9taW5pbXVtVW5vYnNj
dXJlZFNpemUgPSBtaW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgdXBkYXRlVmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cygpOwotfQotCi12b2lkIFdlYlBhZ2U6OnNldE1heGltdW1Vbm9i
c2N1cmVkU2l6ZShjb25zdCBGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSkKLXsKLSAg
ICBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1heGltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAgICB1
cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7Ci19Ci0KIHZvaWQgV2ViUGFn
ZTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKIHsKICAg
ICBpZiAoZGV2aWNlT3JpZW50YXRpb24gPT0gbV9kZXZpY2VPcmllbnRhdGlvbikKQEAgLTM2NDEs
NiArMzYyOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25z
dCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBjb25zdCBXCiAgICAgaWYgKHNldEZpeGVkTGF5
b3V0U2l6ZShuZXdMYXlvdXRTaXplKSkKICAgICAgICAgcmVzZXRUZXh0QXV0b3NpemluZygpOwog
CisgICAgc2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6ZSk7CiAg
ICAgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk7CiAgICAg
c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6ZSk7CiAgICAgbV9w
YWdlLT5zZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHModGFyZ2V0VW5vYnNjdXJlZFNhZmVBcmVh
SW5zZXRzKTsKQEAgLTM5NjAsNyArMzk0OSw5IEBAIHZvaWQgV2ViUGFnZTo6dmlld3BvcnRDb25m
aWd1cmF0aW9uQ2hhbmdlZChab29tVG9Jbml0aWFsU2NhbGUgem9vbVRvSW5pdGlhbFNjYWxlCiAK
ICAgICBtX3BhZ2UtPnNldFpvb21lZE91dFBhZ2VTY2FsZUZhY3RvcihtX3ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5taW5pbXVtU2NhbGUoKSk7CiAKLSAgICB1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKCk7CisgICAgdXBkYXRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRz
KCk7CisgICAgdXBkYXRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpOworICAgIHVwZGF0
ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKTsKIAogICAgIEZyYW1lVmlldyYgZnJhbWVW
aWV3ID0gKm1haW5GcmFtZVZpZXcoKTsKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGZy
YW1lVmlldy5zY3JvbGxQb3NpdGlvbigpOwpAQCAtMzk4NiwyMyArMzk3Nyw2IEBAIHZvaWQgV2Vi
UGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZChab29tVG9Jbml0aWFsU2NhbGUgem9v
bVRvSW5pdGlhbFNjYWxlCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKQotewotICAgIEZsb2F0U2l6ZSBzbWFsbGVzdFVub2Jz
Y3VyZWRTaXplID0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgaWYgKHNtYWxsZXN0VW5v
YnNjdXJlZFNpemUuaXNFbXB0eSgpKQotICAgICAgICBzbWFsbGVzdFVub2JzY3VyZWRTaXplID0g
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24udmlld0xheW91dFNpemUoKTsKLQotICAgIEZsb2F0U2l6
ZSBsYXJnZXN0VW5vYnNjdXJlZFNpemUgPSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAgICBp
ZiAobGFyZ2VzdFVub2JzY3VyZWRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgbGFyZ2VzdFVub2Jz
Y3VyZWRTaXplID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24udmlld0xheW91dFNpemUoKTsKLQot
ICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1haW5GcmFtZVZpZXcoKTsKLSAgICBzbWFsbGVz
dFVub2JzY3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5pbml0aWFs
U2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKCkpOwotICAgIGxhcmdlc3RVbm9ic2N1cmVkU2l6ZS5z
Y2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSWdub3JpbmdDb250
ZW50U2l6ZSgpKTsKLSAgICBmcmFtZVZpZXcuc2V0U2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0
cyhzbWFsbGVzdFVub2JzY3VyZWRTaXplKTsKLSAgICBmcmFtZVZpZXcuc2V0U2l6ZUZvckNTU0xh
cmdlVmlld3BvcnRVbml0cyhsYXJnZXN0VW5vYnNjdXJlZFNpemUpOwotfQotCiB2b2lkIFdlYlBh
Z2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNTQzMmM0N2JhZTc3ODc4
YjUxYTA3ODVjNjM5YmUzOGRkYzJjMDM5Li45MzQ5ZmFmMzE1ZjY1YTQwNWEyMDg3NjgyN2I3NjI5
MWRiZThjYjE5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8gY29udHJv
bCBDU1MgInNtYWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1
bml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
OTc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ1NTVmlld3BvcnRVbml0cy5tbToKKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRV
bml0cy5OZWdhdGl2ZU1pbmltdW1WaWV3cG9ydEluc2V0KTogQWRkZWQuCisgICAgICAgIChURVNU
LkNTU1ZpZXdwb3J0VW5pdHMuTmVnYXRpdmVNYXhpbXVtVmlld3BvcnRJbnNldCk6IEFkZGVkLgor
ICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0TGFyZ2Vy
VGhhbk1heGltdW1WaWV3cG9ydEluc2V0KTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdw
b3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFuRnJhbWUpOiBBZGRlZC4KKyAg
ICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldExhcmdlclRo
YW5GcmFtZSk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1W
aWV3cG9ydEluc2V0KTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4
aW11bVZpZXdwb3J0SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0
cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhab29tKTogQWRkZWQuCisgICAgICAgIChURVNULkNT
U1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoWm9vbSk6IEFkZGVkLgorICAg
ICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRp
bmdNb2RlKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZp
ZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmll
d3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhGcmFtZSk6IEFkZGVkLgorICAgICAg
ICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lKTog
QWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5z
ZXRXaXRoQm91bmRzKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4
aW11bVZpZXdwb3J0SW5zZXRXaXRoQm91bmRzKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1Zp
ZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVudEluc2V0KTogQWRkZWQu
CisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRo
Q29udGVudEluc2V0KTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWlu
aW11bVZpZXdwb3J0SW5zZXRXaXRoU2FmZUFyZWFJbnNldHMpOiBBZGRlZC4KKyAgICAgICAgKFRF
U1QuQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0
cyk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLlVub2JzY3VyZWRTaXpl
T3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0SW5zZXRBUEkpOiBBZGRlZC4KKwogMjAyMi0w
My0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0
d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0KaW5kZXggNjdjOTZkZWY5MGEyMzBjZTA4ZjBk
M2RiODRjMTQwM2U0ZGY2Yzg1My4uNjQ5MzJkMjY5ZTc3MjkzYmE5ZWQ1ZGNlNzdiYTM1NDAxOTA2
NjI4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
U1NWaWV3cG9ydFVuaXRzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ1NTVmlld3BvcnRVbml0cy5tbQpAQCAtMTY5LDcgKzE2OSw3ODIgQEAgVEVTVChDU1NW
aWV3cG9ydFVuaXRzLCBBbGxTYW1lKQogICAgIH0KIH0KIAorI2lmIFVTRShBUFBLSVQpCisjZGVm
aW5lIENvY29hRWRnZUluc2V0c01ha2UgTlNFZGdlSW5zZXRzTWFrZQorI2VuZGlmCisKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBDb2NvYUVkZ2VJbnNldHNNYWtlIFVJRWRnZUlu
c2V0c01ha2UKKyNlbmRpZgorCisjZGVmaW5lIENvY29hRWRnZUluc2V0c1plcm8gQ29jb2FFZGdl
SW5zZXRzTWFrZSgwLCAwLCAwLCAwKQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworVEVT
VChDU1NWaWV3cG9ydFVuaXRzLCBOZWdhdGl2ZU1pbmltdW1WaWV3cG9ydEluc2V0KQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0g
ZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoLTExLCAyMSwgMzEsIDQxKSBtYXhpbXVtVmlld3BvcnRJ
bnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgfSBAY2F0Y2gg
KE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgZGlkVGhyb3cgPSB0cnVlOworICAg
IH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0
cywgTmVnYXRpdmVNYXhpbXVtVmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKV0pOworCisgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOworICAgIEB0cnkg
eworICAgICAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNl
dHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoLTEyLCAyMiwg
MzIsIDQyKV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAg
ICAgZGlkVGhyb3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9
CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRMYXJnZXJUaGFu
TWF4aW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCldKTsKKworICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAg
W3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwg
MjIsIDMyLCA0MikgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwg
MjEsIDMxLCA0MSldOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Cisg
ICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkVGhyb3cp
OworfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0VGhhbkxh
cmdlckZyYW1lKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisKKyAg
ICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEwMCwgMjEwMCwgMzEw
MCwgNDEwMCkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIs
IDMyLCA0MildOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAg
ICAgIGRpZFRocm93ID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkVGhyb3cpOwor
fQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0VGhhbkxhcmdl
ckZyYW1lKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisKKyAgICBi
b29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IHNldE1p
bmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1h
eGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIwMCwgMjIwMCwgMzIwMCwg
NDIwMCldOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CisgICAgICAg
IGRpZFRocm93ID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkVGhyb3cpOworfQor
CitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0KQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMi
XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3
aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBm
aXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRf
RVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxP
QVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOwor
ICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNYXhpbXVtVmlld3BvcnRJbnNldCkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdwb3J0
SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKwor
ICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVD
VF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Zt
YXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZi
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9m
RWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhl
aWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4
ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAg
IEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEo
Zml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0K
K30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldFdpdGhab29t
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcg
c2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0
MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0
MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1Zp
ZXdwb3J0VW5pdHMiXTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW3dlYlZpZXcg
c2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBbd2Vi
VmlldyBzZXRBbGxvd3NNYWduaWZpY2F0aW9uOllFU107CisgICAgW3dlYlZpZXcgc2V0TWFnbmlm
aWNhdGlvbjoyXTsKKyNlbmRpZgorCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRp
b25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3Vi
bGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsK
KyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZp
ZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VR
KGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAg
ICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FU
X0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGlt
dW1WaWV3cG9ydEluc2V0V2l0aFpvb20pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJ
bnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIy
LCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFt3
ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisjZWxpZiBQTEFURk9STShNQUMpCisg
ICAgW3dlYlZpZXcgc2V0QWxsb3dzTWFnbmlmaWNhdGlvbjpZRVNdOworICAgIFt3ZWJWaWV3IHNl
dE1hZ25pZmljYXRpb246Ml07CisjZW5kaWYKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIp
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAg
ICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZp
eGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJ
RCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRo
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikp
OworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdo
dCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVD
VF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZi
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRz
LCBNaW5pbXVtVmlld3BvcnRJbnNldFdpdGhXcml0aW5nTW9kZSkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAg
ICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LnN0eWxlLndyaXRpbmdNb2RlID0gJ3ZlcnRpY2FsLWxyJyJdOworCisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FU
X0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZp
IikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50
V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0g
aGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRo
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1h
eCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVp
Z2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitU
RVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0V2l0aFdyaXRpbmdNb2Rl
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcg
c2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzWmVybyBtYXhpbXVtVmlld3Bv
cnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOwor
CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5zdHlsZS53cml0aW5nTW9kZSA9ICd2ZXJ0aWNhbC1sciciXTsKKworICAg
IFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9G
TE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZt
aW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMy
MCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxl
bWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdo
dCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJk
dnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRX
aWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30K
KworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldFdpdGhGcmFtZSkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEp
IG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIp
XTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3
cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIy
MCwgNDAwKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MTU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDM1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgxNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU4LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdp
ZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBk
b3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhl
ZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWln
aHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWlu
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRI
ZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWF4aW11bVZpZXdwb3J0
SW5zZXRXaXRoRnJhbWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
KyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJv
IG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIp
XTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3
cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIy
MCwgNDAwKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdp
ZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBk
b3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhl
ZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWln
aHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWlu
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRI
ZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0
SW5zZXRXaXRoQm91bmRzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7
CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFr
ZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFr
ZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHNldEJvdW5kczpD
R1JlY3RNYWtlKDUwLCA2MCwgMzIwLCA1MDApXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0
UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2
aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9F
USgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAg
ICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBA
ImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdp
dGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdp
ZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVD
VF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZo
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhl
aWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVu
aXRzLCBNYXhpbXVtVmlld3BvcnRJbnNldFdpdGhCb3VuZHMpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNl
dDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0
c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzZXRCb3Vu
ZHM6Q0dSZWN0TWFrZSg1MCwgNjAsIDMyMCwgNTAwKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9y
TmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAidmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0
NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1
MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7
CisgICAgICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmll
dywgQCJmaXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1l
bnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4
ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2aCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4
ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAg
ICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3Bv
cnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVudEluc2V0KQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZp
ZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMi
XTsKKworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmNvbnRlbnRJbnNldCA9IENvY29hRWRnZUlu
c2V0c01ha2UoNTAsIDYwLCA3MCwgODApOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikp
OworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1
OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAg
ICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4
ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElE
KHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIi
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMs
IE1heGltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5z
ZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHNjcm9s
bFZpZXddLmNvbnRlbnRJbnNldCA9IENvY29hRWRnZUluc2V0c01ha2UoNTAsIDYwLCA3MCwgODAp
OworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1
MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdp
ZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZp
eGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9F
UShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7Cisg
ICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9ydEluc2V0V2l0
aFNhZmVBcmVhSW5zZXRzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7
CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFr
ZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFr
ZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIGF1dG8gdmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIFt2aWV3Q29u
dHJvbGxlciBzZXRBZGRpdGlvbmFsU2FmZUFyZWFJbnNldHM6Q29jb2FFZGdlSW5zZXRzTWFrZSg1
MCwgNjAsIDcwLCA4MCldOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRWaWV3OndlYlZpZXcuZ2V0
KCldOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnci
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FU
X0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1p
biIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9F
USg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1h
eCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9
IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91Ymxl
IGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsK
KyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsK
KyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7
CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0
V2l0aFNhZmVBcmVhSW5zZXRzKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRz
WmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIs
IDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NT
Vmlld3BvcnRVbml0cyJdOworCisgICAgYXV0byB2aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tV
SVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3ZpZXdDb250cm9sbGVyIHNldEFk
ZGl0aW9uYWxTYWZlQXJlYUluc2V0czpDb2NvYUVkZ2VJbnNldHNNYWtlKDUwLCA2MCwgNzAsIDgw
KV07CisgICAgW3ZpZXdDb250cm9sbGVyIHNldFZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWlu
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1
Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJs
dmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1l
bnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQg
PSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lk
dGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVk
V2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisK
K1RFU1QoQ1NTVmlld3BvcnRVbml0cywgVW5vYnNjdXJlZFNpemVPdmVycmlkZXNJZ25vcmVNaW5p
bXVtVmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01h
a2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01h
a2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBfb3ZlcnJpZGVM
YXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOkNHU2l6ZU1ha2UoMTAuNSwgMjAu
NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlOkNHU2l6ZU1ha2UoMzAuNSwgNDAuNSldOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5l
eHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MC41
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjUsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC41
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
bHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVt
ZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0
ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdp
ZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJk
dm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQor
CitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIFVub2JzY3VyZWRTaXplT3ZlcnJpZGVzSWdub3JlTWF4
aW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCld
KTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNa
ZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwg
NDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NW
aWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBfb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJz
V2l0aE1pbmltdW1MYXlvdXRTaXplOkNHU2l6ZU1ha2UoMTAuNSwgMjAuNSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOkNHU2l6ZU1h
a2UoMzAuNSwgNDAuNSldOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MC41LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAu
NSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxMC41LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQw
LjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAg
eworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZp
ZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVt
ZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZp
eGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZp
eGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAg
ICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQogCiBURVNUKENTU1ZpZXdw
b3J0VW5pdHMsIEVtcHR5VW5vYnNjdXJlZFNpemVPdmVycmlkZXMpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455926</attachid>
            <date>2022-03-28 10:26:07 -0700</date>
            <delta_ts>2022-03-28 11:20:01 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-237979-20220328112606.patch</filename>
            <type>text/plain</type>
            <size>99355</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYWJiZTA0OGI0NWVlNDUwY2E1OGY1ODEyMWUyZTVlODhkOTcxNGY4Li42
NGQ2ZTBjYzkyMjQ3Mzg1NDNlNTFlYTBiNmU4OWFlYjdkYzMzYmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIEFkZCBgV0tXZWJWaWV3YCBBUEkgdG8gY29udHJvbCBDU1MgInNt
YWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTc5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgIFRlc3RzOiBDU1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWluaW11
bVZpZXdwb3J0SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTmVnYXRpdmVN
YXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5p
bXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5NYXhpbXVtVmlld3BvcnRJbnNldAorICAgICAgICAg
ICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5GcmFt
ZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldExh
cmdlclRoYW5GcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmll
d3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3Bv
cnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJ
bnNldFdpdGhab29tCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3
cG9ydEluc2V0V2l0aFpvb20KKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11
bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0
VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoV3JpdGluZ01vZGUKKyAgICAgICAgICAgICAg
IENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUKKyAgICAgICAg
ICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUKKyAg
ICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQm91
bmRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0
V2l0aEJvdW5kcworICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3Bv
cnRJbnNldFdpdGhDb250ZW50SW5zZXQKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMu
TWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVudEluc2V0CisgICAgICAgICAgICAgICBDU1NW
aWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzCisgICAg
ICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVB
cmVhSW5zZXRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLlVub2JzY3VyZWRTaXpl
T3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0SW5zZXRBUEkKKworICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtU2l6ZVRvQ29udGVudEF1dG9TaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6ZW5hYmxlQXV0b1NpemVNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6Y2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0
cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRTaXplRm9yQ1NTRGVm
YXVsdFZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
b3ZlcnJpZGVXaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZp
ZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6b3ZlcnJp
ZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzIGNvbnN0KTogUmVu
YW1lZCBmcm9tIGBzaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHNgLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojpjb3B5Q1NTVmlld3BvcnRVbml0cyBjb25zdCk6IEFkZGVkLgorICAg
ICAgICBBZGQgYWxsIHRoZSB2YXJpb3VzIG1ldGhvZHMgZm9yIGdldHRpbmcvc2V0dGluZy9vdmVy
cmlkaW5nL2NsZWFyaW5nIGFuIG92ZXJyaWRlIHZhbHVlIGZvcgorICAgICAgICBDU1MgImRlZmF1
bHQgdmlld3BvcnQiIGB2KmAgdW5pdHMuIFRoaXMgYWxsb3dzIGZvciBgV0tXZWJWaWV3YCBjbGll
bnRzIHRvIHByZXNlcnZlIGV4aXN0aW5nCisgICAgICAgIGJlaGF2aW9yICh3aGVyZSBDU1MgImRl
ZmF1bHQgdmlld3BvcnQiIGB2KmAgdW5pdHMgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGBXS1dlYlZp
ZXdgKSB3aGlsZQorICAgICAgICBhZGRpbmcgc3VwcG9ydGluZyBDU1MgInNtYWxsIHZpZXdwb3J0
IiBgc3YqYCB1bml0cyBhbmQgQ1NTICJsYXJnZSB2aWV3cG9ydCIgYGx2KmAgdW5pdHMuCisKIDIw
MjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKSBzaG91bGQgdGFrZSBpbiBTdHJpbmdW
aWV3cyBpbnN0ZWFkIG9mIFN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2JlMzA5ZWFiZjk3YjNjNDQwZjZh
ZGFlNjhjYjliYWI0OGI3YWRhYi4uZjFmMzkzNjg5YTBlZDFiN2ZhZGJmZWIwZjg4OWY4OTBiMTJl
MDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMjItMDMtMTYgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBgV0tXZWJWaWV3YCBB
UEkgdG8gY29udHJvbCBDU1MgInNtYWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZpZXdw
b3J0IiBgbHYqYCB1bml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM3OTc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlY2VudGx5IHRoZSBXM0Mg
Q1NTIHdvcmtpbmcgZ3JvdXAgYWRkZWQgW3NvbWUgbmV3IHVuaXQgdHlwZXMgdG8gQ1NTXShodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy00LyN2aWV3cG9ydC12YXJpYW50cykKKyAg
ICAgICAgd2l0aCB0aGUgZ29hbCBvZiBoZWxwaW5nIHdlYiBkZXZlbG9wZXJzIGJldHRlciBkZWFs
IHdpdGggYnJvd3NlcnMgdGhhdCBoYXZlIGR5bmFtaWMgVUkKKyAgICAgICAgZWxlbWVudHMgdGhh
dCBjaGFuZ2UgYXBwZXJhbmNlL3NpemUvZXRjLiBiYXNlZCBvbiB1c2VyIGFjdGlvbnMgKGUuZy4g
dGhlIFVSTCBiYXIKKyAgICAgICAgY29sbGFwc2luZy8ic3F1aXNoaW5nIiBhbmQgZXhwYW5kaW5n
LyJ1bnNxdWlzaGluZyIgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHVzZXIgaGFzIG1vc3QKKyAg
ICAgICAgcmVjZW50bHkgc2Nyb2xsZWQvc3dpcGVkIGRvd24gdGhlIHBhZ2UpLgorCisgICAgICAg
IFRoZXNlIG5ldyB1bml0cyBjb21lIGluIHRocmVlIGNhdGVnb3JpZXM6CisgICAgICAgIC0gdGhl
ICJsYXJnZSB2aWV3cG9ydCIgdW5pdHMgKGBsdndgLCBgbHZoYCwgZXRjLikgZWFjaCByZXByZXNl
bnQgMSUgb2Ygb25lIGRpbWVuc2lvbiBvZiB0aGUKKyAgICAgICAgICBzaXplIG9mIHRoZSB2aXN1
YWwgYXJlYSBvZiB0aGUgcGFnZSB3aGVuIGFsbCBicm93c2VyIFVJIGVsZW1lbnRzIGFyZSBpbiB0
aGVpciBzbWFsbGVzdAorICAgICAgICAgIHN0YXRlIChlLmcuIHdoZW4gdGhlIFVSTCBiYXIgaXMg
Y29sbGFwc2VkLyJzcXVpc2hlZCIpCisgICAgICAgIC0gdGhlICJzbWFsbCB2aWV3cG9ydCIgdW5p
dHMgKGBzdndgLCBgc3ZoYCwgZXRjLikgZWFjaCByZXByZXNlbnQgMSUgb2Ygb25lIGRpbWVuc2lv
biBvZiB0aGUKKyAgICAgICAgICBzaXplIG9mIHRoZSB2aXN1YWwgYXJlYSBvZiB0aGUgcGFnZSB3
aGVuIGFsbCBicm93c2VyIFVJIGVsZW1lbnRzIGFyZSBpbiB0aGVpciBsYXJnZXN0CisgICAgICAg
ICAgc3RhdGUgKGUuZy4gd2hlbiB0aGUgVVJMIGJhciBpcyBleHBhbmRlZC8idW5zcXVpc2hlZCIp
CisgICAgICAgIC0gdGhlICJkeW5hbWljIHZpZXdwb3J0IiB1bml0cyAoYGR2d2AsIGBkdmhgLCBl
dGMuKSBlYWNoIHJlcHJlc2VudCAxJSBvZiBvbmUgZGltZW5zaW9uIG9mCisgICAgICAgICAgdGhl
IHNpemUgb2YgdGhlIGN1cnJlbnQgdmlzdWFsIGFyZWEgb2YgdGhlIHBhZ2UsIHdoaWNoIGRlcGVu
ZHMgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgYWxsCisgICAgICAgICAgYnJvd3NlciBVSSBlbGVt
ZW50cworCisgICAgICAgIFRoaXMgd2F5LCBkZXZlbG9wZXIgY291bGQgdXNlIGAxMDBzdmhgIHRv
IGVuc3VyZSB0aGF0IG5vIG1hdHRlciB3aGF0IHN0YXRlIHRoZSBicm93c2VyIFVJCisgICAgICAg
IGVsZW1lbnRzIGFyZSBpbiB0aGUgZW50aXJlIGVsZW1lbnQgd2lsbCBhbHdheXMgYmUgdmlzaWJs
ZSBvbiB0aGUgc2NyZWVuLCBvciB1c2UgYDEwMGR2aGAgdG8KKyAgICAgICAgcmVzcG9uZCB0byBi
cm93c2VyIFVJIGVsZW1lbnQgY2hhbmdlcyBieSBhdXRvbWF0aWNhbGx5IHJlc2l6aW5nIHZhcmlv
dXMgZWxlbWVudHMgdG8gYWx3YXlzCisgICAgICAgIGZ1bGx5IHRha2UgYWR2YW50YWdlIG9mIHRo
ZSBhdmFpbGFibGUgc3BhY2UuCisKKyAgICAgICAgTm90aGluZyBuZWVkcyB0byBiZSBhZGRlZCB0
byBzdXBwb3J0ICJkeW5hbWljIHZpZXdwb3J0IiBgZHYqYCB1bml0cyBhcyB0aGVyZSBhbHJlYWR5
IGV4aXN0cworICAgICAgICBvdGhlciBtZXRob2RzIHRvIGFkanVzdCB0aGUgdmlzdWFsIGFyZWEg
b2YgdGhlIGBXS1dlYlZpZXdgIHdpdGhvdXQgYWRqdXN0aW5nIGl0cyBgZnJhbWVgCisgICAgICAg
IChlLmcuIGAtW1dLV2ViVmlldyBzZXRCb3VuZHM6XWAsIGAtW1VJU2Nyb2xsVmlldyBzZXRDb250
ZW50SW5zZXQ6XWAsIGV0Yy4pLgorCisgICAgICAgIEJ1dCBmb3IgInNtYWxsIHZpZXdwb3J0IiBg
c3YqYCB1bml0cyBhbmQgImxhcmdlIHZpZXdwb3J0IiBgbHYqYCB1bml0cywgaG93ZXZlciwgdGhl
cmUgaXMKKyAgICAgICAgdW5mb3J0dW5hdGVseSBubyB3YXkgdG8gdGVsbCBhIGBXS1dlYlZpZXdg
IGFueXRoaW5nIGxpa2UgInRoaXMgaXMgdGhlIHNtYWxsZXN0L2xhcmdlc3QgdGhhdAorICAgICAg
ICB0aGlzIGBXS1dlYlZpZXdgIHdpbGwgZXZlciBiZSIsIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIGtu
b3cgYWhlYWQgb2YgdGltZSB3aGF0IHRoZSBzaXplIG9mIHRoZQorICAgICAgICB2aXN1YWwgYXJl
YSB3b3VsZCBiZSB3aGVuIGFsbCBicm93c2VyIFVJIGVsZW1lbnRzIGFyZSBpbiB0aGVpciBzbWFs
bGVzdC9sYXJnZXN0IHN0YXRlLiBBcworICAgICAgICBzdWNoLCB0aGlzIHBhdGNoIGFkZHMgYSBu
ZXcgQVBJIHRvIGFsbG93IGZvciBgV0tXZWJWaWV3YCBjbGllbnRzIHRvIHRlbGwgV2ViS2l0IHRo
aXMKKyAgICAgICAgaW5mb3JtYXRpb24gYWhlYWQgb2YgdGltZS4KKworICAgICAgICBOb3RlIHRo
YXQgdGhlcmUgYWxyZWFkeSBleGlzdHMgdGhlIGNvbmNlcHQgb2YgImRlZmF1bHQgdmlld3BvcnQi
IHVuaXRzIChgdndgLCBgdmhgLCBldGMuKQorICAgICAgICB0aGF0IGVhY2ggcmVwcmVzZW50IDEl
IG9mIG9uZSBkaW1lbnNpb24gb2YgdGhlIHNpemUgb2YgdGhlIHZpc3VhbCBhcmVhIG9mIHRoZSBw
YWdlIHdoZW4gYWxsCisgICAgICAgIGJyb3dzZXIgVUkgZWxlbWVudHMgYXJlIGluIHRoZWlyIGRl
ZmF1bHQgc3RhdGUuIFRoZSBiZWhhdmlvciBvZiB0aGVzZSB1bml0cyByZW1haW4gdGhlIHNhbWUs
CisgICAgICAgIGFuZCB0aGUgdmFsdWUgY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSBleGlzdGluZyBg
LVtXS1dlYlZpZXcgc2V0RnJhbWU6XWAuCisKKyAgICAgICAgVGVzdHM6IENTU1ZpZXdwb3J0VW5p
dHMuTmVnYXRpdmVNaW5pbXVtVmlld3BvcnRJbnNldAorICAgICAgICAgICAgICAgQ1NTVmlld3Bv
cnRVbml0cy5OZWdhdGl2ZU1heGltdW1WaWV3cG9ydEluc2V0CisgICAgICAgICAgICAgICBDU1NW
aWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0TGFyZ2VyVGhhbk1heGltdW1WaWV3cG9y
dEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydElu
c2V0TGFyZ2VyVGhhbkZyYW1lCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRzLk1heGlt
dW1WaWV3cG9ydEluc2V0TGFyZ2VyVGhhbkZyYW1lCisgICAgICAgICAgICAgICBDU1NWaWV3cG9y
dFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVu
aXRzLk1heGltdW1WaWV3cG9ydEluc2V0CisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVuaXRz
Lk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20KKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0
VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoWm9vbQorICAgICAgICAgICAgICAgQ1NTVmll
d3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhXcml0aW5nTW9kZQorICAgICAgICAg
ICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhXcml0aW5nTW9k
ZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdp
dGhGcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJ
bnNldFdpdGhGcmFtZQorICAgICAgICAgICAgICAgQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmll
d3BvcnRJbnNldFdpdGhCb3VuZHMKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4
aW11bVZpZXdwb3J0SW5zZXRXaXRoQm91bmRzCisgICAgICAgICAgICAgICBDU1NWaWV3cG9ydFVu
aXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldAorICAgICAgICAgICAgICAg
Q1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhDb250ZW50SW5zZXQKKyAg
ICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoU2Fm
ZUFyZWFJbnNldHMKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdw
b3J0SW5zZXRXaXRoU2FmZUFyZWFJbnNldHMKKyAgICAgICAgICAgICAgIENTU1ZpZXdwb3J0VW5p
dHMuVW5vYnNjdXJlZFNpemVPdmVycmlkZXNJZ25vcmVNYXhpbXVtVmlld3BvcnRJbnNldEFQSQor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVjYWxj
dWxhdGVWaWV3cG9ydFNpemVzV2l0aE1pbmltdW1WaWV3cG9ydEluc2V0Om1heGltdW1WaWV3cG9y
dEluc2V0OnRocm93T25JbnZhbGlkSW5wdXQ6XSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZp
ZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6bWF4aW11bVZpZXdwb3J0SW5zZXQ6XSk6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXRdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9mcmFtZU9yQm91bmRzQ2hhbmdlZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Rp
ZENvbXBsZXRlQW5pbWF0ZWRSZXNpemVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRNaW5p
bXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRN
YXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9i
ZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
ZGlzcGF0Y2hTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemU6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLV2ViVmlldyBfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6XSk6IERlbGV0ZWQu
CisgICAgICAgIFJlY2FsY3VsYXRlIHRoZSBzaXplIGZvciBDU1MgInNtYWxsIHZpZXdwb3J0IiBg
c3YqYCB1bml0cyB3aGVuZXZlciB0aGUgYGZyYW1lYCBjaGFuZ2VzLiBBbHNvCisgICAgICAgIG1v
dmUgdGhlIGRlZHVwbGljYXRpb24gbG9naWMgdGhhdCBwcmV2ZW50cyB0aGUgc2FtZSB2YWx1ZSBm
cm9tIGJlaW5nIHNlbnQgdG8gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgbW9yZSB0aGFuIG9uY2Ug
dG8gdGhlIHNldHRlciBtZXRob2RzIG9uIGBXZWJQYWdlUHJveHlgIHNvIHRoYXQgaXQgY2FuIGJl
IHVzZWQgYnkgbW9yZSB0aGFuCisgICAgICAgIGp1c3QgaU9TLW9ubHkgY29kZXBhdGhzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERlZmF1
bHRVbm9ic2N1cmVkU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZSk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRV
bml0cyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTaXplRm9yQ1NT
U21hbGxWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKTog
RGVsZXRlZC4KKyAgICAgICAgQWRkIGFsbCB0aGUgdmFyaW91cyBtZXRob2RzIGZvciBnZXR0aW5n
L3NldHRpbmcvb3ZlcnJpZGluZy9jbGVhcmluZyBhbiBvdmVycmlkZSB2YWx1ZSBmb3IKKyAgICAg
ICAgQ1NTICJkZWZhdWx0IHZpZXdwb3J0IiBgdipgIHVuaXRzLiBUaGlzIGFsbG93cyBmb3IgYFdL
V2ViVmlld2AgY2xpZW50cyB0byBwcmVzZXJ2ZSBleGlzdGluZworICAgICAgICBiZWhhdmlvciAo
d2hlcmUgQ1NTICJkZWZhdWx0IHZpZXdwb3J0IiBgdipgIHVuaXRzIG1hdGNoIHRoZSBzaXplIG9m
IHRoZSBgV0tXZWJWaWV3YCkgd2hpbGUKKyAgICAgICAgYWRkaW5nIHN1cHBvcnRpbmcgQ1NTICJz
bWFsbCB2aWV3cG9ydCIgYHN2KmAgdW5pdHMgYW5kIENTUyAibGFyZ2Ugdmlld3BvcnQiIGBsdipg
IHVuaXRzLgorICAgICAgICBNb3ZlIGlPUy1vbmx5IGNvZGUgdG8gYmUgZm9yIGFsbCBwbGF0Zm9y
bXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAgICBQcm9wYWdhdGUgYWxsIHZpZXdw
b3J0IHNpemUgb3ZlcnJpZGVzIHdoZW4gYSBuZXcgYEZyYW1lVmlld2AgaXMgY3JlYXRlZC4KKwog
MjAyMi0wMy0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXF1aXJlIGNsaWNrLXRvLXBsYXkgZm9yIG1lZGlhIGluIENhcHRpdmUgUG9ydGFscyAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjOWY1ZDQ4ZGNiNDZjODI0YzgxZTI4NjY2M2Fm
YjcxYTRhNTUyZGI0Li5jNDFhNTQ4NzUxNjdiODViNTQ5NGI1NzUxNmI4YmRiNzAxMmZiMTRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNjI0LDYgKzM2MjQsNyBAQCB2b2lkIEZy
YW1lVmlldzo6cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSgpCiAgICAgICAgIGRvY3VtZW50
LnVwZGF0ZUxheW91dCgpOwogICAgIH07CiAKKyAgICByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNT
U0RlZmF1bHRWaWV3cG9ydFVuaXRzKCk7CiAgICAgcmVzZXRPdmVycmlkZGVuV2lkdGhGb3JDU1NT
bWFsbFZpZXdwb3J0VW5pdHMoKTsKICAgICByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0xhcmdl
Vmlld3BvcnRVbml0cygpOwogCkBAIC0zNjg2LDYgKzM2ODcsNyBAQCB2b2lkIEZyYW1lVmlldzo6
cGVyZm9ybVNpemVUb0NvbnRlbnRBdXRvU2l6ZSgpCiAgICAgICAgIHJlc2l6ZShuZXdTaXplLndp
ZHRoKCksIGkgPyBuZXdTaXplLmhlaWdodCgpIDogbWluQXV0b1NpemUuaGVpZ2h0KCkpOwogICAg
ICAgICAvLyBQcm90ZWN0IHRoZSBjb250ZW50IGZyb20gZXZlcmdyb3dpbmcgbGF5b3V0LgogICAg
ICAgICBhdXRvIHByZWZlcnJlZFZpZXdwb3J0V2lkdGggPSBzdGQ6Om1pbihuZXdTaXplLndpZHRo
KCksIG1fYXV0b1NpemVDb25zdHJhaW50LndpZHRoKCkpOworICAgICAgICBvdmVycmlkZVdpZHRo
Rm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMocHJlZmVycmVkVmlld3BvcnRXaWR0aCk7CiAgICAg
ICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMocHJlZmVycmVkVmlld3Bv
cnRXaWR0aCk7CiAgICAgICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMo
cHJlZmVycmVkVmlld3BvcnRXaWR0aCk7CiAgICAgICAgIC8vIEZvcmNlIHRoZSBzY3JvbGxiYXIg
c3RhdGUgdG8gYXZvaWQgdGhlIHNjcm9sbGJhciBjb2RlIGFkZGluZyB0aGVtIGFuZCBjYXVzaW5n
IHRoZW0gdG8gYmUgbmVlZGVkLiBGb3IgZXhhbXBsZSwKQEAgLTQ3NjcsMTEgKzQ3NjksMTMgQEAg
dm9pZCBGcmFtZVZpZXc6OmVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZSwgY29uc3QgSW50
U2l6ZSYgdmlld1NpemUsIEF1dG9TaXoKICAgICBzZXROZWVkc0xheW91dEFmdGVyVmlld0NvbmZp
Z3VyYXRpb25DaGFuZ2UoKTsKICAgICBsYXlvdXRDb250ZXh0KCkuc2NoZWR1bGVMYXlvdXQoKTsK
ICAgICBpZiAobV9zaG91bGRBdXRvU2l6ZSkgeworICAgICAgICBvdmVycmlkZVdpZHRoRm9yQ1NT
RGVmYXVsdFZpZXdwb3J0VW5pdHMobV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSk7CiAgICAg
ICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMobV9hdXRvU2l6ZUNvbnN0
cmFpbnQud2lkdGgoKSk7CiAgICAgICAgIG92ZXJyaWRlV2lkdGhGb3JDU1NMYXJnZVZpZXdwb3J0
VW5pdHMobV9hdXRvU2l6ZUNvbnN0cmFpbnQud2lkdGgoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBjbGVhclNpemVPdmVycmlkZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCk7
CiAgICAgY2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKTsKICAgICBj
bGVhclNpemVPdmVycmlkZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpOwogICAgIC8vIFNpbmNl
IGF1dG9zaXplIG1vZGUgZm9yY2VzIHRoZSBzY3JvbGxiYXIgbW9kZSwgY2hhbmdlIHRoZW0gdG8g
YmVpbmcgYXV0by4KQEAgLTU2MDIsNiArNTYwNiw0NyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Vmll
d0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAg
ICAgfQogfQogCit2b2lkIEZyYW1lVmlldzo6Y2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0
Vmlld3BvcnRVbml0cygpCit7CisgICAgaWYgKCFtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlk
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUg
PSBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVu
dCgpKQorICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRF
bnZpcm9ubWVudCgpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2V0U2l6ZUZvckNTU0RlZmF1bHRW
aWV3cG9ydFVuaXRzKEZsb2F0U2l6ZSBzaXplKQoreworICAgIG92ZXJyaWRlU2l6ZUZvckNTU0Rl
ZmF1bHRWaWV3cG9ydFVuaXRzKHsgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpIH0pOworfQor
Cit2b2lkIEZyYW1lVmlldzo6b3ZlcnJpZGVXaWR0aEZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRz
KGZsb2F0IHdpZHRoKQoreworICAgIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVu
aXRzKHsgd2lkdGgsIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID8gbV9kZWZhdWx0Vmll
d3BvcnRTaXplT3ZlcnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKK30KKwordm9pZCBG
cmFtZVZpZXc6OnJlc2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMo
KQoreworICAgIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKHsgeyB9LCBt
X2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA/IG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJy
aWRlLT5oZWlnaHQgOiBzdGQ6Om51bGxvcHQgfSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpvdmVy
cmlkZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSBz
aXplKQoreworICAgIGlmIChtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA9PSBzaXplKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZSA9IHNp
emU7CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCkpCisgICAg
ICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50
KCk7Cit9CisKK0Zsb2F0U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRV
bml0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzT3ZlcnJpZGUobV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUpOworfQorCiB2b2lkIEZy
YW1lVmlldzo6Y2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKQogewog
ICAgIGlmICghbV9zbWFsbFZpZXdwb3J0U2l6ZU92ZXJyaWRlKQpAQCAtNTcxNiw5ICs1NzYxLDEx
IEBAIEZsb2F0U2l6ZSBGcmFtZVZpZXc6OnNpemVGb3JDU1NEeW5hbWljVmlld3BvcnRVbml0cygp
IGNvbnN0CiAgICAgcmV0dXJuIHJlY3RGb3JGaXhlZFBvc2l0aW9uTGF5b3V0KCkuc2l6ZSgpOwog
fQogCi1GbG9hdFNpemUgRnJhbWVWaWV3OjpzaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMo
KSBjb25zdAordm9pZCBGcmFtZVZpZXc6OmNvcHlDU1NWaWV3cG9ydFNpemVPdmVycmlkZXMoRnJh
bWVWaWV3JiB2aWV3KQogewotICAgIHJldHVybiBzaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRz
KCk7CisgICAgbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUgPSB2aWV3Lm1fZGVmYXVsdFZp
ZXdwb3J0U2l6ZU92ZXJyaWRlOworICAgIG1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZSA9IHZp
ZXcubV9zbWFsbFZpZXdwb3J0U2l6ZU92ZXJyaWRlOworICAgIG1fbGFyZ2VWaWV3cG9ydFNpemVP
dmVycmlkZSA9IHZpZXcubV9sYXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlOwogfQogCiBib29sIEZy
YW1lVmlldzo6c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCA2MDJkNjBjOWM5NzA1NWY2NDhjYTQ4ZmZmYmY5YzQyYjVj
MTZmOTMzLi43ODI4NTI3MTY1M2RlYTQ2NTFlYzA5OTAzNTc5Mzc1ODczYWIwMWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIyOCw2ICsyMjgsMTAgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGp1c3RWaWV3U2l6ZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoRmxvYXRTaXplKTsKKyAgICB2
b2lkIGNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKTsKKyAgICBG
bG9hdFNpemUgc2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCkgY29uc3Q7CisKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoRmxvYXRT
aXplKTsKICAgICB2b2lkIGNsZWFyU2l6ZU92ZXJyaWRlRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRz
KCk7CiAgICAgRmxvYXRTaXplIHNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKSBjb25zdDsK
QEAgLTIzOCw3ICsyNDIsNyBAQCBwdWJsaWM6CiAKICAgICBGbG9hdFNpemUgc2l6ZUZvckNTU0R5
bmFtaWNWaWV3cG9ydFVuaXRzKCkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgc2l6ZUZvckNTU0Rl
ZmF1bHRWaWV3cG9ydFVuaXRzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5
Q1NTVmlld3BvcnRTaXplT3ZlcnJpZGVzKEZyYW1lVmlldyYpOwogCiAgICAgSW50UmVjdCB3aW5k
b3dDbGlwUmVjdCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3Qgd2lu
ZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGJv
b2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7CkBAIC04NjcsNiArODcxLDEwIEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBGbG9hdFNpemUgY2FsY3VsYXRlU2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHNPdmVycmlkZShzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPikgY29uc3Q7CiAK
KyAgICB2b2lkIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKE92ZXJyaWRl
Vmlld3BvcnRTaXplKTsKKyAgICB2b2lkIG92ZXJyaWRlV2lkdGhGb3JDU1NEZWZhdWx0Vmlld3Bv
cnRVbml0cyhmbG9hdCk7CisgICAgdm9pZCByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0RlZmF1
bHRWaWV3cG9ydFVuaXRzKCk7CisKICAgICB2b2lkIG92ZXJyaWRlU2l6ZUZvckNTU1NtYWxsVmll
d3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBvdmVycmlkZVdpZHRo
Rm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKGZsb2F0KTsKICAgICB2b2lkIHJlc2V0T3ZlcnJpZGRl
bldpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCk7CkBAIC05NDQsNiArOTUyLDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fY3VzdG9tU2l6ZUZvclJlc2l6ZUV2
ZW50OwogI2VuZGlmCiAKKyAgICBzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBt
X2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPE92ZXJyaWRl
Vmlld3BvcnRTaXplPiBtX3NtYWxsVmlld3BvcnRTaXplT3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRp
b25hbDxPdmVycmlkZVZpZXdwb3J0U2l6ZT4gbV9sYXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCmluZGV4IGVjNDM5ZDA2NzE0ZTZkZTViOTRlMjFmYjljZThlZTIzOWM5NjIyZmEuLjExYWEz
ZTRiNWUyODUyNjg4YmExYWJiZjY3ZDE0YmU0OWM0NDM4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC00NCw2ICs0NCw5
IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVuZGVybGF5Q29sb3I7CiAgICAgZW5jb2Rl
ciA8PCB1c2VGaXhlZExheW91dDsKICAgICBlbmNvZGVyIDw8IGZpeGVkTGF5b3V0U2l6ZTsKKyAg
ICBlbmNvZGVyIDw8IGRlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1pbmlt
dW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBlbmNvZGVyIDw8IG1heGltdW1Vbm9ic2N1cmVkU2l6ZTsK
ICAgICBlbmNvZGVyIDw8IHZpZXdFeHBvc2VkUmVjdDsKICAgICBlbmNvZGVyIDw8IGFsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyOwogICAgIGVuY29kZXIgPDwgYWx3YXlzU2hvd3NWZXJ0aWNh
bFNjcm9sbGVyOwpAQCAtMTAyLDggKzEwNSw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGF2YWlsYWJsZVNjcmVlblNpemU7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZVNjcmVlblNpemU7
CiAgICAgZW5jb2RlciA8PCB0ZXh0QXV0b3NpemluZ1dpZHRoOwotICAgIGVuY29kZXIgPDwgbWlu
aW11bVVub2JzY3VyZWRTaXplOwotICAgIGVuY29kZXIgPDwgbWF4aW11bVVub2JzY3VyZWRTaXpl
OwogICAgIGVuY29kZXIgPDwgZGV2aWNlT3JpZW50YXRpb247CiAgICAgZW5jb2RlciA8PCBrZXli
b2FyZElzQXR0YWNoZWQ7CiAgICAgZW5jb2RlciA8PCBjYW5TaG93V2hpbGVMb2NrZWQ7CkBAIC0y
MjUsNiArMjI2LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZpeGVkTGF5
b3V0U2l6ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRVbm9ic2N1cmVkU2l6ZSkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1pbmlt
dW1Vbm9ic2N1cmVkU2l6ZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnZpZXdFeHBvc2VkUmVjdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9s
bGVyKSkKQEAgLTM2NiwxMCArMzczLDYgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjoKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudGV4dEF1dG9zaXppbmdXaWR0aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRldmljZU9yaWVudGF0
aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMua2V5Ym9hcmRJc0F0dGFjaGVkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjYjc0MTY5M2RiMzBhNzUw
MmI0ODljODM5N2NlZjZjNzM5ZmVkYTkxLi45MGU1Y2VhNTIyZTVmNDE3NDM2ZTM3ZjM0ZTgxZTkz
ZTdiZmNlYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC04NCw2ICs4NCwxMCBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyB7CiAgICAgYm9vbCB1c2VGaXhlZExheW91dDsKICAgICBXZWJDb3JlOjpJbnRTaXpl
IGZpeGVkTGF5b3V0U2l6ZTsKIAorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBkZWZhdWx0VW5vYnNj
dXJlZFNpemU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZTsK
KyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplOworCiAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdDsKIAogICAgIGJv
b2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXI7CkBAIC0xNjIsOCArMTY2LDYgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBh
dmFpbGFibGVTY3JlZW5TaXplOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBvdmVycmlkZVNjcmVl
blNpemU7CiAgICAgZmxvYXQgdGV4dEF1dG9zaXppbmdXaWR0aDsKLSAgICBXZWJDb3JlOjpGbG9h
dFNpemUgbWluaW11bVVub2JzY3VyZWRTaXplOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhp
bXVtVW5vYnNjdXJlZFNpemU7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsK
ICAgICBib29sIGtleWJvYXJkSXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBjYW5TaG93
V2hpbGVMb2NrZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5oCmluZGV4IDVkOWU4NmM3ZTYxODk5NzA0N2ZiYTE2ZmUyYWJkM2VjOTBk
YzQ3OTMuLjQwNzA0MDhjM2RjMDg4ZjNmNTFjYTFhNzk1YjJhODM3ODkwNGY4OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTYyMSw2ICs2
MjEsMjUgQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZlIGNh
biBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKICAqLwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBXS0Z1bGxzY3JlZW5TdGF0ZSBmdWxsc2NyZWVuU3RhdGUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyohIEBhYnN0
cmFjdCBJbnNldHMgZnJvbSB0aGUgQGxpbmsgZnJhbWUgQC9saW5rIHRoYXQgcmVwcmVzZW50IHRo
ZSBzbWFsbGVzdCBhbmQgbGFyZ2VzdCBwb3NzaWJsZSBzaXplIG9mIHRoZQorIHZpc3VhbCBhcmVh
IG9mIHRoZSBAbGluayBXS1dlYlZpZXcgQC9saW5rIGJhc2VkIG9uIHRoZSBzdGF0ZSBvZiB0aGUg
c3Vycm91bmRpbmcgVUkuCisgQGRpc2N1c3Npb24gRm9yIGFwcHMgd2l0aCBzaXplLWNoYW5naW5n
IFVJIGFyb3VuZCB0aGUgQGxpbmsgV0tXZWJWaWV3IEAvbGluaywgc3BlY2lmeSBtaW5pbXVtVmll
d3BvcnRJbnNldCBhbmQKKyBtYXhpbXVtVmlld3BvcnRJbnNldCB0byBzdXBwbHkgd2VicGFnZXMg
d2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUgZm9yIENTUyAibGFyZ2Ugdmlld3BvcnQiIGBsdipg
CisgdW5pdHMgYW5kIENTUyAic21hbGwgdmlld3BvcnQiIGBzdipgIHVuaXRzIHJlc3BlY3RpdmVs
eSBAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy00LyN2aWV3cG9ydC12YXJp
YW50cyBAL2xpbmsuCisgU2V0IG1pbmltdW1WaWV3cG9ydEluc2V0IHRvIHRoZSBzbWFsbGVzdCBp
bnNldCBhIHdlYnBhZ2UgbWF5IGV4cGVyaWVuY2UgaW4geW91ciBhcHAncyBtYXhpbWFsbHkKKyBj
b2xsYXBzZWQgVUkgY29uZmlndXJhdGlvbi4gU2V0IG1heGltdW1WaWV3cG9ydEluc2V0IHRvIHRo
ZSBsYXJnZXN0IGluc2V0IGEgd2VicGFnZSBtYXkgZXhwZXJpZW5jZQorIGluIHlvdXIgYXBwJ3Mg
bWF4aW1hbGx5IGV4cGFuZGVkIFVJIGNvbmZpZ3VyYXRpb24uIEZvciBhcHBzIHdoZXJlIHRoZSBt
YXhpbWFsbHkgY29sbGFwc2VkIFVJCisgY29uZmlndXJhdGlvbiBpcyBzdWNoIHRoYXQgdGhlIEBs
aW5rIFdLV2ViVmlldyBAL2xpbmsgaXMgbm90IHN1cnJvdW5kZWQgYnkgYW55dGhpbmcsIHRoZXJl
IGlzIG5vIG5lZWQgdG8gc3BlY2lmeQorIG1pbmltdW1WaWV3cG9ydEluc2V0LiBGb3IgYXBwcyB3
aXRoIGZpeGVkLXNpemVkIFVJIHN1cnJvdW5kaW5nIHRoZSBAbGluayBXS1dlYlZpZXcgQC9saW5r
LCB0aGVyZSBpcyBubyBuZWVkIHRvCisgc3BlY2lmeSBlaXRoZXIgdmFsdWUuIEJvdGggdmFsdWVz
IG11c3QgYmUgZWl0aGVyIHplcm8gb3IgcG9zaXRpdmUsIGFuZCBtYXhpbXVtVmlld3BvcnRJbnNl
dCBtdXN0IGJlCisgbGFyZ2VyIHRoYW4gbWluaW11bVZpZXdwb3J0SW5zZXQuCisgKi8KKyNpZiBU
QVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUlu
c2V0cyBtaW5pbXVtVmlld3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0cyBtYXhpbXVt
Vmlld3BvcnRJbnNldCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lk
KXNldE1pbmltdW1WaWV3cG9ydEluc2V0OihVSUVkZ2VJbnNldHMpbWluaW11bVZpZXdwb3J0SW5z
ZXQgbWF4aW11bVZpZXdwb3J0SW5zZXQ6KFVJRWRnZUluc2V0cyltYXhpbXVtVmlld3BvcnRJbnNl
dCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CisjZW5kaWYKKwogQGVuZAogCiAj
aWYgIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDViNTJhMWU2YmE1MjkxNmZhZTc1YjhmMjhjYzQwNDgzYjhl
M2QwMzIuLmJhNGQ0NGQzYTZjOWU3NDEwMDRkMjEwNjQzODkxZWI5ZGNkZTg0ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU0OSw2
ICsxNTQ5LDQxIEBAIC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvCiAgICAgfSk7CiB9CiAKKy0gKHZv
aWQpX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDooQ29j
b2FFZGdlSW5zZXRzKW1pbmltdW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3cG9ydEluc2V0OihD
b2NvYUVkZ2VJbnNldHMpbWF4aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDoo
Qk9PTCl0aHJvd09uSW52YWxpZElucHV0Cit7CisgICAgYXV0byBmcmFtZSA9IFdlYkNvcmU6OkZs
b2F0U2l6ZShzZWxmLmZyYW1lLnNpemUpOworCisgICAgYXV0byBtaW5pbXVtVW5vYnNjdXJlZFNp
emUgPSBmcmFtZSAtIFdlYkNvcmU6OkZsb2F0U2l6ZShtYXhpbXVtVmlld3BvcnRJbnNldC5sZWZ0
ICsgbWF4aW11bVZpZXdwb3J0SW5zZXQucmlnaHQsIG1heGltdW1WaWV3cG9ydEluc2V0LnRvcCAr
IG1heGltdW1WaWV3cG9ydEluc2V0LmJvdHRvbSk7CisgICAgaWYgKG1pbmltdW1Vbm9ic2N1cmVk
U2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHRocm93T25JbnZhbGlkSW5wdXQpIHsKKyAg
ICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBm
b3JtYXQ6QCJtYXhpbXVtVmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZnJhbWUi
XTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFZpZXdwb3J0U2l6aW5nLCAibWF4aW11bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxh
cmdlciB0aGFuIGZyYW1lIik7CisgICAgICAgIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IGZyYW1l
OworICAgIH0KKworICAgIGF1dG8gbWF4aW11bVVub2JzY3VyZWRTaXplID0gZnJhbWUgLSBXZWJD
b3JlOjpGbG9hdFNpemUobWluaW11bVZpZXdwb3J0SW5zZXQubGVmdCArIG1pbmltdW1WaWV3cG9y
dEluc2V0LnJpZ2h0LCBtaW5pbXVtVmlld3BvcnRJbnNldC50b3AgKyBtaW5pbXVtVmlld3BvcnRJ
bnNldC5ib3R0b20pOworICAgIGlmIChtYXhpbXVtVW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmICh0aHJvd09uSW52YWxpZElucHV0KSB7CisgICAgICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAibWluaW11bVZp
ZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxhcmdlciB0aGFuIGZyYW1lIl07CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihWaWV3cG9ydFNp
emluZywgIm1pbmltdW1WaWV3cG9ydEluc2V0IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBmcmFtZSIp
OworICAgICAgICBtYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBmcmFtZTsKKyAgICB9CisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChfdmlld0xheW91dFNpemVPdmVycmlkZSB8fCBf
bWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUgfHwgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIF9wYWdlLT5zZXRNaW5pbXVt
VW5vYnNjdXJlZFNpemUobWluaW11bVVub2JzY3VyZWRTaXplKTsKKyAgICBfcGFnZS0+c2V0TWF4
aW11bVVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6ZSk7Cit9CisKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiAtICh2b2lkKV9kaWRJbnNlcnRBdHRhY2htZW50OihB
UEk6OkF0dGFjaG1lbnQmKWF0dGFjaG1lbnQgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UK
QEAgLTE4MzAsNiArMTg2NSwyNyBAQCAtIChXS0Z1bGxzY3JlZW5TdGF0ZSlmdWxsc2NyZWVuU3Rh
dGUKICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworLSAodm9pZClzZXRN
aW5pbXVtVmlld3BvcnRJbnNldDooQ29jb2FFZGdlSW5zZXRzKW1pbmltdW1WaWV3cG9ydEluc2V0
IG1heGltdW1WaWV3cG9ydEluc2V0OihDb2NvYUVkZ2VJbnNldHMpbWF4aW11bVZpZXdwb3J0SW5z
ZXQKK3sKKyAgICBpZiAobWluaW11bVZpZXdwb3J0SW5zZXQudG9wIDwgMCB8fCBtaW5pbXVtVmll
d3BvcnRJbnNldC5sZWZ0IDwgMCB8fCBtaW5pbXVtVmlld3BvcnRJbnNldC5ib3R0b20gPCAwIHx8
IG1pbmltdW1WaWV3cG9ydEluc2V0LnJpZ2h0IDwgMCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIm1pbmltdW1WaWV3cG9ydElu
c2V0IGNhbm5vdCBiZSBuZWdhdGl2ZSJdOworCisgICAgaWYgKG1heGltdW1WaWV3cG9ydEluc2V0
LnRvcCA8IDAgfHwgbWF4aW11bVZpZXdwb3J0SW5zZXQubGVmdCA8IDAgfHwgbWF4aW11bVZpZXdw
b3J0SW5zZXQuYm90dG9tIDwgMCB8fCBtYXhpbXVtVmlld3BvcnRJbnNldC5yaWdodCA8IDApCisg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJtYXhpbXVtVmlld3BvcnRJbnNldCBjYW5ub3QgYmUgbmVnYXRpdmUiXTsKKworICAgIGlm
IChtaW5pbXVtVmlld3BvcnRJbnNldC50b3AgKyBtaW5pbXVtVmlld3BvcnRJbnNldC5ib3R0b20g
PiBtYXhpbXVtVmlld3BvcnRJbnNldC50b3AgKyBtYXhpbXVtVmlld3BvcnRJbnNldC5ib3R0b20g
fHwgbWluaW11bVZpZXdwb3J0SW5zZXQucmlnaHQgKyBtaW5pbXVtVmlld3BvcnRJbnNldC5sZWZ0
ID4gbWF4aW11bVZpZXdwb3J0SW5zZXQucmlnaHQgKyBtYXhpbXVtVmlld3BvcnRJbnNldC5sZWZ0
KQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAibWluaW11bVZpZXdwb3J0SW5zZXQgY2Fubm90IGJlIGxhcmdlciB0aGFuIG1heGlt
dW1WaWV3cG9ydEluc2V0Il07CisKKyAgICBbc2VsZiBfcmVjYWxjdWxhdGVWaWV3cG9ydFNpemVz
V2l0aE1pbmltdW1WaWV3cG9ydEluc2V0Om1pbmltdW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3
cG9ydEluc2V0Om1heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6WUVTXTsK
KworICAgIF9taW5pbXVtVmlld3BvcnRJbnNldCA9IG1pbmltdW1WaWV3cG9ydEluc2V0OworICAg
IF9tYXhpbXVtVmlld3BvcnRJbnNldCA9IG1heGltdW1WaWV3cG9ydEluc2V0OworfQorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogQGVuZAogCiAjcHJhZ21hIG1hcmsgLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaAppbmRleCBjMzI4NTBiMjZhOGY5MDE4MDE4ZWI4NDVkZTAzYzk0ZjYwZWIxNWUzLi4xZTk4
NTc1ZmY5NzVmOTYwZDcxNWJhYTBhYzE2Y2JlZWUzNmRiZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtNTks
NiArNTksMTQgQEAKICNkZWZpbmUgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTCiAjZW5kaWYKIAorI2lm
IFVTRShBUFBLSVQpCit1c2luZyBDb2NvYUVkZ2VJbnNldHMgPSBOU0VkZ2VJbnNldHM7CisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCit1c2luZyBDb2NvYUVkZ2VJbnNldHMgPSBV
SUVkZ2VJbnNldHM7CisjZW5kaWYKKwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdl
KiBXS1BhZ2VSZWY7CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMTMyLDYgKzE0MCwxMSBAQCBjbGFz
cyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMg
X29ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM7CiAgICAgQk9PTCBfdXNlUGxhdGZvcm1G
aW5kVUk7CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIENvY29hRWRnZUluc2V0cyBf
bWluaW11bVZpZXdwb3J0SW5zZXQ7CisgICAgQ29jb2FFZGdlSW5zZXRzIF9tYXhpbXVtVmlld3Bv
cnRJbnNldDsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJLaXQ6OldlYlZpZXdJbXBsPiBfaW1wbDsKICAgICBSZXRhaW5QdHI8V0tUZXh0RmluZGVy
Q2xpZW50PiBfdGV4dEZpbmRlckNsaWVudDsKQEAgLTE2MSw5ICsxNzQsNyBAQCBjbGFzcyBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgc3RkOjpvcHRpb25hbDxDR1NpemU+IF92aWV3TGF5b3V0
U2l6ZU92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBfbGFz
dFNlbnRWaWV3TGF5b3V0U2l6ZTsKICAgICBzdGQ6Om9wdGlvbmFsPENHU2l6ZT4gX21pbmltdW1V
bm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRT
aXplPiBfbGFzdFNlbnRNaW5pbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgc3RkOjpvcHRpb25hbDxD
R1NpemU+IF9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0U2l6ZT4gX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplOwogICAg
IENHUmVjdCBfaW5wdXRWaWV3Qm91bmRzSW5XaW5kb3c7CiAKICAgICBDR0Zsb2F0IF92aWV3cG9y
dE1ldGFUYWdXaWR0aDsKQEAgLTI4Myw2ICsyOTQsOCBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI7CiAKIC0gKHZvaWQpX2ludGVybmFsRG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKXVwZGF0ZUJsb2NrIHdpdGhvdXRXYWl0aW5nRm9yUGFpbnRpbmc6KEJP
T0wpd2l0aG91dFdhaXRpbmdGb3JQYWludGluZyB3aXRob3V0V2FpdGluZ0ZvckFuaW1hdGVkUmVz
aXplOihCT09MKXdpdGhvdXRXYWl0aW5nRm9yQW5pbWF0ZWRSZXNpemU7CiAKKy0gKHZvaWQpX3Jl
Y2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5pbXVtVmlld3BvcnRJbnNldDooQ29jb2FFZGdl
SW5zZXRzKW1pbmltdW1WaWV3cG9ydEluc2V0IG1heGltdW1WaWV3cG9ydEluc2V0OihDb2NvYUVk
Z2VJbnNldHMpbWF4aW11bVZpZXdwb3J0SW5zZXQgdGhyb3dPbkludmFsaWRJbnB1dDooQk9PTCl0
aHJvd09uSW52YWxpZElucHV0OworCiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZzoo
Y29uc3QgV2ViS2l0OjpTYWZlQnJvd3NpbmdXYXJuaW5nJil3YXJuaW5nIGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dmFyaWFudDxXZWJLaXQ6OkNvbnRpbnVl
VW5zYWZlTG9hZCwgVVJMPiYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2NsZWFy
U2FmZUJyb3dzaW5nV2FybmluZzsKIC0gKHZvaWQpX2NsZWFyU2FmZUJyb3dzaW5nV2FybmluZ0lm
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggOWQ1M2I0ZWYzNDI1ZDAyMTdmNGZkODc1YzdlMjZm
OGZhNWE2ZDZhYi4uMmQwMTE3MWY2Y2NiNzc1NDZhMmQ3MGU5M2U5N2E4MDIxZTFkMDUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAg
LTcyNSw4ICs3MjUsNiBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKICAgICBf
ZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVW5zdGFibGVTY3JvbGxWaWV3ID0g
Tk87CiAgICAgX2N1cnJlbnRseUFkanVzdGluZ1Njcm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCA9
IE5POwogICAgIF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gc3RkOjpudWxsb3B0OwotICAgIF9s
YXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKLSAgICBfbGFzdFNl
bnRNYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgX2xhc3RTZW50RGV2
aWNlT3JpZW50YXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfZnJvemVuVmlzaWJsZUNvbnRl
bnRSZWN0ID0gc3RkOjpudWxsb3B0OwpAQCAtMTk0MywyNCArMTk0MSw2IEBAIC0gKHZvaWQpX2Rp
c3BhdGNoU2V0Vmlld0xheW91dFNpemU6KFdlYkNvcmU6OkZsb2F0U2l6ZSl2aWV3TGF5b3V0U2l6
ZQogICAgIF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gdmlld0xheW91dFNpemU7CiB9CiAKLS0g
KHZvaWQpX2Rpc3BhdGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOihXZWJDb3JlOjpGbG9hdFNp
emUpbWluaW11bVVub2JzY3VyZWRTaXplCi17Ci0gICAgaWYgKF9sYXN0U2VudE1pbmltdW1Vbm9i
c2N1cmVkU2l6ZSAmJiBDR1NpemVFcXVhbFRvU2l6ZShfbGFzdFNlbnRNaW5pbXVtVW5vYnNjdXJl
ZFNpemUudmFsdWUoKSwgbWluaW11bVVub2JzY3VyZWRTaXplKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgX3BhZ2UtPnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShtaW5pbXVtVW5vYnNjdXJlZFNp
emUpOwotICAgIF9sYXN0U2VudE1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1pbmltdW1Vbm9ic2N1
cmVkU2l6ZTsKLX0KLQotLSAodm9pZClfZGlzcGF0Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6
KFdlYkNvcmU6OkZsb2F0U2l6ZSltYXhpbXVtVW5vYnNjdXJlZFNpemUKLXsKLSAgICBpZiAoX2xh
c3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplICYmIENHU2l6ZUVxdWFsVG9TaXplKF9sYXN0U2Vu
dE1heGltdW1Vbm9ic2N1cmVkU2l6ZS52YWx1ZSgpLCBtYXhpbXVtVW5vYnNjdXJlZFNpemUpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBfcGFnZS0+c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKG1h
eGltdW1Vbm9ic2N1cmVkU2l6ZSk7Ci0gICAgX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXpl
ID0gbWF4aW11bVVub2JzY3VyZWRTaXplOwotfQotCiAtICh2b2lkKV9kaXNwYXRjaFNldERldmlj
ZU9yaWVudGF0aW9uOihpbnQzMl90KWRldmljZU9yaWVudGF0aW9uCiB7CiAgICAgaWYgKF9sYXN0
U2VudERldmljZU9yaWVudGF0aW9uICYmIF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uLnZhbHVl
KCkgPT0gZGV2aWNlT3JpZW50YXRpb24pCkBAIC0xOTg3LDEwICsxOTY3LDkgQEAgLSAodm9pZClf
ZnJhbWVPckJvdW5kc0NoYW5nZWQKICAgICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUg
PT0gV2ViS2l0OjpEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAg
ICAgICBpZiAoIV92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKQogICAgICAgICAgICAgW3NlbGYgX2Rp
c3BhdGNoU2V0Vmlld0xheW91dFNpemU6W3NlbGYgYWN0aXZlVmlld0xheW91dFNpemU6c2VsZi5i
b3VuZHNdXTsKLSAgICAgICAgaWYgKCFfbWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpCi0g
ICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRNaW5pbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29y
ZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKV07CiAgICAgICAgIGlmICghX21heGltdW1Vbm9ic2N1
cmVkU2l6ZU92ZXJyaWRlKQotICAgICAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWF4aW11bVVu
b2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6ZShib3VuZHMuc2l6ZSldOworICAgICAgICAg
ICAgX3BhZ2UtPnNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoYm91
bmRzLnNpemUpKTsKKyAgICAgICAgW3NlbGYgX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhN
aW5pbXVtVmlld3BvcnRJbnNldDpfbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0
SW5zZXQ6X21heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6Tk9dOwogCiAg
ICAgICAgIEJPT0wgc2l6ZUNoYW5nZWQgPSBOTzsKICAgICAgICAgaWYgKF9wYWdlKSB7CkBAIC0y
NDQxLDExICsyNDIwLDEzIEBAIC0gKHZvaWQpX2RpZENvbXBsZXRlQW5pbWF0ZWRSZXNpemUKICAg
ICBpZiAoIV9sYXN0U2VudFZpZXdMYXlvdXRTaXplIHx8IG5ld1ZpZXdMYXlvdXRTaXplICE9IF9s
YXN0U2VudFZpZXdMYXlvdXRTaXplLnZhbHVlKCkpCiAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNl
dFZpZXdMYXlvdXRTaXplOm5ld1ZpZXdMYXlvdXRTaXplXTsKIAotICAgIGlmICghX2xhc3RTZW50
TWluaW11bVVub2JzY3VyZWRTaXplIHx8IG5ld01pbmltdW1Vbm9ic2N1cmVkU2l6ZSAhPSBfbGFz
dFNlbnRNaW5pbXVtVW5vYnNjdXJlZFNpemUudmFsdWUoKSkKLSAgICAgICAgW3NlbGYgX2Rpc3Bh
dGNoU2V0TWluaW11bVVub2JzY3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5pbXVt
VW5vYnNjdXJlZFNpemUpXTsKLQotICAgIGlmICghX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRT
aXplIHx8IG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSAhPSBfbGFzdFNlbnRNYXhpbXVtVW5vYnNj
dXJlZFNpemUudmFsdWUoKSkKLSAgICAgICAgW3NlbGYgX2Rpc3BhdGNoU2V0TWF4aW11bVVub2Jz
Y3VyZWRTaXplOldlYkNvcmU6OkZsb2F0U2l6ZShuZXdNYXhpbXVtVW5vYnNjdXJlZFNpemUpXTsK
KyAgICBpZiAoX21pbmltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKQorICAgICAgICBfcGFnZS0+
c2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5pbXVtVW5v
YnNjdXJlZFNpemUpKTsKKyAgICBpZiAoX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlKSB7
CisgICAgICAgIF9wYWdlLT5zZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRT
aXplKG5ld01heGltdW1Vbm9ic2N1cmVkU2l6ZSkpOworICAgICAgICBfcGFnZS0+c2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShuZXdNYXhpbXVtVW5vYnNjdXJlZFNp
emUpKTsKKyAgICB9CisgICAgW3NlbGYgX3JlY2FsY3VsYXRlVmlld3BvcnRTaXplc1dpdGhNaW5p
bXVtVmlld3BvcnRJbnNldDpfbWluaW11bVZpZXdwb3J0SW5zZXQgbWF4aW11bVZpZXdwb3J0SW5z
ZXQ6X21heGltdW1WaWV3cG9ydEluc2V0IHRocm93T25JbnZhbGlkSW5wdXQ6Tk9dOwogCiAgICAg
aWYgKCFfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbiB8fCBuZXdPcmllbnRhdGlvbiAhPSBfbGFz
dFNlbnREZXZpY2VPcmllbnRhdGlvbi52YWx1ZSgpKQogICAgICAgICBbc2VsZiBfZGlzcGF0Y2hT
ZXREZXZpY2VPcmllbnRhdGlvbjpuZXdPcmllbnRhdGlvbl07CkBAIC0yODMyLDcgKzI4MTMsNyBA
QCAtICh2b2lkKV9zZXRNaW5pbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dTaXplKXNpemUK
ICAgICBfbWluaW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUgPSBzaXplOwogCiAgICAgaWYgKF9k
eW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IFdlYktpdDo6RHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZTo6Tm90UmVzaXppbmcpCi0gICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1pbmltdW1Vbm9i
c2N1cmVkU2l6ZTpXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSldOworICAgICAgICBfcGFnZS0+c2V0
TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplKSk7CiB9CiAKIC8v
IERlcHJlY2F0ZWQgU1BJCkBAIC0yODQ3LDggKzI4MjgsMTAgQEAgLSAodm9pZClfc2V0TWF4aW11
bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6KENHU2l6ZSlzaXplCiAgICAgQVNTRVJUKHNpemUud2lk
dGggPD0gc2VsZi5ib3VuZHMuc2l6ZS53aWR0aCAmJiBzaXplLmhlaWdodCA8PSBzZWxmLmJvdW5k
cy5zaXplLmhlaWdodCk7CiAgICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlID0gc2l6
ZTsKIAotICAgIGlmIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBXZWJLaXQ6OkR5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGU6Ok5vdFJlc2l6aW5nKQotICAgICAgICBbc2VsZiBfZGlzcGF0
Y2hTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKHNpemUpXTsKKyAg
ICBpZiAoX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgPT0gV2ViS2l0OjpEeW5hbWljVmlld3Bv
cnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgeworICAgICAgICBfcGFnZS0+c2V0RGVmYXVsdFVu
b2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplKSk7CisgICAgICAgIF9wYWdlLT5z
ZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKKyAgICB9
CiB9CiAKIC0gKFVJRWRnZUluc2V0cylfb2JzY3VyZWRJbnNldHMKQEAgLTMxOTAsOSArMzE3Mywx
MSBAQCAtICh2b2lkKV9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6KHZvaWQgKF4pKHZv
aWQpKXVwZGF0ZUJsb2NrCiAgICAgICAgIGlmIChfdmlld0xheW91dFNpemVPdmVycmlkZSkKICAg
ICAgICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldFZpZXdMYXlvdXRTaXplOm5ld1ZpZXdMYXlvdXRT
aXplXTsKICAgICAgICAgaWYgKF9taW5pbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSkKLSAgICAg
ICAgICAgIFtzZWxmIF9kaXNwYXRjaFNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZTpXZWJDb3JlOjpG
bG9hdFNpemUobmV3TWluaW11bVVub2JzY3VyZWRTaXplKV07Ci0gICAgICAgIGlmIChfbWF4aW11
bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpCi0gICAgICAgICAgICBbc2VsZiBfZGlzcGF0Y2hTZXRN
YXhpbXVtVW5vYnNjdXJlZFNpemU6V2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9ic2N1
cmVkU2l6ZSldOworICAgICAgICAgICAgX3BhZ2UtPnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShX
ZWJDb3JlOjpGbG9hdFNpemUobmV3TWluaW11bVVub2JzY3VyZWRTaXplKSk7CisgICAgICAgIGlm
IChfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpIHsKKyAgICAgICAgICAgIF9wYWdlLT5z
ZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01heGltdW1Vbm9i
c2N1cmVkU2l6ZSkpOworICAgICAgICAgICAgX3BhZ2UtPnNldE1heGltdW1Vbm9ic2N1cmVkU2l6
ZShXZWJDb3JlOjpGbG9hdFNpemUobmV3TWF4aW11bVVub2JzY3VyZWRTaXplKSk7CisgICAgICAg
IH0KICAgICAgICAgaWYgKF9vdmVycmlkZXNJbnRlcmZhY2VPcmllbnRhdGlvbikKICAgICAgICAg
ICAgIFtzZWxmIF9kaXNwYXRjaFNldERldmljZU9yaWVudGF0aW9uOm5ld09yaWVudGF0aW9uXTsK
IApAQCAtMzI2OSw4ICszMjU0LDYgQEAgLSAodm9pZClfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhV
cGRhdGVzOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jawogICAgIFdlYkNvcmU6OkZsb2F0Qm94
RXh0ZW50IHVub2JzY3VyZWRTYWZlQXJlYUluc2V0c0V4dGVudCh1bm9ic2N1cmVkU2FmZUFyZWFJ
bnNldHMudG9wLCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMucmlnaHQsIHVub2JzY3VyZWRTYWZl
QXJlYUluc2V0cy5ib3R0b20sIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5sZWZ0KTsKIAogICAg
IF9sYXN0U2VudFZpZXdMYXlvdXRTaXplID0gbmV3Vmlld0xheW91dFNpemU7Ci0gICAgX2xhc3RT
ZW50TWluaW11bVVub2JzY3VyZWRTaXplID0gbmV3TWluaW11bVVub2JzY3VyZWRTaXplOwotICAg
IF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG5ld01heGltdW1Vbm9ic2N1cmVkU2l6
ZTsKICAgICBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbiA9IG5ld09yaWVudGF0aW9uOwogCiAg
ICAgX3BhZ2UtPmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUobmV3Vmlld0xheW91dFNpemUsIG5l
d01pbmltdW1Vbm9ic2N1cmVkU2l6ZSwgbmV3TWF4aW11bVVub2JzY3VyZWRTaXplLCB2aXNpYmxl
UmVjdEluQ29udGVudENvb3JkaW5hdGVzLCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5h
dGVzLCBmdXR1cmVVbm9ic2N1cmVkUmVjdEluU2VsZkNvb3JkaW5hdGVzLCB1bm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldHNFeHRlbnQsIHRhcmdldFNjYWxlLCBuZXdPcmllbnRhdGlvbiwgbmV3TWluaW11
bUVmZmVjdGl2ZURldmljZVdpZHRoLCArK19jdXJyZW50RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0
ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhlZjA1
MzY1OTEwOGM3N2UyYmIzOWE0M2QwOTY2MGFjMGY2NWQxZDguLjMxMjcwZDMzY2FlNmFjNDVjNzhm
YWNjMThhOTk0ZGVkOGJkMTA0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtNDA3OSw2ICs0MDc5LDQ1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhl
ZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6ZSkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBp
ZiAoc2l6ZSA9PSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBzaXplOworCisgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXREZWZhdWx0VW5vYnNjdXJlZFNpemUobV9kZWZhdWx0VW5vYnNjdXJlZFNpemUpKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9h
dFNpemUmIHNpemUpCit7CisgICAgaWYgKHNpemUgPT0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fbWluaW11bVVub2JzY3VyZWRTaXplID0gc2l6ZTsK
KworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVVub2JzY3VyZWRTaXplKG1fbWluaW11
bVVub2JzY3VyZWRTaXplKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXhpbXVtVW5v
YnNjdXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplID09IG1f
bWF4aW11bVVub2JzY3VyZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21heGltdW1V
bm9ic2N1cmVkU2l6ZSA9IHNpemU7CisKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heGltdW1V
bm9ic2N1cmVkU2l6ZShtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSkpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0ID09IHZp
ZXdFeHBvc2VkUmVjdCkKQEAgLTgyNjUsNiArODMwNCw5IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jCiAgICAgcGFyYW1ldGVycy51bmRlcmxheUNvbG9yID0gbV91bmRlcmxheUNvbG9yOwogICAg
IHBhcmFtZXRlcnMudXNlRml4ZWRMYXlvdXQgPSBtX3VzZUZpeGVkTGF5b3V0OwogICAgIHBhcmFt
ZXRlcnMuZml4ZWRMYXlvdXRTaXplID0gbV9maXhlZExheW91dFNpemU7CisgICAgcGFyYW1ldGVy
cy5kZWZhdWx0VW5vYnNjdXJlZFNpemUgPSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKyAgICBw
YXJhbWV0ZXJzLm1pbmltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fbWluaW11bVVub2JzY3VyZWRTaXpl
OworICAgIHBhcmFtZXRlcnMubWF4aW11bVVub2JzY3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNj
dXJlZFNpemU7CiAgICAgcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QgPSBtX3ZpZXdFeHBvc2Vk
UmVjdDsKICAgICBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyID0gbV9h
bHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcjsKICAgICBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dz
VmVydGljYWxTY3JvbGxlciA9IG1fYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyOwpAQCAtODMy
Myw4ICs4MzY1LDYgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNy
ZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLm92
ZXJyaWRlU2NyZWVuU2l6ZSA9IG92ZXJyaWRlU2NyZWVuU2l6ZSgpOwogICAgIHBhcmFtZXRlcnMu
dGV4dEF1dG9zaXppbmdXaWR0aCA9IHRleHRBdXRvc2l6aW5nV2lkdGgoKTsKICAgICBwYXJhbWV0
ZXJzLm1pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzID0gcGFnZUNsaWVudCgpLm1p
bWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzKCk7Ci0gICAgcGFyYW1ldGVycy5taW5p
bXVtVW5vYnNjdXJlZFNpemUgPSBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsKLSAgICBwYXJhbWV0
ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAg
IHBhcmFtZXRlcnMuZGV2aWNlT3JpZW50YXRpb24gPSBtX2RldmljZU9yaWVudGF0aW9uOwogICAg
IHBhcmFtZXRlcnMua2V5Ym9hcmRJc0F0dGFjaGVkID0gaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2Rl
KCk7CiAgICAgcGFyYW1ldGVycy5jYW5TaG93V2hpbGVMb2NrZWQgPSBtX2NvbmZpZ3VyYXRpb24t
PmNhblNob3dXaGlsZUxvY2tlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBkMjY1MDg1ZDdhNTZmZDBmZThhODdhNjAzOTU5NmE2YmJkNjFmNmEwLi4zMzFiYjhj
NDVmNDQ4MjU5MzQzMzNhOTM4NDZjY2JjYmNhNjIzZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtODUxLDEwICs4NTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
eW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdmlld0xh
eW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWluaW11bVVub2JzY3VyZWRTaXpl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywgZG91Ymxl
IHRhcmdldFNjYWxlLCBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uLCBkb3VibGUgbWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoLCBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpOwogCiAgICAg
dm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZl
RGV2aWNlV2lkdGgpOwotICAgIHZvaWQgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtVW5vYnNj
dXJlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1Vbm9ic2N1cmVkU2l6ZTsgfQotICAg
IHZvaWQgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
OwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUoKSBjb25zdCB7
IHJldHVybiBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsgfQogICAgIHZvaWQgc2V0RGV2aWNlT3Jp
ZW50YXRpb24oaW50MzJfdCk7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0KICAgICB2b2lkIHNldE92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cz4mKTsKQEAgLTExMjIsNiArMTExOCwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VGaXhl
ZExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlRml4ZWRMYXlvdXQ7IH07CiAgICAgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgZml4ZWRMYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9maXhl
ZExheW91dFNpemU7IH07CiAKKyAgICB2b2lkIHNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgZGVmYXVsdFVu
b2JzY3VyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VW5vYnNjdXJlZFNpemU7IH0K
KyAgICB2b2lkIHNldE1pbmltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bVVub2JzY3VyZWRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7IH0KKyAgICB2b2lkIHNldE1heGlt
dW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgbWF4aW11bVVub2JzY3VyZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhp
bXVtVW5vYnNjdXJlZFNpemU7IH0KKwogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9z
ZWRSZWN0OyB9CiAKQEAgLTI4MzcsNiArMjg0MCwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkludFNpemUgbV9maXhlZExheW91dFNpemU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwogCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1f
ZGVmYXVsdFVub2JzY3VyZWRTaXplOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1V
bm9ic2N1cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9tYXhpbXVtVW5vYnNjdXJl
ZFNpemU7CisKICAgICBib29sIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIgeyBmYWxzZSB9Owog
CkBAIC0zMDc0LDggKzMwODEsNiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgRnVuY3Rpb248Ym9vbCgpPiBtX2RldmljZU9yaWVudGF0aW9uVXNlclBlcm1pc3Npb25I
YW5kbGVyRm9yVGVzdGluZzsKICAgICBib29sIG1fd2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JT
dGF0ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50IHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGJvb2wgbV9sYXN0T2JzZXJ2ZWRTdGF0ZVdh
c0JhY2tncm91bmQgeyBmYWxzZSB9OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BlcmZvcm1BY3Rp
b25PbkVsZW1lbnRBdXRoVG9rZW5zOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA1MDE4NTU2ODFhZDllZDI2ZGE5YWU2MzRm
M2RkMjc3ODM3MWExYmM2Li40MTJkYWE0ZWE1ZTg5NjA0NjVmOGI4OWI3ZDRiZjQ4MjM0YWNjYjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTI3Myw2ICsyNzMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHluYW1pY1ZpZXdwb3J0U2l6
ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBjbwogICAgIGhpZGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOwogCiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0
U2l6ZSA9IHZpZXdMYXlvdXRTaXplOworICAgIG1fZGVmYXVsdFVub2JzY3VyZWRTaXplID0gbWF4
aW11bVVub2JzY3VyZWRTaXplOworICAgIG1fbWluaW11bVVub2JzY3VyZWRTaXplID0gbWluaW11
bVVub2JzY3VyZWRTaXplOworICAgIG1fbWF4aW11bVVub2JzY3VyZWRTaXplID0gbWF4aW11bVVu
b2JzY3VyZWRTaXplOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSh2aWV3TGF5b3V0U2l6ZSwKICAgICAgICAgbWluaW11bVVu
b2JzY3VyZWRTaXplLCBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIHRhcmdldEV4cG9zZWRDb250ZW50
UmVjdCwgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsCiAgICAgICAgIHRhcmdldFVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywKQEAgLTMw
MSwyMiArMzA0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcmNlQWx3YXlzVXNlclNjYWxh
YmxlKGJvb2wgdXNlclNjYWxhYmxlKQogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKHVzZXJTY2FsYWJsZSksIG1fd2Vi
UGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE1pbmltdW1Vbm9ic2N1cmVkU2l6
ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgbV9taW5pbXVtVW5vYnNj
dXJlZFNpemUgPSBzaXplOwotCi0gICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bVVub2JzY3VyZWRT
aXplKHNpemUpLCBtX3dlYlBhZ2VJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXhp
bXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQotewotICAg
IG1fbWF4aW11bVVub2JzY3VyZWRTaXplID0gc2l6ZTsKLQotICAgIGlmIChoYXNSdW5uaW5nUHJv
Y2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1h
eGltdW1Vbm9ic2N1cmVkU2l6ZShzaXplKSwgbV93ZWJQYWdlSUQpOwotfQotCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikK
IHsKICAgICBpZiAoZGV2aWNlT3JpZW50YXRpb24gIT0gbV9kZXZpY2VPcmllbnRhdGlvbikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZjZmMmQ0YTIwNzU4MDEzZGQwNmQy
Yzk2ZDgzMmVjNWMwNDYxZDMxOS4uNTY2OWJmMzZhNGNiMDEzZGY2NGU5OTI5ZTY4ZDZkZDZkZDMx
MWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNTI0LDkgKzE1MjQs
MTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9y
TmV3UGFnZSgpCiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3VsZERpc2FibGVT
Y3JvbGxpbmc7CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdDsKIAorICAgIGF1
dG8gb2xkVmlldyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkp
Ci0gICAgICAgIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICBpZiAob2xkVmlldykKKyAg
ICAgICAgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSBvbGRWaWV3LT5maXhlZFZpc2libGVDb250
ZW50UmVjdCgpOwogICAgIGlmIChzaG91bGRVc2VGaXhlZExheW91dCkKICAgICAgICAgc2hvdWxk
SGlkZVNjcm9sbGJhcnMgPSB0cnVlOwogI2VuZGlmCkBAIC0xNTQ5LDYgKzE1NTEsMTAgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgp
CiAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsTG9jaywgdmVydGlj
YWxTY3JvbGxiYXJNb2RlLCB2ZXJ0aWNhbExvY2spOwogCiAgICAgUmVmUHRyPEZyYW1lVmlldz4g
dmlldyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisKKyAgICBpZiAodmlldyAmJiBv
bGRWaWV3KQorICAgICAgICB2aWV3LT5jb3B5Q1NTVmlld3BvcnRTaXplT3ZlcnJpZGVzKCpvbGRW
aWV3KTsKKwogICAgIGlmIChpbnQgd2lkdGggPSB3ZWJQYWdlLT5taW5pbXVtU2l6ZUZvckF1dG9M
YXlvdXQoKS53aWR0aCgpKSB7CiAgICAgICAgIGludCBoZWlnaHQgPSBzdGQ6Om1heCh3ZWJQYWdl
LT5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQoKS5oZWlnaHQoKSwgMSk7CiAgICAgICAgIHZpZXct
PmVuYWJsZUZpeGVkV2lkdGhBdXRvU2l6ZU1vZGUodHJ1ZSwgeyB3aWR0aCwgaGVpZ2h0IH0pOwpA
QCAtMTU2Nyw3ICsxNTczLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgfQogCiAgICAgaWYgKGF1dG8gdmlld3BvcnRT
aXplRm9yVmlld3BvcnRVbml0cyA9IHdlYlBhZ2UtPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKSkKLSAgICAgICAgdmlldy0+c2V0U2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygq
dmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cyk7CisgICAgICAgIHZpZXctPnNldFNpemVGb3JD
U1NEZWZhdWx0Vmlld3BvcnRVbml0cygqdmlld3BvcnRTaXplRm9yVmlld3BvcnRVbml0cyk7CiAg
ICAgdmlldy0+c2V0UHJvaGliaXRzU2Nyb2xsaW5nKHNob3VsZERpc2FibGVTY3JvbGxpbmcpOwog
ICAgIHZpZXctPnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQoIXdlYlBhZ2UtPnNob3Vs
ZEV4dGVuZEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oKSk7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDBiMWU4NDlhZWRkNTA4MGU5NGM0NmU4MGFhOTdkZTc3YmE4MmIyZjMuLjNjYjkwNzA4ODJj
YTQxNmM5NTRkOTNjNDE3YTdiNzQ5YzhhYWZjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDQsNiArNzQ0LDEwIEBAIFdlYlBhZ2U6Oldl
YlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIAogICAgIHNldFVzZUZpeGVkTGF5b3V0KHBhcmFtZXRlcnMudXNlRml4ZWRM
YXlvdXQpOwogCisgICAgc2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKHBhcmFtZXRlcnMuZGVmYXVs
dFVub2JzY3VyZWRTaXplKTsKKyAgICBzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUocGFyYW1ldGVy
cy5taW5pbXVtVW5vYnNjdXJlZFNpemUpOworICAgIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShw
YXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSk7CisKICAgICBzZXRVbmRlcmxheUNvbG9y
KHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcik7CiAKICAgICBzZXRQYWdpbmF0aW9uTW9kZShwYXJh
bWV0ZXJzLnBhZ2luYXRpb25Nb2RlKTsKQEAgLTg2Niw4ICs4NzAsNiBAQCBXZWJQYWdlOjpXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9u
Vmlld0xheW91dFNpemUsIHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uTGF5b3V0U2l6
ZVNjYWxlRmFjdG9yLCBwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1FZmZl
Y3RpdmVEZXZpY2VXaWR0aCk7Ci0gICAgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKHBhcmFtZXRl
cnMubWluaW11bVVub2JzY3VyZWRTaXplKTsKLSAgICBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUo
cGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJlZFNpemUpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVE
SU9fU0VTU0lPTikKQEAgLTIzNjksNiArMjM3MSw4MSBAQCBJbnRTaXplIFdlYlBhZ2U6OmZpeGVk
TGF5b3V0U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpOwog
fQogCit2b2lkIFdlYlBhZ2U6OnNldERlZmF1bHRVbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9hdFNp
emUmIGRlZmF1bHRVbm9ic2N1cmVkU2l6ZSkKK3sKKyAgICBpZiAoZGVmYXVsdFVub2JzY3VyZWRT
aXplID09IG1fZGVmYXVsdFVub2JzY3VyZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2RlZmF1bHRVbm9ic2N1cmVkU2l6ZSA9IGRlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKworICAgIHVw
ZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpOworfQorCit2b2lkIFdlYlBhZ2U6
OnVwZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpCit7CisgICAgYXV0byogbWFp
bkZyYW1lVmlldyA9IHRoaXMtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBpZiAoIW1haW5GcmFtZVZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGVmYXVsdFVub2JzY3VyZWRTaXplID0g
bV9kZWZhdWx0VW5vYnNjdXJlZFNpemU7CisjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCisgICAg
aWYgKGRlZmF1bHRVbm9ic2N1cmVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIGRlZmF1bHRVbm9i
c2N1cmVkU2l6ZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdMYXlvdXRTaXplKCk7Cisg
ICAgZGVmYXVsdFVub2JzY3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5pbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKCkpOworI2VuZGlmCisgICAgbWFpbkZy
YW1lVmlldy0+c2V0U2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKGRlZmF1bHRVbm9ic2N1
cmVkU2l6ZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2V0TWluaW11bVVub2JzY3VyZWRTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bVVub2JzY3VyZWRTaXplKQoreworICAgIGlmIChtaW5pbXVt
VW5vYnNjdXJlZFNpemUgPT0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbWluaW11bVVub2JzY3VyZWRTaXplID0gbWluaW11bVVub2JzY3VyZWRTaXpl
OworCisgICAgdXBkYXRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpOworfQorCit2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKQoreworICAgIGF1
dG8qIG1haW5GcmFtZVZpZXcgPSB0aGlzLT5tYWluRnJhbWVWaWV3KCk7CisgICAgaWYgKCFtYWlu
RnJhbWVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1pbmltdW1Vbm9ic2N1cmVk
U2l6ZSA9IG1fbWluaW11bVVub2JzY3VyZWRTaXplOworI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JU
KQorICAgIGlmIChtaW5pbXVtVW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKQorICAgICAgICBtaW5p
bXVtVW5vYnNjdXJlZFNpemUgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3TGF5b3V0U2l6
ZSgpOworICAgIG1pbmltdW1Vbm9ic2N1cmVkU2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZp
Z3VyYXRpb24uaW5pdGlhbFNjYWxlSWdub3JpbmdDb250ZW50U2l6ZSgpKTsKKyNlbmRpZgorICAg
IG1haW5GcmFtZVZpZXctPnNldFNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMobWluaW11bVVu
b2JzY3VyZWRTaXplKTsKK30KKwordm9pZCBXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNp
emUoY29uc3QgRmxvYXRTaXplJiBtYXhpbXVtVW5vYnNjdXJlZFNpemUpCit7CisgICAgaWYgKG1h
eGltdW1Vbm9ic2N1cmVkU2l6ZSA9PSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJl
ZFNpemU7CisKKyAgICB1cGRhdGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCk7Cit9CisK
K3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpCit7Cisg
ICAgYXV0byogbWFpbkZyYW1lVmlldyA9IHRoaXMtPm1haW5GcmFtZVZpZXcoKTsKKyAgICBpZiAo
IW1haW5GcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWF4aW11bVVub2Jz
Y3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CisjaWYgRU5BQkxFKE1FVEFfVklF
V1BPUlQpCisgICAgaWYgKG1heGltdW1Vbm9ic2N1cmVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAg
IG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnZpZXdMYXlv
dXRTaXplKCk7CisgICAgbWF4aW11bVVub2JzY3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKCkpOworI2VuZGlm
CisgICAgbWFpbkZyYW1lVmlldy0+c2V0U2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhtYXhp
bXVtVW5vYnNjdXJlZFNpemUpOworfQorCiB2b2lkIFdlYlBhZ2U6OmRpc2FibGVkQWRhcHRhdGlv
bnNEaWRDaGFuZ2UoY29uc3QgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+JiBkaXNhYmxl
ZEFkYXB0YXRpb25zKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC02NDIwLDcgKzY0
OTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpegogCiAgICAgbV92aWV3cG9ydFNpemVGb3JD
U1NWaWV3cG9ydFVuaXRzID0gdmlld3BvcnRTaXplOwogICAgIGlmIChtX3ZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMpCi0gICAgICAgIGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXco
KS0+c2V0U2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygqbV92aWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKTsKKyAgICAgICAgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5z
ZXRTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKm1fdmlld3BvcnRTaXplRm9yQ1NTVmll
d3BvcnRVbml0cyk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVk
MmU5OGYxMTk1YTI3NzFjZmJlMDM2ZDQ3MzA0NmQ0MThkOGE2NDUuLmFjZGI4OTI2OTdjMjA5MWQw
ZDUwNTI1YjYyOTE4OTdiODMyZjQxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTYxMiw2ICs2MTIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2V0
Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJ
bnRTaXplIGZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0OwogCisgICAgdm9pZCBzZXREZWZhdWx0VW5v
YnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBzZXRNaW5p
bXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBz
ZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisKICAg
ICB2b2lkIGxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91
dE1pbGVzdG9uZT4pOwogCiAgICAgdm9pZCBzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMo
Ym9vbCk7CkBAIC0xMTAxLDggKzExMDUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVWaXNp
YmlsaXR5U3RhdGUoYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgdm9pZCBzZXRNaW5pbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvbihp
bnQzMl90KTsKICAgICB2b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBt
aW5pbXVtVW5vYnNjdXJlZFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11bVVu
b2JzY3VyZWRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250
ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmll
d0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgdGFyZ2V0VW5vYnNj
dXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGludDMyX3QgZGV2aWNlT3JpZW50YXRp
b24sIGRvdWJsZSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgsIER5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGVJRCk7CiAgICAgYm9vbCBzY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNzOyB9CkBAIC0xNTUzLDkgKzE1NTUsMTEgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMoKTsKKyAgICB2b2lkIHVwZGF0ZVNpemVGb3JDU1NEZWZhdWx0Vmlld3Bv
cnRVbml0cygpOworICAgIHZvaWQgdXBkYXRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cygp
OworICAgIHZvaWQgdXBkYXRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpOwogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24+IGZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKTsKICAgICB2b2lkIGdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlKTsKICAg
ICB2b2lkIGhhbmRsZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUmIG5vZGVSZXNwb25kaW5n
VG9DbGljaywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxX
ZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlBvaW50ZXJJRCA9IFdlYkNvcmU6
Om1vdXNlUG9pbnRlcklEKTsKQEAgLTIwMDYsNiArMjAxMCwxMCBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3VzZUZpeGVkTGF5b3V0IHsgZmFsc2UgfTsKIAorICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtX2RlZmF1bHRVbm9ic2N1cmVkU2l6ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9taW5p
bXVtVW5vYnNjdXJlZFNpemU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fbWF4aW11bVVub2Jz
Y3VyZWRTaXplOworCiAgICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOwogCiAjaWYg
RU5BQkxFKFVJX1BST0NFU1NfUERGX0hVRCkKQEAgLTIyOTUsOCArMjMwMyw2IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBtX2luaXRpYWxTZWxl
Y3Rpb247CiAgICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBtX3N0b3JlZFNlbGVjdGlvbkZv
ckFjY2Vzc2liaWxpdHkgeyBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKCkgfTsKLSAgICBXZWJD
b3JlOjpGbG9hdFNpemUgbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIGludDMyX3QgbV9kZXZpY2VPcmll
bnRhdGlvbiB7IDAgfTsKICAgICBib29sIG1fa2V5Ym9hcmRJc0F0dGFjaGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fY2FuU2hvd1doaWxlTG9ja2VkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDk3
YmQyZDk4NjBmZGFiOTBiMTY0NDkyZjhhN2QxMzcwMDFmZGQ3MDAuLjExOTQyNzUwZjQwNDU0YjA3
YzIxNzNhY2U0NGJhZDk2Y2ZmZjQyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDksOCArNDksNiBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBNb3VzZUV2ZW50KFdlYktpdDo6
V2ViTW91c2VFdmVudCBldmVudCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+PiBzYW5kYm94RXh0ZW5zaW9ucykKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKFdlYkNv
cmU6OkZsb2F0U2l6ZSBzaXplLCBkb3VibGUgc2NhbGVGYWN0b3IsIGRvdWJsZSBtaW5pbXVtRWZm
ZWN0aXZlRGV2aWNlV2lkdGgpCi0gICAgU2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6
OkZsb2F0U2l6ZSBzaXplKQotICAgIFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSkKICAgICBTZXREZXZpY2VPcmllbnRhdGlvbihpbnQzMl90IGRldmljZU9y
aWVudGF0aW9uKQogICAgIFNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gYXJndW1lbnRzKQogICAgIER5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdMYXlvdXRTaXplLCBXZWJDb3Jl
OjpGbG9hdFNpemUgbWluaW11bVVub2JzY3VyZWRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgbWF4
aW11bVVub2JzY3VyZWRTaXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRl
bnRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIFdlYkNvcmU6
OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBX
ZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IHRhcmdldFVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywg
ZG91YmxlIHNjYWxlLCBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uLCBkb3VibGUgbWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoLCB1aW50NjRfdCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQp
CkBAIC0zMDAsNiArMjk4LDExIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICBTZXRV
c2VGaXhlZExheW91dChib29sIGZpeGVkKQogICAgIFNldEZpeGVkTGF5b3V0U2l6ZShXZWJDb3Jl
OjpJbnRTaXplIHNpemUpCisKKyAgICBTZXREZWZhdWx0VW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6
RmxvYXRTaXplIHNpemUpCisgICAgU2V0TWluaW11bVVub2JzY3VyZWRTaXplKFdlYkNvcmU6OkZs
b2F0U2l6ZSBzaXplKQorICAgIFNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9h
dFNpemUgc2l6ZSkKKwogICAgIExpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdl
YkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcykKICAgICBTZXRTdXBwcmVz
c1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
MDJlY2JjMmMzZDYxZTBlNjM4ZDU3NDYwYzljMmM3MDAyOWEzN2Y0ZC4uM2E1MWE3ODJjYmM0NTJm
NWFiNjk2ZGIxN2M1YTQ3ZDAxOGZkZWQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTM1NzAsMTggKzM1NzAsNiBAQCB2
b2lkIFdlYlBhZ2U6OnNldFZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdMYXlvdXRTaXplKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZG91YgogICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQo
em9vbVRvSW5pdGlhbFNjYWxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRNaW5pbXVtVW5vYnNj
dXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtVW5vYnNjdXJlZFNpemUpCi17Ci0gICAg
bV9taW5pbXVtVW5vYnNjdXJlZFNpemUgPSBtaW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAgdXBk
YXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwotfQotCi12b2lkIFdlYlBhZ2U6
OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1
cmVkU2l6ZSkKLXsKLSAgICBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IG1heGltdW1Vbm9ic2N1
cmVkU2l6ZTsKLSAgICB1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7Ci19
Ci0KIHZvaWQgV2ViUGFnZTo6c2V0RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmll
bnRhdGlvbikKIHsKICAgICBpZiAoZGV2aWNlT3JpZW50YXRpb24gPT0gbV9kZXZpY2VPcmllbnRh
dGlvbikKQEAgLTM2NDMsNiArMzYzMSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHluYW1pY1ZpZXdwb3J0
U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBjb25zdCBXCiAgICAg
aWYgKHNldEZpeGVkTGF5b3V0U2l6ZShuZXdMYXlvdXRTaXplKSkKICAgICAgICAgcmVzZXRUZXh0
QXV0b3NpemluZygpOwogCisgICAgc2V0RGVmYXVsdFVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9i
c2N1cmVkU2l6ZSk7CiAgICAgc2V0TWluaW11bVVub2JzY3VyZWRTaXplKG1pbmltdW1Vbm9ic2N1
cmVkU2l6ZSk7CiAgICAgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVk
U2l6ZSk7CiAgICAgbV9wYWdlLT5zZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHModGFyZ2V0VW5v
YnNjdXJlZFNhZmVBcmVhSW5zZXRzKTsKQEAgLTM5NjIsNyArMzk1MSw5IEBAIHZvaWQgV2ViUGFn
ZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZChab29tVG9Jbml0aWFsU2NhbGUgem9vbVRv
SW5pdGlhbFNjYWxlCiAKICAgICBtX3BhZ2UtPnNldFpvb21lZE91dFBhZ2VTY2FsZUZhY3Rvciht
X3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUoKSk7CiAKLSAgICB1cGRhdGVWaWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CisgICAgdXBkYXRlU2l6ZUZvckNTU0RlZmF1
bHRWaWV3cG9ydFVuaXRzKCk7CisgICAgdXBkYXRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0
cygpOworICAgIHVwZGF0ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKTsKIAogICAgIEZy
YW1lVmlldyYgZnJhbWVWaWV3ID0gKm1haW5GcmFtZVZpZXcoKTsKICAgICBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbiA9IGZyYW1lVmlldy5zY3JvbGxQb3NpdGlvbigpOwpAQCAtMzk4OCwyMyArMzk3
OSw2IEBAIHZvaWQgV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZChab29tVG9J
bml0aWFsU2NhbGUgem9vbVRvSW5pdGlhbFNjYWxlCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6
OnVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKQotewotICAgIEZsb2F0U2l6
ZSBzbWFsbGVzdFVub2JzY3VyZWRTaXplID0gbV9taW5pbXVtVW5vYnNjdXJlZFNpemU7Ci0gICAg
aWYgKHNtYWxsZXN0VW5vYnNjdXJlZFNpemUuaXNFbXB0eSgpKQotICAgICAgICBzbWFsbGVzdFVu
b2JzY3VyZWRTaXplID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24udmlld0xheW91dFNpemUoKTsK
LQotICAgIEZsb2F0U2l6ZSBsYXJnZXN0VW5vYnNjdXJlZFNpemUgPSBtX21heGltdW1Vbm9ic2N1
cmVkU2l6ZTsKLSAgICBpZiAobGFyZ2VzdFVub2JzY3VyZWRTaXplLmlzRW1wdHkoKSkKLSAgICAg
ICAgbGFyZ2VzdFVub2JzY3VyZWRTaXplID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24udmlld0xh
eW91dFNpemUoKTsKLQotICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1haW5GcmFtZVZpZXco
KTsKLSAgICBzbWFsbGVzdFVub2JzY3VyZWRTaXplLnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5pbml0aWFsU2NhbGVJZ25vcmluZ0NvbnRlbnRTaXplKCkpOwotICAgIGxhcmdlc3RV
bm9ic2N1cmVkU2l6ZS5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaW5pdGlhbFNj
YWxlSWdub3JpbmdDb250ZW50U2l6ZSgpKTsKLSAgICBmcmFtZVZpZXcuc2V0U2l6ZUZvckNTU1Nt
YWxsVmlld3BvcnRVbml0cyhzbWFsbGVzdFVub2JzY3VyZWRTaXplKTsKLSAgICBmcmFtZVZpZXcu
c2V0U2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhsYXJnZXN0VW5vYnNjdXJlZFNpemUpOwot
fQotCiB2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB7CiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBk
NzI1MDJmNDBiMjlmYjc0NWRmMjcyYTc3NmJhOTdhZTQ2MWUxNjExLi4yMDI4ZWRjZGZjYzI4ZDU4
Yzg2NDE0Yzk2Y2U2ZmM2MWY2MDRhZjMzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDMtMTYgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBgV0tXZWJWaWV3
YCBBUEkgdG8gY29udHJvbCBDU1MgInNtYWxsIHZpZXdwb3J0IiBgc3YqYCBhbmQgImxhcmdlIHZp
ZXdwb3J0IiBgbHYqYCB1bml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3OTc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTQzNDY5Nj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9DU1NWaWV3cG9ydFVuaXRzLm1tOgorICAgICAgICAoVEVTVC5D
U1NWaWV3cG9ydFVuaXRzLk5lZ2F0aXZlTWluaW11bVZpZXdwb3J0SW5zZXQpOiBBZGRlZC4KKyAg
ICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5OZWdhdGl2ZU1heGltdW1WaWV3cG9ydEluc2V0
KTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0
SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRF
U1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldExhcmdlclRoYW5GcmFtZSk6
IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydElu
c2V0TGFyZ2VyVGhhbkZyYW1lKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5p
dHMuTWluaW11bVZpZXdwb3J0SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3Bv
cnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldCk6IEFkZGVkLgorICAgICAgICAoVEVTVC5DU1NW
aWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20pOiBBZGRlZC4KKyAgICAg
ICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhab29tKTog
QWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWluaW11bVZpZXdwb3J0SW5z
ZXRXaXRoV3JpdGluZ01vZGUpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0
cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhXcml0aW5nTW9kZSk6IEFkZGVkLgorICAgICAgICAo
VEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1pbmltdW1WaWV3cG9ydEluc2V0V2l0aEZyYW1lKTogQWRk
ZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuTWF4aW11bVZpZXdwb3J0SW5zZXRX
aXRoRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVt
Vmlld3BvcnRJbnNldFdpdGhCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3Bv
cnRVbml0cy5NYXhpbXVtVmlld3BvcnRJbnNldFdpdGhCb3VuZHMpOiBBZGRlZC4KKyAgICAgICAg
KFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhDb250ZW50SW5z
ZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3BvcnRVbml0cy5NYXhpbXVtVmlld3Bv
cnRJbnNldFdpdGhDb250ZW50SW5zZXQpOiBBZGRlZC4KKyAgICAgICAgKFRFU1QuQ1NTVmlld3Bv
cnRVbml0cy5NaW5pbXVtVmlld3BvcnRJbnNldFdpdGhTYWZlQXJlYUluc2V0cyk6IEFkZGVkLgor
ICAgICAgICAoVEVTVC5DU1NWaWV3cG9ydFVuaXRzLk1heGltdW1WaWV3cG9ydEluc2V0V2l0aFNh
ZmVBcmVhSW5zZXRzKTogQWRkZWQuCisgICAgICAgIChURVNULkNTU1ZpZXdwb3J0VW5pdHMuVW5v
YnNjdXJlZFNpemVPdmVycmlkZXNJZ25vcmVNYXhpbXVtVmlld3BvcnRJbnNldEFQSSk6IEFkZGVk
LgorCiAyMDIyLTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCkgc2hvdWxkIHRha2UgaW4g
U3RyaW5nVmlld3MgaW5zdGVhZCBvZiBTdHJpbmdzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NTU1ZpZXdwb3J0VW5pdHMubW0KaW5kZXggNjdj
OTZkZWY5MGEyMzBjZTA4ZjBkM2RiODRjMTQwM2U0ZGY2Yzg1My4uNjQ5MzJkMjY5ZTc3MjkzYmE5
ZWQ1ZGNlNzdiYTM1NDAxOTA2NjI4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9DU1NWaWV3cG9ydFVuaXRzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ1NTVmlld3BvcnRVbml0cy5tbQpAQCAtMTY5LDcgKzE2
OSw3ODIgQEAgVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBBbGxTYW1lKQogICAgIH0KIH0KIAorI2lm
IFVTRShBUFBLSVQpCisjZGVmaW5lIENvY29hRWRnZUluc2V0c01ha2UgTlNFZGdlSW5zZXRzTWFr
ZQorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2RlZmluZSBDb2NvYUVkZ2VJ
bnNldHNNYWtlIFVJRWRnZUluc2V0c01ha2UKKyNlbmRpZgorCisjZGVmaW5lIENvY29hRWRnZUlu
c2V0c1plcm8gQ29jb2FFZGdlSW5zZXRzTWFrZSgwLCAwLCAwLCAwKQorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBOZWdhdGl2ZU1pbmltdW1WaWV3
cG9ydEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisKKyAg
ICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoLTExLCAyMSwgMzEsIDQx
KSBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIsIDQy
KV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgZGlk
VGhyb3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRUaHJvdyk7Cit9CisKK1RF
U1QoQ1NTVmlld3BvcnRVbml0cywgTmVnYXRpdmVNYXhpbXVtVmlld3BvcnRJbnNldCkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworCisgICAgYm9vbCBkaWRUaHJvdyA9
IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJ
bnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUlu
c2V0c01ha2UoLTEyLCAyMiwgMzIsIDQyKV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKKyAgICAgICAgZGlkVGhyb3cgPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1Rf
VFJVRShkaWRUaHJvdyk7Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdw
b3J0SW5zZXRMYXJnZXJUaGFuTWF4aW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKworICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKKyAg
ICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FF
ZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MikgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FF
ZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSldOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7CisgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQ
RUNUX1RSVUUoZGlkVGhyb3cpOworfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1W
aWV3cG9ydEluc2V0VGhhbkxhcmdlckZyYW1lKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7Cisg
ICAgICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01h
a2UoMTEwMCwgMjEwMCwgMzEwMCwgNDEwMCkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdl
SW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZXhjZXB0aW9uKSB7CisgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNU
X1RSVUUoZGlkVGhyb3cpOworfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3
cG9ydEluc2V0VGhhbkxhcmdlckZyYW1lKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CisKKyAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAg
ICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2Uo
MTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2Uo
MTIwMCwgMjIwMCwgMzIwMCwgNDIwMCldOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKSB7CisgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RS
VUUoZGlkVGhyb3cpOworfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmltdW1WaWV3cG9y
dEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dl
YlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEs
IDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIs
IDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
IkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUw
MCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2
dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9F
USgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVD
VF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91
YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7
CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJW
aWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9F
UShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAg
ICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9B
VF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOwor
ICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNYXhp
bXVtVmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1pl
cm8gbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0
MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1Zp
ZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVY
UEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZt
aW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZp
eGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAg
ICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBA
ImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAg
ICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAiZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmll
d3BvcnRJbnNldFdpdGhab29tKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRz
TWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRz
TWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVz
dFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKyNlbGlmIFBMQVRG
T1JNKE1BQykKKyAgICBbd2ViVmlldyBzZXRBbGxvd3NNYWduaWZpY2F0aW9uOllFU107CisgICAg
W3dlYlZpZXcgc2V0TWFnbmlmaWNhdGlvbjoyXTsKKyNlbmRpZgorCisgICAgW3dlYlZpZXcgd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4Iikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Zp
IikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisg
ICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdl
YlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZF
bGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VR
KGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAg
ICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VR
KGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAg
ICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1Zp
ZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0V2l0aFpvb20pCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3Bv
cnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRn
ZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisjZWxp
ZiBQTEFURk9STShNQUMpCisgICAgW3dlYlZpZXcgc2V0QWxsb3dzTWFnbmlmaWNhdGlvbjpZRVNd
OworICAgIFt3ZWJWaWV3IHNldE1hZ25pZmljYXRpb246Ml07CisjZW5kaWYKKworICAgIFt3ZWJW
aWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Zi
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aSIp
KTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVudFdp
dGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9IGhl
aWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnciKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgi
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0
aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKworVEVT
VChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3BvcnRJbnNldFdpdGhXcml0aW5nTW9kZSkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEp
IG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIp
XTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3
cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndyaXRpbmdNb2RlID0gJ3ZlcnRpY2Fs
LWxyJyJdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1
MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZM
T0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJz
dm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1
OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBF
Q1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJs
dm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0
aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91
YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQi
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lk
dGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmki
KSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydElu
c2V0V2l0aFdyaXRpbmdNb2RlKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRz
WmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNNYWtlKDEyLCAyMiwgMzIs
IDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiQ1NT
Vmlld3BvcnRVbml0cyJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS53cml0aW5nTW9kZSA9ICd2ZXJ0
aWNhbC1sciciXTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAInZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVD
VF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9F
USgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVk
V2lkdGggPSB3aWR0aE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAg
IGRvdWJsZSBmaXhlZEhlaWdodCA9IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZp
eGVkIik7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdnciKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhl
aWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZt
aW4iKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZtYXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZpIikpOworICAgIH0KK30KKworVEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNaW5pbXVtVmlld3Bv
cnRJbnNldFdpdGhGcmFtZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01h
a2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01h
a2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzZXRGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDIyMCwgNDAwKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDIyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmki
KSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9F
USgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMTU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnci
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTgsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MTU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAg
ICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJm
aXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRo
SUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0
aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1Rf
RkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWln
aHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0
cywgTWF4aW11bVZpZXdwb3J0SW5zZXRXaXRoRnJhbWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNldDpD
b2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c01h
a2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBzZXRGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDIyMCwgNDAwKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAwLCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjIw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg0MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDIyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmki
KSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDM1Niwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgxNTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzNTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9F
USgzNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMTU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnci
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0MDAsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MjIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAg
ICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJm
aXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRo
SUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0
aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1Rf
RkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWln
aHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBF
Q1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0
cywgTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQm91bmRzKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6
Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6
Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3
ZWJWaWV3IHNldEJvdW5kczpDR1JlY3RNYWtlKDUwLCA2MCwgMzIwLCA1MDApXTsKKworICAgIFt3
ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GTE9B
VF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZoIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtaW4i
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJ2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJ2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtaW4iKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
c3ZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInN2aSIpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtaW4iKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDQ1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZiIikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgyNTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
aSIpKTsKKworICAgIHsKKyAgICAgICAgZG91YmxlIGZpeGVkV2lkdGggPSB3aWR0aE9mRWxlbWVu
dFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIGRvdWJsZSBmaXhlZEhlaWdodCA9
IGhlaWdodE9mRWxlbWVudFdpdGhJRCh3ZWJWaWV3LCBAImZpeGVkIik7CisgICAgICAgIEVYUEVD
VF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdnci
KSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZoIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0
aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZtaW4iKSk7CisgICAgICAgIEVYUEVD
VF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZt
YXgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZEhlaWdodCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAiZHZiIikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRX
aWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAiZHZpIikpOworICAgIH0KK30KKwor
VEVTVChDU1NWaWV3cG9ydFVuaXRzLCBNYXhpbXVtVmlld3BvcnRJbnNldFdpdGhCb3VuZHMpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRN
aW5pbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydElu
c2V0OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAg
ICBbd2ViVmlldyBzZXRCb3VuZHM6Q0dSZWN0TWFrZSg1MCwgNjAsIDMyMCwgNTAwKV07CisKKyAg
ICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2dyIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2
bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWluIikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2bWF4
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgz
MjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWF4IikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdpZHRoID0gd2lkdGhPZkVs
ZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBkb3VibGUgZml4ZWRIZWln
aHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
ZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVk
V2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWluIikpOworICAgICAgICBF
WFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZp
eGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aSIpKTsKKyAgICB9Cit9
CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgTWluaW11bVZpZXdwb3J0SW5zZXRXaXRoQ29udGVu
dEluc2V0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dl
YlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEs
IDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIs
IDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
IkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmNvbnRlbnRJ
bnNldCA9IENvY29hRWRnZUluc2V0c01ha2UoNTAsIDYwLCA3MCwgODApOworCisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VR
KDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2
bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInZiIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIi
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAibHZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAImx2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikp
OworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0
aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVp
Z2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsK
KyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIp
KTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRo
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNU
KENTU1ZpZXdwb3J0VW5pdHMsIE1heGltdW1WaWV3cG9ydEluc2V0V2l0aENvbnRlbnRJbnNldCkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNl
dE1pbmltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0c1plcm8gbWF4aW11bVZpZXdwb3J0
SW5zZXQ6Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKwor
ICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmNvbnRlbnRJbnNldCA9IENvY29hRWRnZUluc2V0c01h
a2UoNTAsIDYwLCA3MCwgODApOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRp
b25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3Ro
KHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAw
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9GTE9B
VF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3Z3
IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3
LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNU
X0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOworICAg
IEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2aCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3Vi
bGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsK
KyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZp
ZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VR
KGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAg
ICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FU
X0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1pbmlt
dW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5zZXQ6
Q29jb2FFZGdlSW5zZXRzTWFrZSgxMSwgMjEsIDMxLCA0MSkgbWF4aW11bVZpZXdwb3J0SW5zZXQ6
Q29jb2FFZGdlSW5zZXRzTWFrZSgxMiwgMjIsIDMyLCA0MildOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkNTU1ZpZXdwb3J0VW5pdHMiXTsKKworICAgIGF1
dG8gdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF0pOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRBZGRpdGlvbmFsU2FmZUFyZWFJbnNldHM6Q29j
b2FFZGdlSW5zZXRzTWFrZSg1MCwgNjAsIDcwLCA4MCldOworICAgIFt2aWV3Q29udHJvbGxlciBz
ZXRWaWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50
YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAidnciKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAidmgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMyMCwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
NTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2bWF4IikpOworICAgIEVYUEVDVF9G
TE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZiIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
c3Z3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJW
aWV3LCBAInN2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU2
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKDI1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDI1OCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZ3IikpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSg0NTgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2
aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU4LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmll
dywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJsdm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDU4LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJsdmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDI1OCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBk
b3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQi
KTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdl
YlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FU
X0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7Cisg
ICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2
aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZM
T0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7
CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgo
d2ViVmlldywgQCJkdmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIE1h
eGltdW1WaWV3cG9ydEluc2V0V2l0aFNhZmVBcmVhSW5zZXRzKQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc2V0TWluaW11bVZpZXdwb3J0SW5z
ZXQ6Q29jb2FFZGdlSW5zZXRzWmVybyBtYXhpbXVtVmlld3BvcnRJbnNldDpDb2NvYUVkZ2VJbnNl
dHNNYWtlKDEyLCAyMiwgMzIsIDQyKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAiQ1NTVmlld3BvcnRVbml0cyJdOworCisgICAgYXV0byB2aWV3Q29udHJv
bGxlciA9IGFkb3B0TlMoW1tVSVZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3Zp
ZXdDb250cm9sbGVyIHNldEFkZGl0aW9uYWxTYWZlQXJlYUluc2V0czpDb2NvYUVkZ2VJbnNldHNN
YWtlKDUwLCA2MCwgNzAsIDgwKV07CisgICAgW3ZpZXdDb250cm9sbGVyIHNldFZpZXc6d2ViVmll
dy5nZXQoKV07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJ2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNTAwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2Vi
VmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRMZW5n
dGgod2ViVmlldywgQCJ2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0
VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDUwMCwg
dmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDMyMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidmkiKSk7CisKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjU2LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdnciKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQ1Niwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSgyNTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
InN2bWluIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInN2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0NTYsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjU2LCB2aWV3
cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdmkiKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MzIwLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdnciKSk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKDUwMCwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgzMjAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2bWluIikp
OworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
Imx2bWF4IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg1MDAsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzIwLCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJsdmkiKSk7CisKKyAgICB7CisgICAgICAgIGRvdWJsZSBmaXhlZFdp
ZHRoID0gd2lkdGhPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhlZCIpOworICAgICAgICBk
b3VibGUgZml4ZWRIZWlnaHQgPSBoZWlnaHRPZkVsZW1lbnRXaXRoSUQod2ViVmlldywgQCJmaXhl
ZCIpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRXaWR0aCwgdmlld3BvcnRVbml0TGVu
Z3RoKHdlYlZpZXcsIEAiZHZ3IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWln
aHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2aCIpKTsKKyAgICAgICAgRVhQRUNU
X0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2bWlu
IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRIZWlnaHQsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2bWF4IikpOworICAgICAgICBFWFBFQ1RfRkxPQVRfRVEoZml4ZWRI
ZWlnaHQsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2YiIpKTsKKyAgICAgICAgRVhQ
RUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImR2
aSIpKTsKKyAgICB9Cit9CisKK1RFU1QoQ1NTVmlld3BvcnRVbml0cywgVW5vYnNjdXJlZFNpemVP
dmVycmlkZXNJZ25vcmVNaW5pbXVtVmlld3BvcnRJbnNldCkKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1WaWV3cG9ydEluc2V0
OkNvY29hRWRnZUluc2V0c01ha2UoMTEsIDIxLCAzMSwgNDEpIG1heGltdW1WaWV3cG9ydEluc2V0
OkNvY29hRWRnZUluc2V0c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBb
d2ViVmlldyBfb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOkNH
U2l6ZU1ha2UoMTAuNSwgMjAuNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOkNHU2l6ZU1ha2UoMzAuNSwgNDAuNSldOworCisgICAg
W3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZM
T0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSg0MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
dm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdl
YlZpZXcsIEAidm1heCIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdw
b3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEw
LjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVY
UEVDVF9GTE9BVF9FUSgxMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAic3ZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0
aCh3ZWJWaWV3LCBAInN2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuNSwgdmlld3BvcnRV
bml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUs
IHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgzMC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAi
bHZtYXgiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAImx2YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0
TGVuZ3RoKHdlYlZpZXcsIEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRX
aWR0aCA9IHdpZHRoT2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAg
ZG91YmxlIGZpeGVkSGVpZ2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4
ZWQiKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVp
Z2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVD
VF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1p
biIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRM
ZW5ndGgod2ViVmlldywgQCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVk
SGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVY
UEVDVF9GTE9BVF9FUShmaXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJk
dmkiKSk7CisgICAgfQorfQorCitURVNUKENTU1ZpZXdwb3J0VW5pdHMsIFVub2JzY3VyZWRTaXpl
T3ZlcnJpZGVzSWdub3JlTWF4aW11bVZpZXdwb3J0SW5zZXQpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVmlld3BvcnRJbnNl
dDpDb2NvYUVkZ2VJbnNldHNaZXJvIG1heGltdW1WaWV3cG9ydEluc2V0OkNvY29hRWRnZUluc2V0
c01ha2UoMTIsIDIyLCAzMiwgNDIpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJDU1NWaWV3cG9ydFVuaXRzIl07CisKKyAgICBbd2ViVmlldyBfb3ZlcnJp
ZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOkNHU2l6ZU1ha2UoMTAuNSwg
MjAuNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZU92ZXJyaWRlOkNHU2l6ZU1ha2UoMzAuNSwgNDAuNSldOworCisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZp
ZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInZ3IikpOworICAgIEVYUEVDVF9GTE9BVF9FUSg0
MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJ2aCIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1pbiIpKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAidm1heCIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAidmIiKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3
ZWJWaWV3LCBAInZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDEwLjUsIHZpZXdwb3J0VW5p
dExlbmd0aCh3ZWJWaWV3LCBAInN2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMjAuNSwgdmll
d3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgx
MC41LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJzdm1pbiIpKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoMjAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAic3ZtYXgiKSk7Cisg
ICAgRVhQRUNUX0ZMT0FUX0VRKDIwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAInN2
YiIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMTAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZp
ZXcsIEAic3ZpIikpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDMwLjUsIHZpZXdwb3J0VW5pdExl
bmd0aCh3ZWJWaWV3LCBAImx2dyIpKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoNDAuNSwgdmlld3Bv
cnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZoIikpOworICAgIEVYUEVDVF9GTE9BVF9FUSgzMC41
LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJsdm1pbiIpKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoNDAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcsIEAibHZtYXgiKSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDQwLjUsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBAImx2YiIp
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMzAuNSwgdmlld3BvcnRVbml0TGVuZ3RoKHdlYlZpZXcs
IEAibHZpIikpOworCisgICAgeworICAgICAgICBkb3VibGUgZml4ZWRXaWR0aCA9IHdpZHRoT2ZF
bGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAgZG91YmxlIGZpeGVkSGVp
Z2h0ID0gaGVpZ2h0T2ZFbGVtZW50V2l0aElEKHdlYlZpZXcsIEAiZml4ZWQiKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkV2lkdGgsIHZpZXdwb3J0VW5pdExlbmd0aCh3ZWJWaWV3LCBA
ImR2dyIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVu
aXRMZW5ndGgod2ViVmlldywgQCJkdmgiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShmaXhl
ZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdm1pbiIpKTsKKyAgICAgICAg
RVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywg
QCJkdm1heCIpKTsKKyAgICAgICAgRVhQRUNUX0ZMT0FUX0VRKGZpeGVkSGVpZ2h0LCB2aWV3cG9y
dFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmIiKSk7CisgICAgICAgIEVYUEVDVF9GTE9BVF9FUShm
aXhlZFdpZHRoLCB2aWV3cG9ydFVuaXRMZW5ndGgod2ViVmlldywgQCJkdmkiKSk7CisgICAgfQor
fQogCiBURVNUKENTU1ZpZXdwb3J0VW5pdHMsIEVtcHR5VW5vYnNjdXJlZFNpemVPdmVycmlkZXMp
CiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456037</attachid>
            <date>2022-03-29 10:05:19 -0700</date>
            <delta_ts>2022-03-29 10:05:19 -0700</delta_ts>
            <desc>[fast-cq] [Patch] fix UAF</desc>
            <filename>237979.diff</filename>
            <type>text/plain</type>
            <size>12045</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNTRiMWQ3YjdhYjYuLjhhYzBiNWU1ZWM4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIyLTAzLTI5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBVbnJldmlld2VkLCBmaXggVUFGIGFmdGVyIHIyOTE5ODAKKworICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om92ZXJy
aWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6Om92ZXJyaWRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpvdmVycmlkZVNpemVGb3JDU1NMYXJn
ZVZpZXdwb3J0VW5pdHMpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRV
bml0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6Om92ZXJyaWRlV2lkdGhGb3JDU1NE
ZWZhdWx0Vmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0
T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZXRPdmVycmlkZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0
cyk6IFJlbmFtZWQgZnJvbSBgb3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHNg
LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRTaXplRm9yQ1NTU21hbGxWaWV3cG9y
dFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6b3ZlcnJpZGVXaWR0aEZvckNT
U1NtYWxsVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0
T3ZlcnJpZGRlbldpZHRoRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2V0T3ZlcnJpZGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKTog
UmVuYW1lZCBmcm9tIGBvdmVycmlkZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHNgLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6b3ZlcnJpZGVXaWR0aEZvckNTU0xhcmdl
Vmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0T3ZlcnJp
ZGRlbldpZHRoRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2V0T3ZlcnJpZGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKTogUmVuYW1l
ZCBmcm9tIGBvdmVycmlkZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHNgLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3Ojpjb3B5Q1NTVmlld3BvcnRTaXplT3ZlcnJpZGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgRXhwb3NlIGBPdmVycmlkZVZpZXdwb3J0U2l6ZWAgc28gdGhhdCB3ZSBjYW4g
Y29weSB0aG9zZSBtZW1iZXJzIHNwZWNpZmljYWxseSBpbnN0ZWFkIG9mCisgICAgICAgIGhhdmlu
ZyB0byBrZWVwIGFsaXZlIHRoZSBvbGQgYEZyYW1lVmlld2Agd2hlbiB0cmFuc2l0aW9uaW5nIHRv
IGEgbmV3IHBhZ2UuCisKIDIwMjItMDMtMjggIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBDaGVjayBmb3IgcmUtZW50cmFuY3kgaW4gc3RvcEZvckJhY2tGb3J3YXJkQ2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5MDU4YjU3ZmY1MTkuLmQ2OTdmY2Q5
MWFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTYxOCwyMCArNTYxOCwyMCBA
QCB2b2lkIEZyYW1lVmlldzo6Y2xlYXJTaXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3BvcnRV
bml0cygpCiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5p
dHMoRmxvYXRTaXplIHNpemUpCiB7Ci0gICAgb3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdw
b3J0VW5pdHMoeyBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgfSk7CisgICAgc2V0T3ZlcnJp
ZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoeyBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkgfSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpvdmVycmlkZVdpZHRoRm9yQ1NTRGVmYXVs
dFZpZXdwb3J0VW5pdHMoZmxvYXQgd2lkdGgpCiB7Ci0gICAgb3ZlcnJpZGVTaXplRm9yQ1NTRGVm
YXVsdFZpZXdwb3J0VW5pdHMoeyB3aWR0aCwgbV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUg
PyBtX2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZS0+aGVpZ2h0IDogc3RkOjpudWxsb3B0IH0p
OworICAgIHNldE92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKHsgd2lkdGgs
IG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID8gbV9kZWZhdWx0Vmlld3BvcnRTaXplT3Zl
cnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnJl
c2V0T3ZlcnJpZGRlbldpZHRoRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKQogewotICAgIG92
ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKHsgeyB9LCBtX2RlZmF1bHRWaWV3
cG9ydFNpemVPdmVycmlkZSA/IG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlLT5oZWlnaHQg
OiBzdGQ6Om51bGxvcHQgfSk7CisgICAgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdw
b3J0VW5pdHMoeyB7IH0sIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID8gbV9kZWZhdWx0
Vmlld3BvcnRTaXplT3ZlcnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0KIAotdm9p
ZCBGcmFtZVZpZXc6Om92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKE92ZXJy
aWRlVmlld3BvcnRTaXplIHNpemUpCit2b2lkIEZyYW1lVmlldzo6c2V0T3ZlcnJpZGVTaXplRm9y
Q1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoT3ZlcnJpZGVWaWV3cG9ydFNpemUgc2l6ZSkKIHsKICAg
ICBpZiAobV9kZWZhdWx0Vmlld3BvcnRTaXplT3ZlcnJpZGUgPT0gc2l6ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTY1OSwyMCArNTY1OSwyMCBAQCB2b2lkIEZyYW1lVmlldzo6Y2xlYXJTaXplT3Zl
cnJpZGVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKQogCiB2b2lkIEZyYW1lVmlldzo6c2V0U2l6
ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyhGbG9hdFNpemUgc2l6ZSkKIHsKLSAgICBvdmVycmlk
ZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoeyBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkgfSk7CisgICAgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKHsgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpIH0pOwogfQogCiB2b2lkIEZyYW1lVmlldzo6b3ZlcnJp
ZGVXaWR0aEZvckNTU1NtYWxsVmlld3BvcnRVbml0cyhmbG9hdCB3aWR0aCkKIHsKLSAgICBvdmVy
cmlkZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoeyB3aWR0aCwgbV9zbWFsbFZpZXdwb3J0
U2l6ZU92ZXJyaWRlID8gbV9zbWFsbFZpZXdwb3J0U2l6ZU92ZXJyaWRlLT5oZWlnaHQgOiBzdGQ6
Om51bGxvcHQgfSk7CisgICAgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRz
KHsgd2lkdGgsIG1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZSA/IG1fc21hbGxWaWV3cG9ydFNp
emVPdmVycmlkZS0+aGVpZ2h0IDogc3RkOjpudWxsb3B0IH0pOwogfQogCiB2b2lkIEZyYW1lVmll
dzo6cmVzZXRPdmVycmlkZGVuV2lkdGhGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKQogewotICAg
IG92ZXJyaWRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyh7IHsgfSwgbV9zbWFsbFZpZXdw
b3J0U2l6ZU92ZXJyaWRlID8gbV9zbWFsbFZpZXdwb3J0U2l6ZU92ZXJyaWRlLT5oZWlnaHQgOiBz
dGQ6Om51bGxvcHQgfSk7CisgICAgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVu
aXRzKHsgeyB9LCBtX3NtYWxsVmlld3BvcnRTaXplT3ZlcnJpZGUgPyBtX3NtYWxsVmlld3BvcnRT
aXplT3ZlcnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0KIAotdm9pZCBGcmFtZVZp
ZXc6Om92ZXJyaWRlU2l6ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0
U2l6ZSBzaXplKQordm9pZCBGcmFtZVZpZXc6OnNldE92ZXJyaWRlU2l6ZUZvckNTU1NtYWxsVmll
d3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSBzaXplKQogewogICAgIGlmIChtX3NtYWxs
Vmlld3BvcnRTaXplT3ZlcnJpZGUgJiYgKm1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZSA9PSBz
aXplKQogICAgICAgICByZXR1cm47CkBAIC01NzAwLDIwICs1NzAwLDIwIEBAIHZvaWQgRnJhbWVW
aWV3OjpjbGVhclNpemVPdmVycmlkZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cygpCiAKIHZvaWQg
RnJhbWVWaWV3OjpzZXRTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKEZsb2F0U2l6ZSBzaXpl
KQogewotICAgIG92ZXJyaWRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cyh7IHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSB9KTsKKyAgICBzZXRPdmVycmlkZVNpemVGb3JDU1NMYXJnZVZp
ZXdwb3J0VW5pdHMoeyBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgfSk7CiB9CiAKIHZvaWQg
RnJhbWVWaWV3OjpvdmVycmlkZVdpZHRoRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKGZsb2F0IHdp
ZHRoKQogewotICAgIG92ZXJyaWRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cyh7IHdpZHRo
LCBtX2xhcmdlVmlld3BvcnRTaXplT3ZlcnJpZGUgPyBtX2xhcmdlVmlld3BvcnRTaXplT3ZlcnJp
ZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKKyAgICBzZXRPdmVycmlkZVNpemVGb3JDU1NM
YXJnZVZpZXdwb3J0VW5pdHMoeyB3aWR0aCwgbV9sYXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlID8g
bV9sYXJnZVZpZXdwb3J0U2l6ZU92ZXJyaWRlLT5oZWlnaHQgOiBzdGQ6Om51bGxvcHQgfSk7CiB9
CiAKIHZvaWQgRnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0xhcmdlVmlld3Bv
cnRVbml0cygpCiB7Ci0gICAgb3ZlcnJpZGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKHsg
eyB9LCBtX2xhcmdlVmlld3BvcnRTaXplT3ZlcnJpZGUgPyBtX2xhcmdlVmlld3BvcnRTaXplT3Zl
cnJpZGUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKKyAgICBzZXRPdmVycmlkZVNpemVGb3JD
U1NMYXJnZVZpZXdwb3J0VW5pdHMoeyB7IH0sIG1fbGFyZ2VWaWV3cG9ydFNpemVPdmVycmlkZSA/
IG1fbGFyZ2VWaWV3cG9ydFNpemVPdmVycmlkZS0+aGVpZ2h0IDogc3RkOjpudWxsb3B0IH0pOwog
fQogCi12b2lkIEZyYW1lVmlldzo6b3ZlcnJpZGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRz
KE92ZXJyaWRlVmlld3BvcnRTaXplIHNpemUpCit2b2lkIEZyYW1lVmlldzo6c2V0T3ZlcnJpZGVT
aXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKE92ZXJyaWRlVmlld3BvcnRTaXplIHNpemUpCiB7
CiAgICAgaWYgKG1fbGFyZ2VWaWV3cG9ydFNpemVPdmVycmlkZSAmJiAqbV9sYXJnZVZpZXdwb3J0
U2l6ZU92ZXJyaWRlID09IHNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTU3NjEsMTMgKzU3NjEs
NiBAQCBGbG9hdFNpemUgRnJhbWVWaWV3OjpzaXplRm9yQ1NTRHluYW1pY1ZpZXdwb3J0VW5pdHMo
KSBjb25zdAogICAgIHJldHVybiByZWN0Rm9yRml4ZWRQb3NpdGlvbkxheW91dCgpLnNpemUoKTsK
IH0KIAotdm9pZCBGcmFtZVZpZXc6OmNvcHlDU1NWaWV3cG9ydFNpemVPdmVycmlkZXMoRnJhbWVW
aWV3JiB2aWV3KQotewotICAgIG1fZGVmYXVsdFZpZXdwb3J0U2l6ZU92ZXJyaWRlID0gdmlldy5t
X2RlZmF1bHRWaWV3cG9ydFNpemVPdmVycmlkZTsKLSAgICBtX3NtYWxsVmlld3BvcnRTaXplT3Zl
cnJpZGUgPSB2aWV3Lm1fc21hbGxWaWV3cG9ydFNpemVPdmVycmlkZTsKLSAgICBtX2xhcmdlVmll
d3BvcnRTaXplT3ZlcnJpZGUgPSB2aWV3Lm1fbGFyZ2VWaWV3cG9ydFNpemVPdmVycmlkZTsKLX0K
LQogYm9vbCBGcmFtZVZpZXc6OnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKSBj
b25zdAogewogICAgIHJldHVybiByZW5kZXJWaWV3KCkgJiYgcmVuZGVyVmlldygpLT5zaG91bGRQ
bGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRl
eCA3ODI4NTI3MTY1M2QuLjZmNjk5MmFjNDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0yMjgsMjIgKzIyOCwzMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
anVzdFZpZXdTaXplKCk7CiAKKyAgICBzdHJ1Y3QgT3ZlcnJpZGVWaWV3cG9ydFNpemUgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxm
bG9hdD4gaGVpZ2h0OworICAgIAorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3ZlcnJp
ZGVWaWV3cG9ydFNpemUmIHJocykgY29uc3QgeyByZXR1cm4gcmhzLndpZHRoID09IHdpZHRoICYm
IHJocy5oZWlnaHQgPT0gaGVpZ2h0OyB9CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoT3ZlcnJpZGVWaWV3
cG9ydFNpemUpOworICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9ydFNpemU+IG92ZXJy
aWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZh
dWx0Vmlld3BvcnRTaXplT3ZlcnJpZGU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNp
emVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cyhGbG9hdFNpemUpOwogICAgIHZvaWQgY2xlYXJT
aXplT3ZlcnJpZGVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpOwogICAgIEZsb2F0U2l6ZSBz
aXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKE92ZXJyaWRl
Vmlld3BvcnRTaXplKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBv
dmVycmlkZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3Nt
YWxsVmlld3BvcnRTaXplT3ZlcnJpZGU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNp
emVGb3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoRmxvYXRTaXplKTsKICAgICB2b2lkIGNsZWFyU2l6
ZU92ZXJyaWRlRm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCk7CiAgICAgRmxvYXRTaXplIHNpemVG
b3JDU1NTbWFsbFZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0T3ZlcnJpZGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKE92ZXJyaWRlVmlld3Bv
cnRTaXplKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXplPiBvdmVycmlk
ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlVmll
d3BvcnRTaXplT3ZlcnJpZGU7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNpemVGb3JD
U1NMYXJnZVZpZXdwb3J0VW5pdHMoRmxvYXRTaXplKTsKICAgICB2b2lkIGNsZWFyU2l6ZU92ZXJy
aWRlRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCk7CiAgICAgRmxvYXRTaXplIHNpemVGb3JDU1NM
YXJnZVZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIAogICAgIEZsb2F0U2l6ZSBzaXplRm9yQ1NTRHlu
YW1pY1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eUNTU1ZpZXdwb3J0U2l6ZU92ZXJyaWRlcyhGcmFtZVZpZXcmKTsKLQogICAgIEludFJlY3Qgd2lu
ZG93Q2xpcFJlY3QoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IHdp
bmRvd0NsaXBSZWN0Rm9yRnJhbWVPd25lcihjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBi
b29sIGNsaXBUb0xheWVyQ29udGVudHMpIGNvbnN0OwogCkBAIC04NjMsMjMgKzg3NCwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbERvTGF5b3V0KFdlYWtQdHI8UmVuZGVyRWxlbWVudD4gbGF5
b3V0Um9vdCk7CiAgICAgdm9pZCBkaWRMYXlvdXQoV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBsYXlv
dXRSb290KTsKIAotICAgIHN0cnVjdCBPdmVycmlkZVZpZXdwb3J0U2l6ZSB7Ci0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBo
ZWlnaHQ7Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE92ZXJyaWRlVmlld3BvcnRT
aXplJiByaHMpIGNvbnN0IHsgcmV0dXJuIHJocy53aWR0aCA9PSB3aWR0aCAmJiByaHMuaGVpZ2h0
ID09IGhlaWdodDsgfQotICAgIH07CiAgICAgRmxvYXRTaXplIGNhbGN1bGF0ZVNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxPdmVycmlkZVZpZXdwb3J0U2l6ZT4p
IGNvbnN0OwogCi0gICAgdm9pZCBvdmVycmlkZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0
cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSk7CiAgICAgdm9pZCBvdmVycmlkZVdpZHRoRm9yQ1NTRGVm
YXVsdFZpZXdwb3J0VW5pdHMoZmxvYXQpOwogICAgIHZvaWQgcmVzZXRPdmVycmlkZGVuV2lkdGhG
b3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygpOwogCi0gICAgdm9pZCBvdmVycmlkZVNpemVGb3JD
U1NTbWFsbFZpZXdwb3J0VW5pdHMoT3ZlcnJpZGVWaWV3cG9ydFNpemUpOwogICAgIHZvaWQgb3Zl
cnJpZGVXaWR0aEZvckNTU1NtYWxsVmlld3BvcnRVbml0cyhmbG9hdCk7CiAgICAgdm9pZCByZXNl
dE92ZXJyaWRkZW5XaWR0aEZvckNTU1NtYWxsVmlld3BvcnRVbml0cygpOwogCi0gICAgdm9pZCBv
dmVycmlkZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMoT3ZlcnJpZGVWaWV3cG9ydFNpemUp
OwogICAgIHZvaWQgb3ZlcnJpZGVXaWR0aEZvckNTU0xhcmdlVmlld3BvcnRVbml0cyhmbG9hdCk7
CiAgICAgdm9pZCByZXNldE92ZXJyaWRkZW5XaWR0aEZvckNTU0xhcmdlVmlld3BvcnRVbml0cygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGZkMjFmY2NlMGU3ZC4uNDA4OGRlOTFlYTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDIyLTAzLTI5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBVbnJldmlld2VkLCBmaXggVUFGIGFmdGVyIHIyOTE5ODAKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSk6CisgICAgICAgIEV4cG9zZSBgT3ZlcnJpZGVWaWV3cG9ydFNpemVgIHNv
IHRoYXQgd2UgY2FuIGNvcHkgdGhvc2UgbWVtYmVycyBzcGVjaWZpY2FsbHkgaW5zdGVhZCBvZgor
ICAgICAgICBoYXZpbmcgdG8ga2VlcCBhbGl2ZSB0aGUgb2xkIGBGcmFtZVZpZXdgIHdoZW4gdHJh
bnNpdGlvbmluZyB0byBhIG5ldyBwYWdlLgorCiAyMDIyLTAzLTI4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5MTcyOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDU2NjliZjM2YTRj
Yi4uNzBlZmNkMjRmM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1
MjYsNiArMTUyNiwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKCkKIAogICAgIGF1dG8gb2xkVmlldyA9IG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT52aWV3KCk7CiAKKyAgICBhdXRvIG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3
cG9ydFVuaXRzID0gb2xkVmlldyA/IG9sZFZpZXctPm92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRW
aWV3cG9ydFVuaXRzKCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBvdmVycmlkZVNpemVGb3JD
U1NTbWFsbFZpZXdwb3J0VW5pdHMgPSBvbGRWaWV3ID8gb2xkVmlldy0+b3ZlcnJpZGVTaXplRm9y
Q1NTU21hbGxWaWV3cG9ydFVuaXRzKCkgOiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBvdmVycmlk
ZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMgPSBvbGRWaWV3ID8gb2xkVmlldy0+b3ZlcnJp
ZGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCkgOiBzdGQ6Om51bGxvcHQ7CisKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG9sZFZpZXcpCiAgICAgICAgIGZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0ID0gb2xkVmlldy0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKTsK
QEAgLTE1NTIsOCArMTU1NiwxNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcg
PSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpOwogCi0gICAgaWYgKHZpZXcgJiYgb2xkVmll
dykKLSAgICAgICAgdmlldy0+Y29weUNTU1ZpZXdwb3J0U2l6ZU92ZXJyaWRlcygqb2xkVmlldyk7
CisgICAgaWYgKG92ZXJyaWRlU2l6ZUZvckNTU0RlZmF1bHRWaWV3cG9ydFVuaXRzKQorICAgICAg
ICB2aWV3LT5zZXRPdmVycmlkZVNpemVGb3JDU1NEZWZhdWx0Vmlld3BvcnRVbml0cygqb3ZlcnJp
ZGVTaXplRm9yQ1NTRGVmYXVsdFZpZXdwb3J0VW5pdHMpOworCisgICAgaWYgKG92ZXJyaWRlU2l6
ZUZvckNTU1NtYWxsVmlld3BvcnRVbml0cykKKyAgICAgICAgdmlldy0+c2V0T3ZlcnJpZGVTaXpl
Rm9yQ1NTU21hbGxWaWV3cG9ydFVuaXRzKCpvdmVycmlkZVNpemVGb3JDU1NTbWFsbFZpZXdwb3J0
VW5pdHMpOworCisgICAgaWYgKG92ZXJyaWRlU2l6ZUZvckNTU0xhcmdlVmlld3BvcnRVbml0cykK
KyAgICAgICAgdmlldy0+c2V0T3ZlcnJpZGVTaXplRm9yQ1NTTGFyZ2VWaWV3cG9ydFVuaXRzKCpv
dmVycmlkZVNpemVGb3JDU1NMYXJnZVZpZXdwb3J0VW5pdHMpOwogCiAgICAgaWYgKGludCB3aWR0
aCA9IHdlYlBhZ2UtPm1pbmltdW1TaXplRm9yQXV0b0xheW91dCgpLndpZHRoKCkpIHsKICAgICAg
ICAgaW50IGhlaWdodCA9IHN0ZDo6bWF4KHdlYlBhZ2UtPm1pbmltdW1TaXplRm9yQXV0b0xheW91
dCgpLmhlaWdodCgpLCAxKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>