<?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>223580</bug_id>
          
          <creation_ts>2021-03-22 09:06:00 -0700</creation_ts>
          <short_desc>Use frameData instead of scheduleOnNextFrame calls in WebFakeXRDevice</short_desc>
          <delta_ts>2021-04-07 05:28:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebXR</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1742256</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-22 09:06:00 -0700</bug_when>
    <thetext>Follow-up from conversations in https://bugs.webkit.org/show_bug.cgi?id=221225

There are some concerns of potential use-after-free in WebFakeXRDevice. We can make the code more robust by getting rid of the scheduleOnNextFrame calls and use a frameData struct instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742260</commentid>
    <comment_count>1</comment_count>
      <attachid>423896</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-22 09:17:47 -0700</bug_when>
    <thetext>Created attachment 423896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744708</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-29 09:13:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/75956780&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747437</commentid>
    <comment_count>3</comment_count>
      <attachid>423896</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-06 08:20:27 -0700</bug_when>
    <thetext>Comment on attachment 423896
Patch

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

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:63
&gt; +void SimulatedXRDevice::setViews(Vector&lt;Ref&lt;FakeXRView&gt;&gt;&amp;&amp; views)

Does it need to be a &amp;&amp;?

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:84
&gt; +void SimulatedXRDevice::setViewerOrigin(Optional&lt;FrameData::Pose&gt;&amp;&amp; origin)

const Optional&lt;&gt;&amp;

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:89
&gt; +        m_frameData.isTrackingValid = true;

return here.

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:138
&gt; +    FrameData data = m_frameData;

Should we do FrameData data = WTFMove(m_frameData)?

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:202
&gt; +            deviceViews.append(view.releaseReturnValue());

I would tend to remove the other setViews and create the FrameData::View object here.

&gt; Source/WebCore/testing/WebXRTest.cpp:57
&gt; +        simulatedDevice.setViews(WTFMove(views));

Cannot we directly call setViews(const Vector&lt;FakeXRViewInit&gt;&amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747846</commentid>
    <comment_count>4</comment_count>
      <attachid>423896</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-07 04:32:46 -0700</bug_when>
    <thetext>Comment on attachment 423896
Patch

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

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:63
&gt;&gt; +void SimulatedXRDevice::setViews(Vector&lt;Ref&lt;FakeXRView&gt;&gt;&amp;&amp; views)
&gt; 
&gt; Does it need to be a &amp;&amp;?

I changed it to Vector&lt;FrameData::View&gt;&amp;&amp;

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:84
&gt;&gt; +void SimulatedXRDevice::setViewerOrigin(Optional&lt;FrameData::Pose&gt;&amp;&amp; origin)
&gt; 
&gt; const Optional&lt;&gt;&amp;

done

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:89
&gt;&gt; +        m_frameData.isTrackingValid = true;
&gt; 
&gt; return here.

done

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:138
&gt;&gt; +    FrameData data = m_frameData;
&gt; 
&gt; Should we do FrameData data = WTFMove(m_frameData)?

No, because we want m_fameData to keep the previous values.

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:202
&gt;&gt; +            deviceViews.append(view.releaseReturnValue());
&gt; 
&gt; I would tend to remove the other setViews and create the FrameData::View object here.

Done

&gt;&gt; Source/WebCore/testing/WebXRTest.cpp:57
&gt;&gt; +        simulatedDevice.setViews(WTFMove(views));
&gt; 
&gt; Cannot we directly call setViews(const Vector&lt;FakeXRViewInit&gt;&amp;)

yes, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747847</commentid>
    <comment_count>5</comment_count>
      <attachid>425381</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-04-07 04:33:26 -0700</bug_when>
    <thetext>Created attachment 425381
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747859</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-07 05:27:59 -0700</bug_when>
    <thetext>Committed r275603: &lt;https://commits.webkit.org/r275603&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425381.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423896</attachid>
            <date>2021-03-22 09:17:47 -0700</date>
            <delta_ts>2021-04-07 04:33:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223580-20210322171746.patch</filename>
            <type>text/plain</type>
            <size>12010</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ5MjI2OTk4MWQ3OWQy
YjFmZjcwMjhmZGUyOGEwMGU3YzQ0MzdmMi4uMGJmZWVmZTdlNTFjOGUzMTY4MDY2ODk3ZmViNmRi
OGI3MWJiMWZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTIyICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSBmcmFt
ZURhdGEgaW5zdGVhZCBvZiBzY2hlZHVsZU9uTmV4dEZyYW1lIGNhbGxzIGluIFdlYkZha2VYUkRl
dmljZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBtYWtlcyB0aGUgV2ViRmFrZVhSRGV2aWNlIGNvZGUgbW9yZSByb2J1c3QgYnkgZ2V0
dGluZyByaWQgb2YgdGhlIHNjaGVkdWxlT25OZXh0RnJhbWUgY2FsbHMuCisKKyAgICAgICAgVGVz
dGVkIGJ5IFdlYlhSIFdQVC4KKworICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzZXRWaWV3cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6c2V0TmF0aXZlQm91bmRzR2VvbWV0cnkp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnNldFZpZXdlck9yaWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRGbG9vck9yaWdpbik6CisgICAgICAgICogdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhSVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbik6CisK
IDIwMjEtMDMtMTkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIExp
bmsgYWdhaW5zdCB0aGUgQU5HTEUgU2hhcmVkIExpYnJhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCBiMDQ3Yjc1MzQ3NmExOWRhZmI5NDZmMGNkNTZh
YTRkZjExN2YxMmEyLi5jMTk1NThlODVmNjU5YjE0NzRhMjcyYzkzN2QzNWY0MmFiNWFlODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCkBAIC02MCwxMiAr
NjAsMzggQEAgU2ltdWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRldmljZSgpCiAgICAgc3Rv
cFRpbWVyKCk7CiB9CiAKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNldFZpZXdzKFZlY3RvcjxS
ZWY8RmFrZVhSVmlldz4+JiYgdmlld3MpCit7CisgICAgbV9mcmFtZURhdGEudmlld3MgPSB2aWV3
cy5tYXAoW10oYXV0byYgZmFrZVZpZXcpIHsKKyAgICAgICAgRnJhbWVEYXRhOjpWaWV3IHZpZXc7
CisgICAgICAgIHZpZXcub2Zmc2V0ID0gZmFrZVZpZXctPm9mZnNldCgpOworICAgICAgICBpZiAo
ZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHZpZXcucHJv
amVjdGlvbiA9IHsgKmZha2VWaWV3LT5maWVsZE9mVmlldygpIH07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgZmFrZVZpZXctPnByb2plY3Rpb24oKSB9Owor
ICAgICAgICByZXR1cm4gdmlldzsKKyAgICB9KTsKK30KKwogdm9pZCBTaW11bGF0ZWRYUkRldmlj
ZTo6c2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoY29uc3QgVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50
PiYgZ2VvbWV0cnkpCiB7Ci0gICAgbV9zdGFnZVBhcmFtZXRlcnMuaWQrKzsKLSAgICBtX3N0YWdl
UGFyYW1ldGVycy5ib3VuZHMuY2xlYXIoKTsKKyAgICBtX2ZyYW1lRGF0YS5zdGFnZVBhcmFtZXRl
cnMuaWQrKzsKKyAgICBtX2ZyYW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuYm91bmRzLmNsZWFyKCk7
CiAgICAgZm9yIChhdXRvJiBwb2ludCA6IGdlb21ldHJ5KQotICAgICAgICBtX3N0YWdlUGFyYW1l
dGVycy5ib3VuZHMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50LngpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4ocG9pbnQueikgfSk7CisgICAgICAgIG1fZnJhbWVEYXRhLnN0YWdlUGFyYW1l
dGVycy5ib3VuZHMuYXBwZW5kKHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50LngpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4ocG9pbnQueikgfSk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNl
dFZpZXdlck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKQoreworICAg
IGlmIChvcmlnaW4pIHsKKyAgICAgICAgbV9mcmFtZURhdGEub3JpZ2luID0gKm9yaWdpbjsKKyAg
ICAgICAgbV9mcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkID0gdHJ1ZTsKKyAgICAgICAgbV9mcmFt
ZURhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Zy
YW1lRGF0YS5vcmlnaW4gPSBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSgpOworICAgICAgICBtX2Zy
YW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbV9mcmFtZURhdGEuaXNU
cmFja2luZ1ZhbGlkID0gZmFsc2U7CisgICAgfQogfQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNl
OjpzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCkKQEAgLTEwOSwzNCArMTM1LDggQEAgdm9pZCBT
aW11bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKCkKIAogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6
ZnJhbWVUaW1lckZpcmVkKCkKIHsKLSAgICBhdXRvIHVwZGF0ZXMgPSBXVEZNb3ZlKG1fcGVuZGlu
Z1VwZGF0ZXMpOwotICAgIGZvciAoYXV0byYgdXBkYXRlIDogdXBkYXRlcykKLSAgICAgICAgdXBk
YXRlKCk7Ci0KLSAgICBGcmFtZURhdGEgZGF0YTsKKyAgICBGcmFtZURhdGEgZGF0YSA9IG1fZnJh
bWVEYXRhOwogICAgIGRhdGEuc2hvdWxkUmVuZGVyID0gdHJ1ZTsKLSAgICBpZiAobV92aWV3ZXJP
cmlnaW4pIHsKLSAgICAgICAgZGF0YS5vcmlnaW4gPSAqbV92aWV3ZXJPcmlnaW47Ci0gICAgICAg
IGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKLSAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFs
aWQgPSB0cnVlOwotICAgICAgICBkYXRhLmlzUG9zaXRpb25FbXVsYXRlZCA9IG1fZW11bGF0ZWRQ
b3NpdGlvbjsKLSAgICB9Ci0KLSAgICBpZiAobV9mbG9vck9yaWdpbikKLSAgICAgICAgZGF0YS5m
bG9vclRyYW5zZm9ybSA9IHsgKm1fZmxvb3JPcmlnaW4gfTsKLQotICAgIGRhdGEuc3RhZ2VQYXJh
bWV0ZXJzID0gbV9zdGFnZVBhcmFtZXRlcnM7Ci0KLSAgICBmb3IgKGF1dG8mIGZha2VWaWV3IDog
bV92aWV3cykgewotICAgICAgICBGcmFtZURhdGE6OlZpZXcgdmlldzsKLSAgICAgICAgdmlldy5v
ZmZzZXQgPSBmYWtlVmlldy0+b2Zmc2V0KCk7Ci0gICAgICAgIGlmIChmYWtlVmlldy0+ZmllbGRP
ZlZpZXcoKS5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyAqZmFr
ZVZpZXctPmZpZWxkT2ZWaWV3KCkgfTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlldy5w
cm9qZWN0aW9uID0geyBmYWtlVmlldy0+cHJvamVjdGlvbigpIH07Ci0gICAgICAgIAotICAgICAg
ICBkYXRhLnZpZXdzLmFwcGVuZCh2aWV3KTsKLSAgICB9CiAKICAgICBmb3IgKGF1dG8mIGxheWVy
IDogbV9sYXllcnMpCiAgICAgICAgIGRhdGEubGF5ZXJzLmFkZChsYXllci5rZXksIEZyYW1lRGF0
YTo6TGF5ZXJEYXRhIHsgLm9wYXF1ZVRleHR1cmUgPSBsYXllci52YWx1ZSB9KTsKQEAgLTE5MCwy
NiArMTkwLDE5IEBAIFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiBTaW11bGF0
ZWRYUkRldmljZTo6dmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvCiAgICAgcmV0dXJuIHsgeyAuYWN0
aXZlID0gdHJ1ZSwgLmV5ZSA9IFBsYXRmb3JtWFI6OkV5ZTo6Tm9uZSB9IH07CiB9CiAKLXZvaWQg
U2ltdWxhdGVkWFJEZXZpY2U6OnNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmMpCi17Ci0gICAgbV9wZW5kaW5nVXBkYXRlcy5hcHBlbmQoV1RGTW92ZShmdW5jKSk7Ci19
Ci0KIFdlYkZha2VYUkRldmljZTo6V2ViRmFrZVhSRGV2aWNlKCkgPSBkZWZhdWx0OwogCiB2b2lk
IFdlYkZha2VYUkRldmljZTo6c2V0Vmlld3MoY29uc3QgVmVjdG9yPEZha2VYUlZpZXdJbml0PiYg
dmlld3MpCiB7Ci0gICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbdGhpcywgdmlld3Nd
KCkgewotICAgICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiBkZXZpY2VWaWV3czsKKyAgICBW
ZWN0b3I8UmVmPEZha2VYUlZpZXc+PiBkZXZpY2VWaWV3czsKIAotICAgICAgICBmb3IgKGF1dG8m
IHZpZXdJbml0IDogdmlld3MpIHsKLSAgICAgICAgICAgIGF1dG8gdmlldyA9IHBhcnNlVmlldyh2
aWV3SW5pdCk7Ci0gICAgICAgICAgICBpZiAoIXZpZXcuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgZGV2aWNlVmlld3MuYXBwZW5kKHZpZXcucmVsZWFzZVJldHVyblZhbHVlKCkpOwot
ICAgICAgICB9CisgICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZpZXdzKSB7CisgICAgICAgIGF1
dG8gdmlldyA9IHBhcnNlVmlldyh2aWV3SW5pdCk7CisgICAgICAgIGlmICghdmlldy5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgIGRldmljZVZpZXdzLmFwcGVuZCh2aWV3LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKKyAgICB9CiAKLSAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld3MoV1RGTW92ZShk
ZXZpY2VWaWV3cykpOwotICAgIH0pOworICAgIG1fZGV2aWNlLnNldFZpZXdzKFdURk1vdmUoZGV2
aWNlVmlld3MpKTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmRpc2Nvbm5lY3QoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKQEAgLTIxOSw1NCArMjEyLDI1IEBAIHZvaWQg
V2ViRmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4oRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOwotICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byBwb3NlID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmln
aW4pOworICAgIGlmIChwb3NlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHBvc2UgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0KLSAgICBtX2Rldmlj
ZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3NlKSwgZW11bGF0
ZWRQb3NpdGlvbl0oKSBtdXRhYmxlIHsKLSAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2lu
KFdURk1vdmUocG9zZSkpOwotICAgICAgICBtX2RldmljZS5zZXRFbXVsYXRlZFBvc2l0aW9uKGVt
dWxhdGVkUG9zaXRpb24pOwotICAgIH0pOwotfQotCi12b2lkIFdlYkZha2VYUkRldmljZTo6Y2xl
YXJWaWV3ZXJPcmlnaW4oKQotewotICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3Ro
aXNdKCkgewotICAgICAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4oV1RGOjpudWxsb3B0KTsK
LSAgICB9KTsKKyAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4ocG9zZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CisgICAgbV9kZXZpY2Uuc2V0RW11bGF0ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0
aW9uKTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlVmlzaWJpbGl0eUNoYW5n
ZShYUlZpc2liaWxpdHlTdGF0ZSkKIHsKIH0KIAotdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldEJv
dW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mJiBib3VuZHMpCi17Ci0gICAg
bV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbdGhpcywgYm91bmRzID0gV1RGTW92ZShib3Vu
ZHMpXSgpIHsKLSAgICAgICAgbV9kZXZpY2Uuc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoYm91bmRz
KTsKLSAgICB9KTsKLX0gCi0KIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRGbG9vck9yaWdpbihG
YWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2luKQogewotICAgIGF1dG8gcmVzdWx0ID0gcGFy
c2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOwotICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgYXV0byBwb3NlID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOworICAgIGlmIChw
b3NlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBvc2UgPSBy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0KLSAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4
dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3NlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
bV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGTW92ZShwb3NlKSk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgV2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKCkKLXsKLSAgICBtX2RldmljZS5z
Y2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzXSgpIHsKLSAgICAgICAgbV9kZXZpY2Uuc2V0Rmxvb3JP
cmlnaW4oV1RGOjpudWxsb3B0KTsKLSAgICB9KTsKKyAgICBtX2RldmljZS5zZXRGbG9vck9yaWdp
bihwb3NlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6
OnNpbXVsYXRlUmVzZXRQb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5oCmluZGV4IGNjM2FmZjk2NWViYmU4ZTQ3NzViN2IxNThjYWE1MDI4NmYyMDJjM2QuLjU0ODhi
YjQ4YzE2NjMyNjRhNTk3NzhmM2Y1MjcyNjJhZTdiNTczYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtNzIsMTIgKzcyLDExIEBAIGNsYXNzIFNpbXVsYXRl
ZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CiBwdWJsaWM6CiAg
ICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKLSAgICB2
b2lkIHNldFZpZXdzKFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiYgdmlld3MpIHsgbV92aWV3cyA9
IFdURk1vdmUodmlld3MpOyB9CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPEZha2VYUlZp
ZXc+PiYmKTsKICAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21ldHJ5KGNvbnN0IFZlY3RvcjxG
YWtlWFJCb3VuZHNQb2ludD4mKTsKLSAgICB2b2lkIHNldFZpZXdlck9yaWdpbihPcHRpb25hbDxG
cmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmln
aW4pOyB9Ci0gICAgdm9pZCBzZXRGbG9vck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+
JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KLSAgICB2b2lk
IHNldEVtdWxhdGVkUG9zaXRpb24oYm9vbCBlbXVsYXRlZCkgeyBtX2VtdWxhdGVkUG9zaXRpb24g
PSBlbXVsYXRlZDsgfQotICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiB2aWV3cygpIHsgcmV0
dXJuIG1fdmlld3M7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdpbihPcHRpb25hbDxGcmFtZURh
dGE6OlBvc2U+JiYpOworICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oT3B0aW9uYWw8RnJhbWVEYXRh
OjpQb3NlPiYmIG9yaWdpbikgeyBtX2ZyYW1lRGF0YS5mbG9vclRyYW5zZm9ybSA9IFdURk1vdmUo
b3JpZ2luKTsgfQorICAgIHZvaWQgc2V0RW11bGF0ZWRQb3NpdGlvbihib29sIGVtdWxhdGVkKSB7
IG1fZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCA9IGVtdWxhdGVkOyB9CiAgICAgdm9pZCBz
ZXRTdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlm
aWNhdGlvbikgeyBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRk
b3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7
CiAgICAgdm9pZCBzY2hlZHVsZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJik7CkBAIC05
NSwxNiArOTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BUaW1lcigpOwogICAgIHZvaWQg
ZnJhbWVUaW1lckZpcmVkKCk7CiAKLSAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9p
bnQ+PiBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5OwotICAgIE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9z
ZT4gbV92aWV3ZXJPcmlnaW47Ci0gICAgT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiBtX2Zsb29y
T3JpZ2luOwotICAgIGJvb2wgbV9lbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKLSAgICBWZWN0
b3I8UmVmPEZha2VYUlZpZXc+PiBtX3ZpZXdzOworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhIG1fZnJhbWVEYXRhOwogICAgIGJvb2wgbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0
aW9uIHsgZmFsc2UgfTsKICAgICBUaW1lciBtX2ZyYW1lVGltZXI7CiAgICAgUmVxdWVzdEZyYW1l
Q2FsbGJhY2sgbV9GcmFtZUNhbGxiYWNrOwotICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBt
X3BlbmRpbmdVcGRhdGVzOwotICAgIEZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzIG1fc3RhZ2VQ
YXJhbWV0ZXJzOwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gbV9nbDsK
ICAgICBIYXNoTWFwPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlLCBQbGF0Zm9ybUdMT2JqZWN0PiBt
X2xheWVyczsKICAgICB1aW50MzJfdCBtX2xheWVySW5kZXggeyAwIH07CkBAIC0xMTUsMzEgKzEw
OCwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJGYWtlWFJEZXZpY2U+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRmFrZVhSRGV2aWNlKCkpOyB9CiAKICAgICB2b2lk
IHNldFZpZXdzKGNvbnN0IFZlY3RvcjxGYWtlWFJWaWV3SW5pdD4mKTsKLQogICAgIHZvaWQgZGlz
Y29ubmVjdChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7Ci0KICAgICB2b2lkIHNldFZpZXdl
ck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2luLCBib29sIGVtdWxhdGVkUG9z
aXRpb24gPSBmYWxzZSk7Ci0KLSAgICB2b2lkIGNsZWFyVmlld2VyT3JpZ2luKCk7Ci0KKyAgICB2
b2lkIGNsZWFyVmlld2VyT3JpZ2luKCkgeyBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4oV1RGOjpu
dWxsb3B0KTsgfQogICAgIHZvaWQgc2ltdWxhdGVWaXNpYmlsaXR5Q2hhbmdlKFhSVmlzaWJpbGl0
eVN0YXRlKTsKLQotICAgIHZvaWQgc2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5k
c1BvaW50PiYmIGJvdW5kc0Nvb3JkaW5hdGVzKTsKLQorICAgIHZvaWQgc2V0Qm91bmRzR2VvbWV0
cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYmIGJvdW5kcykgeyBtX2RldmljZS5zZXROYXRp
dmVCb3VuZHNHZW9tZXRyeShXVEZNb3ZlKGJvdW5kcykpOyB9CiAgICAgdm9pZCBzZXRGbG9vck9y
aWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQpOwotCi0gICAgdm9pZCBjbGVhckZsb29yT3Jp
Z2luKCk7Ci0KKyAgICB2b2lkIGNsZWFyRmxvb3JPcmlnaW4oKSB7IG1fZGV2aWNlLnNldEZsb29y
T3JpZ2luKFdURjo6bnVsbG9wdCk7IH0KICAgICB2b2lkIHNpbXVsYXRlUmVzZXRQb3NlKCk7Ci0K
ICAgICBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBzaW11bGF0ZUlucHV0U291cmNlQ29u
bmVjdGlvbihGYWtlWFJJbnB1dFNvdXJjZUluaXQpOwotCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxGYWtlWFJWaWV3Pj4gcGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0Jik7Ci0KICAg
ICBTaW11bGF0ZWRYUkRldmljZSYgc2ltdWxhdGVkWFJEZXZpY2UoKSB7IHJldHVybiBtX2Rldmlj
ZTsgfQotCiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKCk7Ci0KICAg
ICB2b2lkIHNpbXVsYXRlU2h1dGRvd24oKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViWFJUZXN0LmNwcAppbmRleCAzMzIzYjYxMGM0OGFlYTYyOTg3YjA2MzY2YTBkODBhNDIzYmQz
MGFmLi5lN2U1NzljNDllOTg2NzYyZmEwNDE4YTY2OTZjMTRlZWIxZDk1NjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwCkBAIC00MSwxOCArNDEsMjAgQEAgV2ViWFJUZXN0Ojp+
V2ViWFJUZXN0KCkgPSBkZWZhdWx0Owogdm9pZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29u
bmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGYWtlWFJEZXZp
Y2VJbml0JiBpbml0LCBXZWJGYWtlWFJEZXZpY2VQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLXRlc3QtYXBpLyNkb20teHJ0
ZXN0LXNpbXVsYXRlZGV2aWNlY29ubmVjdGlvbgotICAgIGNvbnRleHQucG9zdFRhc2soW3RoaXMs
IGluaXQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgY29udGV4dC5wb3N0VGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBh
dXRvIGRldmljZSA9IFdlYkZha2VYUkRldmljZTo6Y3JlYXRlKCk7CiAgICAgICAgIGF1dG8mIHNp
bXVsYXRlZERldmljZSA9IGRldmljZS0+c2ltdWxhdGVkWFJEZXZpY2UoKTsKIAorICAgICAgICBW
ZWN0b3I8UmVmPEZha2VYUlZpZXc+PiB2aWV3czsKICAgICAgICAgZm9yIChhdXRvJiB2aWV3SW5p
dCA6IGluaXQudmlld3MpIHsKICAgICAgICAgICAgIGF1dG8gdmlldyA9IFdlYkZha2VYUkRldmlj
ZTo6cGFyc2VWaWV3KHZpZXdJbml0KTsKICAgICAgICAgICAgIGlmICh2aWV3Lmhhc0V4Y2VwdGlv
bigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qodmlldy5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHNpbXVsYXRlZERldmljZS52aWV3cygpLmFwcGVuZCh2aWV3LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKKyAgICAgICAgICAgIHZpZXdzLmFwcGVuZCh2aWV3LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKICAgICAgICAgfQorICAgICAgICBzaW11bGF0ZWREZXZpY2Uuc2V0Vmlld3MoV1RGTW92ZSh2
aWV3cykpOwogCiAgICAgICAgIFZlY3RvcjxYUlJlZmVyZW5jZVNwYWNlVHlwZT4gZmVhdHVyZXM7
CiAgICAgICAgIGlmIChpbml0LnN1cHBvcnRlZEZlYXR1cmVzKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425381</attachid>
            <date>2021-04-07 04:33:26 -0700</date>
            <delta_ts>2021-04-07 05:28:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223580-20210407133325.patch</filename>
            <type>text/plain</type>
            <size>12098</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFkMTExZGMzYjRkMjRm
YzhkYmNhODBhZmZkODAxYWM2YzliODIyMC4uNGY5ZTFjZDY0NGRiMGVkZjRhM2M1NGU5MTlkNDll
NTk3YzBhMTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTIyICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSBmcmFt
ZURhdGEgaW5zdGVhZCBvZiBzY2hlZHVsZU9uTmV4dEZyYW1lIGNhbGxzIGluIFdlYkZha2VYUkRl
dmljZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
NTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBUaGlz
IHBhdGNoIG1ha2VzIHRoZSBXZWJGYWtlWFJEZXZpY2UgY29kZSBtb3JlIHJvYnVzdCBieSBnZXR0
aW5nIHJpZCBvZiB0aGUgc2NoZWR1bGVPbk5leHRGcmFtZSBjYWxscy4KKworICAgICAgICBUZXN0
ZWQgYnkgV2ViWFIgV1BULgorCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnNldFZpZXdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzZXROYXRpdmVCb3VuZHNHZW9tZXRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6c2V0Vmlld2VyT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3cyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldFZpZXdlck9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEZsb29yT3JpZ2luKToKKyAgICAgICAgKiB0ZXN0aW5n
L1dlYkZha2VYUkRldmljZS5oOgorICAgICAgICAqIHRlc3RpbmcvV2ViWFJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSVGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKToKKwog
MjAyMS0wNC0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl0gVmlkZW9zIHN0YXJ0IHBsYXlpbmcgbXV0ZWQgaW4gZXBpcGhhbnkg
d2l0aCBubyB1bm11dGUgaWNvbiB2aXNpYmxlIGluIHRhYiwgd2Via2l0X3dlYl92aWV3X2dldF9p
c19tdXRlZCgpIHJldHVybnMgaW5jb3JyZWN0IHJlc3VsdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCBiMDQ3Yjc1MzQ3NmExOWRhZmI5NDZmMGNkNTZh
YTRkZjExN2YxMmEyLi5lMDE2NGY0OWNhMDk3YjUxYTExYWQxODgyMDU2NTRkYzMwODI4MmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCkBAIC02MCwxMiAr
NjAsMzEgQEAgU2ltdWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRldmljZSgpCiAgICAgc3Rv
cFRpbWVyKCk7CiB9CiAKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNldFZpZXdzKFZlY3RvcjxG
cmFtZURhdGE6OlZpZXc+JiYgdmlld3MpCit7CisgICAgbV9mcmFtZURhdGEudmlld3MgPSBXVEZN
b3ZlKHZpZXdzKTsKK30KKwogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2V0TmF0aXZlQm91bmRz
R2VvbWV0cnkoY29uc3QgVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYgZ2VvbWV0cnkpCiB7Ci0g
ICAgbV9zdGFnZVBhcmFtZXRlcnMuaWQrKzsKLSAgICBtX3N0YWdlUGFyYW1ldGVycy5ib3VuZHMu
Y2xlYXIoKTsKKyAgICBtX2ZyYW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuaWQrKzsKKyAgICBtX2Zy
YW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuYm91bmRzLmNsZWFyKCk7CiAgICAgZm9yIChhdXRvJiBw
b2ludCA6IGdlb21ldHJ5KQotICAgICAgICBtX3N0YWdlUGFyYW1ldGVycy5ib3VuZHMuYXBwZW5k
KHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50LngpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocG9pbnQu
eikgfSk7CisgICAgICAgIG1fZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycy5ib3VuZHMuYXBwZW5k
KHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50LngpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocG9pbnQu
eikgfSk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNldFZpZXdlck9yaWdpbihjb25z
dCBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+JiBvcmlnaW4pCit7CisgICAgaWYgKG9yaWdpbikg
eworICAgICAgICBtX2ZyYW1lRGF0YS5vcmlnaW4gPSAqb3JpZ2luOworICAgICAgICBtX2ZyYW1l
RGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgICAgICBtX2ZyYW1lRGF0YS5pc1RyYWNr
aW5nVmFsaWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mcmFtZURh
dGEub3JpZ2luID0gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2UoKTsKKyAgICBtX2ZyYW1lRGF0YS5p
c1Bvc2l0aW9uVmFsaWQgPSBmYWxzZTsKKyAgICBtX2ZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQg
PSBmYWxzZTsKIH0KIAogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2ltdWxhdGVTaHV0ZG93bkNv
bXBsZXRlZCgpCkBAIC0xMDksMzQgKzEyOCw4IEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnN0
b3BUaW1lcigpCiAKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCgpCiB7
Ci0gICAgYXV0byB1cGRhdGVzID0gV1RGTW92ZShtX3BlbmRpbmdVcGRhdGVzKTsKLSAgICBmb3Ig
KGF1dG8mIHVwZGF0ZSA6IHVwZGF0ZXMpCi0gICAgICAgIHVwZGF0ZSgpOwotCi0gICAgRnJhbWVE
YXRhIGRhdGE7CisgICAgRnJhbWVEYXRhIGRhdGEgPSBtX2ZyYW1lRGF0YTsKICAgICBkYXRhLnNo
b3VsZFJlbmRlciA9IHRydWU7Ci0gICAgaWYgKG1fdmlld2VyT3JpZ2luKSB7Ci0gICAgICAgIGRh
dGEub3JpZ2luID0gKm1fdmlld2VyT3JpZ2luOwotICAgICAgICBkYXRhLmlzVHJhY2tpbmdWYWxp
ZCA9IHRydWU7Ci0gICAgICAgIGRhdGEuaXNQb3NpdGlvblZhbGlkID0gdHJ1ZTsKLSAgICAgICAg
ZGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgPSBtX2VtdWxhdGVkUG9zaXRpb247Ci0gICAgfQotCi0g
ICAgaWYgKG1fZmxvb3JPcmlnaW4pCi0gICAgICAgIGRhdGEuZmxvb3JUcmFuc2Zvcm0gPSB7ICpt
X2Zsb29yT3JpZ2luIH07Ci0KLSAgICBkYXRhLnN0YWdlUGFyYW1ldGVycyA9IG1fc3RhZ2VQYXJh
bWV0ZXJzOwotCi0gICAgZm9yIChhdXRvJiBmYWtlVmlldyA6IG1fdmlld3MpIHsKLSAgICAgICAg
RnJhbWVEYXRhOjpWaWV3IHZpZXc7Ci0gICAgICAgIHZpZXcub2Zmc2V0ID0gZmFrZVZpZXctPm9m
ZnNldCgpOwotICAgICAgICBpZiAoZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkuaGFzVmFsdWUoKSkK
LSAgICAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgKmZha2VWaWV3LT5maWVsZE9mVmlldygp
IH07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgZmFrZVZp
ZXctPnByb2plY3Rpb24oKSB9OwotICAgICAgICAKLSAgICAgICAgZGF0YS52aWV3cy5hcHBlbmQo
dmlldyk7Ci0gICAgfQogCiAgICAgZm9yIChhdXRvJiBsYXllciA6IG1fbGF5ZXJzKQogICAgICAg
ICBkYXRhLmxheWVycy5hZGQobGF5ZXIua2V5LCBGcmFtZURhdGE6OkxheWVyRGF0YSB7IC5vcGFx
dWVUZXh0dXJlID0gbGF5ZXIudmFsdWUgfSk7CkBAIC0xOTAsMjYgKzE4MywyOCBAQCBWZWN0b3I8
UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gU2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzKFBs
YXRmb3JtWFI6OlNlc3NpbwogICAgIHJldHVybiB7IHsgLmFjdGl2ZSA9IHRydWUsIC5leWUgPSBQ
bGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9OwogfQogCi12b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpz
Y2hlZHVsZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jKQotewotICAgIG1fcGVu
ZGluZ1VwZGF0ZXMuYXBwZW5kKFdURk1vdmUoZnVuYykpOwotfQotCiBXZWJGYWtlWFJEZXZpY2U6
OldlYkZha2VYUkRldmljZSgpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNl
dFZpZXdzKGNvbnN0IFZlY3RvcjxGYWtlWFJWaWV3SW5pdD4mIHZpZXdzKQogewotICAgIG1fZGV2
aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXMsIHZpZXdzXSgpIHsKLSAgICAgICAgVmVjdG9y
PFJlZjxGYWtlWFJWaWV3Pj4gZGV2aWNlVmlld3M7Ci0KLSAgICAgICAgZm9yIChhdXRvJiB2aWV3
SW5pdCA6IHZpZXdzKSB7Ci0gICAgICAgICAgICBhdXRvIHZpZXcgPSBwYXJzZVZpZXcodmlld0lu
aXQpOwotICAgICAgICAgICAgaWYgKCF2aWV3Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgIGRldmljZVZpZXdzLmFwcGVuZCh2aWV3LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBW
ZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZpZXc+IGRldmljZVZpZXdzOwor
CisgICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZpZXdzKSB7CisgICAgICAgIGF1dG8gcGFyc2Vk
VmlldyA9IHBhcnNlVmlldyh2aWV3SW5pdCk7CisgICAgICAgIGlmICghcGFyc2VkVmlldy5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgYXV0byBmYWtlVmlldyA9IHBhcnNlZFZpZXcucmVs
ZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6VmlldyB2aWV3OworICAgICAgICAgICAgdmlldy5vZmZzZXQgPSBmYWtlVmlldy0+b2Zm
c2V0KCk7CisgICAgICAgICAgICBpZiAoZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkuaGFzVmFsdWUo
KSkKKyAgICAgICAgICAgICAgICB2aWV3LnByb2plY3Rpb24gPSB7ICpmYWtlVmlldy0+ZmllbGRP
ZlZpZXcoKSB9OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZpZXcucHJvamVj
dGlvbiA9IHsgZmFrZVZpZXctPnByb2plY3Rpb24oKSB9OworCisgICAgICAgICAgICBkZXZpY2VW
aWV3cy5hcHBlbmQodmlldyk7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgbV9kZXZpY2Uu
c2V0Vmlld3MoV1RGTW92ZShkZXZpY2VWaWV3cykpOwotICAgIH0pOworICAgIG1fZGV2aWNlLnNl
dFZpZXdzKFdURk1vdmUoZGV2aWNlVmlld3MpKTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6
OmRpc2Nvbm5lY3QoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKQEAgLTIxOSw1
NCArMjE0LDI1IEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3
ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsYXRlZFBv
c2l0aW9uKQogewotICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4p
OwotICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byBwb3NlID0gcGFyc2VS
aWdpZFRyYW5zZm9ybShvcmlnaW4pOworICAgIGlmIChwb3NlLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBvc2UgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0KLSAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RG
TW92ZShwb3NlKSwgZW11bGF0ZWRQb3NpdGlvbl0oKSBtdXRhYmxlIHsKLSAgICAgICAgbV9kZXZp
Y2Uuc2V0Vmlld2VyT3JpZ2luKFdURk1vdmUocG9zZSkpOwotICAgICAgICBtX2RldmljZS5zZXRF
bXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pOwotICAgIH0pOwotfQotCi12b2lkIFdl
YkZha2VYUkRldmljZTo6Y2xlYXJWaWV3ZXJPcmlnaW4oKQotewotICAgIG1fZGV2aWNlLnNjaGVk
dWxlT25OZXh0RnJhbWUoW3RoaXNdKCkgewotICAgICAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmln
aW4oV1RGOjpudWxsb3B0KTsKLSAgICB9KTsKKyAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4o
cG9zZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgbV9kZXZpY2Uuc2V0RW11bGF0ZWRQb3Np
dGlvbihlbXVsYXRlZFBvc2l0aW9uKTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVs
YXRlVmlzaWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSkKIHsKIH0KIAotdm9pZCBXZWJG
YWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4m
JiBib3VuZHMpCi17Ci0gICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbdGhpcywgYm91
bmRzID0gV1RGTW92ZShib3VuZHMpXSgpIHsKLSAgICAgICAgbV9kZXZpY2Uuc2V0TmF0aXZlQm91
bmRzR2VvbWV0cnkoYm91bmRzKTsKLSAgICB9KTsKLX0gCi0KIHZvaWQgV2ViRmFrZVhSRGV2aWNl
OjpzZXRGbG9vck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2luKQogewotICAg
IGF1dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOwotICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byBwb3NlID0gcGFyc2VSaWdpZFRyYW5zZm9ybShv
cmlnaW4pOworICAgIGlmIChwb3NlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHBvc2UgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0KLSAgICBtX2Rl
dmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3NlKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGTW92ZShwb3NlKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKCkK
LXsKLSAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzXSgpIHsKLSAgICAgICAg
bV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGOjpudWxsb3B0KTsKLSAgICB9KTsKKyAgICBtX2Rl
dmljZS5zZXRGbG9vck9yaWdpbihwb3NlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIH0KIAogdm9p
ZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlUmVzZXRQb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IGNjM2FmZjk2NWViYmU4ZTQ3NzViN2IxNThjYWE1
MDI4NmYyMDJjM2QuLjc2MWZjYmMwMzY3MjA2OTZlYjU2ZjhjYzRkM2VlNTg1YzljY2E5MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtNzIsMTIgKzcyLDEx
IEBAIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRl
dmljZSB7CiBwdWJsaWM6CiAgICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB+U2ltdWxhdGVk
WFJEZXZpY2UoKTsKLSAgICB2b2lkIHNldFZpZXdzKFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiYg
dmlld3MpIHsgbV92aWV3cyA9IFdURk1vdmUodmlld3MpOyB9CisgICAgdm9pZCBzZXRWaWV3cyhW
ZWN0b3I8RnJhbWVEYXRhOjpWaWV3PiYmKTsKICAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21l
dHJ5KGNvbnN0IFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mKTsKLSAgICB2b2lkIHNldFZpZXdl
ck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3Jp
Z2luID0gV1RGTW92ZShvcmlnaW4pOyB9Ci0gICAgdm9pZCBzZXRGbG9vck9yaWdpbihPcHRpb25h
bDxGcmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9y
aWdpbik7IH0KLSAgICB2b2lkIHNldEVtdWxhdGVkUG9zaXRpb24oYm9vbCBlbXVsYXRlZCkgeyBt
X2VtdWxhdGVkUG9zaXRpb24gPSBlbXVsYXRlZDsgfQotICAgIFZlY3RvcjxSZWY8RmFrZVhSVmll
dz4+JiB2aWV3cygpIHsgcmV0dXJuIG1fdmlld3M7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdp
bihjb25zdCBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+Jik7CisgICAgdm9pZCBzZXRGbG9vck9y
aWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKSB7IG1fZnJhbWVEYXRhLmZs
b29yVHJhbnNmb3JtID0gV1RGTW92ZShvcmlnaW4pOyB9CisgICAgdm9pZCBzZXRFbXVsYXRlZFBv
c2l0aW9uKGJvb2wgZW11bGF0ZWQpIHsgbV9mcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkID0g
ZW11bGF0ZWQ7IH0KICAgICB2b2lkIHNldFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24oYm9v
bCBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKSB7IG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlm
aWNhdGlvbiA9IHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIHNpbXVs
YXRlU2h1dGRvd25Db21wbGV0ZWQoKTsKICAgICB2b2lkIHNjaGVkdWxlT25OZXh0RnJhbWUoRnVu
Y3Rpb248dm9pZCgpPiYmKTsKQEAgLTk1LDE2ICs5NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3RvcFRpbWVyKCk7CiAgICAgdm9pZCBmcmFtZVRpbWVyRmlyZWQoKTsKIAotICAgIE9wdGlvbmFs
PFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7Ci0gICAg
T3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiBtX3ZpZXdlck9yaWdpbjsKLSAgICBPcHRpb25hbDxG
cmFtZURhdGE6OlBvc2U+IG1fZmxvb3JPcmlnaW47Ci0gICAgYm9vbCBtX2VtdWxhdGVkUG9zaXRp
b24geyBmYWxzZSB9OwotICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+IG1fdmlld3M7CisgICAg
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgbV9mcmFtZURhdGE7CiAgICAgYm9vbCBtX3N1
cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24geyBmYWxzZSB9OwogICAgIFRpbWVyIG1fZnJhbWVU
aW1lcjsKICAgICBSZXF1ZXN0RnJhbWVDYWxsYmFjayBtX0ZyYW1lQ2FsbGJhY2s7Ci0gICAgVmVj
dG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1VwZGF0ZXM7Ci0gICAgRnJhbWVEYXRhOjpT
dGFnZVBhcmFtZXRlcnMgbV9zdGFnZVBhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMPiBtX2dsOwogICAgIEhhc2hNYXA8UGxhdGZvcm1YUjo6TGF5ZXJIYW5k
bGUsIFBsYXRmb3JtR0xPYmplY3Q+IG1fbGF5ZXJzOwogICAgIHVpbnQzMl90IG1fbGF5ZXJJbmRl
eCB7IDAgfTsKQEAgLTExNSwzMSArMTA4LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdl
YkZha2VYUkRldmljZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGYWtlWFJE
ZXZpY2UoKSk7IH0KIAogICAgIHZvaWQgc2V0Vmlld3MoY29uc3QgVmVjdG9yPEZha2VYUlZpZXdJ
bml0PiYpOwotCiAgICAgdm9pZCBkaXNjb25uZWN0KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKLQogICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBv
cmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IGZhbHNlKTsKLQotICAgIHZvaWQgY2xlYXJW
aWV3ZXJPcmlnaW4oKTsKLQorICAgIHZvaWQgY2xlYXJWaWV3ZXJPcmlnaW4oKSB7IG1fZGV2aWNl
LnNldFZpZXdlck9yaWdpbihXVEY6Om51bGxvcHQpOyB9CiAgICAgdm9pZCBzaW11bGF0ZVZpc2li
aWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpOwotCi0gICAgdm9pZCBzZXRCb3VuZHNHZW9t
ZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiYgYm91bmRzQ29vcmRpbmF0ZXMpOwotCisg
ICAgdm9pZCBzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiYgYm91
bmRzKSB7IG1fZGV2aWNlLnNldE5hdGl2ZUJvdW5kc0dlb21ldHJ5KFdURk1vdmUoYm91bmRzKSk7
IH0KICAgICB2b2lkIHNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCk7Ci0K
LSAgICB2b2lkIGNsZWFyRmxvb3JPcmlnaW4oKTsKLQorICAgIHZvaWQgY2xlYXJGbG9vck9yaWdp
bigpIHsgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGOjpudWxsb3B0KTsgfQogICAgIHZvaWQg
c2ltdWxhdGVSZXNldFBvc2UoKTsKLQogICAgIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+
IHNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCk7Ci0K
ICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZha2VYUlZpZXc+PiBwYXJzZVZpZXcoY29uc3Qg
RmFrZVhSVmlld0luaXQmKTsKLQogICAgIFNpbXVsYXRlZFhSRGV2aWNlJiBzaW11bGF0ZWRYUkRl
dmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlOyB9Ci0KICAgICB2b2lkIHNldFN1cHBvcnRzU2h1dGRv
d25Ob3RpZmljYXRpb24oKTsKLQogICAgIHZvaWQgc2ltdWxhdGVTaHV0ZG93bigpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwCmluZGV4IDMzMjNiNjEwYzQ4YWVh
NjI5ODdiMDYzNjZhMGQ4MGE0MjNiZDMwYWYuLmRkYzU3MDA5ZTg4MmY2NTk4Y2M1OTY2OGQzOTc5
NTFiMjg0YjkwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKQEAgLTQxLDE4
ICs0MSwxMSBAQCBXZWJYUlRlc3Q6On5XZWJYUlRlc3QoKSA9IGRlZmF1bHQ7CiB2b2lkIFdlYlhS
VGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZha2VYUkRldmljZUluaXQmIGluaXQsIFdlYkZha2VYUkRldmljZVByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHItdGVzdC1hcGkvI2RvbS14cnRlc3Qtc2ltdWxhdGVkZXZpY2Vjb25uZWN0aW9uCi0gICAg
Y29udGV4dC5wb3N0VGFzayhbdGhpcywgaW5pdCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBjb250ZXh0
LnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXQsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZGV2aWNlID0gV2ViRmFrZVhSRGV2aWNlOjpjcmVh
dGUoKTsKICAgICAgICAgYXV0byYgc2ltdWxhdGVkRGV2aWNlID0gZGV2aWNlLT5zaW11bGF0ZWRY
UkRldmljZSgpOwogCi0gICAgICAgIGZvciAoYXV0byYgdmlld0luaXQgOiBpbml0LnZpZXdzKSB7
Ci0gICAgICAgICAgICBhdXRvIHZpZXcgPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyh2aWV3
SW5pdCk7Ci0gICAgICAgICAgICBpZiAodmlldy5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KHZpZXcucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaW11bGF0ZWREZXZp
Y2Uudmlld3MoKS5hcHBlbmQodmlldy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgZGV2aWNlLT5zZXRWaWV3cyhpbml0LnZpZXdzKTsKIAogICAgICAgICBWZWN0b3I8
WFJSZWZlcmVuY2VTcGFjZVR5cGU+IGZlYXR1cmVzOwogICAgICAgICBpZiAoaW5pdC5zdXBwb3J0
ZWRGZWF0dXJlcykgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>