<?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>179386</bug_id>
          
          <creation_ts>2017-11-07 12:11:22 -0800</creation_ts>
          <short_desc>Implement VisualViewport API events</short_desc>
          <delta_ts>2018-01-22 17:43:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=181756</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>170982</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ali Juma">ajuma</reporter>
          <assigned_to name="Ali Juma">ajuma</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danyao</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1369124</commentid>
    <comment_count>0</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-11-07 12:11:22 -0800</bug_when>
    <thetext>Implement the events defined by the VisualViewport spec: https://wicg.github.io/visual-viewport/#events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383787</commentid>
    <comment_count>1</comment_count>
      <attachid>329944</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2017-12-20 12:44:02 -0800</bug_when>
    <thetext>Created attachment 329944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385854</commentid>
    <comment_count>2</comment_count>
      <attachid>329944</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-01-04 10:51:45 -0800</bug_when>
    <thetext>Comment on attachment 329944
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        testing.

I&apos;m probably missing some context, but can you explain this change? Do the new APIs implemented here make this feature &quot;ready for wider testing&quot; or can this change be done independently? Was it discussed elsewhere with other people or are you just proposing to do it now with that review request?

(I&apos;m not familiar at all with the rules regarding experimental flags)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385856</commentid>
    <comment_count>3</comment_count>
      <attachid>329944</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-01-04 10:56:52 -0800</bug_when>
    <thetext>Comment on attachment 329944
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        testing.
&gt; 
&gt; I&apos;m probably missing some context, but can you explain this change? Do the new APIs implemented here make this feature &quot;ready for wider testing&quot; or can this change be done independently? Was it discussed elsewhere with other people or are you just proposing to do it now with that review request?
&gt; 
&gt; (I&apos;m not familiar at all with the rules regarding experimental flags)

With the new APIs implemented here, the implementation of the spec is complete. This hasn&apos;t been discussed elsewhere, I&apos;m just proposing it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385858</commentid>
    <comment_count>4</comment_count>
      <attachid>329944</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-01-04 11:06:47 -0800</bug_when>
    <thetext>Comment on attachment 329944
Patch

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt;&gt; +        testing.
&gt;&gt; 
&gt;&gt; I&apos;m probably missing some context, but can you explain this change? Do the new APIs implemented here make this feature &quot;ready for wider testing&quot; or can this change be done independently? Was it discussed elsewhere with other people or are you just proposing to do it now with that review request?
&gt;&gt; 
&gt;&gt; (I&apos;m not familiar at all with the rules regarding experimental flags)
&gt; 
&gt; With the new APIs implemented here, the implementation of the spec is complete. This hasn&apos;t been discussed elsewhere, I&apos;m just proposing it here.

OK, then maybe the ChangeLog should indicate that this patch finishes the implementation of the spec and so the feature is ready for wider testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385928</commentid>
    <comment_count>5</comment_count>
      <attachid>330486</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-01-04 13:53:04 -0800</bug_when>
    <thetext>Created attachment 330486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385929</commentid>
    <comment_count>6</comment_count>
      <attachid>329944</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-01-04 13:53:37 -0800</bug_when>
    <thetext>Comment on attachment 329944
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt;&gt;&gt; +        testing.
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m probably missing some context, but can you explain this change? Do the new APIs implemented here make this feature &quot;ready for wider testing&quot; or can this change be done independently? Was it discussed elsewhere with other people or are you just proposing to do it now with that review request?
&gt;&gt;&gt; 
&gt;&gt;&gt; (I&apos;m not familiar at all with the rules regarding experimental flags)
&gt;&gt; 
&gt;&gt; With the new APIs implemented here, the implementation of the spec is complete. This hasn&apos;t been discussed elsewhere, I&apos;m just proposing it here.
&gt; 
&gt; OK, then maybe the ChangeLog should indicate that this patch finishes the implementation of the spec and so the feature is ready for wider testing.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386728</commentid>
    <comment_count>7</comment_count>
      <attachid>330486</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-01-08 07:42:40 -0800</bug_when>
    <thetext>Comment on attachment 330486
Patch

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

&gt; Source/WebCore/ChangeLog:45
&gt; +        (WebCore::getFrameViewAndLayoutIfNonNull): Deleted.

I believe WebKit people like when some explanation of per-function/file change is provided in the ChangeLog.

&gt; Source/WebCore/page/FrameView.cpp:1679
&gt; +        }

So IIUC, this is triggered by the call to updateLayoutIgnorePendingStylesheets, right? So we are sure that the member variables are up-to-date when we call offsetLeft(), scale() etc.

&gt; Source/WebCore/page/VisualViewport.cpp:71
&gt;          ASSERT(frame-&gt;pageZoomFactor());

It looks like the

ASSERT(frame-&gt;pageZoomFactor())

is no longer really necessary now. I guess you should just move it to update().

&gt; Source/WebCore/page/VisualViewport.cpp:76
&gt;  }

I think the helper function is really simplified now and I wonder whether it&apos;s still worth factoring out the &quot;m_frame != nullptr&quot; check.

How about just adding a member function

void VisualViewport::updateFrameLayout()
{
  ASSERT(m_frame);
  m_frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks::Synchronously)
}

? Then you could use it in visualViewport::scale() too.

&gt; Source/WebCore/page/VisualViewport.cpp:83
&gt; +    return m_offsetLeft;

With the above suggestion this would become

if (!m_frame)
  return 0.0;

updateFrameLayout();
return m_offsetLeft;

&gt; Source/WebCore/page/VisualViewport.cpp:132
&gt; +    m_frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks::Synchronously);

This could be just be updateFrameLayout().

&gt; Source/WebCore/page/VisualViewport.cpp:145
&gt; +

I think you don&apos;t need the &quot;.0&quot;
https://webkit.org/code-style-guidelines/#floating-point-literals

&gt; Source/WebCore/page/VisualViewport.cpp:148
&gt; +        if (view) {

if (auto* view = m_frame-&gt;view())

&gt; Source/WebCore/page/VisualViewport.cpp:151
&gt; +            auto pageZoomFactor = m_frame-&gt;pageZoomFactor();

Maybe move the ASSERT(pageZoomFactor) here?

&gt; Source/WebCore/page/VisualViewport.h:73
&gt; +    double m_scale { 1.0 };

I think you don&apos;t need the &quot;.0&quot;
https://webkit.org/code-style-guidelines/#floating-point-literals

&gt; LayoutTests/ChangeLog:8
&gt; +        Add tests for Visual Viewport API events.

Maybe repeat here that they check resize events (after pinch zoom and window resize) and scroll events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386849</commentid>
    <comment_count>8</comment_count>
      <attachid>330722</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-01-08 12:35:44 -0800</bug_when>
    <thetext>Created attachment 330722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386851</commentid>
    <comment_count>9</comment_count>
      <attachid>330486</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-01-08 12:40:25 -0800</bug_when>
    <thetext>Comment on attachment 330486
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/ChangeLog:45
&gt;&gt; +        (WebCore::getFrameViewAndLayoutIfNonNull): Deleted.
&gt; 
&gt; I believe WebKit people like when some explanation of per-function/file change is provided in the ChangeLog.

Done.

&gt;&gt; Source/WebCore/page/FrameView.cpp:1679
&gt;&gt; +        }
&gt; 
&gt; So IIUC, this is triggered by the call to updateLayoutIgnorePendingStylesheets, right? So we are sure that the member variables are up-to-date when we call offsetLeft(), scale() etc.

Right.

&gt;&gt; Source/WebCore/page/VisualViewport.cpp:71
&gt;&gt;          ASSERT(frame-&gt;pageZoomFactor());
&gt; 
&gt; It looks like the
&gt; 
&gt; ASSERT(frame-&gt;pageZoomFactor())
&gt; 
&gt; is no longer really necessary now. I guess you should just move it to update().

Done.

&gt;&gt; Source/WebCore/page/VisualViewport.cpp:76
&gt;&gt;  }
&gt; 
&gt; I think the helper function is really simplified now and I wonder whether it&apos;s still worth factoring out the &quot;m_frame != nullptr&quot; check.
&gt; 
&gt; How about just adding a member function
&gt; 
&gt; void VisualViewport::updateFrameLayout()
&gt; {
&gt;   ASSERT(m_frame);
&gt;   m_frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks::Synchronously)
&gt; }
&gt; 
&gt; ? Then you could use it in visualViewport::scale() too.

Done.

&gt;&gt; Source/WebCore/page/VisualViewport.cpp:132
&gt;&gt; +    m_frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets(Document::RunPostLayoutTasks::Synchronously);
&gt; 
&gt; This could be just be updateFrameLayout().

Done.

&gt;&gt; Source/WebCore/page/VisualViewport.cpp:145
&gt;&gt; +
&gt; 
&gt; I think you don&apos;t need the &quot;.0&quot;
&gt; https://webkit.org/code-style-guidelines/#floating-point-literals

Thanks, done.

&gt;&gt; Source/WebCore/page/VisualViewport.cpp:148
&gt;&gt; +        if (view) {
&gt; 
&gt; if (auto* view = m_frame-&gt;view())

Done.

&gt;&gt; Source/WebCore/page/VisualViewport.cpp:151
&gt;&gt; +            auto pageZoomFactor = m_frame-&gt;pageZoomFactor();
&gt; 
&gt; Maybe move the ASSERT(pageZoomFactor) here?

Done.

&gt;&gt; Source/WebCore/page/VisualViewport.h:73
&gt;&gt; +    double m_scale { 1.0 };
&gt; 
&gt; I think you don&apos;t need the &quot;.0&quot;
&gt; https://webkit.org/code-style-guidelines/#floating-point-literals

Done.

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        Add tests for Visual Viewport API events.
&gt; 
&gt; Maybe repeat here that they check resize events (after pinch zoom and window resize) and scroll events.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387166</commentid>
    <comment_count>10</comment_count>
      <attachid>330722</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-01-09 02:32:13 -0800</bug_when>
    <thetext>Comment on attachment 330722
Patch

LGTM, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387176</commentid>
    <comment_count>11</comment_count>
      <attachid>330722</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 02:53:16 -0800</bug_when>
    <thetext>Comment on attachment 330722
Patch

Clearing flags on attachment: 330722

Committed r226622: &lt;https://trac.webkit.org/changeset/226622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387177</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-09 02:53:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387179</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-09 02:54:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/36372751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387223</commentid>
    <comment_count>14</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-01-09 05:58:18 -0800</bug_when>
    <thetext>@Ali: This test fails on Apple El Capitan Debug WK1:

https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK1%20(Tests)/r226622%20(5688)/results.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329944</attachid>
            <date>2017-12-20 12:44:02 -0800</date>
            <delta_ts>2018-01-04 13:53:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179386-20171220154401.patch</filename>
            <type>text/plain</type>
            <size>28591</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE2Yjc1YzNmMjExNmM1
ZjQzZTU4NDBkMGEwNzFhMDdhMDA3NDQwMy4uZjQ5NzUwOGE0ZjVhYzFiYmFjMzUyN2VmMzI3Njlh
ZGFhMjhmMGUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE3LTEyLTIwICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVmlzdWFsVmll
d3BvcnQgQVBJIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IHRoZSBldmVudHMgKHJlc2l6ZSBhbmQgc2Nyb2xsKSBkZWZpbmVk
IGJ5IHRoZSBWaXN1YWwgVmlld3BvcnQgQVBJCisgICAgICAgIChodHRwczovL3dpY2cuZ2l0aHVi
LmlvL3Zpc3VhbC12aWV3cG9ydC8jZXZlbnRzKS4KKworICAgICAgICBUaGlzIGlzIGJlaGluZCB0
aGUgVmlzdWFsVmlld3BvcnRBUEkgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZy4KKworICAgICAg
ICBJbiBvcmRlciB0byBkZXRlY3Qgd2hlbiBldmVudHMgbmVlZCB0byBiZSBmaXJlZCwgY2hhbmdl
IHRoZSBjb21wdXRhdGlvbiBvZgorICAgICAgICBWaXN1YWwgVmlld3BvcnQgYXR0cmlidXRlcyB0
byBoYXBwZW4gd2hlbmV2ZXIgdGhlIGxheW91dCB2aWV3cG9ydCBpcyB1cGRhdGVkCisgICAgICAg
IHJhdGhlciB0aGFuIG9ubHkgb24tZGVtYW5kLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Zpc3Vh
bC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2luZG93LXJlc2l6ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVSZXNpemVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVy
RmlyZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUxh
eW91dFZpZXdwb3J0KToKKyAgICAgICAgKiBwYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmxheW91dElmTm9uTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3
cG9ydDo6b2Zmc2V0TGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9y
dDo6b2Zmc2V0VG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0Ojpw
YWdlTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6cGFnZVRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6d2lkdGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OmhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6c2NhbGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxW
aWV3cG9ydDo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZp
ZXdwb3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RnJhbWVW
aWV3QW5kTGF5b3V0SWZOb25OdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Zpc3VhbFZp
ZXdwb3J0Lmg6CisKIDIwMTctMTItMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIExheW91dFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS9zZXJ2aWNld29ya2VyL2NhY2hlLW1hdGNoLmh0
dHBzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ4ZmZmZDU2ZTU3Y2VhMzZl
MWQxNDAwNDY5MTYyYmRkM2ZmZWQ3NzcuLjU2ZWRjNzI0M2RlMDllNTQyNDVjZGRhNDZlMTJiYWIz
NDg3NDIwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTItMjAgIEFsaSBKdW1h
ICA8YWp1bWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBWaXN1YWxWaWV3cG9y
dCBBUEkgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzkzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIFZpc3VhbFZpZXdwb3J0QVBJIGV4
cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgdG8KKyAgICAgICAgREVGQVVMVF9FWFBFUklNRU5UQUxf
RkVBVFVSRVNfRU5BQkxFRCBzaW5jZSB0aGlzIGZlYXR1cmUgaXMgbm93IHJlYWR5IGZvciB3aWRl
cgorICAgICAgICB0ZXN0aW5nLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWw6CisKIDIwMTctMTItMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgc2VydmljZSB3b3JrZXIgaW50ZXJjZXB0aW9uIG9mIHJlcXVlc3Qgd2l0
aCBibG9iIGJvZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJiMTIwMDY4ZmNmMjEwOTA3
ODQyNDI4OTdlNjRjYjVjYWIxYzU2YWMuLjEwYmVkYTU4MWNiMGFmOTc0ZDdkZGRiOTAyMWQ3ZDhk
YzQxNjUxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDQ2NCw2ICs0NDY0LDggQEAg
dm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpCiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShGT1JDRURPV05fTElTVEVORVIp
OwogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0bW91c2Vmb3Jj
ZXVwRXZlbnQpCiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShGT1JDRVVQX0xJU1RFTkVSKTsKKyAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50KQorICAgICAg
ICBhZGRMaXN0ZW5lclR5cGUoUkVTSVpFX0xJU1RFTkVSKTsKIH0KIAogQ1NTU3R5bGVEZWNsYXJh
dGlvbiogRG9jdW1lbnQ6OmdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJjZThjMWI5MDljNGE3MDdkNjc2YmE5ZWQ1Njc4YzUx
MGNkMjY3N2MuLmZkNjRmNTNkZTg5OWZkOTRiMDg5Y2E5MTYyMmExNjQ3NTI4YzZjYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC04MjUsNyArODI1LDggQEAgcHVibGljOgogICAgICAgICBGT1JD
RVdJTExCRUdJTl9MSVNURU5FUiAgICAgICAgICAgICAgPSAxIDw8IDEzLAogICAgICAgICBGT1JD
RUNIQU5HRURfTElTVEVORVIgICAgICAgICAgICAgICAgPSAxIDw8IDE0LAogICAgICAgICBGT1JD
RURPV05fTElTVEVORVIgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE1LAotICAgICAgICBGT1JD
RVVQX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE2CisgICAgICAgIEZPUkNF
VVBfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTYsCisgICAgICAgIFJFU0la
RV9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTcKICAgICB9OwogCiAgICAg
Ym9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyBy
ZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggZjY2ZjQzNzcyMDVjMzI2ZWM4MzY2MTcw
NjVmYzk3OWE4YzZlNDc1NC4uNmYwNWQyNDA3YjlhNzE1MmUyYTkzZDFiMWY5YWYxNWQ2MDJkNWE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTg1LDI0
ICs4NSw0NCBAQCB2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3Jv
bGxFdmVudChOb2RlJiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKCZ0YXJnZXQuZG9jdW1lbnQoKSA9
PSAmbV9kb2N1bWVudCk7CiAKKyAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3IE1vZHVsZSwg
c2Nyb2xsIGV2ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJsZSwgb3RoZXJz
IHNob3VsZCBub3QuCisgICAgYm9vbCBidWJibGVzID0gdGFyZ2V0LmlzRG9jdW1lbnROb2RlKCk7
CisgICAgYm9vbCBjYW5jZWxhYmxlID0gZmFsc2U7CisgICAgZW5xdWV1ZVNjcm9sbEV2ZW50KHRh
cmdldCwgYnViYmxlcywgY2FuY2VsYWJsZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVl
OjplbnF1ZXVlU2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmIHRhcmdldCwgYm9vbCBidWJibGVzLCBi
b29sIGNhbmNlbGFibGUpCit7CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghbV9kb2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlNDUk9MTF9M
SVNURU5FUikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9ub2Rlc1dpdGhRdWV1ZWRT
Y3JvbGxFdmVudHMuYWRkKCZ0YXJnZXQpLmlzTmV3RW50cnkpCisgICAgaWYgKCFtX3RhcmdldHNX
aXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCgmdGFyZ2V0KS5pc05ld0VudHJ5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBQZXIgdGhlIFczQyBDU1NPTSBWaWV3IE1vZHVsZSwgc2Nyb2xsIGV2
ZW50cyBmaXJlZCBhdCB0aGUgZG9jdW1lbnQgc2hvdWxkIGJ1YmJsZSwgb3RoZXJzIHNob3VsZCBu
b3QuCi0gICAgYm9vbCBidWJibGVzID0gdGFyZ2V0LmlzRG9jdW1lbnROb2RlKCk7Ci0gICAgYm9v
bCBjYW5jZWxhYmxlID0gZmFsc2U7Ci0KICAgICBSZWY8RXZlbnQ+IHNjcm9sbEV2ZW50ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGJ1YmJsZXMsIGNhbmNlbGFibGUp
OwogICAgIHNjcm9sbEV2ZW50LT5zZXRUYXJnZXQoJnRhcmdldCk7CiAgICAgZW5xdWV1ZUV2ZW50
KFdURk1vdmUoc2Nyb2xsRXZlbnQpKTsKIH0KIAordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVu
cXVldWVSZXNpemVFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBib29sIGJ1YmJsZXMsIGJvb2wg
Y2FuY2VsYWJsZSkKK3sKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2RvY3VtZW50Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6UkVTSVpFX0xJU1RF
TkVSKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3RhcmdldHNXaXRoUXVldWVkUmVz
aXplRXZlbnRzLmFkZCgmdGFyZ2V0KS5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZWY8RXZlbnQ+IHJlc2l6ZUV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVz
aXplRXZlbnQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIHJlc2l6ZUV2ZW50LT5zZXRUYXJn
ZXQoJnRhcmdldCk7CisgICAgZW5xdWV1ZUV2ZW50KFdURk1vdmUocmVzaXplRXZlbnQpKTsKK30K
KwogYm9vbCBEb2N1bWVudEV2ZW50UXVldWU6OmNhbmNlbEV2ZW50KEV2ZW50JiBldmVudCkKIHsK
ICAgICBib29sIGZvdW5kID0gbV9xdWV1ZWRFdmVudHMucmVtb3ZlKCZldmVudCk7CkBAIC0xMjMs
NyArMTQzLDggQEAgdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVyRmly
ZWQoKQogICAgIEFTU0VSVCghbV9wZW5kaW5nRXZlbnRUaW1lci0+aXNBY3RpdmUoKSk7CiAgICAg
QVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5pc0VtcHR5KCkpOwogCi0gICAgbV9ub2Rlc1dpdGhRdWV1
ZWRTY3JvbGxFdmVudHMuY2xlYXIoKTsKKyAgICBtX3RhcmdldHNXaXRoUXVldWVkU2Nyb2xsRXZl
bnRzLmNsZWFyKCk7CisgICAgbV90YXJnZXRzV2l0aFF1ZXVlZFJlc2l6ZUV2ZW50cy5jbGVhcigp
OwogCiAgICAgLy8gSW5zZXJ0IGEgbWFya2VyIGZvciB3aGVyZSB3ZSBzaG91bGQgc3RvcC4KICAg
ICBBU1NFUlQoIW1fcXVldWVkRXZlbnRzLmNvbnRhaW5zKG51bGxwdHIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAppbmRleCA5NzNiMGQxMzY3ZTdmMDc1MTEzMjJhOThj
NTI2ZDVkM2RmNmU1YjBiLi5iMmYxYmEwYTFiZTUyOGU2MjZjY2JkYTFjYWZmMWM4NThlYzc3ZThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCkBAIC00OCw2ICs0OCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVucXVl
dWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoTm9kZSYpOworICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2
ZW50KEV2ZW50VGFyZ2V0JiwgYm9vbCBidWJibGVzLCBib29sIGNhbmNlbGFibGUpOworICAgIHZv
aWQgZW5xdWV1ZVJlc2l6ZUV2ZW50KEV2ZW50VGFyZ2V0JiwgYm9vbCBidWJibGVzLCBib29sIGNh
bmNlbGFibGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGVuZGluZ0V2ZW50VGltZXJGaXJlZCgp
OwpAQCAtNTgsNyArNjAsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50JiBtX2RvY3VtZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKICAgICBMaXN0
SGFzaFNldDxSZWZQdHI8RXZlbnQ+PiBtX3F1ZXVlZEV2ZW50czsKLSAgICBIYXNoU2V0PE5vZGUq
PiBtX25vZGVzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50czsKKyAgICBIYXNoU2V0PEV2ZW50VGFyZ2V0
Kj4gbV90YXJnZXRzV2l0aFF1ZXVlZFNjcm9sbEV2ZW50czsKKyAgICBIYXNoU2V0PEV2ZW50VGFy
Z2V0Kj4gbV90YXJnZXRzV2l0aFF1ZXVlZFJlc2l6ZUV2ZW50czsKICAgICBib29sIG1faXNDbG9z
ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZGY2NjkwOWU0NmI4Mjlj
MzNhMjNhODVlNDhmYTI4NzkxOWI1MTAzZC4uOThhMGJhNWFjOWI1OTM3NjBmYTlhMmI2OTczY2Y2
ZTU5ZjlkOWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtOTQsNiArOTQsNyBA
QAogI2luY2x1ZGUgIlN0eWxlU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nLmgiCisjaW5jbHVkZSAiVmlzdWFsVmlld3BvcnQu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTE2NzIsNiArMTY3MywxMCBAQCB2b2lkIEZyYW1lVmlldzo6
dXBkYXRlTGF5b3V0Vmlld3BvcnQoKQogICAgICAgICAgICAgTGF5b3V0UG9pbnQgbmV3T3JpZ2lu
ID0gY29tcHV0ZUxheW91dFZpZXdwb3J0T3JpZ2luKHZpc3VhbFZpZXdwb3J0UmVjdCgpLCBtaW5T
dGFibGVMYXlvdXRWaWV3cG9ydE9yaWdpbigpLCBtYXhTdGFibGVMYXlvdXRWaWV3cG9ydE9yaWdp
bigpLCBsYXlvdXRWaWV3cG9ydCwgU3RpY2tUb0RvY3VtZW50Qm91bmRzKTsKICAgICAgICAgICAg
IHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExheW91dFJlY3QobmV3T3JpZ2luLCBtX2xh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0LnZhbHVlKCkuc2l6ZSgpKSk7CiAgICAgICAgIH0KKyAg
ICAgICAgaWYgKGZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEFQSUVuYWJsZWQoKSkg
eworICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQo
KSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudC0+ZG9tV2luZG93KCktPnZpc3VhbFZpZXdwb3J0
KCktPnVwZGF0ZSgpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2
ODAsNiArMTY4NSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5b3V0Vmlld3BvcnQoKQog
ICAgICAgICBzZXRCYXNlTGF5b3V0Vmlld3BvcnRPcmlnaW4obmV3TGF5b3V0Vmlld3BvcnRPcmln
aW4pOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgImxheW91
dFZpZXdwb3J0IGNoYW5nZWQgdG8gIiA8PCBsYXlvdXRWaWV3cG9ydFJlY3QoKSk7CiAgICAgfQor
ICAgIGlmIChmcmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRBUElFbmFibGVkKCkpIHsK
KyAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgIGRvY3VtZW50LT5kb21XaW5kb3coKS0+dmlzdWFsVmlld3BvcnQoKS0+dXBkYXRl
KCk7CisgICAgfQogfQogCiBMYXlvdXRQb2ludCBGcmFtZVZpZXc6Om1pblN0YWJsZUxheW91dFZp
ZXdwb3J0T3JpZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlz
dWFsVmlld3BvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAK
aW5kZXggNjNlODk3YjFhNTJmYjhjN2ExMzc3MjAwN2MxNGU3NzVmODllMTdjNy4uMjg0MGUxMmEx
MmUwMmU4MzRhMDkyNDRmZGU0ZTcwNmNjYmVjYzg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1
YWxWaWV3cG9ydC5jcHAKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01Miw1NiArNTUsNzIgQEAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogVmlzdWFsVmlld3BvcnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcio+KG1fYXNzb2NpYXRlZERPTVdpbmRvdyktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
IH0KIAotc3RhdGljIEZyYW1lVmlldyogZ2V0RnJhbWVWaWV3QW5kTGF5b3V0SWZOb25OdWxsKEZy
YW1lKiBmcmFtZSkKK2Jvb2wgVmlzdWFsVmlld3BvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBj
b25zdCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvKiB2aWV3
ID0gZnJhbWUgPyBmcmFtZS0+dmlldygpIDogbnVsbHB0cjsKLSAgICBpZiAodmlldykgeworICAg
IGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2Zy
YW1lKQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZChldmVudFR5cGUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBsYXlvdXRJ
Zk5vbk51bGwoRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChmcmFtZSkgewogICAgICAgICBBU1NF
UlQoZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5
b3V0VGFza3M6OlN5bmNocm9ub3VzbHkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgcmV0dXJuIHZpZXc7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBkb3VibGUgVmlzdWFsVmll
d3BvcnQ6Om9mZnNldExlZnQoKSBjb25zdAogewotICAgIGlmIChhdXRvKiB2aWV3ID0gZ2V0RnJh
bWVWaWV3QW5kTGF5b3V0SWZOb25OdWxsKG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gKHZpZXct
PnZpc3VhbFZpZXdwb3J0UmVjdCgpLngoKSAtIHZpZXctPmxheW91dFZpZXdwb3J0UmVjdCgpLngo
KSkgLyBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwotICAgIHJldHVybiAwOworICAgIGlmICgh
bGF5b3V0SWZOb25OdWxsKG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gMC4wOworCisgICAgcmV0
dXJuIG1fb2Zmc2V0TGVmdDsKIH0KIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpvZmZzZXRUb3Ao
KSBjb25zdAogewotICAgIGlmIChhdXRvKiB2aWV3ID0gZ2V0RnJhbWVWaWV3QW5kTGF5b3V0SWZO
b25OdWxsKG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gKHZpZXctPnZpc3VhbFZpZXdwb3J0UmVj
dCgpLnkoKSAtIHZpZXctPmxheW91dFZpZXdwb3J0UmVjdCgpLnkoKSkgLyBtX2ZyYW1lLT5wYWdl
Wm9vbUZhY3RvcigpOwotICAgIHJldHVybiAwOworICAgIGlmICghbGF5b3V0SWZOb25OdWxsKG1f
ZnJhbWUpKQorICAgICAgICByZXR1cm4gMC4wOworCisgICAgcmV0dXJuIG1fb2Zmc2V0VG9wOwog
fQogCiBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OnBhZ2VMZWZ0KCkgY29uc3QKIHsKLSAgICBpZiAo
YXV0byogdmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpLngoKSAvIG1fZnJhbWUtPnBh
Z2Vab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFsYXlvdXRJZk5vbk51bGwo
bV9mcmFtZSkpCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICByZXR1cm4gbV9wYWdlTGVmdDsK
IH0KIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpwYWdlVG9wKCkgY29uc3QKIHsKLSAgICBpZiAo
YXV0byogdmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpLnkoKSAvIG1fZnJhbWUtPnBh
Z2Vab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFsYXlvdXRJZk5vbk51bGwo
bV9mcmFtZSkpCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICByZXR1cm4gbV9wYWdlVG9wOwog
fQogCiBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OndpZHRoKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogdmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpLndpZHRoKCkgLyBtX2ZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpOwotICAgIHJldHVybiAwOworICAgIGlmICghbGF5b3V0SWZOb25OdWxs
KG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gMC4wOworCisgICAgcmV0dXJuIG1fd2lkdGg7CiB9
CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6aGVpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogdmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpLmhlaWdodCgpIC8gbV9mcmFtZS0+
cGFnZVpvb21GYWN0b3IoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIWxheW91dElmTm9uTnVs
bChtX2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBtX2hlaWdodDsK
IH0KIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpzY2FsZSgpIGNvbnN0CkBAIC0xMTAsMTEgKzEy
OSw2OCBAQCBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OnNjYWxlKCkgY29uc3QKICAgICBpZiAoIW1f
ZnJhbWUgfHwgIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiAxOwogCi0g
ICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50
OjpSdW5Qb3N0TGF5b3V0VGFza3M6OlN5bmNocm9ub3VzbHkpOwotICAgICAgICByZXR1cm4gcGFn
ZS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3M6
OlN5bmNocm9ub3VzbHkpOworICAgIHJldHVybiBtX3NjYWxlOworfQorCit2b2lkIFZpc3VhbFZp
ZXdwb3J0Ojp1cGRhdGUoKQoreworICAgIGRvdWJsZSBvZmZzZXRMZWZ0ID0gMC4wOworICAgIGRv
dWJsZSBvZmZzZXRUb3AgPSAwLjA7CisgICAgbV9wYWdlTGVmdCA9IDAuMDsKKyAgICBtX3BhZ2VU
b3AgPSAwLjA7CisgICAgZG91YmxlIHdpZHRoID0gMC4wOworICAgIGRvdWJsZSBoZWlnaHQgPSAw
LjA7CisgICAgZG91YmxlIHNjYWxlID0gMS4wOworCisgICAgaWYgKG1fZnJhbWUpIHsKKyAgICAg
ICAgYXV0byogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAg
ICAgICAgICAgIGF1dG8gdmlzdWFsVmlld3BvcnRSZWN0ID0gdmlldy0+dmlzdWFsVmlld3BvcnRS
ZWN0KCk7CisgICAgICAgICAgICBhdXRvIGxheW91dFZpZXdwb3J0UmVjdCA9IHZpZXctPmxheW91
dFZpZXdwb3J0UmVjdCgpOworICAgICAgICAgICAgYXV0byBwYWdlWm9vbUZhY3RvciA9IG1fZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgICAgICAgICBvZmZzZXRMZWZ0ID0gKHZpc3VhbFZp
ZXdwb3J0UmVjdC54KCkgLSBsYXlvdXRWaWV3cG9ydFJlY3QueCgpKSAvIHBhZ2Vab29tRmFjdG9y
OworICAgICAgICAgICAgb2Zmc2V0VG9wID0gKHZpc3VhbFZpZXdwb3J0UmVjdC55KCkgLSBsYXlv
dXRWaWV3cG9ydFJlY3QueSgpKSAvIHBhZ2Vab29tRmFjdG9yOworICAgICAgICAgICAgbV9wYWdl
TGVmdCA9IHZpc3VhbFZpZXdwb3J0UmVjdC54KCkgLyBwYWdlWm9vbUZhY3RvcjsKKyAgICAgICAg
ICAgIG1fcGFnZVRvcCA9IHZpc3VhbFZpZXdwb3J0UmVjdC55KCkgLyBwYWdlWm9vbUZhY3RvcjsK
KyAgICAgICAgICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnRSZWN0LndpZHRoKCkgLyBwYWdlWm9v
bUZhY3RvcjsKKyAgICAgICAgICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0UmVjdC5oZWlnaHQo
KSAvIHBhZ2Vab29tRmFjdG9yOworICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5wYWdlU2NhbGVGYWN0
b3IoKTsKKyAgICB9CisKKyAgICBpZiAobV9vZmZzZXRMZWZ0ICE9IG9mZnNldExlZnQgfHwgbV9v
ZmZzZXRUb3AgIT0gb2Zmc2V0VG9wKSB7CisgICAgICAgIGVucXVldWVTY3JvbGxFdmVudCgpOwor
ICAgICAgICBtX29mZnNldExlZnQgPSBvZmZzZXRMZWZ0OworICAgICAgICBtX29mZnNldFRvcCA9
IG9mZnNldFRvcDsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgaWYgKG1fd2lkdGggIT0gd2lk
dGggfHwgbV9oZWlnaHQgIT0gaGVpZ2h0IHx8IG1fc2NhbGUgIT0gc2NhbGUpIHsKKyAgICAgICAg
ZW5xdWV1ZVJlc2l6ZUV2ZW50KCk7CisgICAgICAgIG1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAg
bV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1fc2NhbGUgPSBzY2FsZTsKKyAgICB9Cit9CisK
K3ZvaWQgVmlzdWFsVmlld3BvcnQ6OmVucXVldWVSZXNpemVFdmVudCgpCit7CisgICAgaWYgKCFt
X2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGJ1YmJsZXMgPSBmYWxzZTsKKyAg
ICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVu
dFF1ZXVlKCkuZW5xdWV1ZVJlc2l6ZUV2ZW50KCp0aGlzLCBidWJibGVzLCBjYW5jZWxhYmxlKTsK
K30KKwordm9pZCBWaXN1YWxWaWV3cG9ydDo6ZW5xdWV1ZVNjcm9sbEV2ZW50KCkKK3sKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYnViYmxlcyA9IGZhbHNl
OworICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmV2ZW50UXVldWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMsIGJ1YmJsZXMsIGNhbmNlbGFi
bGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZp
ZXdwb3J0LmgKaW5kZXggMTVmN2ZlNzhhYjAwZDAwZmRiOTk2MGY2ZjhlZmFmMjMyOTA3MTNmZC4u
Yjg5MjMxODQzYTYwZjFlYmU1ZjM2YzYwOTUzMDQyMmZkZjE1M2Y3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlzdWFsVmlld3BvcnQuaApAQCAtMzcsOCArMzcsMTAgQEAgY2xhc3MgVmlzdWFsVmlld3Bv
cnQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxWaXN1YWxWaWV3cG9ydD4sIHB1YmxpYyBFdmVu
dFRhcmcKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFZpc3VhbFZpZXdwb3J0PiBjcmVhdGUoRnJh
bWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFZpc3VhbFZpZXdwb3J0KGZyYW1lKSk7
IH0KIAorICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmKSBmaW5hbDsKIAogICAgIGRvdWJs
ZSBvZmZzZXRMZWZ0KCkgY29uc3Q7CiAgICAgZG91YmxlIG9mZnNldFRvcCgpIGNvbnN0OwpAQCAt
NDgsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGhlaWdodCgpIGNvbnN0OwogICAgIGRv
dWJsZSBzY2FsZSgpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGUoKTsKKwogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIApAQCAtNTYsNiAr
NjAsMTcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJl
ZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisK
KyAgICB2b2lkIGVucXVldWVSZXNpemVFdmVudCgpOworICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2
ZW50KCk7CisKKyAgICBkb3VibGUgbV9vZmZzZXRMZWZ0IHsgMC4wIH07CisgICAgZG91YmxlIG1f
b2Zmc2V0VG9wIHsgMC4wIH07CisgICAgZG91YmxlIG1fcGFnZUxlZnQgeyAwLjAgfTsKKyAgICBk
b3VibGUgbV9wYWdlVG9wIHsgMC4wIH07CisgICAgZG91YmxlIG1fd2lkdGggeyAwLjAgfTsKKyAg
ICBkb3VibGUgbV9oZWlnaHQgeyAwLjAgfTsKKyAgICBkb3VibGUgbV9zY2FsZSB7IDEuMCB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKaW5kZXggNTQ1MjQzNTA4Mzc1OTBiNWE5MWE2MGJlYTY3YmQ4NjUzMDZlMmRi
NS4uZTAzZDJlZjdhMTNjOTFlNTc1ZjQzZDgxOWY4MzcwOTc1MWFmNzFjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMTM2LDcgKzExMzYsNyBAQCBTdWJy
ZXNvdXJjZUludGVncml0eUVuYWJsZWQ6CiAKIFZpc3VhbFZpZXdwb3J0QVBJRW5hYmxlZDoKICAg
dHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIGRlZmF1bHRWYWx1ZTogREVGQVVM
VF9FWFBFUklNRU5UQUxfRkVBVFVSRVNfRU5BQkxFRAogICBodW1hblJlYWRhYmxlTmFtZTogIlZp
c3VhbFZpZXdwb3J0QVBJIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgVmlz
dWFsIFZpZXdwb3J0IEFQSSIKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgxMmQ5
NTZjMDQwNTQ1NTA5M2QzZWFiODJkNmFlODQzY2FmZTNlOWIuLjRlZDNlNzI3OGIxODFlZTk0YzEw
NzVjYTMyNWMzNzg1YjcxOTRmMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0xMi0yMCAg
QWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFZpc3Vh
bFZpZXdwb3J0IEFQSSBldmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3OTM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgVmlzdWFsIFZpZXdwb3J0IEFQSSBldmVudHMuCisK
KyAgICAgICAgKiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZl
bnQtZmlyZWQtd2luZG93LXJlc2l6ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2luZG93LXJlc2l6ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZp
cmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Njcm9sbC1l
dmVudC1maXJlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdmlzdWFsLXZp
ZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2tpcHBlZCB0ZXN0cyB0aGF0IHVzZSBV
SVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxlLCBzaW5jZSB0aGlzIGlzbid0IGltcGxlbWVu
dGVkIG9uIEdUSy4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgU2tpcHBlZCB0ZXN0IHRoYXQgcmVzaXplcyBhIHdpbmRvdywgc2luY2UgdGhpcyBpc24n
dCBzdXBwb3J0ZWQgb24gaU9TLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICBTa2lwcGVkIHRlc3RzIHRoYXQgdXNlIFVJU2NyaXB0Q29udHJvbGxlcjo6
em9vbVRvU2NhbGUsIHNpbmNlIHRoaXMgaXNuJ3QgaW1wbGVtZW50ZWQgb24gV2luZG93cy4KKwog
MjAxNy0xMi0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
TGF5b3V0VGVzdCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9jYWNoZS1zdG9yYWdlL3NlcnZpY2V3b3JrZXIvY2FjaGUtbWF0Y2guaHR0cHMuaHRtbCBpcyBh
IGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDA5MWYyMDhm
YzBlMGUwYjJkYjQzMDE1MDNmZTAzN2IyMzhjMTNlMzUuLmM1OTYyNzc2MzRlZTNiNDQ1YzAyOGVl
MTI0OTkwYzEwNjU0MDFkYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE3LTEyLTIwICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBJbXBsZW1lbnQgVmlzdWFsVmlld3BvcnQgQVBJIGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9uIGZv
ciBhIHZpZXdwb3J0IFdQVCB0aGF0IG5vdyBwYXNzZXMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvdmlld3BvcnQvdmlld3BvcnQtcmVzaXplLWV2ZW50LW9uLWxvYWQtb3ZlcmZsb3dp
bmctcGFnZS1leHBlY3RlZC50eHQ6CisKIDIwMTctMTItMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgc2VydmljZSB3b3JrZXIgaW50ZXJjZXB0
aW9uIG9mIHJlcXVlc3Qgd2l0aCBibG9iIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkxNzhjYWRlNWMzMjZmYzU5OTNkYjc3ODdlMDE0NjE2N2I3YWEyZWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNp
emUtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFZlcmlm
eSBhIHJlc2l6ZSBldmVudCBnZXRzIGZpcmVkIG9uIHdpbmRvdy52aXN1YWxWaWV3cG9ydCBhZnRl
ciBwaW5jaC16b29tIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3
cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2luZG93LXJlc2l6ZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1y
ZXNpemVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTE2YzZlNjllYmNkMzlmMTljNmIwYmI0
NTc4OTZmZDllMjcxMGYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1
YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBWZXJpZnkgdGhhdCBhIHJlc2l6ZSBldmVudCBnZXRz
IGZpcmVkIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNp
emVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQt
ZmlyZWQtd2luZG93LXJlc2l6ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmMyYjVhMmE2MjQzZjY3OTVi
MTQyYWEyNzM5NDE2MGNhMWZkYjc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFZpc3VhbFZp
ZXdwb3J0RW5hYmxlZCh0cnVlKTsKKworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnVmVyaWZ5
IHRoYXQgYSByZXNpemUgZXZlbnQgZ2V0cyBmaXJlZCB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXpl
ZC4nKTsKKworICAgIGZ1bmN0aW9uIHJlc2l6ZUhhbmRsZXIoKSB7CisgICAgICAgIHRlc3QuZG9u
ZSgpOworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
d2luZG93LnZpc3VhbFZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZUhh
bmRsZXIpOworICAgICAgICB3aW5kb3cucmVzaXplVG8od2luZG93Lm91dGVyV2lkdGggLSA0MCwg
d2luZG93Lm91dGVySGVpZ2h0ICsgNDApOworICAgIH07Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTE3MjYzYzIxMmYzNGQ1MDliNzI1YzQwNzAwMTBiYWU5NzczZThmNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6
ZS1ldmVudC1maXJlZC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0
eWxlPgorICBib2R5IHsKKyAgICBoZWlnaHQ6IDIwMDBweDsKKyAgICB3aWR0aDogMjAwMHB4Owor
ICB9Cis8L3N0eWxlPgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB2YXIgcGFnZVNjYWxlRmFjdG9yID0g
MjsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0VmlzdWFsVmlld3BvcnRFbmFibGVkKHRydWUpOworCisgICAgdmFyIHRlc3QgPSBhc3lu
Y190ZXN0KCdWZXJpZnkgYSByZXNpemUgZXZlbnQgZ2V0cyBmaXJlZCBvbiB3aW5kb3cudmlzdWFs
Vmlld3BvcnQgYWZ0ZXIgcGluY2gtem9vbScpOworCisgICAgZnVuY3Rpb24gcmVzaXplSGFuZGxl
cigpIHsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0VUlT
Y3JpcHQoKSB7CisgICAgICAgIHJldHVybiBgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlD
b250cm9sbGVyLnpvb21Ub1NjYWxlKCR7cGFnZVNjYWxlRmFjdG9yfSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUodWlDb250cm9sbGVy
Lnpvb21TY2FsZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkoKTtgOworICAgIH0KKwor
ICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgd2luZG93LnZpc3VhbFZp
ZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZUhhbmRsZXIpOworICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKCkge30pOwor
ICAgIH07Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZp
ZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMzMWI1MmI5NWNkMmNmMTU1NjRkNGViZGIzOGRkNjc5MTc4OTk2MDQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmly
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFZlcmlmeSB0aGF0IGEgc2Ny
b2xsIGV2ZW50IGdldHMgZmlyZWQgb24gd2luZG93LnZpc3VhbFZpZXdwb3J0IHdoZW4gaXRzIG9m
ZnNldCBjaGFuZ2VzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3
cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZp
ZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMGRiMDIxZjY0MGNh
YzI0MTUyMzRkNGNkZmFlN2EzMGY4MjA0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KKyAgYm9keSB7CisgICAgaGVpZ2h0OiAy
MDAwcHg7CisgICAgd2lkdGg6IDIwMDBweDsKKyAgfQorPC9zdHlsZT4KKworPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgdmFyIHBhZ2VTY2FsZUZhY3RvciA9IDI7CisKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFZpc3VhbFZpZXdwb3J0RW5hYmxlZCh0
cnVlKTsKKworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnVmVyaWZ5IHRoYXQgYSBzY3JvbGwg
ZXZlbnQgZ2V0cyBmaXJlZCBvbiB3aW5kb3cudmlzdWFsVmlld3BvcnQgd2hlbiBpdHMgb2Zmc2V0
IGNoYW5nZXMnKTsKKworICAgIGZ1bmN0aW9uIHNjcm9sbEV2ZW50SGFuZGxlcigpIHsKKyAgICAg
ICAgdGVzdC5kb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9BZnRlclpvb21pbmcoKSB7
CisgICAgICAgIHdpbmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwn
LCBzY3JvbGxFdmVudEhhbmRsZXIpOworICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwMCwgMTAw
MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKSB7CisgICAgICAgIHJldHVy
biBgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLnpvb21Ub1NjYWxlKCR7
cGFnZVNjYWxlRmFjdG9yfSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnVpU2NyaXB0Q29tcGxldGUodWlDb250cm9sbGVyLnpvb21TY2FsZSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSkoKTtgOworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBk
b0FmdGVyWm9vbWluZyk7CisgICAgfTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWV3cG9ydC92aWV3cG9ydC1yZXNp
emUtZXZlbnQtb24tbG9hZC1vdmVyZmxvd2luZy1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlld3BvcnQvdmlld3BvcnQtcmVz
aXplLWV2ZW50LW9uLWxvYWQtb3ZlcmZsb3dpbmctcGFnZS1leHBlY3RlZC50eHQKaW5kZXggMDBl
ZjE2ZGU4YmJiNDI1NmVmN2MyZTM2MzgxYTJjNmMyMmFmZThlZS4uNGZkNjM3MGMwMTI5MmNiZDM4
MmU4OGNmMGQzMGUwYWRlMjY2ZDQ5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWV3cG9ydC92aWV3cG9ydC1yZXNpemUtZXZlbnQtb24t
bG9hZC1vdmVyZmxvd2luZy1wYWdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZXdwb3J0L3ZpZXdwb3J0LXJlc2l6ZS1ldmVu
dC1vbi1sb2FkLW92ZXJmbG93aW5nLXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC0zLDUgKzMsNSBAQCBW
aWV3cG9ydDogUmVzaXplIEV2ZW50IE9uIExvYWQgT3ZlcmZsb3dpbmcgUGFnZQogVGVzdCBEZXNj
cmlwdGlvbjogVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB3ZSBmaXJlIGEgcmVzaXplIGV2ZW50IGFn
YWluc3Qgd2luZG93LnZpc3VhbFZpZXdwb3J0IGlmIHRoZSBwYWdlIGhhcyBvdmVyZmxvdyAoc2lu
Y2UgdGhpcyBjcmVhdGVzIGEgc2Nyb2xsYmFyIGFuZCB0aHVzIGNoYW5nZXMgdGhlIHZpZXdwb3J0
IHNpemUpLgogCiAKLUZBSUwgUmVzaXplIGV2ZW50IGZpcmVkIGV4YWN0bHkgb25jZSBhZ2FpbnN0
IHdpbmRvdy52aXN1YWxWaWV3cG9ydCBpZiBzY3JvbGxiYXJzIGFmZmVjdCBsYXlvdXQuIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkIDEgYnV0IGdvdCAwCitQQVNTIFJlc2l6ZSBldmVudCBmaXJlZCBl
eGFjdGx5IG9uY2UgYWdhaW5zdCB3aW5kb3cudmlzdWFsVmlld3BvcnQgaWYgc2Nyb2xsYmFycyBh
ZmZlY3QgbGF5b3V0LiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAzZjc5Njk2OGMxMzBjMDI4NGY4MzY4Y2MyMGRhMzY1ZjBkNmM3OTQxLi44Y2JiNDRj
MThmNTY4NDMxY2MxMjdkMmY0MWM0ODY4MTVhZjRmYWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTY4LDcgKzk2OCw5IEBAIHdlYmtpdC5vcmcvYi8x
NTM4MzMgZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50
Lmh0bWwgWyBTCiB3ZWJraXQub3JnL2IvMTUzODMzIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWlu
c2VydC1yZXBsYWNlbWVudC5odG1sIFsgU2tpcCBdCiAKICMgU2tpcCB0ZXN0cyByZXF1aXJpbmcg
VUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2FsZQord2Via2l0Lm9yZy9iLzE2ODA1MCBmYXN0
L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzE2ODA1MCBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydGwtem9vbWVkLXJlY3RzLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQvc2Nyb2xs
LWV2ZW50LWZpcmVkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjgwNTAgZmFzdC92aXN1
YWwtdmlld3BvcnQvdmlld3BvcnQtZGltZW5zaW9ucy1leGNsdWRlLWN1c3RvbS1zY3JvbGxiYXJz
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQv
dmlld3BvcnQtZGltZW5zaW9ucy1leGNsdWRlLXNjcm9sbGJhcnMuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzE2ODA1MCBmYXN0L3Zpc3VhbC12aWV3cG9ydC92aWV3cG9ydC1kaW1lbnNpb25z
LWlmcmFtZS5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGRjY2M0YTIwYjNiYjk4NDM3N2VmMjRlOTZiM2NmY2YzYmI0NWYwMDQuLjNm
NmU4NjUzYzFmOGI1ZmE3NDZhOWIxMGM5ODBiZjE3NTJlZGI0MTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMDM3LDYgKzIwMzcsNyBAQCBmYXN0L2Nz
cy1ncmlkLWxheW91dC9mbGV4LWNvbnRlbnQtc2l6ZWQtY29sdW1ucy1yZXNpemUuaHRtbCBbIFNr
aXAgXQogZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUtdXBkYXRlLXNjcm9sbGJhcnMuaHRt
bCBbIFNraXAgXQogZmFzdC9keW5hbWljL3dpbmRvdy1yZXNpemUtc2Nyb2xsYmFycy10ZXN0Lmh0
bWwgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi13aW5kb3ctcmVzaXppbmcuaHRt
bCBbIFNraXAgXQorZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRv
dy1yZXNpemVkLmh0bWwgWyBTa2lwIF0KIGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5k
b3ctc2l6ZS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTc4NzM5IGNzczMvdmlld3BvcnQt
cGVyY2VudGFnZS1sZW5ndGhzL3ZpZXdwb3J0LXBlcmNlbnRhZ2UtbGVuZ3Rocy1hbm9ueW1vdXMt
YmxvY2suaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE3ODczOSBjc3MzL3ZpZXdwb3J0LXBl
cmNlbnRhZ2UtbGVuZ3Rocy92aWV3cG9ydC1wZXJjZW50YWdlLWxlbmd0aHMtcGVyY2VudC1zaXpl
LWNoaWxkLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggOGEyNTUzNDA4NzhhN2ExYzA2MjI5NTNmZjQzMjBiYTg0NDBiOThiMC4uZjg1
MDkyNzUzMmY4N2M2N2NmOWIxOTJmZjY1OWIyNGJkNmE5NjE1MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYzMCw3ICs2MzAsOSBAQCB3ZWJraXQub3Jn
L2IvMTU4ODM2IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZW5jcnlwdGVkLW1lZGlh
IFsgU2tpcCBdCiBjcmVkZW50aWFscy8gWyBTa2lwIF0KIAogIyBVSVNjcmlwdENvbnRyb2xsZXI6
Onpvb21Ub1NjYWxlIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dzLgord2Via2l0Lm9yZy9i
LzE4MDQyNCBmYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzE4MDQyNCBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydGwtem9vbWVk
LXJlY3RzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xODA0MjQgZmFzdC92aXN1YWwtdmll
d3BvcnQvc2Nyb2xsLWV2ZW50LWZpcmVkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODA0
MjQgZmFzdC92aXN1YWwtdmlld3BvcnQvdmlld3BvcnQtZGltZW5zaW9ucy1leGNsdWRlLWN1c3Rv
bS1zY3JvbGxiYXJzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODA0MjQgZmFzdC92aXN1
YWwtdmlld3BvcnQvdmlld3BvcnQtZGltZW5zaW9ucy1leGNsdWRlLXNjcm9sbGJhcnMuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MDQyNCBmYXN0L3Zpc3VhbC12aWV3cG9ydC92aWV3cG9y
dC1kaW1lbnNpb25zLWlmcmFtZS5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330486</attachid>
            <date>2018-01-04 13:53:04 -0800</date>
            <delta_ts>2018-01-08 12:35:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179386-20180104165303.patch</filename>
            <type>text/plain</type>
            <size>28623</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI5ZTdjOTE2ODYyZDk0
ZGU4MzY5OGMyMDEwOGM1MmZkYmNiODgyYy4uMWI2N2VlYjgyYWM4ZGQyYTk0ZWQ0OTIzNjIxMmQy
MzYzMDJmYjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE4LTAxLTA0ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVmlzdWFsVmll
d3BvcnQgQVBJIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IHRoZSBldmVudHMgKHJlc2l6ZSBhbmQgc2Nyb2xsKSBkZWZpbmVk
IGJ5IHRoZSBWaXN1YWwgVmlld3BvcnQgQVBJCisgICAgICAgIChodHRwczovL3dpY2cuZ2l0aHVi
LmlvL3Zpc3VhbC12aWV3cG9ydC8jZXZlbnRzKS4KKworICAgICAgICBUaGlzIGlzIGJlaGluZCB0
aGUgVmlzdWFsVmlld3BvcnRBUEkgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZy4KKworICAgICAg
ICBJbiBvcmRlciB0byBkZXRlY3Qgd2hlbiBldmVudHMgbmVlZCB0byBiZSBmaXJlZCwgY2hhbmdl
IHRoZSBjb21wdXRhdGlvbiBvZgorICAgICAgICBWaXN1YWwgVmlld3BvcnQgYXR0cmlidXRlcyB0
byBoYXBwZW4gd2hlbmV2ZXIgdGhlIGxheW91dCB2aWV3cG9ydCBpcyB1cGRhdGVkCisgICAgICAg
IHJhdGhlciB0aGFuIG9ubHkgb24tZGVtYW5kLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Zpc3Vh
bC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2luZG93LXJlc2l6ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVSZXNpemVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OnBlbmRpbmdFdmVudFRpbWVy
RmlyZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUxh
eW91dFZpZXdwb3J0KToKKyAgICAgICAgKiBwYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmxheW91dElmTm9uTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3
cG9ydDo6b2Zmc2V0TGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9y
dDo6b2Zmc2V0VG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0Ojpw
YWdlTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6cGFnZVRv
cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6d2lkdGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OmhlaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6c2NhbGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxW
aWV3cG9ydDo6ZW5xdWV1ZVJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZp
ZXdwb3J0OjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RnJhbWVW
aWV3QW5kTGF5b3V0SWZOb25OdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Zpc3VhbFZp
ZXdwb3J0Lmg6CisKIDIwMTgtMDEtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU1ZHIGxpZ2h0aW5nIGZpbHRlciBsaWdodHMgYXJlIGluIHRoZSB3
cm9uZyBjb29yZGluYXRlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5YTZkMDQ0MjlhOGI0ZjA1YTdkNTdh
ZDAzODU2Zjg1MDk3NzNlMTlkLi5kMTExNzEzZGI2ODA0NzQwZmY0N2Q4OTNiN2YwZTAyNzQyODlk
YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTA0ICBBbGkgSnVtYSAgPGFq
dW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVmlzdWFsVmlld3BvcnQgQVBJ
IGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBWaXN1YWxWaWV3cG9ydEFQSSBleHBlcmlt
ZW50YWwgZmVhdHVyZSBmbGFnIHRvCisgICAgICAgIERFRkFVTFRfRVhQRVJJTUVOVEFMX0ZFQVRV
UkVTX0VOQUJMRUQuIFRoaXMgcGF0Y2ggY29tcGxldGVzIHRoZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBvZiB0aGlzIGZlYXR1cmUgYXMgc3BlY2lmaWVkIGJ5IGh0dHBzOi8vd2ljZy5naXRodWIu
aW8vdmlzdWFsLXZpZXdwb3J0Lywgc28gdGhpcworICAgICAgICBmZWF0dXJlIGlzIG5vdyByZWFk
eSBmb3Igd2lkZXIgdGVzdGluZy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sOgorCiAyMDE4LTAxLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZWFsbHkgZml4IHBsdWdpbiBwcm9jZXNzIGFm
dGVyIHIyMjYzMjcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4NDMwYTZkZTljN2M2Y2Nl
NWYzNzM0ZTMwYjc5NGNiOWU0MDliMjUxLi5lOWEyODJlYzRkZDJjZDRlMmQwMjY2M2Y5NTNlNWJm
ZDgyYTM4MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ0NjUsNiArNDQ2NSw4IEBA
IHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKQogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoRk9SQ0VET1dOX0xJU1RFTkVS
KTsKICAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdG1vdXNlZm9y
Y2V1cEV2ZW50KQogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoRk9SQ0VVUF9MSVNURU5FUik7Cisg
ICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCkKKyAgICAg
ICAgYWRkTGlzdGVuZXJUeXBlKFJFU0laRV9MSVNURU5FUik7CiB9CiAKIENTU1N0eWxlRGVjbGFy
YXRpb24qIERvY3VtZW50OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBlYmFiZDliYWJkMjk5NGU5NjkxYTAwMDQzYjcyY2Rm
ZTI1ODdmMDQ2Li4yNDQ3ZTI1MmE0MmQ3NDk4Y2FiOWZiNTRlOGQ2YjZiOWNhMGEwMTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtODI1LDcgKzgyNSw4IEBAIHB1YmxpYzoKICAgICAgICAgRk9S
Q0VXSUxMQkVHSU5fTElTVEVORVIgICAgICAgICAgICAgID0gMSA8PCAxMywKICAgICAgICAgRk9S
Q0VDSEFOR0VEX0xJU1RFTkVSICAgICAgICAgICAgICAgID0gMSA8PCAxNCwKICAgICAgICAgRk9S
Q0VET1dOX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNSwKLSAgICAgICAgRk9S
Q0VVUF9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNgorICAgICAgICBGT1JD
RVVQX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE2LAorICAgICAgICBSRVNJ
WkVfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDE3CiAgICAgfTsKIAogICAg
IGJvb2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0IHsg
cmV0dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0ZW5lclR5cGUpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IGY2NmY0Mzc3MjA1YzMyNmVjODM2NjE3
MDY1ZmM5NzlhOGM2ZTQ3NTQuLjZmMDVkMjQwN2I5YTcxNTJlMmE5M2QxYjFmOWFmMTVkNjAyZDVh
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC04NSwy
NCArODUsNDQgQEAgdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Ny
b2xsRXZlbnQoTm9kZSYgdGFyZ2V0KQogewogICAgIEFTU0VSVCgmdGFyZ2V0LmRvY3VtZW50KCkg
PT0gJm1fZG9jdW1lbnQpOwogCisgICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUs
IHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVy
cyBzaG91bGQgbm90LgorICAgIGJvb2wgYnViYmxlcyA9IHRhcmdldC5pc0RvY3VtZW50Tm9kZSgp
OworICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOworICAgIGVucXVldWVTY3JvbGxFdmVudCh0
YXJnZXQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworfQorCit2b2lkIERvY3VtZW50RXZlbnRRdWV1
ZTo6ZW5xdWV1ZVNjcm9sbEV2ZW50KEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGJvb2wgYnViYmxlcywg
Ym9vbCBjYW5jZWxhYmxlKQorewogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExf
TElTVEVORVIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fbm9kZXNXaXRoUXVldWVk
U2Nyb2xsRXZlbnRzLmFkZCgmdGFyZ2V0KS5pc05ld0VudHJ5KQorICAgIGlmICghbV90YXJnZXRz
V2l0aFF1ZXVlZFNjcm9sbEV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBNb2R1bGUsIHNjcm9sbCBl
dmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUsIG90aGVycyBzaG91bGQg
bm90LgotICAgIGJvb2wgYnViYmxlcyA9IHRhcmdldC5pc0RvY3VtZW50Tm9kZSgpOwotICAgIGJv
b2wgY2FuY2VsYWJsZSA9IGZhbHNlOwotCiAgICAgUmVmPEV2ZW50PiBzY3JvbGxFdmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxl
KTsKICAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0KCZ0YXJnZXQpOwogICAgIGVucXVldWVFdmVu
dChXVEZNb3ZlKHNjcm9sbEV2ZW50KSk7CiB9CiAKK3ZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpl
bnF1ZXVlUmVzaXplRXZlbnQoRXZlbnRUYXJnZXQmIHRhcmdldCwgYm9vbCBidWJibGVzLCBib29s
IGNhbmNlbGFibGUpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghbV9kb2N1bWVudC5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlJFU0laRV9MSVNU
RU5FUikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV90YXJnZXRzV2l0aFF1ZXVlZFJl
c2l6ZUV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmPEV2ZW50PiByZXNpemVFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJl
c2l6ZUV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICByZXNpemVFdmVudC0+c2V0VGFy
Z2V0KCZ0YXJnZXQpOworICAgIGVucXVldWVFdmVudChXVEZNb3ZlKHJlc2l6ZUV2ZW50KSk7Cit9
CisKIGJvb2wgRG9jdW1lbnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCYgZXZlbnQpCiB7
CiAgICAgYm9vbCBmb3VuZCA9IG1fcXVldWVkRXZlbnRzLnJlbW92ZSgmZXZlbnQpOwpAQCAtMTIz
LDcgKzE0Myw4IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjpwZW5kaW5nRXZlbnRUaW1lckZp
cmVkKCkKICAgICBBU1NFUlQoIW1fcGVuZGluZ0V2ZW50VGltZXItPmlzQWN0aXZlKCkpOwogICAg
IEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuaXNFbXB0eSgpKTsKIAotICAgIG1fbm9kZXNXaXRoUXVl
dWVkU2Nyb2xsRXZlbnRzLmNsZWFyKCk7CisgICAgbV90YXJnZXRzV2l0aFF1ZXVlZFNjcm9sbEV2
ZW50cy5jbGVhcigpOworICAgIG1fdGFyZ2V0c1dpdGhRdWV1ZWRSZXNpemVFdmVudHMuY2xlYXIo
KTsKIAogICAgIC8vIEluc2VydCBhIG1hcmtlciBmb3Igd2hlcmUgd2Ugc2hvdWxkIHN0b3AuCiAg
ICAgQVNTRVJUKCFtX3F1ZXVlZEV2ZW50cy5jb250YWlucyhudWxscHRyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKaW5kZXggOTczYjBkMTM2N2U3ZjA3NTExMzIyYTk4
YzUyNmQ1ZDNkZjZlNWIwYi4uYjJmMWJhMGExYmU1MjhlNjI2Y2NiZGExY2FmZjFjODU4ZWM3N2U4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KE5vZGUmKTsKKyAgICB2b2lkIGVucXVldWVTY3JvbGxF
dmVudChFdmVudFRhcmdldCYsIGJvb2wgYnViYmxlcywgYm9vbCBjYW5jZWxhYmxlKTsKKyAgICB2
b2lkIGVucXVldWVSZXNpemVFdmVudChFdmVudFRhcmdldCYsIGJvb2wgYnViYmxlcywgYm9vbCBj
YW5jZWxhYmxlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBlbmRpbmdFdmVudFRpbWVyRmlyZWQo
KTsKQEAgLTU4LDcgKzYwLDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7CiAgICAgTGlz
dEhhc2hTZXQ8UmVmUHRyPEV2ZW50Pj4gbV9xdWV1ZWRFdmVudHM7Ci0gICAgSGFzaFNldDxOb2Rl
Kj4gbV9ub2Rlc1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7CisgICAgSGFzaFNldDxFdmVudFRhcmdl
dCo+IG1fdGFyZ2V0c1dpdGhRdWV1ZWRTY3JvbGxFdmVudHM7CisgICAgSGFzaFNldDxFdmVudFRh
cmdldCo+IG1fdGFyZ2V0c1dpdGhRdWV1ZWRSZXNpemVFdmVudHM7CiAgICAgYm9vbCBtX2lzQ2xv
c2VkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGRmNjY5MDllNDZiODI5
YzMzYTIzYTg1ZTQ4ZmEyODc5MTliNTEwM2QuLjk4YTBiYTVhYzliNTkzNzYwZmE5YTJiNjk3M2Nm
NmU1OWY5ZDliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTk0LDYgKzk0LDcg
QEAKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZy5oIgorI2luY2x1ZGUgIlZpc3VhbFZpZXdwb3J0
LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xNjcyLDYgKzE2NzMsMTAgQEAgdm9pZCBGcmFtZVZpZXc6
OnVwZGF0ZUxheW91dFZpZXdwb3J0KCkKICAgICAgICAgICAgIExheW91dFBvaW50IG5ld09yaWdp
biA9IGNvbXB1dGVMYXlvdXRWaWV3cG9ydE9yaWdpbih2aXN1YWxWaWV3cG9ydFJlY3QoKSwgbWlu
U3RhYmxlTGF5b3V0Vmlld3BvcnRPcmlnaW4oKSwgbWF4U3RhYmxlTGF5b3V0Vmlld3BvcnRPcmln
aW4oKSwgbGF5b3V0Vmlld3BvcnQsIFN0aWNrVG9Eb2N1bWVudEJvdW5kcyk7CiAgICAgICAgICAg
ICBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChMYXlvdXRSZWN0KG5ld09yaWdpbiwgbV9s
YXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdC52YWx1ZSgpLnNpemUoKSkpOwogICAgICAgICB9Cisg
ICAgICAgIGlmIChmcmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRBUElFbmFibGVkKCkp
IHsKKyAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50
KCkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT52aXN1YWxWaWV3cG9y
dCgpLT51cGRhdGUoKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NjgwLDYgKzE2ODUsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheW91dFZpZXdwb3J0KCkK
ICAgICAgICAgc2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2luKG5ld0xheW91dFZpZXdwb3J0T3Jp
Z2luKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJsYXlv
dXRWaWV3cG9ydCBjaGFuZ2VkIHRvICIgPDwgbGF5b3V0Vmlld3BvcnRSZWN0KCkpOwogICAgIH0K
KyAgICBpZiAoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0QVBJRW5hYmxlZCgpKSB7
CisgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCkpCisg
ICAgICAgICAgICBkb2N1bWVudC0+ZG9tV2luZG93KCktPnZpc3VhbFZpZXdwb3J0KCktPnVwZGF0
ZSgpOworICAgIH0KIH0KIAogTGF5b3V0UG9pbnQgRnJhbWVWaWV3OjptaW5TdGFibGVMYXlvdXRW
aWV3cG9ydE9yaWdpbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zp
c3VhbFZpZXdwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuY3Bw
CmluZGV4IDYzZTg5N2IxYTUyZmI4YzdhMTM3NzIwMDdjMTRlNzc1Zjg5ZTE3YzcuLjI4NDBlMTJh
MTJlMDJlODM0YTA5MjQ0ZmRlNGU3MDZjY2JlY2M4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlz
dWFsVmlld3BvcnQuY3BwCkBAIC0yOSw2ICsyOSw5IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTIsNTYgKzU1LDcyIEBAIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIFZpc3VhbFZpZXdwb3J0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIqPihtX2Fzc29jaWF0ZWRET01XaW5kb3cpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiB9CiAKLXN0YXRpYyBGcmFtZVZpZXcqIGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChG
cmFtZSogZnJhbWUpCitib29sIFZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Y29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byogdmll
dyA9IGZyYW1lID8gZnJhbWUtPnZpZXcoKSA6IG51bGxwdHI7Ci0gICAgaWYgKHZpZXcpIHsKKyAg
ICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShs
aXN0ZW5lciksIG9wdGlvbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9m
cmFtZSkKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkTGlzdGVuZXJUeXBlSWZOZWVk
ZWQoZXZlbnRUeXBlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgbGF5b3V0
SWZOb25OdWxsKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoZnJhbWUpIHsKICAgICAgICAgQVNT
RVJUKGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpKTsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExh
eW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIHJldHVybiB2aWV3OworICAgIHJldHVybiBmYWxzZTsKIH0KIAogZG91YmxlIFZpc3VhbFZp
ZXdwb3J0OjpvZmZzZXRMZWZ0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogdmlldyA9IGdldEZy
YW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuICh2aWV3
LT52aXN1YWxWaWV3cG9ydFJlY3QoKS54KCkgLSB2aWV3LT5sYXlvdXRWaWV3cG9ydFJlY3QoKS54
KCkpIC8gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAo
IWxheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHJl
dHVybiBtX29mZnNldExlZnQ7CiB9CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6b2Zmc2V0VG9w
KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogdmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElm
Tm9uTnVsbChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuICh2aWV3LT52aXN1YWxWaWV3cG9ydFJl
Y3QoKS55KCkgLSB2aWV3LT5sYXlvdXRWaWV3cG9ydFJlY3QoKS55KCkpIC8gbV9mcmFtZS0+cGFn
ZVpvb21GYWN0b3IoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIWxheW91dElmTm9uTnVsbCht
X2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBtX29mZnNldFRvcDsK
IH0KIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpwYWdlTGVmdCgpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIHZpZXcgPSBnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwobV9mcmFtZSkpCi0g
ICAgICAgIHJldHVybiB2aWV3LT52aXN1YWxWaWV3cG9ydFJlY3QoKS54KCkgLyBtX2ZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpOwotICAgIHJldHVybiAwOworICAgIGlmICghbGF5b3V0SWZOb25OdWxs
KG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gMC4wOworCisgICAgcmV0dXJuIG1fcGFnZUxlZnQ7
CiB9CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6cGFnZVRvcCgpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIHZpZXcgPSBnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwobV9mcmFtZSkpCi0g
ICAgICAgIHJldHVybiB2aWV3LT52aXN1YWxWaWV3cG9ydFJlY3QoKS55KCkgLyBtX2ZyYW1lLT5w
YWdlWm9vbUZhY3RvcigpOwotICAgIHJldHVybiAwOworICAgIGlmICghbGF5b3V0SWZOb25OdWxs
KG1fZnJhbWUpKQorICAgICAgICByZXR1cm4gMC4wOworCisgICAgcmV0dXJuIG1fcGFnZVRvcDsK
IH0KIAogZG91YmxlIFZpc3VhbFZpZXdwb3J0Ojp3aWR0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIHZpZXcgPSBnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwobV9mcmFtZSkpCi0gICAg
ICAgIHJldHVybiB2aWV3LT52aXN1YWxWaWV3cG9ydFJlY3QoKS53aWR0aCgpIC8gbV9mcmFtZS0+
cGFnZVpvb21GYWN0b3IoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIWxheW91dElmTm9uTnVs
bChtX2ZyYW1lKSkKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHJldHVybiBtX3dpZHRoOwog
fQogCiBkb3VibGUgVmlzdWFsVmlld3BvcnQ6OmhlaWdodCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIHZpZXcgPSBnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwobV9mcmFtZSkpCi0gICAg
ICAgIHJldHVybiB2aWV3LT52aXN1YWxWaWV3cG9ydFJlY3QoKS5oZWlnaHQoKSAvIG1fZnJhbWUt
PnBhZ2Vab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFsYXlvdXRJZk5vbk51
bGwobV9mcmFtZSkpCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICByZXR1cm4gbV9oZWlnaHQ7
CiB9CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6c2NhbGUoKSBjb25zdApAQCAtMTEwLDExICsx
MjksNjggQEAgZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpzY2FsZSgpIGNvbnN0CiAgICAgaWYgKCFt
X2ZyYW1lIHx8ICFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gMTsKIAot
ICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhEb2N1bWVu
dDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKLSAgICAgICAgcmV0dXJuIHBh
Z2UtPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tz
OjpTeW5jaHJvbm91c2x5KTsKKyAgICByZXR1cm4gbV9zY2FsZTsKK30KKwordm9pZCBWaXN1YWxW
aWV3cG9ydDo6dXBkYXRlKCkKK3sKKyAgICBkb3VibGUgb2Zmc2V0TGVmdCA9IDAuMDsKKyAgICBk
b3VibGUgb2Zmc2V0VG9wID0gMC4wOworICAgIG1fcGFnZUxlZnQgPSAwLjA7CisgICAgbV9wYWdl
VG9wID0gMC4wOworICAgIGRvdWJsZSB3aWR0aCA9IDAuMDsKKyAgICBkb3VibGUgaGVpZ2h0ID0g
MC4wOworICAgIGRvdWJsZSBzY2FsZSA9IDEuMDsKKworICAgIGlmIChtX2ZyYW1lKSB7CisgICAg
ICAgIGF1dG8qIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CisgICAgICAgIGlmICh2aWV3KSB7Cisg
ICAgICAgICAgICBhdXRvIHZpc3VhbFZpZXdwb3J0UmVjdCA9IHZpZXctPnZpc3VhbFZpZXdwb3J0
UmVjdCgpOworICAgICAgICAgICAgYXV0byBsYXlvdXRWaWV3cG9ydFJlY3QgPSB2aWV3LT5sYXlv
dXRWaWV3cG9ydFJlY3QoKTsKKyAgICAgICAgICAgIGF1dG8gcGFnZVpvb21GYWN0b3IgPSBtX2Zy
YW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgICAgICAgICAgb2Zmc2V0TGVmdCA9ICh2aXN1YWxW
aWV3cG9ydFJlY3QueCgpIC0gbGF5b3V0Vmlld3BvcnRSZWN0LngoKSkgLyBwYWdlWm9vbUZhY3Rv
cjsKKyAgICAgICAgICAgIG9mZnNldFRvcCA9ICh2aXN1YWxWaWV3cG9ydFJlY3QueSgpIC0gbGF5
b3V0Vmlld3BvcnRSZWN0LnkoKSkgLyBwYWdlWm9vbUZhY3RvcjsKKyAgICAgICAgICAgIG1fcGFn
ZUxlZnQgPSB2aXN1YWxWaWV3cG9ydFJlY3QueCgpIC8gcGFnZVpvb21GYWN0b3I7CisgICAgICAg
ICAgICBtX3BhZ2VUb3AgPSB2aXN1YWxWaWV3cG9ydFJlY3QueSgpIC8gcGFnZVpvb21GYWN0b3I7
CisgICAgICAgICAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0UmVjdC53aWR0aCgpIC8gcGFnZVpv
b21GYWN0b3I7CisgICAgICAgICAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydFJlY3QuaGVpZ2h0
KCkgLyBwYWdlWm9vbUZhY3RvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXV0byogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIHNjYWxlID0gcGFnZS0+cGFnZVNjYWxlRmFj
dG9yKCk7CisgICAgfQorCisgICAgaWYgKG1fb2Zmc2V0TGVmdCAhPSBvZmZzZXRMZWZ0IHx8IG1f
b2Zmc2V0VG9wICE9IG9mZnNldFRvcCkgeworICAgICAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsK
KyAgICAgICAgbV9vZmZzZXRMZWZ0ID0gb2Zmc2V0TGVmdDsKKyAgICAgICAgbV9vZmZzZXRUb3Ag
PSBvZmZzZXRUb3A7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIGlmIChtX3dpZHRoICE9IHdp
ZHRoIHx8IG1faGVpZ2h0ICE9IGhlaWdodCB8fCBtX3NjYWxlICE9IHNjYWxlKSB7CisgICAgICAg
IGVucXVldWVSZXNpemVFdmVudCgpOworICAgICAgICBtX3dpZHRoID0gd2lkdGg7CisgICAgICAg
IG1faGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtX3NjYWxlID0gc2NhbGU7CisgICAgfQorfQor
Cit2b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlUmVzaXplRXZlbnQoKQoreworICAgIGlmICgh
bV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBidWJibGVzID0gZmFsc2U7Cisg
ICAgYm9vbCBjYW5jZWxhYmxlID0gZmFsc2U7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZl
bnRRdWV1ZSgpLmVucXVldWVSZXNpemVFdmVudCgqdGhpcywgYnViYmxlcywgY2FuY2VsYWJsZSk7
Cit9CisKK3ZvaWQgVmlzdWFsVmlld3BvcnQ6OmVucXVldWVTY3JvbGxFdmVudCgpCit7CisgICAg
aWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGJ1YmJsZXMgPSBmYWxz
ZTsKKyAgICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVNjcm9sbEV2ZW50KCp0aGlzLCBidWJibGVzLCBjYW5jZWxh
YmxlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxW
aWV3cG9ydC5oCmluZGV4IDE1ZjdmZTc4YWIwMGQwMGZkYjk5NjBmNmY4ZWZhZjIzMjkwNzEzZmQu
LmI4OTIzMTg0M2E2MGYxZWJlNWYzNmM2MDk1MzA0MjJmZGYxNTNmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Zpc3VhbFZpZXdwb3J0LmgKQEAgLTM3LDggKzM3LDEwIEBAIGNsYXNzIFZpc3VhbFZpZXdw
b3J0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8VmlzdWFsVmlld3BvcnQ+LCBwdWJsaWMgRXZl
bnRUYXJnCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaXN1YWxWaWV3cG9ydD4gY3JlYXRlKEZy
YW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaXN1YWxWaWV3cG9ydChmcmFtZSkp
OyB9CiAKKyAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVu
ZXI+JiYsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJikgZmluYWw7CiAKICAgICBkb3Vi
bGUgb2Zmc2V0TGVmdCgpIGNvbnN0OwogICAgIGRvdWJsZSBvZmZzZXRUb3AoKSBjb25zdDsKQEAg
LTQ4LDYgKzUwLDggQEAgcHVibGljOgogICAgIGRvdWJsZSBoZWlnaHQoKSBjb25zdDsKICAgICBk
b3VibGUgc2NhbGUoKSBjb25zdDsKIAorICAgIHZvaWQgdXBkYXRlKCk7CisKICAgICB1c2luZyBS
ZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKQEAgLTU2LDYg
KzYwLDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQor
CisgICAgdm9pZCBlbnF1ZXVlUmVzaXplRXZlbnQoKTsKKyAgICB2b2lkIGVucXVldWVTY3JvbGxF
dmVudCgpOworCisgICAgZG91YmxlIG1fb2Zmc2V0TGVmdCB7IDAuMCB9OworICAgIGRvdWJsZSBt
X29mZnNldFRvcCB7IDAuMCB9OworICAgIGRvdWJsZSBtX3BhZ2VMZWZ0IHsgMC4wIH07CisgICAg
ZG91YmxlIG1fcGFnZVRvcCB7IDAuMCB9OworICAgIGRvdWJsZSBtX3dpZHRoIHsgMC4wIH07Cisg
ICAgZG91YmxlIG1faGVpZ2h0IHsgMC4wIH07CisgICAgZG91YmxlIG1fc2NhbGUgeyAxLjAgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCmluZGV4IDJiYzRkMjA4N2U1YjgyOWY0ZTFkMzliMjk4NjEyYjkwYmEwNmE5
N2QuLmFmNzRkYTNlN2ZjZWY3ODY2MjFiZDcwNjU5YzljNDFlOTM1MmI1NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgU3Vi
cmVzb3VyY2VJbnRlZ3JpdHlFbmFibGVkOgogCiBWaXN1YWxWaWV3cG9ydEFQSUVuYWJsZWQ6CiAg
IHR5cGU6IGJvb2wKLSAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBkZWZhdWx0VmFsdWU6IERFRkFV
TFRfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTX0VOQUJMRUQKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJW
aXN1YWxWaWV3cG9ydEFQSSIKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFZp
c3VhbCBWaWV3cG9ydCBBUEkiCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYTQz
N2EzYmQwMzBhM2VmM2Q0YjY2MzhmMmM5ZDk5NWJkZGQzNWY5Li5hYzdhNmFlMzVhMjlhMGEzNGZk
YjI5NGM0OGFiN2RhODc5YmU5MjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDEtMDQg
IEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBWaXN1
YWxWaWV3cG9ydCBBUEkgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzkzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFZpc3VhbCBWaWV3cG9ydCBBUEkgZXZlbnRzLgor
CisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2
ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1m
aXJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwt
ZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zpc3VhbC12
aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNraXBwZWQgdGVzdHMgdGhhdCB1c2Ug
VUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2FsZSwgc2luY2UgdGhpcyBpc24ndCBpbXBsZW1l
bnRlZCBvbiBHVEsuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgIFNraXBwZWQgdGVzdCB0aGF0IHJlc2l6ZXMgYSB3aW5kb3csIHNpbmNlIHRoaXMgaXNu
J3Qgc3VwcG9ydGVkIG9uIGlPUy4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgU2tpcHBlZCB0ZXN0cyB0aGF0IHVzZSBVSVNjcmlwdENvbnRyb2xsZXI6
Onpvb21Ub1NjYWxlLCBzaW5jZSB0aGlzIGlzbid0IGltcGxlbWVudGVkIG9uIFdpbmRvd3MuCisK
IDIwMTgtMDEtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU1ZHIGxpZ2h0aW5nIGZpbHRlciBsaWdodHMgYXJlIGluIHRoZSB3cm9uZyBjb29yZGlu
YXRlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMjc2YWE1NjY5ZTkz
OGZkMzEyMjViNTJiNGFhYzViYmU1ZTY1YzdlYi4uNWJlNjExMDFkYzJmZTY5NWQ3ZjYwOGQ4NTZh
OTNiYmU5NzQwNGRkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTgtMDEtMDQgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEltcGxlbWVudCBWaXN1YWxWaWV3cG9ydCBBUEkgZXZlbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwZWN0YXRpb24gZm9yIGEg
dmlld3BvcnQgV1BUIHRoYXQgbm93IHBhc3Nlcy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy92aWV3cG9ydC92aWV3cG9ydC1yZXNpemUtZXZlbnQtb24tbG9hZC1vdmVyZmxvd2luZy1w
YWdlLWV4cGVjdGVkLnR4dDoKKwogMjAxOC0wMS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWVtb3J5IGNhY2hlIHNob3VsZCBub3QgcmV1c2UgcmVzb3Vy
Y2VzIHdpdGggZGlmZmVyZW50IGNyZWRlbnRpYWwgZmV0Y2ggb3B0aW9uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZp
cmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTc4Y2FkZTVjMzI2ZmM1OTkzZGI3Nzg3ZTAx
NDYxNjdiN2FhMmVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwt
dmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
KworUEFTUyBWZXJpZnkgYSByZXNpemUgZXZlbnQgZ2V0cyBmaXJlZCBvbiB3aW5kb3cudmlzdWFs
Vmlld3BvcnQgYWZ0ZXIgcGluY2gtem9vbSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1m
aXJlZC13aW5kb3ctcmVzaXplZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUxNmM2ZTY5ZWJj
ZDM5ZjE5YzZiMGJiNDU3ODk2ZmQ5ZTI3MTBmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJlZC13aW5kb3ctcmVzaXpl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVmVyaWZ5IHRoYXQgYSByZXNp
emUgZXZlbnQgZ2V0cyBmaXJlZCB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZC4gCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJl
ZC13aW5kb3ctcmVzaXplZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQv
cmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJjMmI1
YTJhNjI0M2Y2Nzk1YjE0MmFhMjczOTQxNjBjYTFmZGI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJlZC13aW5kb3ct
cmVzaXplZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRWaXN1YWxWaWV3cG9ydEVuYWJsZWQodHJ1ZSk7CisKKyAgICB2YXIgdGVzdCA9IGFzeW5j
X3Rlc3QoJ1ZlcmlmeSB0aGF0IGEgcmVzaXplIGV2ZW50IGdldHMgZmlyZWQgd2hlbiB0aGUgd2lu
ZG93IGlzIHJlc2l6ZWQuJyk7CisKKyAgICBmdW5jdGlvbiByZXNpemVIYW5kbGVyKCkgeworICAg
ICAgICB0ZXN0LmRvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHdpbmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdyZXNp
emUnLCByZXNpemVIYW5kbGVyKTsKKyAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpbmRvdy5vdXRl
cldpZHRoIC0gNDAsIHdpbmRvdy5vdXRlckhlaWdodCArIDQwKTsKKyAgICB9OworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZl
bnQtZmlyZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1l
dmVudC1maXJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNzI2M2MyMTJmMzRkNTA5YjcyNWM0MDcwMDEw
YmFlOTc3M2U4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12
aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzdHlsZT4KKyAgYm9keSB7CisgICAgaGVpZ2h0OiAyMDAwcHg7CisgICAgd2lk
dGg6IDIwMDBweDsKKyAgfQorPC9zdHlsZT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdmFyIHBhZ2VT
Y2FsZUZhY3RvciA9IDI7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldFZpc3VhbFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKworICAgIHZh
ciB0ZXN0ID0gYXN5bmNfdGVzdCgnVmVyaWZ5IGEgcmVzaXplIGV2ZW50IGdldHMgZmlyZWQgb24g
d2luZG93LnZpc3VhbFZpZXdwb3J0IGFmdGVyIHBpbmNoLXpvb20nKTsKKworICAgIGZ1bmN0aW9u
IHJlc2l6ZUhhbmRsZXIoKSB7CisgICAgICAgIHRlc3QuZG9uZSgpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGdldFVJU2NyaXB0KCkgeworICAgICAgICByZXR1cm4gYChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHVpQ29udHJvbGxlci56b29tVG9TY2FsZSgke3BhZ2VTY2FsZUZhY3Rvcn0sIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRl
KHVpQ29udHJvbGxlci56b29tU2NhbGUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7
YDsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHdp
bmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVIYW5k
bGVyKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5j
dGlvbigpIHt9KTsKKyAgICB9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvc2Nyb2xsLWV2ZW50LWZpcmVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMzFiNTJiOTVjZDJjZjE1NTY0ZDRlYmRiMzhkZDY3OTE3ODk5NjA0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvc2Ny
b2xsLWV2ZW50LWZpcmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBWZXJp
ZnkgdGhhdCBhIHNjcm9sbCBldmVudCBnZXRzIGZpcmVkIG9uIHdpbmRvdy52aXN1YWxWaWV3cG9y
dCB3aGVuIGl0cyBvZmZzZXQgY2hhbmdlcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC92aXN1YWwtdmlld3BvcnQvc2Nyb2xsLWV2ZW50LWZpcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDBkYjAyMWY2NDBjYWMyNDE1MjM0ZDRjZGZhZTdhMzBmODIwNGM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvc2Nyb2xsLWV2ZW50LWZpcmVkLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgIGJvZHkgewor
ICAgIGhlaWdodDogMjAwMHB4OworICAgIHdpZHRoOiAyMDAwcHg7CisgIH0KKzwvc3R5bGU+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorICAgIHZhciBwYWdlU2NhbGVGYWN0b3IgPSAyOworCisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRWaXN1YWxWaWV3
cG9ydEVuYWJsZWQodHJ1ZSk7CisKKyAgICB2YXIgdGVzdCA9IGFzeW5jX3Rlc3QoJ1ZlcmlmeSB0
aGF0IGEgc2Nyb2xsIGV2ZW50IGdldHMgZmlyZWQgb24gd2luZG93LnZpc3VhbFZpZXdwb3J0IHdo
ZW4gaXRzIG9mZnNldCBjaGFuZ2VzJyk7CisKKyAgICBmdW5jdGlvbiBzY3JvbGxFdmVudEhhbmRs
ZXIoKSB7CisgICAgICAgIHRlc3QuZG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvQWZ0
ZXJab29taW5nKCkgeworICAgICAgICB3aW5kb3cudmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0
ZW5lcignc2Nyb2xsJywgc2Nyb2xsRXZlbnRIYW5kbGVyKTsKKyAgICAgICAgd2luZG93LnNjcm9s
bFRvKDEwMDAsIDEwMDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkgewor
ICAgICAgICByZXR1cm4gYChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci56
b29tVG9TY2FsZSgke3BhZ2VTY2FsZUZhY3Rvcn0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKHVpQ29udHJvbGxlci56b29tU2NhbGUp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pKCk7YDsKKyAgICB9CisKKyAgICB3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0
VUlTY3JpcHQoKSwgZG9BZnRlclpvb21pbmcpOworICAgIH07Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlld3BvcnQv
dmlld3BvcnQtcmVzaXplLWV2ZW50LW9uLWxvYWQtb3ZlcmZsb3dpbmctcGFnZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZXdwb3J0
L3ZpZXdwb3J0LXJlc2l6ZS1ldmVudC1vbi1sb2FkLW92ZXJmbG93aW5nLXBhZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDAwZWYxNmRlOGJiYjQyNTZlZjdjMmUzNjM4MWEyYzZjMjJhZmU4ZWUuLjRmZDYz
NzBjMDEyOTJjYmQzODJlODhjZjBkMzBlMGFkZTI2NmQ0OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlld3BvcnQvdmlld3BvcnQtcmVz
aXplLWV2ZW50LW9uLWxvYWQtb3ZlcmZsb3dpbmctcGFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWV3cG9ydC92aWV3cG9y
dC1yZXNpemUtZXZlbnQtb24tbG9hZC1vdmVyZmxvd2luZy1wYWdlLWV4cGVjdGVkLnR4dApAQCAt
Myw1ICszLDUgQEAgVmlld3BvcnQ6IFJlc2l6ZSBFdmVudCBPbiBMb2FkIE92ZXJmbG93aW5nIFBh
Z2UKIFRlc3QgRGVzY3JpcHRpb246IFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgd2UgZmlyZSBhIHJl
c2l6ZSBldmVudCBhZ2FpbnN0IHdpbmRvdy52aXN1YWxWaWV3cG9ydCBpZiB0aGUgcGFnZSBoYXMg
b3ZlcmZsb3cgKHNpbmNlIHRoaXMgY3JlYXRlcyBhIHNjcm9sbGJhciBhbmQgdGh1cyBjaGFuZ2Vz
IHRoZSB2aWV3cG9ydCBzaXplKS4KIAogCi1GQUlMIFJlc2l6ZSBldmVudCBmaXJlZCBleGFjdGx5
IG9uY2UgYWdhaW5zdCB3aW5kb3cudmlzdWFsVmlld3BvcnQgaWYgc2Nyb2xsYmFycyBhZmZlY3Qg
bGF5b3V0LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxIGJ1dCBnb3QgMAorUEFTUyBSZXNpemUg
ZXZlbnQgZmlyZWQgZXhhY3RseSBvbmNlIGFnYWluc3Qgd2luZG93LnZpc3VhbFZpZXdwb3J0IGlm
IHNjcm9sbGJhcnMgYWZmZWN0IGxheW91dC4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggODIwMDA5MDYxOTE3YzdkMmJlOWIzNWYxMmNhODYwOWE5ZTU5
MWFmMy4uYTRmNTUzZjE5MDg4N2JmYTEyN2JmYzg5NWNiMGZiYWMwNjdiNTQzMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk2OCw3ICs5NjgsOSBAQCB3
ZWJraXQub3JnL2IvMTUzODMzIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWluc2Vy
dC1yZXBsYWNlbWVudC5odG1sIFsgUwogd2Via2l0Lm9yZy9iLzE1MzgzMyBmYXN0L2V2ZW50cy9p
bnB1dC1ldmVudC1pbnNlcnQtcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQogCiAjIFNraXAgdGVz
dHMgcmVxdWlyaW5nIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUKK3dlYmtpdC5vcmcv
Yi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQvcnRsLXpvb21l
ZC1yZWN0cy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTY4MDUwIGZhc3QvdmlzdWFsLXZp
ZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTY4
MDUwIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3ZpZXdwb3J0LWRpbWVuc2lvbnMtZXhjbHVkZS1jdXN0
b20tc2Nyb2xsYmFycy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTY4MDUwIGZhc3Qvdmlz
dWFsLXZpZXdwb3J0L3ZpZXdwb3J0LWRpbWVuc2lvbnMtZXhjbHVkZS1zY3JvbGxiYXJzLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQvdmlld3Bv
cnQtZGltZW5zaW9ucy1pZnJhbWUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkY2NjNGEyMGIzYmI5ODQzNzdlZjI0ZTk2YjNjZmNm
M2JiNDVmMDA0Li4zZjZlODY1M2MxZjhiNWZhNzQ2YTliMTBjOTgwYmYxNzUyZWRiNDE2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjAzNyw2ICsyMDM3
LDcgQEAgZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZmxleC1jb250ZW50LXNpemVkLWNvbHVtbnMtcmVz
aXplLmh0bWwgWyBTa2lwIF0KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLXVwZGF0ZS1z
Y3JvbGxiYXJzLmh0bWwgWyBTa2lwIF0KIGZhc3QvZHluYW1pYy93aW5kb3ctcmVzaXplLXNjcm9s
bGJhcnMtdGVzdC5odG1sIFsgU2tpcCBdCiBmYXN0L2ltYWdlcy9hbmltYXRlZC1naWYtd2luZG93
LXJlc2l6aW5nLmh0bWwgWyBTa2lwIF0KK2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVu
dC1maXJlZC13aW5kb3ctcmVzaXplZC5odG1sIFsgU2tpcCBdCiBsb2FkZXIvZ28tYmFjay10by1k
aWZmZXJlbnQtd2luZG93LXNpemUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE3ODczOSBj
c3MzL3ZpZXdwb3J0LXBlcmNlbnRhZ2UtbGVuZ3Rocy92aWV3cG9ydC1wZXJjZW50YWdlLWxlbmd0
aHMtYW5vbnltb3VzLWJsb2NrLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNzg3MzkgY3Nz
My92aWV3cG9ydC1wZXJjZW50YWdlLWxlbmd0aHMvdmlld3BvcnQtcGVyY2VudGFnZS1sZW5ndGhz
LXBlcmNlbnQtc2l6ZS1jaGlsZC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA5NmNkNDU3ZGY3MTRjNzNkOTA5MmM4Y2Y5MTZlNDc0
ZmMzMTkwNzEuLjEyMGY2MjM2ZjkxOTQ1MDE2ZDFiMTdjOWMxZDU2YWRjODJkYTM2OGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC02MzAsNyArNjMwLDkg
QEAgd2Via2l0Lm9yZy9iLzE1ODgzNiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Vu
Y3J5cHRlZC1tZWRpYSBbIFNraXAgXQogaHR0cC93cHQvY3JlZGVudGlhbC1tYW5hZ2VtZW50LyBb
IFNraXAgXQogCiAjIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUgaXMgbm90IGltcGxl
bWVudGVkIG9uIFdpbmRvd3MuCit3ZWJraXQub3JnL2IvMTgwNDI0IGZhc3QvdmlzdWFsLXZpZXdw
b3J0L3Jlc2l6ZS1ldmVudC1maXJlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTgwNDI0
IGZhc3QvdmlzdWFsLXZpZXdwb3J0L3J0bC16b29tZWQtcmVjdHMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzE4MDQyNCBmYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4MDQyNCBmYXN0L3Zpc3VhbC12aWV3cG9ydC92
aWV3cG9ydC1kaW1lbnNpb25zLWV4Y2x1ZGUtY3VzdG9tLXNjcm9sbGJhcnMuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzE4MDQyNCBmYXN0L3Zpc3VhbC12aWV3cG9ydC92aWV3cG9ydC1kaW1l
bnNpb25zLWV4Y2x1ZGUtc2Nyb2xsYmFycy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTgw
NDI0IGZhc3QvdmlzdWFsLXZpZXdwb3J0L3ZpZXdwb3J0LWRpbWVuc2lvbnMtaWZyYW1lLmh0bWwg
WyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330722</attachid>
            <date>2018-01-08 12:35:44 -0800</date>
            <delta_ts>2018-01-09 02:53:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179386-20180108153543.patch</filename>
            <type>text/plain</type>
            <size>29153</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRmNmM5Y2VkYzk4YWRh
ZjZlMjc3NDY2MjU3ODhkOTMxYjYyNjc3NS4uZDkzNTQ4ZjE3NmY3MzAyMjY5ZTc1NjUyMTJkNjI2
MTJkMzY1MTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTAxLTA4ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVmlzdWFsVmll
d3BvcnQgQVBJIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IHRoZSBldmVudHMgKHJlc2l6ZSBhbmQgc2Nyb2xsKSBkZWZpbmVk
IGJ5IHRoZSBWaXN1YWwgVmlld3BvcnQgQVBJCisgICAgICAgIChodHRwczovL3dpY2cuZ2l0aHVi
LmlvL3Zpc3VhbC12aWV3cG9ydC8jZXZlbnRzKS4KKworICAgICAgICBUaGlzIGlzIGJlaGluZCB0
aGUgVmlzdWFsVmlld3BvcnRBUEkgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZy4KKworICAgICAg
ICBJbiBvcmRlciB0byBkZXRlY3Qgd2hlbiBldmVudHMgbmVlZCB0byBiZSBmaXJlZCwgY2hhbmdl
IHRoZSBjb21wdXRhdGlvbiBvZgorICAgICAgICBWaXN1YWwgVmlld3BvcnQgYXR0cmlidXRlcyB0
byBoYXBwZW4gd2hlbmV2ZXIgdGhlIGxheW91dCB2aWV3cG9ydCBpcyB1cGRhdGVkCisgICAgICAg
IHJhdGhlciB0aGFuIG9ubHkgb24tZGVtYW5kLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Zpc3Vh
bC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2luZG93LXJlc2l6ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRy
YWNraW5nIHJlc2l6ZSBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlU2Nyb2xsRXZlbnQpOgor
ICAgICAgICBGYWN0b3JlZCBvdXQgb2YgZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCBzbyB0
aGF0IHRoaXMgbG9naWMgY2FuIGJlIHJldXNlZAorICAgICAgICBmb3IgVmlzdWFsIFZpZXdwb3J0
IHNjcm9sbCBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVu
cXVldWVSZXNpemVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6
OnBlbmRpbmdFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnVwZGF0ZUxheW91dFZpZXdwb3J0KToKKyAgICAgICAgKiBwYWdlL1Zpc3VhbFZp
ZXdwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmxheW91dElmTm9uTnVsbCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6b2Zmc2V0TGVmdCBjb25zdCk6CisgICAgICAgIFJlbW92
ZSBhdHRyaWJ1dGUgY29tcHV0YXRpb24gbG9naWMgc2luY2UgdGhpcyBub3cgaGFwcGVucyBkdXJp
bmcgdXBkYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6b2Zmc2V0VG9w
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6cGFnZUxl
ZnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjpwYWdl
VG9wIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6d2lk
dGggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjpoZWln
aHQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjpzY2Fs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6dXBkYXRlKToKKyAg
ICAgICAgQWRkZWQuIENvbXB1dGVzIGFsbCBvZiB0aGUgVmlzdWFsIFZpZXdwb3J0IGF0dHJpYnV0
ZXMgYW5kIGRldGVybWluZXMKKyAgICAgICAgd2hldGhlciBldmVudHMgbmVlZCB0byBiZSBmaXJl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlUmVzaXplRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VmlzdWFsVmlld3BvcnQ6OmVucXVldWVTY3JvbGxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwpOiBEZWxl
dGVkLgorICAgICAgICAqIHBhZ2UvVmlzdWFsVmlld3BvcnQuaDoKKwogMjAxOC0wMS0wOCAgSmVy
ZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgU3RhbmRhcmQgY29udHJv
bHMgc29tZXRpbWVzIHNheSB2aWRlbyBpcyBpbiBwaXAgd2hlbiBpdCBpc250LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBhZDZiMzYyOWRlYmI3ZTBkYTg1MWNhMDQ0ZDE1Y2E0MDRhZjU0MzI0Li5iNTI3OGY2MTYzZDI4
ZmI5YmQ5NDdmYjIzNjZmNmU5N2JjNjE1M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE4LTAxLTA4ICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBs
ZW1lbnQgVmlzdWFsVmlld3BvcnQgQVBJIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBW
aXN1YWxWaWV3cG9ydEFQSSBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIHRvCisgICAgICAgIERF
RkFVTFRfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTX0VOQUJMRUQuIFRoaXMgcGF0Y2ggY29tcGxldGVz
IHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBvZiB0aGlzIGZlYXR1cmUgYXMgc3BlY2lmaWVk
IGJ5IGh0dHBzOi8vd2ljZy5naXRodWIuaW8vdmlzdWFsLXZpZXdwb3J0Lywgc28gdGhpcworICAg
ICAgICBmZWF0dXJlIGlzIG5vdyByZWFkeSBmb3Igd2lkZXIgdGVzdGluZy4KKworICAgICAgICAq
IFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCiAyMDE4LTAxLTA4ICBGcmVkZXJpYyBXYW5n
ICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRl
ciByMjI2MjExLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggN2QyZjlkMjE5MjA1ZjhlNTVm
MjgxZTUwY2Q2ODdkNDFkOGYwNDgzMi4uYTAwNGQ4YjViOTZmNWVlZDhjNGJjMDBjNWJiOTZjNzI2
OTgzMDZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NDY0LDYgKzQ0NjQsOCBAQCB2
b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZPUkNFRE9XTl9MSVNURU5FUik7
CiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRtb3VzZWZvcmNl
dXBFdmVudCkKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZPUkNFVVBfTElTVEVORVIpOworICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQpCisgICAgICAg
IGFkZExpc3RlbmVyVHlwZShSRVNJWkVfTElTVEVORVIpOwogfQogCiBDU1NTdHlsZURlY2xhcmF0
aW9uKiBEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNGQyZWQ2YmQ2ODhhYzY3MTVhMTM1NDJkMzJhNzk1ZDIw
Nzg5OTdjZS4uOWU2ZTJiM2M0OTQ5MDU0YjhhZjdhMjUxZjJmOTU1ZGQ1ZGEwM2NjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTgyNSw3ICs4MjUsOCBAQCBwdWJsaWM6CiAgICAgICAgIEZPUkNF
V0lMTEJFR0lOX0xJU1RFTkVSICAgICAgICAgICAgICA9IDEgPDwgMTMsCiAgICAgICAgIEZPUkNF
Q0hBTkdFRF9MSVNURU5FUiAgICAgICAgICAgICAgICA9IDEgPDwgMTQsCiAgICAgICAgIEZPUkNF
RE9XTl9MSVNURU5FUiAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTUsCi0gICAgICAgIEZPUkNF
VVBfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTYKKyAgICAgICAgRk9SQ0VV
UF9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNiwKKyAgICAgICAgUkVTSVpF
X0xJU1RFTkVSICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNwogICAgIH07CiAKICAgICBi
b29sIGhhc0xpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdCB7IHJl
dHVybiAobV9saXN0ZW5lclR5cGVzICYgbGlzdGVuZXJUeXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCBmNjZmNDM3NzIwNWMzMjZlYzgzNjYxNzA2
NWZjOTc5YThjNmU0NzU0Li42ZjA1ZDI0MDdiOWE3MTUyZTJhOTNkMWIxZjlhZjE1ZDYwMmQ1YTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtODUsMjQg
Kzg1LDQ0IEBAIHZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KE5vZGUmIHRhcmdldCkKIHsKICAgICBBU1NFUlQoJnRhcmdldC5kb2N1bWVudCgpID09
ICZtX2RvY3VtZW50KTsKIAorICAgIC8vIFBlciB0aGUgVzNDIENTU09NIFZpZXcgTW9kdWxlLCBz
Y3JvbGwgZXZlbnRzIGZpcmVkIGF0IHRoZSBkb2N1bWVudCBzaG91bGQgYnViYmxlLCBvdGhlcnMg
c2hvdWxkIG5vdC4KKyAgICBib29sIGJ1YmJsZXMgPSB0YXJnZXQuaXNEb2N1bWVudE5vZGUoKTsK
KyAgICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKKyAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQodGFy
Z2V0LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKK30KKwordm9pZCBEb2N1bWVudEV2ZW50UXVldWU6
OmVucXVldWVTY3JvbGxFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBib29sIGJ1YmJsZXMsIGJv
b2wgY2FuY2VsYWJsZSkKK3sKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX2RvY3VtZW50Lmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6U0NST0xMX0xJ
U1RFTkVSKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX25vZGVzV2l0aFF1ZXVlZFNj
cm9sbEV2ZW50cy5hZGQoJnRhcmdldCkuaXNOZXdFbnRyeSkKKyAgICBpZiAoIW1fdGFyZ2V0c1dp
dGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKCZ0YXJnZXQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIFBlciB0aGUgVzNDIENTU09NIFZpZXcgTW9kdWxlLCBzY3JvbGwgZXZl
bnRzIGZpcmVkIGF0IHRoZSBkb2N1bWVudCBzaG91bGQgYnViYmxlLCBvdGhlcnMgc2hvdWxkIG5v
dC4KLSAgICBib29sIGJ1YmJsZXMgPSB0YXJnZXQuaXNEb2N1bWVudE5vZGUoKTsKLSAgICBib29s
IGNhbmNlbGFibGUgPSBmYWxzZTsKLQogICAgIFJlZjxFdmVudD4gc2Nyb2xsRXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgYnViYmxlcywgY2FuY2VsYWJsZSk7
CiAgICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdldCgmdGFyZ2V0KTsKICAgICBlbnF1ZXVlRXZlbnQo
V1RGTW92ZShzY3JvbGxFdmVudCkpOwogfQogCit2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6ZW5x
dWV1ZVJlc2l6ZUV2ZW50KEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGJvb2wgYnViYmxlcywgYm9vbCBj
YW5jZWxhYmxlKQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIW1fZG9jdW1lbnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpSRVNJWkVfTElTVEVO
RVIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fdGFyZ2V0c1dpdGhRdWV1ZWRSZXNp
emVFdmVudHMuYWRkKCZ0YXJnZXQpLmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZjxFdmVudD4gcmVzaXplRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNp
emVFdmVudCwgYnViYmxlcywgY2FuY2VsYWJsZSk7CisgICAgcmVzaXplRXZlbnQtPnNldFRhcmdl
dCgmdGFyZ2V0KTsKKyAgICBlbnF1ZXVlRXZlbnQoV1RGTW92ZShyZXNpemVFdmVudCkpOworfQor
CiBib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQmIGV2ZW50KQogewog
ICAgIGJvb2wgZm91bmQgPSBtX3F1ZXVlZEV2ZW50cy5yZW1vdmUoJmV2ZW50KTsKQEAgLTEyMyw3
ICsxNDMsOCBAQCB2b2lkIERvY3VtZW50RXZlbnRRdWV1ZTo6cGVuZGluZ0V2ZW50VGltZXJGaXJl
ZCgpCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudFRpbWVyLT5pc0FjdGl2ZSgpKTsKICAgICBB
U1NFUlQoIW1fcXVldWVkRXZlbnRzLmlzRW1wdHkoKSk7CiAKLSAgICBtX25vZGVzV2l0aFF1ZXVl
ZFNjcm9sbEV2ZW50cy5jbGVhcigpOworICAgIG1fdGFyZ2V0c1dpdGhRdWV1ZWRTY3JvbGxFdmVu
dHMuY2xlYXIoKTsKKyAgICBtX3RhcmdldHNXaXRoUXVldWVkUmVzaXplRXZlbnRzLmNsZWFyKCk7
CiAKICAgICAvLyBJbnNlcnQgYSBtYXJrZXIgZm9yIHdoZXJlIHdlIHNob3VsZCBzdG9wLgogICAg
IEFTU0VSVCghbV9xdWV1ZWRFdmVudHMuY29udGFpbnMobnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCmluZGV4IDk3M2IwZDEzNjdlN2YwNzUxMTMyMmE5OGM1
MjZkNWQzZGY2ZTViMGIuLmIyZjFiYTBhMWJlNTI4ZTYyNmNjYmRhMWNhZmYxYzg1OGVjNzdlOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5xdWV1
ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChOb2RlJik7CisgICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZl
bnQoRXZlbnRUYXJnZXQmLCBib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSk7CisgICAgdm9p
ZCBlbnF1ZXVlUmVzaXplRXZlbnQoRXZlbnRUYXJnZXQmLCBib29sIGJ1YmJsZXMsIGJvb2wgY2Fu
Y2VsYWJsZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwZW5kaW5nRXZlbnRUaW1lckZpcmVkKCk7
CkBAIC01OCw3ICs2MCw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX3BlbmRpbmdFdmVudFRpbWVyOwogICAgIExpc3RI
YXNoU2V0PFJlZlB0cjxFdmVudD4+IG1fcXVldWVkRXZlbnRzOwotICAgIEhhc2hTZXQ8Tm9kZSo+
IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOworICAgIEhhc2hTZXQ8RXZlbnRUYXJnZXQq
PiBtX3RhcmdldHNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOworICAgIEhhc2hTZXQ8RXZlbnRUYXJn
ZXQqPiBtX3RhcmdldHNXaXRoUXVldWVkUmVzaXplRXZlbnRzOwogICAgIGJvb2wgbV9pc0Nsb3Nl
ZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBlNGMxZGNhNDFkNGE4NDQ1
NzcxMjc5ZDQyODVlZGFhNGVjMTc5YjU4Li5jYjhkZDFhMjEyYzk4NjBlMjg0M2E3MmJkOWRmZWI2
NTU4YjY4ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC05NCw2ICs5NCw3IEBA
CiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIKKyNpbmNsdWRlICJWaXN1YWxWaWV3cG9ydC5o
IgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KIApAQCAtMTY3Myw2ICsxNjc0LDEwIEBAIHZvaWQgRnJhbWVWaWV3Ojp1
cGRhdGVMYXlvdXRWaWV3cG9ydCgpCiAgICAgICAgICAgICBMYXlvdXRQb2ludCBuZXdPcmlnaW4g
PSBjb21wdXRlTGF5b3V0Vmlld3BvcnRPcmlnaW4odmlzdWFsVmlld3BvcnRSZWN0KCksIG1pblN0
YWJsZUxheW91dFZpZXdwb3J0T3JpZ2luKCksIG1heFN0YWJsZUxheW91dFZpZXdwb3J0T3JpZ2lu
KCksIGxheW91dFZpZXdwb3J0LCBTdGlja1RvRG9jdW1lbnRCb3VuZHMpOwogICAgICAgICAgICAg
c2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0UmVjdChuZXdPcmlnaW4sIG1fbGF5
b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QudmFsdWUoKS5zaXplKCkpKTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0QVBJRW5hYmxlZCgpKSB7
CisgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgp
KQorICAgICAgICAgICAgICAgIGRvY3VtZW50LT5kb21XaW5kb3coKS0+dmlzdWFsVmlld3BvcnQo
KS0+dXBkYXRlKCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTY4
MSw2ICsxNjg2LDEwIEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRWaWV3cG9ydCgpCiAg
ICAgICAgIHNldEJhc2VMYXlvdXRWaWV3cG9ydE9yaWdpbihuZXdMYXlvdXRWaWV3cG9ydE9yaWdp
bik7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAibGF5b3V0
Vmlld3BvcnQgY2hhbmdlZCB0byAiIDw8IGxheW91dFZpZXdwb3J0UmVjdCgpKTsKICAgICB9Cisg
ICAgaWYgKGZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEFQSUVuYWJsZWQoKSkgewor
ICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpKQorICAg
ICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT52aXN1YWxWaWV3cG9ydCgpLT51cGRhdGUo
KTsKKyAgICB9CiB9CiAKIExheW91dFBvaW50IEZyYW1lVmlldzo6bWluU3RhYmxlTGF5b3V0Vmll
d3BvcnRPcmlnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1
YWxWaWV3cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcApp
bmRleCA2M2U4OTdiMWE1MmZiOGM3YTEzNzcyMDA3YzE0ZTc3NWY4OWUxN2M3Li4yMWMxYzNmODY4
YTUzOTVkODRmOGZhNWQ5NzZiYTE3ZmRlNWNkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3Vh
bFZpZXdwb3J0LmNwcApAQCAtMjksNiArMjksOSBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTUyLDU2ICs1NSw3NCBAQCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBWaXN1YWxWaWV3cG9ydDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKj4obV9hc3NvY2lhdGVkRE9NV2luZG93KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
fQogCi1zdGF0aWMgRnJhbWVWaWV3KiBnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwoRnJh
bWUqIGZyYW1lKQorYm9vbCBWaXN1YWxWaWV3cG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNv
bnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8qIHZpZXcg
PSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRyOwotICAgIGlmICh2aWV3KSB7Ci0gICAg
ICAgIEFTU0VSVChmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSk7Ci0gICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6OlJ1
blBvc3RMYXlvdXRUYXNrczo6U3luY2hyb25vdXNseSk7Ci0gICAgfQotICAgIHJldHVybiB2aWV3
OworICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX2ZyYW1lKQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRMaXN0ZW5lclR5cGVJ
Zk5lZWRlZChldmVudFR5cGUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFZpc3VhbFZp
ZXdwb3J0Ojp1cGRhdGVGcmFtZUxheW91dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZnJhbWUp
OworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKIH0K
IAogZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpvZmZzZXRMZWZ0KCkgY29uc3QKIHsKLSAgICBpZiAo
YXV0byogdmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuICh2aWV3LT52aXN1YWxWaWV3cG9ydFJlY3QoKS54KCkgLSB2aWV3LT5sYXlv
dXRWaWV3cG9ydFJlY3QoKS54KCkpIC8gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgdXBk
YXRlRnJhbWVMYXlvdXQoKTsKKyAgICByZXR1cm4gbV9vZmZzZXRMZWZ0OwogfQogCiBkb3VibGUg
VmlzdWFsVmlld3BvcnQ6Om9mZnNldFRvcCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHZpZXcg
PSBnZXRGcmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwobV9mcmFtZSkpCi0gICAgICAgIHJldHVy
biAodmlldy0+dmlzdWFsVmlld3BvcnRSZWN0KCkueSgpIC0gdmlldy0+bGF5b3V0Vmlld3BvcnRS
ZWN0KCkueSgpKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVwZGF0ZUZyYW1lTGF5
b3V0KCk7CisgICAgcmV0dXJuIG1fb2Zmc2V0VG9wOwogfQogCiBkb3VibGUgVmlzdWFsVmlld3Bv
cnQ6OnBhZ2VMZWZ0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogdmlldyA9IGdldEZyYW1lVmll
d0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHZpZXctPnZpc3Vh
bFZpZXdwb3J0UmVjdCgpLngoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci0gICAgcmV0
dXJuIDA7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVwZGF0
ZUZyYW1lTGF5b3V0KCk7CisgICAgcmV0dXJuIG1fcGFnZUxlZnQ7CiB9CiAKIGRvdWJsZSBWaXN1
YWxWaWV3cG9ydDo6cGFnZVRvcCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHZpZXcgPSBnZXRG
cmFtZVZpZXdBbmRMYXlvdXRJZk5vbk51bGwobV9mcmFtZSkpCi0gICAgICAgIHJldHVybiB2aWV3
LT52aXN1YWxWaWV3cG9ydFJlY3QoKS55KCkgLyBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwot
ICAgIHJldHVybiAwOworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICB1cGRhdGVGcmFtZUxheW91dCgpOworICAgIHJldHVybiBtX3BhZ2VUb3A7CiB9CiAKIGRvdWJs
ZSBWaXN1YWxWaWV3cG9ydDo6d2lkdGgoKSBjb25zdAogewotICAgIGlmIChhdXRvKiB2aWV3ID0g
Z2V0RnJhbWVWaWV3QW5kTGF5b3V0SWZOb25OdWxsKG1fZnJhbWUpKQotICAgICAgICByZXR1cm4g
dmlldy0+dmlzdWFsVmlld3BvcnRSZWN0KCkud2lkdGgoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFj
dG9yKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHVwZGF0ZUZyYW1lTGF5b3V0KCk7CisgICAgcmV0dXJuIG1fd2lkdGg7CiB9CiAK
IGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6aGVpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byog
dmlldyA9IGdldEZyYW1lVmlld0FuZExheW91dElmTm9uTnVsbChtX2ZyYW1lKSkKLSAgICAgICAg
cmV0dXJuIHZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpLmhlaWdodCgpIC8gbV9mcmFtZS0+cGFn
ZVpvb21GYWN0b3IoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAg
IHJldHVybiAwOworCisgICAgdXBkYXRlRnJhbWVMYXlvdXQoKTsKKyAgICByZXR1cm4gbV9oZWln
aHQ7CiB9CiAKIGRvdWJsZSBWaXN1YWxWaWV3cG9ydDo6c2NhbGUoKSBjb25zdApAQCAtMTEwLDEx
ICsxMzEsNjggQEAgZG91YmxlIFZpc3VhbFZpZXdwb3J0OjpzY2FsZSgpIGNvbnN0CiAgICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gMTsK
IAotICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhEb2N1
bWVudDo6UnVuUG9zdExheW91dFRhc2tzOjpTeW5jaHJvbm91c2x5KTsKLSAgICAgICAgcmV0dXJu
IHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIHVwZGF0ZUZyYW1lTGF5b3V0KCk7CisgICAg
cmV0dXJuIG1fc2NhbGU7Cit9CisKK3ZvaWQgVmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSgpCit7Cisg
ICAgZG91YmxlIG9mZnNldExlZnQgPSAwOworICAgIGRvdWJsZSBvZmZzZXRUb3AgPSAwOworICAg
IG1fcGFnZUxlZnQgPSAwOworICAgIG1fcGFnZVRvcCA9IDA7CisgICAgZG91YmxlIHdpZHRoID0g
MDsKKyAgICBkb3VibGUgaGVpZ2h0ID0gMDsKKyAgICBkb3VibGUgc2NhbGUgPSAxOworCisgICAg
aWYgKG1fZnJhbWUpIHsKKyAgICAgICAgaWYgKGF1dG8qIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkp
IHsKKyAgICAgICAgICAgIGF1dG8gdmlzdWFsVmlld3BvcnRSZWN0ID0gdmlldy0+dmlzdWFsVmll
d3BvcnRSZWN0KCk7CisgICAgICAgICAgICBhdXRvIGxheW91dFZpZXdwb3J0UmVjdCA9IHZpZXct
PmxheW91dFZpZXdwb3J0UmVjdCgpOworICAgICAgICAgICAgYXV0byBwYWdlWm9vbUZhY3RvciA9
IG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgICAgICAgICBBU1NFUlQocGFnZVpvb21G
YWN0b3IpOworICAgICAgICAgICAgb2Zmc2V0TGVmdCA9ICh2aXN1YWxWaWV3cG9ydFJlY3QueCgp
IC0gbGF5b3V0Vmlld3BvcnRSZWN0LngoKSkgLyBwYWdlWm9vbUZhY3RvcjsKKyAgICAgICAgICAg
IG9mZnNldFRvcCA9ICh2aXN1YWxWaWV3cG9ydFJlY3QueSgpIC0gbGF5b3V0Vmlld3BvcnRSZWN0
LnkoKSkgLyBwYWdlWm9vbUZhY3RvcjsKKyAgICAgICAgICAgIG1fcGFnZUxlZnQgPSB2aXN1YWxW
aWV3cG9ydFJlY3QueCgpIC8gcGFnZVpvb21GYWN0b3I7CisgICAgICAgICAgICBtX3BhZ2VUb3Ag
PSB2aXN1YWxWaWV3cG9ydFJlY3QueSgpIC8gcGFnZVpvb21GYWN0b3I7CisgICAgICAgICAgICB3
aWR0aCA9IHZpc3VhbFZpZXdwb3J0UmVjdC53aWR0aCgpIC8gcGFnZVpvb21GYWN0b3I7CisgICAg
ICAgICAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydFJlY3QuaGVpZ2h0KCkgLyBwYWdlWm9vbUZh
Y3RvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkKKyAgICAgICAgICAgIHNjYWxlID0gcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgfQor
CisgICAgaWYgKG1fb2Zmc2V0TGVmdCAhPSBvZmZzZXRMZWZ0IHx8IG1fb2Zmc2V0VG9wICE9IG9m
ZnNldFRvcCkgeworICAgICAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsKKyAgICAgICAgbV9vZmZz
ZXRMZWZ0ID0gb2Zmc2V0TGVmdDsKKyAgICAgICAgbV9vZmZzZXRUb3AgPSBvZmZzZXRUb3A7CiAg
ICAgfQotICAgIHJldHVybiAxOworICAgIGlmIChtX3dpZHRoICE9IHdpZHRoIHx8IG1faGVpZ2h0
ICE9IGhlaWdodCB8fCBtX3NjYWxlICE9IHNjYWxlKSB7CisgICAgICAgIGVucXVldWVSZXNpemVF
dmVudCgpOworICAgICAgICBtX3dpZHRoID0gd2lkdGg7CisgICAgICAgIG1faGVpZ2h0ID0gaGVp
Z2h0OworICAgICAgICBtX3NjYWxlID0gc2NhbGU7CisgICAgfQorfQorCit2b2lkIFZpc3VhbFZp
ZXdwb3J0OjplbnF1ZXVlUmVzaXplRXZlbnQoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYm9vbCBidWJibGVzID0gZmFsc2U7CisgICAgYm9vbCBjYW5jZWxh
YmxlID0gZmFsc2U7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZXZlbnRRdWV1ZSgpLmVucXVl
dWVSZXNpemVFdmVudCgqdGhpcywgYnViYmxlcywgY2FuY2VsYWJsZSk7Cit9CisKK3ZvaWQgVmlz
dWFsVmlld3BvcnQ6OmVucXVldWVTY3JvbGxFdmVudCgpCit7CisgICAgaWYgKCFtX2ZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBib29sIGJ1YmJsZXMgPSBmYWxzZTsKKyAgICBib29sIGNh
bmNlbGFibGUgPSBmYWxzZTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCku
ZW5xdWV1ZVNjcm9sbEV2ZW50KCp0aGlzLCBidWJibGVzLCBjYW5jZWxhYmxlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1
YWxWaWV3cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCmluZGV4
IDE1ZjdmZTc4YWIwMGQwMGZkYjk5NjBmNmY4ZWZhZjIzMjkwNzEzZmQuLjQ3NzI3ZDM1YWNhNTkx
OWM1YWJmMzMxMTUwODcxMWU5NWI2NGMyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlzdWFsVmlld3BvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdw
b3J0LmgKQEAgLTM3LDggKzM3LDEwIEBAIGNsYXNzIFZpc3VhbFZpZXdwb3J0IGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8VmlzdWFsVmlld3BvcnQ+LCBwdWJsaWMgRXZlbnRUYXJnCiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxWaXN1YWxWaWV3cG9ydD4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaXN1YWxWaWV3cG9ydChmcmFtZSkpOyB9CiAKKyAgICAvLyBF
dmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgZmluYWw7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGNvbnN0IEFk
ZEV2ZW50TGlzdGVuZXJPcHRpb25zJikgZmluYWw7CiAKICAgICBkb3VibGUgb2Zmc2V0TGVmdCgp
IGNvbnN0OwogICAgIGRvdWJsZSBvZmZzZXRUb3AoKSBjb25zdDsKQEAgLTQ4LDYgKzUwLDggQEAg
cHVibGljOgogICAgIGRvdWJsZSBoZWlnaHQoKSBjb25zdDsKICAgICBkb3VibGUgc2NhbGUoKSBj
b25zdDsKIAorICAgIHZvaWQgdXBkYXRlKCk7CisKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7
CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKQEAgLTU2LDYgKzYwLDE5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBlbnF1
ZXVlUmVzaXplRXZlbnQoKTsKKyAgICB2b2lkIGVucXVldWVTY3JvbGxFdmVudCgpOworCisgICAg
dm9pZCB1cGRhdGVGcmFtZUxheW91dCgpIGNvbnN0OworCisgICAgZG91YmxlIG1fb2Zmc2V0TGVm
dCB7IDAgfTsKKyAgICBkb3VibGUgbV9vZmZzZXRUb3AgeyAwIH07CisgICAgZG91YmxlIG1fcGFn
ZUxlZnQgeyAwIH07CisgICAgZG91YmxlIG1fcGFnZVRvcCB7IDAgfTsKKyAgICBkb3VibGUgbV93
aWR0aCB7IDAgfTsKKyAgICBkb3VibGUgbV9oZWlnaHQgeyAwIH07CisgICAgZG91YmxlIG1fc2Nh
bGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCAyYmM0ZDIwODdlNWI4MjlmNGUxZDM5YjI5ODYx
MmI5MGJhMDZhOTdkLi5hZjc0ZGEzZTdmY2VmNzg2NjIxYmQ3MDY1OWM5YzQxZTkzNTJiNTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTExNDYsNyArMTE0
Niw3IEBAIFN1YnJlc291cmNlSW50ZWdyaXR5RW5hYmxlZDoKIAogVmlzdWFsVmlld3BvcnRBUElF
bmFibGVkOgogICB0eXBlOiBib29sCi0gIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgZGVmYXVsdFZh
bHVlOiBERUZBVUxUX0VYUEVSSU1FTlRBTF9GRUFUVVJFU19FTkFCTEVECiAgIGh1bWFuUmVhZGFi
bGVOYW1lOiAiVmlzdWFsVmlld3BvcnRBUEkiCiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
IkVuYWJsZSBWaXN1YWwgVmlld3BvcnQgQVBJIgogICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYWUyMGExNTk0MDNjMTJkMzcwYTE1NjZmYWNmZDc2OGQ2MmUyMDQwNS4uMmIxZjllNmE4
NWUwZDBiZGNhMGYxOTBjYjg1YmNlMzViNzdmNDBjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisy
MDE4LTAxLTA4ICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBs
ZW1lbnQgVmlzdWFsVmlld3BvcnQgQVBJIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBWaXN1YWwgVmlld3BvcnQgQVBJ
IGV2ZW50cy4gVGVzdCB0aGF0IGEgcmVzaXplIGV2ZW50IGlzIGZpcmVkIGFmdGVyCisgICAgICAg
IHBpbmNoIHpvb20gYW5kIGFmdGVyIHdpbmRvdyByZXNpemUsIGFuZCB0ZXN0IHRoYXQgYSBzY3Jv
bGwgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUKKyAgICAgICAgdmlzdWFsIHZpZXdwb3J0IGlzIHNj
cm9sbGVkLgorCisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZp
cmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQv
cmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1y
ZXNpemVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6
ZS1ldmVudC1maXJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Zpc3VhbC12aWV3cG9y
dC9zY3JvbGwtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNraXBwZWQgdGVzdHMg
dGhhdCB1c2UgVUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2FsZSwgc2luY2UgdGhpcyBpc24n
dCBpbXBsZW1lbnRlZCBvbiBHVEsuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgIFNraXBwZWQgdGVzdCB0aGF0IHJlc2l6ZXMgYSB3aW5kb3csIHNpbmNl
IHRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUy4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2tpcHBlZCB0ZXN0cyB0aGF0IHVzZSBVSVNjcmlwdENv
bnRyb2xsZXI6Onpvb21Ub1NjYWxlLCBzaW5jZSB0aGlzIGlzbid0IGltcGxlbWVudGVkIG9uIFdp
bmRvd3MuCisKIDIwMTgtMDEtMDggIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVwZGF0ZSBpbWFnZWJpdG1hcCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IDY1YmQ3MjAzOThjODJjMmVjYjIxMDEwYzdjZDYyZmU4ZjY3ZTliZGUuLmEyYmFiMDc5
MWRlMWJhMjUxOWI0ZWE3ZWNkZWYwMTg1ZTE3ZTc5ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTAxLTA4ICBBbGkgSnVtYSAgPGFqdW1hQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVmlzdWFsVmlld3BvcnQgQVBJIGV2ZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Mzg2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGV4cGVjdGF0aW9uIGZvciBhIHZpZXdwb3J0IFdQVCB0aGF0IG5vdyBwYXNzZXMuCisKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvdmlld3BvcnQvdmlld3BvcnQtcmVzaXplLWV2ZW50LW9u
LWxvYWQtb3ZlcmZsb3dpbmctcGFnZS1leHBlY3RlZC50eHQ6CisKIDIwMTgtMDEtMDggIE1zMmdl
ciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVwZGF0ZSBpbWFnZWJpdG1hcCB0ZXN0
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1l
dmVudC1maXJlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9y
dC9yZXNpemUtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNzhjYWRlNWMz
MjZmYzU5OTNkYjc3ODdlMDE0NjE2N2I3YWEyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFZlcmlmeSBhIHJlc2l6ZSBldmVudCBnZXRzIGZpcmVk
IG9uIHdpbmRvdy52aXN1YWxWaWV3cG9ydCBhZnRlciBwaW5jaC16b29tIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2lu
ZG93LXJlc2l6ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3Bv
cnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNTE2YzZlNjllYmNkMzlmMTljNmIwYmI0NTc4OTZmZDllMjcxMGYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZp
cmVkLXdpbmRvdy1yZXNpemVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBW
ZXJpZnkgdGhhdCBhIHJlc2l6ZSBldmVudCBnZXRzIGZpcmVkIHdoZW4gdGhlIHdpbmRvdyBpcyBy
ZXNpemVkLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQv
cmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZlbnQtZmlyZWQtd2luZG93LXJlc2l6ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MmMyYjVhMmE2MjQzZjY3OTViMTQyYWEyNzM5NDE2MGNhMWZkYjc1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2
ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldFZpc3VhbFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKworICAg
IHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnVmVyaWZ5IHRoYXQgYSByZXNpemUgZXZlbnQgZ2V0cyBm
aXJlZCB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZC4nKTsKKworICAgIGZ1bmN0aW9uIHJlc2l6
ZUhhbmRsZXIoKSB7CisgICAgICAgIHRlc3QuZG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgd2luZG93LnZpc3VhbFZpZXdwb3J0LmFkZEV2
ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZUhhbmRsZXIpOworICAgICAgICB3aW5kb3cucmVz
aXplVG8od2luZG93Lm91dGVyV2lkdGggLSA0MCwgd2luZG93Lm91dGVySGVpZ2h0ICsgNDApOwor
ICAgIH07Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZp
ZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwt
dmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE3MjYzYzIxMmYz
NGQ1MDliNzI1YzQwNzAwMTBiYWU5NzczZThmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Jlc2l6ZS1ldmVudC1maXJlZC5odG1sCkBAIC0wLDAg
KzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorICBib2R5IHsKKyAgICBoZWlnaHQ6
IDIwMDBweDsKKyAgICB3aWR0aDogMjAwMHB4OworICB9Cis8L3N0eWxlPgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKyAgICB2YXIgcGFnZVNjYWxlRmFjdG9yID0gMjsKKworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VmlzdWFsVmlld3BvcnRFbmFibGVk
KHRydWUpOworCisgICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCdWZXJpZnkgYSByZXNpemUgZXZl
bnQgZ2V0cyBmaXJlZCBvbiB3aW5kb3cudmlzdWFsVmlld3BvcnQgYWZ0ZXIgcGluY2gtem9vbScp
OworCisgICAgZnVuY3Rpb24gcmVzaXplSGFuZGxlcigpIHsKKyAgICAgICAgdGVzdC5kb25lKCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKSB7CisgICAgICAgIHJldHVybiBg
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLnpvb21Ub1NjYWxlKCR7cGFn
ZVNjYWxlRmFjdG9yfSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVy
LnVpU2NyaXB0Q29tcGxldGUodWlDb250cm9sbGVyLnpvb21TY2FsZSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSkoKTtgOworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgd2luZG93LnZpc3VhbFZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Jl
c2l6ZScsIHJlc2l6ZUhhbmRsZXIpOworICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdl
dFVJU2NyaXB0KCksIGZ1bmN0aW9uKCkge30pOworICAgIH07Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZl
bnQtZmlyZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzMWI1MmI5NWNkMmNmMTU1NjRkNGVi
ZGIzOGRkNjc5MTc4OTk2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Zp
c3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitQQVNTIFZlcmlmeSB0aGF0IGEgc2Nyb2xsIGV2ZW50IGdldHMgZmlyZWQgb24gd2lu
ZG93LnZpc3VhbFZpZXdwb3J0IHdoZW4gaXRzIG9mZnNldCBjaGFuZ2VzIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3JvbGwtZXZlbnQtZmlyZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Njcm9sbC1ldmVudC1maXJlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwMGRiMDIxZjY0MGNhYzI0MTUyMzRkNGNkZmFlN2EzMGY4MjA0YzUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC9zY3Jv
bGwtZXZlbnQtZmlyZWQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
dHlsZT4KKyAgYm9keSB7CisgICAgaGVpZ2h0OiAyMDAwcHg7CisgICAgd2lkdGg6IDIwMDBweDsK
KyAgfQorPC9zdHlsZT4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdmFyIHBhZ2VTY2FsZUZhY3RvciA9
IDI7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldFZpc3VhbFZpZXdwb3J0RW5hYmxlZCh0cnVlKTsKKworICAgIHZhciB0ZXN0ID0gYXN5
bmNfdGVzdCgnVmVyaWZ5IHRoYXQgYSBzY3JvbGwgZXZlbnQgZ2V0cyBmaXJlZCBvbiB3aW5kb3cu
dmlzdWFsVmlld3BvcnQgd2hlbiBpdHMgb2Zmc2V0IGNoYW5nZXMnKTsKKworICAgIGZ1bmN0aW9u
IHNjcm9sbEV2ZW50SGFuZGxlcigpIHsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZG9BZnRlclpvb21pbmcoKSB7CisgICAgICAgIHdpbmRvdy52aXN1YWxWaWV3
cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxFdmVudEhhbmRsZXIpOworICAg
ICAgICB3aW5kb3cuc2Nyb2xsVG8oMTAwMCwgMTAwMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Z2V0VUlTY3JpcHQoKSB7CisgICAgICAgIHJldHVybiBgKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgdWlDb250cm9sbGVyLnpvb21Ub1NjYWxlKCR7cGFnZVNjYWxlRmFjdG9yfSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUodWlDb250
cm9sbGVyLnpvb21TY2FsZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkoKTtgOworICAg
IH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBkb0FmdGVyWm9vbWluZyk7CisgICAgfTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy92aWV3cG9ydC92aWV3cG9ydC1yZXNpemUtZXZlbnQtb24tbG9hZC1vdmVyZmxvd2lu
Zy1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdmlld3BvcnQvdmlld3BvcnQtcmVzaXplLWV2ZW50LW9uLWxvYWQtb3ZlcmZsb3dp
bmctcGFnZS1leHBlY3RlZC50eHQKaW5kZXggMDBlZjE2ZGU4YmJiNDI1NmVmN2MyZTM2MzgxYTJj
NmMyMmFmZThlZS4uNGZkNjM3MGMwMTI5MmNiZDM4MmU4OGNmMGQzMGUwYWRlMjY2ZDQ5NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWV3
cG9ydC92aWV3cG9ydC1yZXNpemUtZXZlbnQtb24tbG9hZC1vdmVyZmxvd2luZy1wYWdlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3ZpZXdwb3J0L3ZpZXdwb3J0LXJlc2l6ZS1ldmVudC1vbi1sb2FkLW92ZXJmbG93aW5nLXBhZ2Ut
ZXhwZWN0ZWQudHh0CkBAIC0zLDUgKzMsNSBAQCBWaWV3cG9ydDogUmVzaXplIEV2ZW50IE9uIExv
YWQgT3ZlcmZsb3dpbmcgUGFnZQogVGVzdCBEZXNjcmlwdGlvbjogVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCB3ZSBmaXJlIGEgcmVzaXplIGV2ZW50IGFnYWluc3Qgd2luZG93LnZpc3VhbFZpZXdwb3J0
IGlmIHRoZSBwYWdlIGhhcyBvdmVyZmxvdyAoc2luY2UgdGhpcyBjcmVhdGVzIGEgc2Nyb2xsYmFy
IGFuZCB0aHVzIGNoYW5nZXMgdGhlIHZpZXdwb3J0IHNpemUpLgogCiAKLUZBSUwgUmVzaXplIGV2
ZW50IGZpcmVkIGV4YWN0bHkgb25jZSBhZ2FpbnN0IHdpbmRvdy52aXN1YWxWaWV3cG9ydCBpZiBz
Y3JvbGxiYXJzIGFmZmVjdCBsYXlvdXQuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEgYnV0IGdv
dCAwCitQQVNTIFJlc2l6ZSBldmVudCBmaXJlZCBleGFjdGx5IG9uY2UgYWdhaW5zdCB3aW5kb3cu
dmlzdWFsVmlld3BvcnQgaWYgc2Nyb2xsYmFycyBhZmZlY3QgbGF5b3V0LiAKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNjBhYWJjOTk1OTA0Y2E0Y2I4
NjM3YWVlNjA4ZTMwZGU5Mjc5YjUxLi5mNmY5ZjI2YmU0N2Y3ZjgwNzQ0MTNlNGNkNGRiODc0N2M4
YzNkM2QyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
OTY4LDcgKzk2OCw5IEBAIHdlYmtpdC5vcmcvYi8xNTM4MzMgZmFzdC9ldmVudHMvYmVmb3JlLWlu
cHV0LXByZXZlbnQtaW5zZXJ0LXJlcGxhY2VtZW50Lmh0bWwgWyBTCiB3ZWJraXQub3JnL2IvMTUz
ODMzIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50LWluc2VydC1yZXBsYWNlbWVudC5odG1sIFsgU2tp
cCBdCiAKICMgU2tpcCB0ZXN0cyByZXF1aXJpbmcgVUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9T
Y2FsZQord2Via2l0Lm9yZy9iLzE2ODA1MCBmYXN0L3Zpc3VhbC12aWV3cG9ydC9yZXNpemUtZXZl
bnQtZmlyZWQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2ODA1MCBmYXN0L3Zpc3VhbC12
aWV3cG9ydC9ydGwtem9vbWVkLXJlY3RzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjgw
NTAgZmFzdC92aXN1YWwtdmlld3BvcnQvc2Nyb2xsLWV2ZW50LWZpcmVkLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQvdmlld3BvcnQtZGltZW5z
aW9ucy1leGNsdWRlLWN1c3RvbS1zY3JvbGxiYXJzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xNjgwNTAgZmFzdC92aXN1YWwtdmlld3BvcnQvdmlld3BvcnQtZGltZW5zaW9ucy1leGNsdWRl
LXNjcm9sbGJhcnMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2ODA1MCBmYXN0L3Zpc3Vh
bC12aWV3cG9ydC92aWV3cG9ydC1kaW1lbnNpb25zLWlmcmFtZS5odG1sIFsgU2tpcCBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI3YzQ4NWY3ZTU0M2Nj
NTQxNTBjYWVlZmRmNzg3MjRjZWJkYmViNzAuLjk2NGE1ZmVlNGQxOGNjYzg4MGZhN2I3MWJkNTI2
MjBlZDJmMGIxYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0yMDM2LDYgKzIwMzYsNyBAQCBmYXN0L2Nzcy1ncmlkLWxheW91dC9mbGV4LWNvbnRlbnQt
c2l6ZWQtY29sdW1ucy1yZXNpemUuaHRtbCBbIFNraXAgXQogZmFzdC9kb20vV2luZG93L3dpbmRv
dy1yZXNpemUtdXBkYXRlLXNjcm9sbGJhcnMuaHRtbCBbIFNraXAgXQogZmFzdC9keW5hbWljL3dp
bmRvdy1yZXNpemUtc2Nyb2xsYmFycy10ZXN0Lmh0bWwgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL2Fu
aW1hdGVkLWdpZi13aW5kb3ctcmVzaXppbmcuaHRtbCBbIFNraXAgXQorZmFzdC92aXN1YWwtdmll
d3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLXdpbmRvdy1yZXNpemVkLmh0bWwgWyBTa2lwIF0KIGxv
YWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5kb3ctc2l6ZS5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvMTc4NzM5IGNzczMvdmlld3BvcnQtcGVyY2VudGFnZS1sZW5ndGhzL3ZpZXdwb3J0
LXBlcmNlbnRhZ2UtbGVuZ3Rocy1hbm9ueW1vdXMtYmxvY2suaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzE3ODczOSBjc3MzL3ZpZXdwb3J0LXBlcmNlbnRhZ2UtbGVuZ3Rocy92aWV3cG9ydC1w
ZXJjZW50YWdlLWxlbmd0aHMtcGVyY2VudC1zaXplLWNoaWxkLmh0bWwgWyBTa2lwIF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTY2ZTkzYzZhNzQyMDEz
NTBmNTBkNjcyNGM1ZTIyMWUyMmFiMjZmZC4uNDhkMDRjZWVkNzY1M2JlYTI4NWUzZWRkZTkyZmNj
OGQyZTg0MWYzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTYyOSw3ICs2MjksOSBAQCB3ZWJraXQub3JnL2IvMTU4ODM2IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZW5jcnlwdGVkLW1lZGlhIFsgU2tpcCBdCiBodHRwL3dwdC9jcmVkZW50
aWFsLW1hbmFnZW1lbnQvIFsgU2tpcCBdCiAKICMgVUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9T
Y2FsZSBpcyBub3QgaW1wbGVtZW50ZWQgb24gV2luZG93cy4KK3dlYmtpdC5vcmcvYi8xODA0MjQg
ZmFzdC92aXN1YWwtdmlld3BvcnQvcmVzaXplLWV2ZW50LWZpcmVkLmh0bWwgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8xODA0MjQgZmFzdC92aXN1YWwtdmlld3BvcnQvcnRsLXpvb21lZC1yZWN0cy5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTgwNDI0IGZhc3QvdmlzdWFsLXZpZXdwb3J0L3Nj
cm9sbC1ldmVudC1maXJlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTgwNDI0IGZhc3Qv
dmlzdWFsLXZpZXdwb3J0L3ZpZXdwb3J0LWRpbWVuc2lvbnMtZXhjbHVkZS1jdXN0b20tc2Nyb2xs
YmFycy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTgwNDI0IGZhc3QvdmlzdWFsLXZpZXdw
b3J0L3ZpZXdwb3J0LWRpbWVuc2lvbnMtZXhjbHVkZS1zY3JvbGxiYXJzLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xODA0MjQgZmFzdC92aXN1YWwtdmlld3BvcnQvdmlld3BvcnQtZGltZW5z
aW9ucy1pZnJhbWUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>