<?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>212314</bug_id>
          
          <creation_ts>2020-05-24 05:40:27 -0700</creation_ts>
          <short_desc>[GTK4] Make PointerLock work</short_desc>
          <delta_ts>2020-06-01 04:53:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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=212592</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>212298</dependson>
          <blocked>210100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655693</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-24 05:40:27 -0700</bug_when>
    <thetext>There&apos;s no gdk_device_warp() nor grabs in GTK4 so we will have to use XLib API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655721</commentid>
    <comment_count>1</comment_count>
      <attachid>400158</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-24 06:38:05 -0700</bug_when>
    <thetext>Created attachment 400158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656043</commentid>
    <comment_count>2</comment_count>
      <attachid>400158</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-26 08:19:20 -0700</bug_when>
    <thetext>Comment on attachment 400158
Patch

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

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:166
&gt; +#if USE(GTK4)

You don&apos;t need this #if, we have a “gdk_event_get_root_coords()”
stub in “GtkVersioning.h” which works for GTK4 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656312</commentid>
    <comment_count>3</comment_count>
      <attachid>400158</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-27 00:54:54 -0700</bug_when>
    <thetext>Comment on attachment 400158
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:166
&gt;&gt; +#if USE(GTK4)
&gt; 
&gt; You don&apos;t need this #if, we have a “gdk_event_get_root_coords()”
&gt; stub in “GtkVersioning.h” which works for GTK4 :)

I left this one on purpose to avoid calling gdk_event_get_coords() again. Maybe it&apos;s not worth the super-micro-optimization, though. I&apos;ll change to improve the code readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656316</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-05-27 01:09:56 -0700</bug_when>
    <thetext>Committed r262187: &lt;https://trac.webkit.org/changeset/262187&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400158</attachid>
            <date>2020-05-24 06:38:05 -0700</date>
            <delta_ts>2020-05-26 08:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk4-pointer-lock.diff</filename>
            <type>text/plain</type>
            <size>36240</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNmUyNWFkZTAwYzcuLjVjYmI0Njc4ODY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTA1LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gTWFrZSBQb2ludGVyTG9jayB3b3JrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIzMTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lkZ2V0RGV2aWNlUG9zaXRp
b24pOiBIZWxwZXIgZnVuY3Rpb24gdG8gYXZvaWQgI2lmZGVmcyBkdWUgdG8gR1RLIHZlcnNpb24g
ZGlmZmVyZW5jZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oOgorCiAy
MDIwLTA1LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXVtXVFJdIEV2ZW50U2VuZGVyOiBzdG9wIHVzaW5nIEdka0V2ZW50IEFQSSBp
biBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VXRpbGl0aWVzLmNwcAppbmRleCBmYzE2MDE4ZWVlZmIuLjUyOWE3ODU3ZWI0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKQEAgLTg0LDYgKzg0LDE4
IEBAIEludFBvaW50IHdpZGdldFJvb3RDb29yZHMoR3RrV2lkZ2V0KiB3aWRnZXQsIGludCB4LCBp
bnQgeSkKICNlbmRpZgogfQogCit2b2lkIHdpZGdldERldmljZVBvc2l0aW9uKEd0a1dpZGdldCog
d2lkZ2V0LCBHZGtEZXZpY2UqIGRldmljZSwgZG91YmxlKiB4LCBkb3VibGUqIHksIEdka01vZGlm
aWVyVHlwZSogc3RhdGUpCit7CisjaWYgVVNFKEdUSzQpCisgICAgZ2RrX3N1cmZhY2VfZ2V0X2Rl
dmljZV9wb3NpdGlvbihndGtfbmF0aXZlX2dldF9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X25hdGl2
ZSh3aWRnZXQpKSwgZGV2aWNlLCB4LCB5LCBzdGF0ZSk7CisjZWxzZQorICAgIGludCB4SW50LCB5
SW50OworICAgIGdka193aW5kb3dfZ2V0X2RldmljZV9wb3NpdGlvbihndGtfd2lkZ2V0X2dldF93
aW5kb3cod2lkZ2V0KSwgZGV2aWNlLCAmeEludCwgJnlJbnQsIHN0YXRlKTsKKyAgICAqeCA9IHhJ
bnQ7CisgICAgKnkgPSB5SW50OworI2VuZGlmCit9CisKIHVuc2lnbmVkIHdpZGdldEtleXZhbFRv
S2V5Y29kZShHdGtXaWRnZXQqIHdpZGdldCwgdW5zaWduZWQga2V5dmFsKQogewogICAgIHVuc2ln
bmVkIGtleWNvZGUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5oCmluZGV4IDU3NDUwZjNkMjllMy4uNWFhYjRlYjc5YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIEludFBv
aW50OwogSW50UG9pbnQgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChHdGtXaWRnZXQq
LCBjb25zdCBJbnRQb2ludCYpOwogYm9vbCB3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3co
R3RrV2lkZ2V0Kik7CiBJbnRQb2ludCB3aWRnZXRSb290Q29vcmRzKEd0a1dpZGdldCosIGludCwg
aW50KTsKK3ZvaWQgd2lkZ2V0RGV2aWNlUG9zaXRpb24oR3RrV2lkZ2V0KiwgR2RrRGV2aWNlKiwg
ZG91YmxlKiwgZG91YmxlKiwgR2RrTW9kaWZpZXJUeXBlKik7CiB1bnNpZ25lZCB3aWRnZXRLZXl2
YWxUb0tleWNvZGUoR3RrV2lkZ2V0KiwgdW5zaWduZWQpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBH
ZGtFdmVudFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIyYmNjN2M4ZGJlNi4uMGIwNGZlMDYwNGMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA1LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gTWFrZSBQb2ludGVyTG9jayB3
b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIz
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
WExpYiBBUEkgZm9yIHdhcnAgYW5kIGdyYWIsIHNpbmNlIHRoZXkgYXJlIG5vIGxvbmdlciBhdmFp
bGFibGUgaW4gR1RLNC4gVGhlIGdyYWIgd2FzIG5vdCBhY3R1aWFsbHkgbmVlZGVkCisgICAgICAg
IHVuZGVyIFdheWxhbmQuIEFsc28gc3RvcCB1c2luZyBHZGtFdmVudCB0byBrZWVwIHRyYWNrIG9m
IG1vdGlvbiBldmVudHMgYW5kIGNyZWF0ZSB0aGUgUG9pbnRlckxvY2tNYW5hZ2VyIHRvIGJlCisg
ICAgICAgIGFibGUgdG8gdGVzdCBwb2ludGVyIGxvY2sgYW5kIG1vdmVtZW50IGRlbHRhLgorCisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQv
Z3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVX
ZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KTogVXNlIEZsb2F0U2l6ZSBpbnN0ZWFk
IG9mIEZsb2F0UG9pbnQgZm9yIG1vdmVtZW50IGRlbHRhLgorICAgICAgICAqIFNoYXJlZC9ndGsv
V2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVu
dEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHA6CisgICAgICAgIChNb3Rpb25FdmVudDo6TW90aW9uRXZlbnQpOiBIZWxwZXIgc3RydWN0
IHRvIGtlZXAgdHJhY2sgb2YgbW90aW9uIGV2ZW50cyB3aXRob3V0IHVzaW5nIEdka0V2ZW50Lgor
ICAgICAgICAoTW90aW9uRXZlbnQ6OmRlbHRhKTogUmV0dXJuIHRoZSBtb3ZlbWVudCBkZWx0YSBm
b3IgdGhlIGdpdmVuIGN1cnJlbnQgZXZlbnQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUhh
bmRsZU1vdXNlRXZlbnQpOiBVc2UgTW90aW9uRXZlbnQgaW5zdGVhZCBvZiBHZGtFdmVudC4KKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlTW90aW9uTm90aWZ5RXZlbnQpOiBQYXNzIHRoZSBldmVu
dCBjb29yZGluYXRlcyB0byB0aGUgcG9pbnRlciBsb2NrIG1hbmFnZXIgc2luY2UgdGhhdCdzIHRo
ZQorICAgICAgICBvbmx5IHRoaW5nIG5lZWRlZC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
UmVxdWVzdFBvaW50ZXJMb2NrKTogVXNlIE1vdGlvbkV2ZW50IGluc3RlYWQgb2YgR2RrRXZlbnQu
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURpZExvc2VQb2ludGVyTG9jayk6IFJlbW92ZSBH
VEs0IGlmZGVmcy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZU1vdXNlRXZl
bnQpOiBGb3J3YXJkIHRoZSBldmVudCB0byB0aGUgcG9pbnRlciBsb2NrIG1hbmFnZXIgaWYgcHJl
c2VudC4gQWxzbyBrZWVwCisgICAgICAgIHRyYWNrIG9mIHRoZSBtb3Rpb24gZXZlbnQgYW5kIHNl
dCB0aGUgbW92ZW1lbnQgZGVsdGEuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9j
a01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXI6OmNyZWF0
ZSk6IFJlY2VpdmUgZXZlbnQgaW5mb3JtYXRpb24gYXMgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIHVz
aW5nIEdka0V2ZW50LgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXI6OlBvaW50
ZXJMb2NrTWFuYWdlcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFn
ZXI6On5Qb2ludGVyTG9ja01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01h
bmFnZXI6OmxvY2spOiBSZW1vdmUgdGhlIGdyYWIuCisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJM
b2NrTWFuYWdlcjo6dW5sb2NrKTogUmVtb3ZlIHRoZSB1bmdyYWIuCisgICAgICAgIChXZWJLaXQ6
OlBvaW50ZXJMb2NrTWFuYWdlcjo6aGFuZGxlTW90aW9uKTogVXNlIE5hdGl2ZVdlYk1vdXNlRXZl
bnQgY29uc3RydWN0b3IgdGFraW5nIGFsbCBpbmZvcm1hdGlvbiBhcyBwYXJhbWV0ZXJzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZDo6UG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZCk6
IFJlY2VpdmUgZXZlbnQgaW5mb3JtYXRpb24gYXMgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIHVzaW5n
IEdka0V2ZW50LgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kOjps
b2NrKTogSGlkZSB0aGUgY3Vyc29yLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFn
ZXJXYXlsYW5kOjp1bmxvY2spOiBVbmhpZGUgdGhlIGN1cnNvci4KKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1BvaW50ZXJMb2NrTWFuYWdlclgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJM
b2NrTWFuYWdlclgxMTo6UG9pbnRlckxvY2tNYW5hZ2VyWDExKTogUmVjZWl2ZSBldmVudCBpbmZv
cm1hdGlvbiBhcyBwYXJhbWV0ZXJzIGluc3RlYWQgb2YgdXNpbmcgR2RrRXZlbnQuCisgICAgICAg
IChXZWJLaXQ6OlBvaW50ZXJMb2NrTWFuYWdlclgxMTo6bG9jayk6IFVzZSBYR3JhYlBvaW50ZXIu
CisgICAgICAgIChXZWJLaXQ6OlBvaW50ZXJMb2NrTWFuYWdlclgxMTo6dW5sb2NrKTogVXNlIFhV
bmdyYWJQb2ludGVyLgorICAgICAgICAoV2ViS2l0OjpQb2ludGVyTG9ja01hbmFnZXJYMTE6OmRp
ZFJlY2VpdmVNb3Rpb25FdmVudCk6IFVzZSBYV2FycFBvaW50ZXIuCisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuaDoKKwogMjAyMC0wNS0yNCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1RSXSBF
dmVudFNlbmRlcjogc3RvcCB1c2luZyBHZGtFdmVudCBBUEkgaW4gcHJlcGFyYXRpb24gZm9yIEdU
SzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCBjNmE1
OTVhMjVlOTAuLmQ2Zjk5MDJiOTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdl
Yk1vdXNlRXZlbnQuaApAQCAtNjQsOSArNjQsOSBAQCBwdWJsaWM6CiAgICAgTmF0aXZlV2ViTW91
c2VFdmVudChOU0V2ZW50ICosIE5TRXZlbnQgKmxhc3RQcmVzc3VyZUV2ZW50LCBOU1ZpZXcgKik7
CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBOYXRp
dmVXZWJNb3VzZUV2ZW50Jik7Ci0gICAgTmF0aXZlV2ViTW91c2VFdmVudChHZGtFdmVudCosIGlu
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+KTsKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
KEdka0V2ZW50KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBpbnQsIE9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50Pik7Ci0gICAgTmF0aXZlV2ViTW91c2VFdmVudChUeXBlLCBCdXR0b24sIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBpbnQgY2xpY2tDb3VudCwg
T3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMpOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQo
R2RrRXZlbnQqLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4pOworICAgIE5hdGl2
ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGludCwg
T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChU
eXBlLCBCdXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBp
bnQgY2xpY2tDb3VudCwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0U2l6ZT4pOwogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
TmF0aXZlV2ViTW91c2VFdmVudCg6OldlYkV2ZW50ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IDdmODI0OTg0YTA1
YS4uZTE3ZTI1MDI3ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0
aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05h
dGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoR2Rr
RXZlbnQqIGV2ZW50LCBpbnQgZXZlbnRDbGlja0NvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4gZGVsdGEpCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KEdk
a0V2ZW50KiBldmVudCwgaW50IGV2ZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRTaXplPiBkZWx0YSkKICAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBldmVudENsaWNrQ291bnQsIGRlbHRhKSkKICAgICAsIG1f
bmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQogewogfQogCi1OYXRpdmVXZWJNb3Vz
ZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBpbnQgZXZlbnRDbGlja0NvdW50LCBPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4gZGVsdGEpCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3Vz
ZUV2ZW50KEdka0V2ZW50KiBldmVudCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9u
LCBpbnQgZXZlbnRDbGlja0NvdW50LCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IGRlbHRh
KQogICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZl
bnQoZXZlbnQsIHBvc2l0aW9uLCBwb3NpdGlvbiwgZXZlbnRDbGlja0NvdW50LCBkZWx0YSkpCiAg
ICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkKIHsKQEAgLTQ4LDggKzQ4
LDggQEAgTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9zaXRpb24pCiB7CiB9CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5h
dGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9y
dCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIE9wdGlvblNldDxN
b2RpZmllcj4gbW9kaWZpZXJzKQotICAgIDogV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIGJ1
dHRvbnMsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJN
b3VzZUV2ZW50KFR5cGUgdHlwZSwgQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9u
cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8TW9kaWZpZXI+
IG1vZGlmaWVycywgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSkKKyAgICA6IFdl
Yk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCBidXR0b25zLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRp
b24sIGRlbHRhLnZhbHVlT3IoRmxvYXRTaXplKCkpLndpZHRoKCksIGRlbHRhLnZhbHVlT3IoRmxv
YXRTaXplKCkpLmhlaWdodCgpLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2
ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5
LmNwcAppbmRleCBkMDZmZTc3YjgxYzMuLjE2YjRmYjY1ZmZlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0
aWMgaW5saW5lIHNob3J0IHByZXNzZWRNb3VzZUJ1dHRvbnMoR2RrTW9kaWZpZXJUeXBlIHN0YXRl
KQogICAgIHJldHVybiBidXR0b25zOwogfQogCi1XZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGludCBjdXJyZW50
Q2xpY2tDb3VudCwgT3B0aW9uYWw8SW50UG9pbnQ+IGRlbHRhKQorV2ViTW91c2VFdmVudCBXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBp
bnQgY3VycmVudENsaWNrQ291bnQsIE9wdGlvbmFsPEZsb2F0U2l6ZT4gZGVsdGEpCiB7CiAgICAg
ZG91YmxlIHgsIHk7CiAgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7CkBA
IC0xNDgsNyArMTQ4LDcgQEAgV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
Yk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqIGV2ZW50LCBpbnQgY3UKICAgICByZXR1cm4gY3Jl
YXRlV2ViTW91c2VFdmVudChldmVudCwgeyBjbGFtcFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVn
ZXIoeSkgfSwgeyBjbGFtcFRvSW50ZWdlcih4Um9vdCksIGNsYW1wVG9JbnRlZ2VyKHlSb290KSB9
LCBjdXJyZW50Q2xpY2tDb3VudCwgZGVsdGEpOwogfQogCi1XZWJNb3VzZUV2ZW50IFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCogZXZlbnQsIGNvbnN0
IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBpbnQg
Y3VycmVudENsaWNrQ291bnQsIE9wdGlvbmFsPEludFBvaW50PiBkZWx0YSkKK1dlYk1vdXNlRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBl
dmVudCwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIGludCBjdXJyZW50Q2xpY2tDb3VudCwgT3B0aW9uYWw8RmxvYXRTaXplPiBkZWx0YSkK
IHsKICNpZiBVU0UoR1RLNCkKICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBhIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQgcmVwcmVzZW50aW5nIGEgY3Jvc3NpbmcgZXZlbnQgaXMgY29waWVkLgpAQCAt
MTYwLDcgKzE2MCw3IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJN
b3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29uc3QKICAgICBnZGtfZXZlbnRfZ2V0
X3N0YXRlKGV2ZW50LCAmc3RhdGUpOwogCiAgICAgV2ViRXZlbnQ6OlR5cGUgdHlwZSA9IHN0YXRp
Y19jYXN0PFdlYkV2ZW50OjpUeXBlPigwKTsKLSAgICBJbnRQb2ludCBtb3ZlbWVudERlbHRhOwor
ICAgIEZsb2F0U2l6ZSBtb3ZlbWVudERlbHRhOwogCiAgICAgc3dpdGNoIChnZGtfZXZlbnRfZ2V0
X2V2ZW50X3R5cGUoY29uc3RfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSkpIHsKICAgICBjYXNlIEdE
S19NT1RJT05fTk9USUZZOgpAQCAtMTk5LDggKzE5OSw4IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZl
bnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEdka0V2ZW50KiBldmVudCwgY29u
c3QKICAgICAgICAgcHJlc3NlZE1vdXNlQnV0dG9ucyhzdGF0ZSksCiAgICAgICAgIHBvc2l0aW9u
LAogICAgICAgICBnbG9iYWxQb3NpdGlvbiwKLSAgICAgICAgbW92ZW1lbnREZWx0YS54KCksCi0g
ICAgICAgIG1vdmVtZW50RGVsdGEueSgpLAorICAgICAgICBtb3ZlbWVudERlbHRhLndpZHRoKCks
CisgICAgICAgIG1vdmVtZW50RGVsdGEuaGVpZ2h0KCksCiAgICAgICAgIDAgLyogZGVsdGFaICov
LAogICAgICAgICBjdXJyZW50Q2xpY2tDb3VudCwKICAgICAgICAgbW9kaWZpZXJzRm9yRXZlbnQo
ZXZlbnQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4
IDE0YmJhOTg1ZTdhZC4uZjg2NzJiNmZkOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJNb3VzZUV2
ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgR2RrRXZlbnQqLCBpbnQsIE9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50Pik7Ci0gICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91
c2VFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBpbnQsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50Pik7Cisg
ICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVu
dCosIGludCwgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPik7CisgICAgc3RhdGljIFdlYk1v
dXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBHZGtFdmVudCosIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBpbnQsIE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0U2l6ZT4pOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgV2ViV2hlZWxF
dmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEdka0V2ZW50Kik7CiAgICAgc3RhdGljIFdl
YldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBHZGtFdmVudCosIFdlYldoZWVs
RXZlbnQ6OlBoYXNlLCBXZWJXaGVlbEV2ZW50OjpQaGFzZSBtb21lbnR1bVBoYXNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKaW5kZXggMzNlZGNjYTkwYWM0Li45ZmRjNDVhYTI3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xNDcs
NiArMTQ3LDc5IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKK3N0cnVjdCBNb3Rpb25FdmVudCB7
CisgICAgTW90aW9uRXZlbnQoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEZsb2F0
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCB1bnNp
Z25lZCBzaG9ydCBidXR0b25zLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmll
cnMpCisgICAgICAgIDogcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9zaXRpb24pCisgICAgICAgICwgYnV0dG9uKGJ1dHRvbikKKyAgICAgICAgLCBi
dXR0b25zKGJ1dHRvbnMpCisgICAgICAgICwgbW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICB7Cisg
ICAgfQorCisgICAgTW90aW9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50KiBldmVu
dCkKKyAgICB7CisgICAgICAgIGRvdWJsZSB4LCB5LCB4Um9vdCwgeVJvb3Q7CisgICAgICAgIEdk
a01vZGlmaWVyVHlwZSBzdGF0ZTsKKyAgICAgICAgaWYgKGV2ZW50KSB7CisgICAgICAgICAgICBn
ZGtfZXZlbnRfZ2V0X2Nvb3JkcyhldmVudCwgJngsICZ5KTsKKyNpZiBVU0UoR1RLNCkKKyAgICAg
ICAgICAgIHhSb290ID0geDsKKyAgICAgICAgICAgIHlSb290ID0geTsKKyNlbHNlCisgICAgICAg
ICAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmeFJvb3QsICZ5Um9vdCk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIGdka19ldmVudF9nZXRfc3RhdGUoZXZlbnQsICZzdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvKiBkZXZpY2UgPSBnZGtfc2VhdF9nZXRf
cG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0a193aWRnZXRfZ2V0X2Rpc3Bs
YXkod2lkZ2V0KSkpOworICAgICAgICAgICAgd2lkZ2V0RGV2aWNlUG9zaXRpb24od2lkZ2V0LCBk
ZXZpY2UsICZ4LCAmeSwgJnN0YXRlKTsKKyAgICAgICAgICAgIGF1dG8gcm9vdFBvaW50ID0gd2lk
Z2V0Um9vdENvb3Jkcyh3aWRnZXQsIHgsIHkpOworICAgICAgICAgICAgeFJvb3QgPSByb290UG9p
bnQueCgpOworICAgICAgICAgICAgeVJvb3QgPSByb290UG9pbnQueSgpOworICAgICAgICB9CisK
KyAgICAgICAgcG9zaXRpb24uc2V0WCh4KTsKKyAgICAgICAgcG9zaXRpb24uc2V0WSh5KTsKKyAg
ICAgICAgZ2xvYmFsUG9zaXRpb24uc2V0WCh4Um9vdCk7CisgICAgICAgIGdsb2JhbFBvc2l0aW9u
LnNldFkoeVJvb3QpOworCisgICAgICAgIGlmIChzdGF0ZSAmIEdES19DT05UUk9MX01BU0spCisg
ICAgICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2ZW50OjpNb2RpZmllcjo6Q29udHJvbEtleSk7
CisgICAgICAgIGlmIChzdGF0ZSAmIEdES19TSElGVF9NQVNLKQorICAgICAgICAgICAgbW9kaWZp
ZXJzLmFkZChXZWJFdmVudDo6TW9kaWZpZXI6OlNoaWZ0S2V5KTsKKyAgICAgICAgaWYgKHN0YXRl
ICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgICAgIG1vZGlmaWVycy5hZGQoV2ViRXZlbnQ6Ok1v
ZGlmaWVyOjpBbHRLZXkpOworICAgICAgICBpZiAoc3RhdGUgJiBHREtfTUVUQV9NQVNLKQorICAg
ICAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOworCisg
ICAgICAgIGlmIChzdGF0ZSAmIEdES19CVVRUT04xX01BU0spIHsKKyAgICAgICAgICAgIGJ1dHRv
biA9IFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b247CisgICAgICAgICAgICBidXR0b25zIHw9IDE7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlICYgR0RLX0JVVFRPTjJfTUFTSykgeworICAg
ICAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9uOworICAgICAgICAg
ICAgYnV0dG9ucyB8PSA0OworICAgICAgICB9CisgICAgICAgIGlmIChzdGF0ZSAmIEdES19CVVRU
T04zX01BU0spIHsKKyAgICAgICAgICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0
dG9uOworICAgICAgICAgICAgYnV0dG9ucyB8PSAyOworICAgICAgICB9CisgICAgfQorCisgICAg
RmxvYXRTaXplIGRlbHRhKEdka0V2ZW50KiBldmVudCkKKyAgICB7CisgICAgICAgIGRvdWJsZSB4
LCB5OworICAgICAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29vcmRzKGV2ZW50LCAmeCwgJnkpOwor
ICAgICAgICByZXR1cm4gRmxvYXRQb2ludCh4LCB5KSAtIGdsb2JhbFBvc2l0aW9uOworICAgIH0K
KworICAgIEZsb2F0UG9pbnQgcG9zaXRpb247CisgICAgRmxvYXRQb2ludCBnbG9iYWxQb3NpdGlv
bjsKKyAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uIHsgV2ViTW91c2VFdmVudDo6Tm9C
dXR0b24gfTsKKyAgICB1bnNpZ25lZCBzaG9ydCBidXR0b25zIHsgMCB9OworICAgIE9wdGlvblNl
dDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVyczsKK307CisKICNpZiAhVVNFKEdUSzQpCiB0
eXBlZGVmIEhhc2hNYXA8R3RrV2lkZ2V0KiwgSW50UmVjdD4gV2ViS2l0V2ViVmlld0NoaWxkcmVu
TWFwOwogI2VuZGlmCkBAIC0yMDUsNyArMjc4LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUgewogICAgIEtleUJpbmRpbmdUcmFuc2xhdG9yIGtleUJpbmRpbmdUcmFuc2xhdG9y
OwogICAgIFRvdWNoRXZlbnRzTWFwIHRvdWNoRXZlbnRzOwogICAgIEludFNpemUgY29udGVudHNT
aXplOwotICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGxhc3RNb3Rpb25FdmVudDsKKyAgICBPcHRp
b25hbDxNb3Rpb25FdmVudD4gbGFzdE1vdGlvbkV2ZW50OwogCiAgICAgR3RrV2luZG93KiB0b3Bs
ZXZlbE9uU2NyZWVuV2luZG93IHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIGxvbmcgdG9wbGV2
ZWxGb2N1c0luRXZlbnRJRCB7IDAgfTsKQEAgLTEwMTUsNyArMTA4OCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlTW91c2VFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIEdkCiAgICAgQVNTRVJUKCFwcml2LT5kaWFsb2cpOwogCiAgICAgaW50IGNsaWNr
Q291bnQgPSAwOwotICAgIE9wdGlvbmFsPEludFBvaW50PiBtb3ZlbWVudERlbHRhOworICAgIE9w
dGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKICAgICBHZGtFdmVudFR5cGUgZXZlbnRU
eXBlID0gZ2RrX2V2ZW50X2dldF9ldmVudF90eXBlKGV2ZW50KTsKICAgICBzd2l0Y2ggKGV2ZW50
VHlwZSkgewogICAgIGNhc2UgR0RLX0JVVFRPTl9QUkVTUzoKQEAgLTEwNDYsMTQgKzExMTksOSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZU1vdXNlRXZlbnQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZAogICAgICAgICBicmVhazsKICAgICBjYXNlIEdES19N
T1RJT05fTk9USUZZOgogICAgICAgICAvLyBQb2ludGVyIExvY2suIDcuMSBBdHRyaWJ1dGVzOiBt
b3ZlbWVudFgvWSBtdXN0IGJlIHVwZGF0ZWQgcmVnYXJkbGVzcyBvZiBwb2ludGVyIGxvY2sgc3Rh
dGUuCi0gICAgICAgIGlmIChwcml2LT5sYXN0TW90aW9uRXZlbnQpIHsKLSAgICAgICAgICAgIGRv
dWJsZSBjdXJyZW50WCwgY3VycmVudFk7Ci0gICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3Jvb3Rf
Y29vcmRzKGV2ZW50LCAmY3VycmVudFgsICZjdXJyZW50WSk7Ci0gICAgICAgICAgICBkb3VibGUg
cHJldmlvdXNYLCBwcmV2aW91c1k7Ci0gICAgICAgICAgICBnZGtfZXZlbnRfZ2V0X3Jvb3RfY29v
cmRzKHByaXYtPmxhc3RNb3Rpb25FdmVudC5nZXQoKSwgJnByZXZpb3VzWCwgJnByZXZpb3VzWSk7
Ci0gICAgICAgICAgICBtb3ZlbWVudERlbHRhID0gSW50UG9pbnQoY3VycmVudFggLSBwcmV2aW91
c1gsIGN1cnJlbnRZIC0gcHJldmlvdXNZKTsKLSAgICAgICAgfQotICAgICAgICBwcml2LT5sYXN0
TW90aW9uRXZlbnQucmVzZXQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKTsKKyAgICAgICAgaWYgKHBy
aXYtPmxhc3RNb3Rpb25FdmVudCkKKyAgICAgICAgICAgIG1vdmVtZW50RGVsdGEgPSBwcml2LT5s
YXN0TW90aW9uRXZlbnQtPmRlbHRhKGV2ZW50KTsKKyAgICAgICAgcHJpdi0+bGFzdE1vdGlvbkV2
ZW50ID0gTW90aW9uRXZlbnQoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIGV2ZW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBHREtfRU5URVJfTk9USUZZOgogICAgIGNhc2UgR0RLX0xFQVZF
X05PVElGWToKQEAgLTEyMjMsNyArMTI5MSw5IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJW
aWV3QmFzZU1vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudE1vCiAg
ICAgfQogCiAgICAgaWYgKHByaXYtPnBvaW50ZXJMb2NrTWFuYWdlcikgewotICAgICAgICBwcml2
LT5wb2ludGVyTG9ja01hbmFnZXItPmRpZFJlY2VpdmVNb3Rpb25FdmVudChyZWludGVycHJldF9j
YXN0PEdka0V2ZW50Kj4oZXZlbnQpKTsKKyAgICAgICAgZG91YmxlIHgsIHk7CisgICAgICAgIGdk
a19ldmVudF9nZXRfcm9vdF9jb29yZHMocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50
KSwgJngsICZ5KTsKKyAgICAgICAgcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyLT5kaWRSZWNlaXZl
TW90aW9uRXZlbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgICAgIHJldHVybiBHREtfRVZFTlRf
U1RPUDsKICAgICB9CiAKQEAgLTIyMDgsMjUgKzIyNzgsMTIgQEAgaW50IHdlYmtpdFdlYlZpZXdC
YXNlUmVuZGVySG9zdEZpbGVEZXNjcmlwdG9yKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3QmEKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlcXVlc3RQb2ludGVyTG9jayhXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiB7Ci0jaWYgIVVTRShHVEs0KQogICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIFJFTEVBU0Vf
QVNTRVJUKCFwcml2LT5wb2ludGVyTG9ja01hbmFnZXIpOwotICAgIGlmICghcHJpdi0+bGFzdE1v
dGlvbkV2ZW50KSB7Ci0gICAgICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQo
d2ViVmlld0Jhc2UpOwotICAgICAgICBhdXRvKiBkZXZpY2UgPSBnZGtfc2VhdF9nZXRfcG9pbnRl
cihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmll
d1dpZGdldCkpKTsKLSAgICAgICAgaW50IHgsIHk7Ci0gICAgICAgIEdka01vZGlmaWVyVHlwZSBz
dGF0ZTsKLSAgICAgICAgZ2RrX3dpbmRvd19nZXRfZGV2aWNlX3Bvc2l0aW9uKGd0a193aWRnZXRf
Z2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwgZGV2aWNlLCAmeCwgJnksICZzdGF0ZSk7Ci0gICAgICAg
IHByaXYtPmxhc3RNb3Rpb25FdmVudC5yZXNldChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9U
SUZZKSk7Ci0gICAgICAgIHByaXYtPmxhc3RNb3Rpb25FdmVudC0+bW90aW9uLnggPSB4OwotICAg
ICAgICBwcml2LT5sYXN0TW90aW9uRXZlbnQtPm1vdGlvbi55ID0geTsKLSAgICAgICAgaW50IHJv
b3RYLCByb290WTsKLSAgICAgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZ3RrX3dpZGdl
dF9nZXRfd2luZG93KHZpZXdXaWRnZXQpLCB4LCB5LCAmcm9vdFgsICZyb290WSk7Ci0gICAgICAg
IHByaXYtPmxhc3RNb3Rpb25FdmVudC0+bW90aW9uLnhfcm9vdCA9IHJvb3RYOwotICAgICAgICBw
cml2LT5sYXN0TW90aW9uRXZlbnQtPm1vdGlvbi55X3Jvb3QgPSByb290WTsKLSAgICAgICAgcHJp
di0+bGFzdE1vdGlvbkV2ZW50LT5tb3Rpb24uc3RhdGUgPSBzdGF0ZTsKLSAgICB9Ci0gICAgcHJp
di0+cG9pbnRlckxvY2tNYW5hZ2VyID0gUG9pbnRlckxvY2tNYW5hZ2VyOjpjcmVhdGUoKnByaXYt
PnBhZ2VQcm94eSwgcHJpdi0+bGFzdE1vdGlvbkV2ZW50LmdldCgpKTsKKyAgICBBU1NFUlQoIXBy
aXYtPnBvaW50ZXJMb2NrTWFuYWdlcik7CisgICAgaWYgKCFwcml2LT5sYXN0TW90aW9uRXZlbnQp
CisgICAgICAgIHByaXYtPmxhc3RNb3Rpb25FdmVudCA9IE1vdGlvbkV2ZW50KEdUS19XSURHRVQo
d2ViVmlld0Jhc2UpLCBudWxscHRyKTsKKyAgICBwcml2LT5wb2ludGVyTG9ja01hbmFnZXIgPSBQ
b2ludGVyTG9ja01hbmFnZXI6OmNyZWF0ZSgqcHJpdi0+cGFnZVByb3h5LCBwcml2LT5sYXN0TW90
aW9uRXZlbnQtPnBvc2l0aW9uLCBwcml2LT5sYXN0TW90aW9uRXZlbnQtPmdsb2JhbFBvc2l0aW9u
LAorICAgICAgICBwcml2LT5sYXN0TW90aW9uRXZlbnQtPmJ1dHRvbiwgcHJpdi0+bGFzdE1vdGlv
bkV2ZW50LT5idXR0b25zLCBwcml2LT5sYXN0TW90aW9uRXZlbnQtPm1vZGlmaWVycyk7CiAgICAg
aWYgKHByaXYtPnBvaW50ZXJMb2NrTWFuYWdlci0+bG9jaygpKSB7CiAgICAgICAgIHByaXYtPnBh
Z2VQcm94eS0+ZGlkQWxsb3dQb2ludGVyTG9jaygpOwogICAgICAgICByZXR1cm47CkBAIC0yMjM0
LDE5ICsyMjkxLDE2IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZXF1ZXN0UG9pbnRlckxvY2so
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogCiAgICAgcHJpdi0+cG9pbnRlckxvY2tN
YW5hZ2VyID0gbnVsbHB0cjsKICAgICBwcml2LT5wYWdlUHJveHktPmRpZERlbnlQb2ludGVyTG9j
aygpOwotI2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRMb3NlUG9pbnRlckxv
Y2soV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogewotI2lmICFVU0UoR1RLNCkKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAg
ICBpZiAoIXByaXYtPnBvaW50ZXJMb2NrTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
cHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyLT51bmxvY2soKTsKICAgICBwcml2LT5wb2ludGVyTG9j
a01hbmFnZXIgPSBudWxscHRyOwotI2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VT
ZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCkBAIC0yMzAxLDYgKzIzNTUsMTEgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVN5bnRoZXNpemVNb3VzZUV2ZW50KFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgTW91c2UKICAgICBpZiAocHJpdi0+ZGlhbG9nKQogICAgICAgICByZXR1
cm47CiAKKyAgICBpZiAocHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyKSB7CisgICAgICAgIHByaXYt
PnBvaW50ZXJMb2NrTWFuYWdlci0+ZGlkUmVjZWl2ZU1vdGlvbkV2ZW50KEZsb2F0UG9pbnQoeCwg
eSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9u
IHdlYkV2ZW50QnV0dG9uID0gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247CiAgICAgc3dpdGNoIChi
dXR0b24pIHsKICAgICBjYXNlIDA6CkBAIC0yMzE3LDYgKzIzNzYsMTUgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVN5bnRoZXNpemVNb3VzZUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
QmFzZSwgTW91c2UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgdW5zaWduZWQgc2hvcnQg
d2ViRXZlbnRCdXR0b25zID0gMDsKKyAgICBpZiAoYnV0dG9ucyAmIEdES19CVVRUT04xX01BU0sp
CisgICAgICAgIHdlYkV2ZW50QnV0dG9ucyB8PSAxOworICAgIGlmIChidXR0b25zICYgR0RLX0JV
VFRPTjJfTUFTSykKKyAgICAgICAgd2ViRXZlbnRCdXR0b25zIHw9IDQ7CisgICAgaWYgKGJ1dHRv
bnMgJiBHREtfQlVUVE9OM19NQVNLKQorICAgICAgICB3ZWJFdmVudEJ1dHRvbnMgfD0gMjsKKwor
ICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbW92ZW1lbnREZWx0YTsKICAgICBXZWJFdmVudDo6VHlw
ZSB3ZWJFdmVudFR5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBNb3VzZUV2ZW50
VHlwZTo6UHJlc3M6CkBAIC0yMzI5LDcgKzIzOTcsNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
U3ludGhlc2l6ZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBNb3Vz
ZQogICAgICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1vdXNlRXZlbnRUeXBlOjpNb3Rpb246Ci0gICAg
ICAgIC8vIEZJWE1FOiBhZGQgbW92ZW1lbnQgZGVsdGEgZm9yIHBvaW50ZXIgbG9jay4KICAgICAg
ICAgd2ViRXZlbnRUeXBlID0gV2ViRXZlbnQ6Ok1vdXNlTW92ZTsKICAgICAgICAgaWYgKGJ1dHRv
bnMgJiBHREtfQlVUVE9OMV9NQVNLKQogICAgICAgICAgICAgd2ViRXZlbnRCdXR0b24gPSBXZWJN
b3VzZUV2ZW50OjpMZWZ0QnV0dG9uOwpAQCAtMjMzNywxOSArMjQwNCwxNSBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU3ludGhlc2l6ZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBNb3VzZQogICAgICAgICAgICAgd2ViRXZlbnRCdXR0b24gPSBXZWJNb3VzZUV2ZW50
OjpNaWRkbGVCdXR0b247CiAgICAgICAgIGVsc2UgaWYgKGJ1dHRvbnMgJiBHREtfQlVUVE9OM19N
QVNLKQogICAgICAgICAgICAgd2ViRXZlbnRCdXR0b24gPSBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1
dHRvbjsKKworICAgICAgICBpZiAocHJpdi0+bGFzdE1vdGlvbkV2ZW50KQorICAgICAgICAgICAg
bW92ZW1lbnREZWx0YSA9IEZsb2F0UG9pbnQoeCwgeSkgLSBwcml2LT5sYXN0TW90aW9uRXZlbnQt
Pmdsb2JhbFBvc2l0aW9uOworICAgICAgICBwcml2LT5sYXN0TW90aW9uRXZlbnQgPSBNb3Rpb25F
dmVudChGbG9hdFBvaW50KHgsIHkpLCB3aWRnZXRSb290Q29vcmRzKEdUS19XSURHRVQod2ViVmll
d0Jhc2UpLCB4LCB5KSwgd2ViRXZlbnRCdXR0b24sIHdlYkV2ZW50QnV0dG9ucywgdG9XZWJLaXRN
b2RpZmllcnMobW9kaWZpZXJzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHVuc2ln
bmVkIHNob3J0IHdlYkV2ZW50QnV0dG9ucyA9IDA7Ci0gICAgaWYgKGJ1dHRvbnMgJiBHREtfQlVU
VE9OMV9NQVNLKQotICAgICAgICB3ZWJFdmVudEJ1dHRvbnMgfD0gMTsKLSAgICBpZiAoYnV0dG9u
cyAmIEdES19CVVRUT04yX01BU0spCi0gICAgICAgIHdlYkV2ZW50QnV0dG9ucyB8PSA0OwotICAg
IGlmIChidXR0b25zICYgR0RLX0JVVFRPTjNfTUFTSykKLSAgICAgICAgd2ViRXZlbnRCdXR0b25z
IHw9IDI7Ci0KICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2Vi
TW91c2VFdmVudCh3ZWJFdmVudFR5cGUsIHdlYkV2ZW50QnV0dG9uLCB3ZWJFdmVudEJ1dHRvbnMs
IHsgeCwgeSB9LAotICAgICAgICB3aWRnZXRSb290Q29vcmRzKEdUS19XSURHRVQod2ViVmlld0Jh
c2UpLCB4LCB5KSwgY2xpY2tDb3VudCwgdG9XZWJLaXRNb2RpZmllcnMobW9kaWZpZXJzKSkpOwor
ICAgICAgICB3aWRnZXRSb290Q29vcmRzKEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCB4LCB5KSwg
Y2xpY2tDb3VudCwgdG9XZWJLaXRNb2RpZmllcnMobW9kaWZpZXJzKSwgbW92ZW1lbnREZWx0YSkp
OwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3ludGhlc2l6ZUtleUV2ZW50KFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgdW5zaWduZWQga2V5dmFsLCB1bnNpZ25lZCBtb2RpZmll
cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFn
ZXIuY3BwCmluZGV4IGQxN2U2NDc4ZDg5Mi4uZjZhMGQ5ZjE1MWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyLmNwcApAQCAtNDIsNDgg
KzQyLDQxIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UG9pbnRlckxvY2tNYW5hZ2VyPiBQb2ludGVyTG9ja01hbmFnZXI6
OmNyZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIGNvbnN0IEdka0V2ZW50KiBldmVudCkKK3N0
ZDo6dW5pcXVlX3B0cjxQb2ludGVyTG9ja01hbmFnZXI+IFBvaW50ZXJMb2NrTWFuYWdlcjo6Y3Jl
YXRlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0
dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVy
PiBtb2RpZmllcnMpCiB7CiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBpZiAoUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V2F5bGFuZCkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9pbnRlckxvY2tNYW5hZ2VyV2F5
bGFuZD4od2ViUGFnZSwgZXZlbnQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVy
TG9ja01hbmFnZXJXYXlsYW5kPih3ZWJQYWdlLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGJ1
dHRvbiwgYnV0dG9ucywgbW9kaWZpZXJzKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFgxMSkKICAg
ICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6WDExKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVyTG9j
a01hbmFnZXJYMTE+KHdlYlBhZ2UsIGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UG9pbnRlckxvY2tNYW5hZ2VyWDExPih3ZWJQYWdlLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IGJ1dHRvbiwgYnV0dG9ucywgbW9kaWZpZXJzKTsKICNlbmRpZgotICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBvaW50ZXJMb2NrTWFuYWdlcjo6UG9pbnRlckxvY2tNYW5hZ2VyKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZSwgY29uc3QgR2RrRXZlbnQqIGV2ZW50KQorUG9pbnRlckxvY2tNYW5h
Z2VyOjpQb2ludGVyTG9ja01hbmFnZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBjb25zdCBGbG9h
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIE9wdGlvblNl
dDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycykKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdl
KQotICAgICwgbV9ldmVudChldmVudCkKKyAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAg
LCBtX2J1dHRvbihidXR0b24pCisgICAgLCBtX2J1dHRvbnMoYnV0dG9ucykKKyAgICAsIG1fbW9k
aWZpZXJzKG1vZGlmaWVycykKKyAgICAsIG1faW5pdGlhbFBvaW50KGdsb2JhbFBvc2l0aW9uKQog
ewogfQogCiBQb2ludGVyTG9ja01hbmFnZXI6On5Qb2ludGVyTG9ja01hbmFnZXIoKQogewotICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2RldmljZSk7CisgICAgQVNTRVJUKCFtX2RldmljZSk7CiB9CiAK
IGJvb2wgUG9pbnRlckxvY2tNYW5hZ2VyOjpsb2NrKCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCgh
bV9kZXZpY2UpOworICAgIEFTU0VSVCghbV9kZXZpY2UpOwogCi0jaWYgIVVTRShHVEs0KQotICAg
IGF1dG8qIHZpZXdXaWRnZXQgPSBtX3dlYlBhZ2Uudmlld1dpZGdldCgpOwotICAgIG1fZGV2aWNl
ID0gZ2RrX3NlYXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChndGtf
d2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7Ci0gICAgR1JlZlB0cjxHZGtDdXJzb3I+
IGN1cnNvciA9IGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9tX25hbWUoZ3RrX3dpZGdldF9n
ZXRfZGlzcGxheSh2aWV3V2lkZ2V0KSwgIm5vbmUiKSk7Ci0gICAgYXV0byBncmFiUmVzdWx0ID0g
Z2RrX3NlYXRfZ3JhYihnZGtfZGV2aWNlX2dldF9zZWF0KG1fZGV2aWNlKSwgZ3RrX3dpZGdldF9n
ZXRfd2luZG93KHZpZXdXaWRnZXQpLCBHREtfU0VBVF9DQVBBQklMSVRZX0FMTF9QT0lOVElORywg
VFJVRSwKLSAgICAgICAgY3Vyc29yLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsK
LSAgICBpZiAoZ3JhYlJlc3VsdCAhPSBHREtfR1JBQl9TVUNDRVNTKSB7Ci0gICAgICAgIG1fZGV2
aWNlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgbV9kZXZpY2UgPSBnZGtfc2VhdF9nZXRfcG9pbnRlcihnZGtf
ZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkobV93ZWJQYWdl
LnZpZXdXaWRnZXQoKSkpKTsKKyAgICByZXR1cm4gISFtX2RldmljZTsKIH0KIAogYm9vbCBQb2lu
dGVyTG9ja01hbmFnZXI6OnVubG9jaygpCkBAIC05MSwxNiArODQsMTQgQEAgYm9vbCBQb2ludGVy
TG9ja01hbmFnZXI6OnVubG9jaygpCiAgICAgaWYgKCFtX2RldmljZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0jaWYgIVVTRShHVEs0KQotICAgIGdka19zZWF0X3VuZ3JhYihnZGtfZGV2aWNl
X2dldF9zZWF0KG1fZGV2aWNlKSk7CiAgICAgbV9kZXZpY2UgPSBudWxscHRyOwotI2VuZGlmCisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQb2ludGVyTG9ja01hbmFnZXI6OmhhbmRsZU1v
dGlvbihJbnRQb2ludCYmIGRlbHRhKQordm9pZCBQb2ludGVyTG9ja01hbmFnZXI6OmhhbmRsZU1v
dGlvbihGbG9hdFNpemUmJiBkZWx0YSkKIHsKLSAgICBtX3dlYlBhZ2UuaGFuZGxlTW91c2VFdmVu
dChOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihtX2V2ZW50KSwgMCwg
ZGVsdGEpKTsKKyAgICBtX3dlYlBhZ2UuaGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2
ZW50KFdlYkV2ZW50OjpNb3VzZU1vdmUsIG1fYnV0dG9uLCBtX2J1dHRvbnMsIEludFBvaW50KG1f
cG9zaXRpb24pLCBJbnRQb2ludChtX2luaXRpYWxQb2ludCksIDAsIG1fbW9kaWZpZXJzLCBkZWx0
YSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXIuaAppbmRleCAxNTdlYWJlNmY5ZWQuLjUxZDAw
MWI1Zjc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1BvaW50ZXJM
b2NrTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9j
a01hbmFnZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9HZGtEZXZpY2UgR2RrRGV2aWNl
OwpAQCAtMzQsMTAgKzM2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50IEdka0V2ZW50Owog
dHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgSW50UG9pbnQ7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJQYWdlUHJveHk7CkBAIC00NSwxOSArNDMsMjMgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgUG9pbnRlckxvY2tNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2lu
dGVyTG9ja01hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBvaW50ZXJMb2NrTWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IEdka0V2ZW50Kik7Ci0gICAgUG9pbnRlckxvY2tNYW5hZ2VyKFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IEdka0V2ZW50Kik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQb2lu
dGVyTG9ja01hbmFnZXI+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
biwgdW5zaWduZWQgc2hvcnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+KTsKKyAgICBQ
b2ludGVyTG9ja01hbmFnZXIoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIHVu
c2lnbmVkIHNob3J0LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CiAgICAgdmlydHVh
bCB+UG9pbnRlckxvY2tNYW5hZ2VyKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgbG9jaygpOwogICAg
IHZpcnR1YWwgYm9vbCB1bmxvY2soKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1vdGlv
bkV2ZW50KGNvbnN0IEdka0V2ZW50KikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TW90aW9uRXZlbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIHsgfTsKIAogcHJvdGVjdGVk
OgotICAgIHZvaWQgaGFuZGxlTW90aW9uKFdlYkNvcmU6OkludFBvaW50JiYpOworICAgIHZvaWQg
aGFuZGxlTW90aW9uKFdlYkNvcmU6OkZsb2F0U2l6ZSYmKTsKIAogICAgIFdlYlBhZ2VQcm94eSYg
bV93ZWJQYWdlOwotICAgIGNvbnN0IEdka0V2ZW50KiBtX2V2ZW50OworICAgIFdlYkNvcmU6OkZs
b2F0UG9pbnQgbV9wb3NpdGlvbjsKKyAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbV9idXR0b24g
eyBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiB9OworICAgIHVuc2lnbmVkIHNob3J0IG1fYnV0dG9u
cyB7IDAgfTsKKyAgICBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtX21vZGlmaWVyczsK
KyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1faW5pdGlhbFBvaW50OwogICAgIEdka0RldmljZSog
bV9kZXZpY2UgeyBudWxscHRyIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5jcHAKaW5kZXggMWZhYWI2
MjliNDg3Li43NjJjYmY5YTcxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZC5jcHAKQEAgLTMxLDE4ICszMSwx
OCBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgInBvaW50ZXItY29uc3Ry
YWludHMtdW5zdGFibGUtdjEtY2xpZW50LXByb3RvY29sLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9X
bFVuaXF1ZVB0ci5oPgorCiAjaWYgVVNFKEdUSzQpCiAjaW5jbHVkZSA8Z2RrL3dheWxhbmQvZ2Rr
d2F5bGFuZC5oPgogI2Vsc2UKICNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgogI2VuZGlmCi0j
aW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kOjpQb2ludGVyTG9ja01hbmFn
ZXJXYXlsYW5kKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgY29uc3QgR2RrRXZlbnQqIGV2ZW50KQot
ICAgIDogUG9pbnRlckxvY2tNYW5hZ2VyKHdlYlBhZ2UsIGV2ZW50KQorUG9pbnRlckxvY2tNYW5h
Z2VyV2F5bGFuZDo6UG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZChXZWJQYWdlUHJveHkmIHdlYlBh
Z2UsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0
dG9ucywgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzKQorICAgIDogUG9p
bnRlckxvY2tNYW5hZ2VyKHdlYlBhZ2UsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYnV0dG9u
LCBidXR0b25zLCBtb2RpZmllcnMpCiB7CiAgICAgYXV0byogZGlzcGxheSA9IGdka193YXlsYW5k
X2Rpc3BsYXlfZ2V0X3dsX2Rpc3BsYXkoZ3RrX3dpZGdldF9nZXRfZGlzcGxheShtX3dlYlBhZ2Uu
dmlld1dpZGdldCgpKSk7CiAgICAgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3JlZ2lzdHJ5PiByZWdp
c3RyeSh3bF9kaXNwbGF5X2dldF9yZWdpc3RyeShkaXNwbGF5KSk7CkBAIC03Nyw3ICs3Nyw3IEBA
IGNvbnN0IHN0cnVjdCB6d3BfcmVsYXRpdmVfcG9pbnRlcl92MV9saXN0ZW5lciBQb2ludGVyTG9j
a01hbmFnZXJXYXlsYW5kOjpzX3JlbGF0CiAgICAgLy8gcmVsYXRpdmVfbW90aW9uCiAgICAgW10o
dm9pZCogZGF0YSwgc3RydWN0IHp3cF9yZWxhdGl2ZV9wb2ludGVyX3YxKiwgdWludDMyX3QsIHVp
bnQzMl90LCB3bF9maXhlZF90LCB3bF9maXhlZF90LCB3bF9maXhlZF90IGRlbHRhWCwgd2xfZml4
ZWRfdCBkZWx0YVkpIHsKICAgICAgICAgYXV0byYgbWFuYWdlciA9ICpyZWludGVycHJldF9jYXN0
PFBvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQqPihkYXRhKTsKLSAgICAgICAgbWFuYWdlci5oYW5k
bGVNb3Rpb24oeyB3bF9maXhlZF90b19pbnQoZGVsdGFYKSwgd2xfZml4ZWRfdG9faW50KGRlbHRh
WSkgfSk7CisgICAgICAgIG1hbmFnZXIuaGFuZGxlTW90aW9uKEZsb2F0U2l6ZSh3bF9maXhlZF90
b19kb3VibGUoZGVsdGFYKSwgd2xfZml4ZWRfdG9fZG91YmxlKGRlbHRhWSkpKTsKICAgICB9CiB9
OwogCkBAIC04OSwxNyArODksMjkgQEAgYm9vbCBQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kOjps
b2NrKCkKICAgICBpZiAoIVBvaW50ZXJMb2NrTWFuYWdlcjo6bG9jaygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBhdXRvKiB2aWV3V2lkZ2V0ID0gbV93ZWJQYWdlLnZpZXdXaWRnZXQo
KTsKKyNpZiBVU0UoR1RLNCkKKyAgICBHUmVmUHRyPEdka0N1cnNvcj4gY3Vyc29yID0gYWRvcHRH
UmVmKGdka19jdXJzb3JfbmV3X2Zyb21fbmFtZSgibm9uZSIsIG51bGxwdHIpKTsKKyAgICBndGtf
d2lkZ2V0X3NldF9jdXJzb3Iodmlld1dpZGdldCwgY3Vyc29yLmdldCgpKTsKKyNlbHNlCisgICAg
R1JlZlB0cjxHZGtDdXJzb3I+IGN1cnNvciA9IGFkb3B0R1JlZihnZGtfY3Vyc29yX25ld19mcm9t
X25hbWUoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh2aWV3V2lkZ2V0KSwgIm5vbmUiKSk7CisgICAg
Z2RrX3dpbmRvd19zZXRfY3Vyc29yKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwg
Y3Vyc29yLmdldCgpKTsKKyNlbmRpZgorCiAgICAgYXV0byogcG9pbnRlciA9IGdka193YXlsYW5k
X2RldmljZV9nZXRfd2xfcG9pbnRlcihtX2RldmljZSk7CiAKLSAgICBSRUxFQVNFX0FTU0VSVCgh
bV9yZWxhdGl2ZVBvaW50ZXIpOworICAgIEFTU0VSVCghbV9yZWxhdGl2ZVBvaW50ZXIpOwogICAg
IG1fcmVsYXRpdmVQb2ludGVyID0gendwX3JlbGF0aXZlX3BvaW50ZXJfbWFuYWdlcl92MV9nZXRf
cmVsYXRpdmVfcG9pbnRlcihtX3JlbGF0aXZlUG9pbnRlck1hbmFnZXIsIHBvaW50ZXIpOwogICAg
IHp3cF9yZWxhdGl2ZV9wb2ludGVyX3YxX2FkZF9saXN0ZW5lcihtX3JlbGF0aXZlUG9pbnRlciwg
JnNfcmVsYXRpdmVQb2ludGVyTGlzdGVuZXIsIHRoaXMpOwogCi0jaWYgIVVTRShHVEs0KQotICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2xvY2tlZFBvaW50ZXIpOwotICAgIGF1dG8qIHN1cmZhY2UgPSBn
ZGtfd2F5bGFuZF93aW5kb3dfZ2V0X3dsX3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfd2luZG93KG1f
d2ViUGFnZS52aWV3V2lkZ2V0KCkpKTsKLSAgICBtX2xvY2tlZFBvaW50ZXIgPSB6d3BfcG9pbnRl
cl9jb25zdHJhaW50c192MV9sb2NrX3BvaW50ZXIobV9wb2ludGVyQ29uc3RyYWludHMsIHN1cmZh
Y2UsIHBvaW50ZXIsIG51bGxwdHIsIFpXUF9QT0lOVEVSX0NPTlNUUkFJTlRTX1YxX0xJRkVUSU1F
X1BFUlNJU1RFTlQpOworICAgIEFTU0VSVCghbV9sb2NrZWRQb2ludGVyKTsKKyNpZiBVU0UoR1RL
NCkKKyAgICBhdXRvKiBzdXJmYWNlID0gZ2RrX3dheWxhbmRfc3VyZmFjZV9nZXRfd2xfc3VyZmFj
ZShndGtfbmF0aXZlX2dldF9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X25hdGl2ZSh2aWV3V2lkZ2V0
KSkpOworI2Vsc2UKKyAgICBhdXRvKiBzdXJmYWNlID0gZ2RrX3dheWxhbmRfd2luZG93X2dldF93
bF9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSk7CiAjZW5kaWYKKyAg
ICBtX2xvY2tlZFBvaW50ZXIgPSB6d3BfcG9pbnRlcl9jb25zdHJhaW50c192MV9sb2NrX3BvaW50
ZXIobV9wb2ludGVyQ29uc3RyYWludHMsIHN1cmZhY2UsIHBvaW50ZXIsIG51bGxwdHIsIFpXUF9Q
T0lOVEVSX0NPTlNUUkFJTlRTX1YxX0xJRkVUSU1FX1BFUlNJU1RFTlQpOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTEwOCw2ICsxMjAsMTIgQEAgYm9vbCBQb2ludGVyTG9ja01hbmFnZXJX
YXlsYW5kOjp1bmxvY2soKQogICAgIGdfY2xlYXJfcG9pbnRlcigmbV9yZWxhdGl2ZVBvaW50ZXIs
IHp3cF9yZWxhdGl2ZV9wb2ludGVyX3YxX2Rlc3Ryb3kpOwogICAgIGdfY2xlYXJfcG9pbnRlcigm
bV9sb2NrZWRQb2ludGVyLCB6d3BfbG9ja2VkX3BvaW50ZXJfdjFfZGVzdHJveSk7CiAKKyNpZiBV
U0UoR1RLNCkKKyAgICBndGtfd2lkZ2V0X3NldF9jdXJzb3IobV93ZWJQYWdlLnZpZXdXaWRnZXQo
KSwgbnVsbHB0cik7CisjZWxzZQorICAgIGdka193aW5kb3dfc2V0X2N1cnNvcihndGtfd2lkZ2V0
X2dldF93aW5kb3cobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksIG51bGxwdHIpOworI2VuZGlmCisK
ICAgICByZXR1cm4gUG9pbnRlckxvY2tNYW5hZ2VyOjp1bmxvY2soKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5k
LmgKaW5kZXggY2E3MjM0ZTI0ZDg0Li4wNTE0ZGI2ZDJkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJXYXlsYW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQuaApAQCAt
NDMsNyArNDMsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBQb2ludGVyTG9ja01hbmFn
ZXJXYXlsYW5kIGZpbmFsIDogcHVibGljIFBvaW50ZXJMb2NrTWFuYWdlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUG9pbnRlckxvY2tNYW5hZ2VyV2F5bGFuZCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFBvaW50ZXJMb2NrTWFuYWdlcldheWxhbmQoV2ViUGFn
ZVByb3h5JiwgY29uc3QgR2RrRXZlbnQqKTsKKyAgICBQb2ludGVyTG9ja01hbmFnZXJXYXlsYW5k
KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCB1bnNpZ25lZCBzaG9ydCwgT3B0
aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4pOwogICAgIH5Qb2ludGVyTG9ja01hbmFnZXJXYXls
YW5kKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvUG9pbnRlckxvY2tNYW5hZ2VyWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuY3BwCmluZGV4IGZlZjIxMmJmMjVmMS4uNjAyNDI2MmVh
ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxvY2tN
YW5hZ2VyWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvUG9pbnRlckxv
Y2tNYW5hZ2VyWDExLmNwcApAQCAtMjksMzIgKzI5LDYwIEBACiAjaWYgUExBVEZPUk0oWDExKQog
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaWYgIVVTRShHVEs0KQorI2luY2x1ZGUgPFgx
MS9YbGliLmg+CisKKyNpZiBVU0UoR1RLNCkKKyNpbmNsdWRlIDxnZGsveDExL2dka3guaD4KKyNl
bHNlCiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgotI2luY2x1ZGUgPGd0ay9ndGsuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUG9pbnRl
ckxvY2tNYW5hZ2VyWDExOjpQb2ludGVyTG9ja01hbmFnZXJYMTEoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlLCBjb25zdCBHZGtFdmVudCogZXZlbnQpCi0gICAgOiBQb2ludGVyTG9ja01hbmFnZXIod2Vi
UGFnZSwgZXZlbnQpCitQb2ludGVyTG9ja01hbmFnZXJYMTE6OlBvaW50ZXJMb2NrTWFuYWdlclgx
MShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBGbG9hdFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRv
biwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4g
bW9kaWZpZXJzKQorICAgIDogUG9pbnRlckxvY2tNYW5hZ2VyKHdlYlBhZ2UsIHBvc2l0aW9uLCBn
bG9iYWxQb3NpdGlvbiwgYnV0dG9uLCBidXR0b25zLCBtb2RpZmllcnMpCiB7CiB9CiAKLXZvaWQg
UG9pbnRlckxvY2tNYW5hZ2VyWDExOjpkaWRSZWNlaXZlTW90aW9uRXZlbnQoY29uc3QgR2RrRXZl
bnQqIGV2ZW50KQorYm9vbCBQb2ludGVyTG9ja01hbmFnZXJYMTE6OmxvY2soKQogewotI2lmICFV
U0UoR1RLNCkKLSAgICBkb3VibGUgY3VycmVudFgsIGN1cnJlbnRZOwotICAgIGdka19ldmVudF9n
ZXRfcm9vdF9jb29yZHMoZXZlbnQsICZjdXJyZW50WCwgJmN1cnJlbnRZKTsKLSAgICBkb3VibGUg
aW5pdGlhbFgsIGluaXRpYWxZOwotICAgIGdka19ldmVudF9nZXRfcm9vdF9jb29yZHMobV9ldmVu
dCwgJmluaXRpYWxYLCAmaW5pdGlhbFkpOwotICAgIGlmIChjdXJyZW50WCA9PSBpbml0aWFsWCAm
JiBjdXJyZW50WSA9PSBpbml0aWFsWSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghUG9pbnRl
ckxvY2tNYW5hZ2VyOjpsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGhhbmRs
ZU1vdGlvbihJbnRQb2ludChjdXJyZW50WCAtIGluaXRpYWxYLCBjdXJyZW50WSAtIGluaXRpYWxZ
KSk7Ci0gICAgZ2RrX2RldmljZV93YXJwKG1fZGV2aWNlLCBndGtfd2lkZ2V0X2dldF9zY3JlZW4o
bV93ZWJQYWdlLnZpZXdXaWRnZXQoKSksIGluaXRpYWxYLCBpbml0aWFsWSk7CisgICAgYXV0byog
dmlld1dpZGdldCA9IG1fd2ViUGFnZS52aWV3V2lkZ2V0KCk7CisgICAgYXV0byogZGlzcGxheSA9
IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCk7CisgICAgYXV0byogeERpc3BsYXkg
PSBHREtfRElTUExBWV9YRElTUExBWShndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQp
KTsKKyNpZiBVU0UoR1RLNCkKKyAgICBHUmVmUHRyPEdka0N1cnNvcj4gY3Vyc29yID0gYWRvcHRH
UmVmKGdka19jdXJzb3JfbmV3X2Zyb21fbmFtZSgibm9uZSIsIG51bGxwdHIpKTsKKyAgICBhdXRv
IHdpbmRvdyA9IEdES19TVVJGQUNFX1hJRChndGtfbmF0aXZlX2dldF9zdXJmYWNlKGd0a193aWRn
ZXRfZ2V0X25hdGl2ZSh2aWV3V2lkZ2V0KSkpOworICAgIGF1dG8geEN1cnNvciA9IGdka194MTFf
ZGlzcGxheV9nZXRfeGN1cnNvcihkaXNwbGF5LCBjdXJzb3IuZ2V0KCkpOworI2Vsc2UKKyAgICBH
UmVmUHRyPEdka0N1cnNvcj4gY3Vyc29yID0gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3X2Zyb21f
bmFtZShkaXNwbGF5LCAibm9uZSIpKTsKKyAgICBhdXRvIHdpbmRvdyA9IEdES19XSU5ET1dfWElE
KGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSk7CisgICAgYXV0byB4Q3Vyc29yID0g
Z2RrX3gxMV9jdXJzb3JfZ2V0X3hjdXJzb3IoY3Vyc29yLmdldCgpKTsKICNlbmRpZgorICAgIGlu
dCBldmVudE1hc2sgPSBQb2ludGVyTW90aW9uTWFzayB8IEJ1dHRvblJlbGVhc2VNYXNrIHwgQnV0
dG9uUHJlc3NNYXNrIHwgRW50ZXJXaW5kb3dNYXNrIHwgTGVhdmVXaW5kb3dNYXNrOworICAgIHJl
dHVybiBYR3JhYlBvaW50ZXIoeERpc3BsYXksIHdpbmRvdywgdHJ1ZSwgZXZlbnRNYXNrLCBHcmFi
TW9kZUFzeW5jLCBHcmFiTW9kZUFzeW5jLCB3aW5kb3csIHhDdXJzb3IsIDApID09IEdyYWJTdWNj
ZXNzOworfQorCitib29sIFBvaW50ZXJMb2NrTWFuYWdlclgxMTo6dW5sb2NrKCkKK3sKKyAgICBp
ZiAobV9kZXZpY2UpCisgICAgICAgIFhVbmdyYWJQb2ludGVyKEdES19ESVNQTEFZX1hESVNQTEFZ
KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSkpLCAwKTsKKwor
ICAgIHJldHVybiBQb2ludGVyTG9ja01hbmFnZXI6OnVubG9jaygpOworfQorCit2b2lkIFBvaW50
ZXJMb2NrTWFuYWdlclgxMTo6ZGlkUmVjZWl2ZU1vdGlvbkV2ZW50KGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX2luaXRpYWxQb2ludCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaGFuZGxlTW90aW9uKHBvaW50IC0gbV9pbml0aWFsUG9pbnQpOworCisgICAg
YXV0byogZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGd0a193aWRnZXRfZ2V0X2Rpc3Bs
YXkobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSkpOworICAgIFhXYXJwUG9pbnRlcihkaXNwbGF5LCBO
b25lLCBYUm9vdFdpbmRvdyhkaXNwbGF5LCAwKSwgMCwgMCwgMCwgMCwgbV9pbml0aWFsUG9pbnQu
eCgpLCBtX2luaXRpYWxQb2ludC55KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJY
MTEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEu
aAppbmRleCAxYmUxNWZmZWE1NTYuLjBjMTJhOTU4ODZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1BvaW50ZXJMb2NrTWFuYWdlclgxMS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9Qb2ludGVyTG9ja01hbmFnZXJYMTEuaApAQCAtMzYsMTEgKzM2
LDEzIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFBvaW50ZXJMb2NrTWFuYWdlclgxMSBm
aW5hbCA6IHB1YmxpYyBQb2ludGVyTG9ja01hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBvaW50ZXJMb2NrTWFuYWdlclgxMSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFBvaW50ZXJMb2NrTWFuYWdlclgxMShXZWJQYWdlUHJveHkmLCBjb25zdCBHZGtF
dmVudCopOworICAgIFBvaW50ZXJMb2NrTWFuYWdlclgxMShXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiwgdW5zaWduZWQgc2hvcnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZp
ZXI+KTsKICAgICB+UG9pbnRlckxvY2tNYW5hZ2VyWDExKCkgPSBkZWZhdWx0OwogCiBwcml2YXRl
OgotICAgIHZvaWQgZGlkUmVjZWl2ZU1vdGlvbkV2ZW50KGNvbnN0IEdka0V2ZW50Kikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBsb2NrKCkgb3ZlcnJpZGU7CisgICAgYm9vbCB1bmxvY2soKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNb3Rpb25FdmVudChjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="415577"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>