<?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>209729</bug_id>
          
          <creation_ts>2020-03-30 04:02:58 -0700</creation_ts>
          <short_desc>[WPE] Add axis-locking to kinetic scrolling</short_desc>
          <delta_ts>2020-11-09 00:24:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WPE WebKit</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635441</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-03-30 04:02:58 -0700</bug_when>
    <thetext>Currently kinetic scrolling on WPE is completely free so it&apos;s very hard to scroll exactly vertically or horizontally. GTK appears to constrain to an axis based on some threshold before sending events (at least from a touchpad), so we need to look at doing something similar in WPE&apos;s ScrollGestureController for touchscreen events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638076</commentid>
    <comment_count>1</comment_count>
      <attachid>395562</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-04-06 07:08:17 -0700</bug_when>
    <thetext>Created attachment 395562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638077</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-04-06 07:09:06 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674414</commentid>
    <comment_count>3</comment_count>
      <attachid>395562</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-23 15:27:44 -0700</bug_when>
    <thetext>Comment on attachment 395562
Patch

The logic for the axis locking looks good but I think it would be
better to avoid adding new API if possible. Also the patch needs
a small rebase to be able to be applied to trunk right now.

Thanks a lot for working on this!

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:184
&gt; +#endif

Do we really want to allow customization of these values? If there are
some reasonable fixed values which provide a better experience overall,
I would go for those and remove the API bits that allow changing them.
For example I see a fixed “#define SCROLL_CAPTURE_THRESHOLD_MS 150” in
the GTK code (that&apos;s in “gtkeventcontrollerscroll.c”).

We can always add the new API later if we find out that people routinely
need to tweak those for different touch{screens,panels}.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1594
&gt; +            0, G_MAXUINT, 200,

If we end up keeping the properties (instead of using constants) it
seems a bit ridiculous to allow “G_MAXUINT” as the maximum value
here. Anything more than a few hundreds of milliseconds will feel
sluggish to the user, so we can cap this at e.g. 1 second (1000ms).

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1611
&gt; +            0, G_MAXUINT, 8,

Same here, being able to specify a count of pixels bigger than a few hundreds
is kind of pointless as well :D

Related issue: how is this value treated for an output device which uses a
scaling factor different than 1x? Will this be scaled as well (meaning that
the value is in logical pixels) or not (the value is physical pixels)? It
should be at least documented if we keep the new public API.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1629
&gt; +            0, G_MAXUINT, 15,

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1647
&gt; +            0, G_MAXUINT, 30,

Ditto.

&gt; Source/WebKit/UIProcess/API/wpe/WPEView.h:69
&gt; +    static View* create(struct wpe_view_backend* backend, const API::PageConfiguration&amp; configuration, WebKitSettings* settings)

Using constant values for the scroll axis locking would prevent needing
to pass the WebKitSettings instance around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681653</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-08-20 02:00:55 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #3)
&gt; Comment on attachment 395562 [details]
&gt; Patch
&gt; 
&gt; The logic for the axis locking looks good but I think it would be
&gt; better to avoid adding new API if possible. Also the patch needs
&gt; a small rebase to be able to be applied to trunk right now.
&gt; 
&gt; Thanks a lot for working on this!
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395562&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:184
&gt; &gt; +#endif
&gt; 
&gt; Do we really want to allow customization of these values? If there are
&gt; some reasonable fixed values which provide a better experience overall,
&gt; I would go for those and remove the API bits that allow changing them.
&gt; For example I see a fixed “#define SCROLL_CAPTURE_THRESHOLD_MS 150” in
&gt; the GTK code (that&apos;s in “gtkeventcontrollerscroll.c”).
&gt; 
&gt; We can always add the new API later if we find out that people routinely
&gt; need to tweak those for different touch{screens,panels}.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1594
&gt; &gt; +            0, G_MAXUINT, 200,
&gt; 
&gt; If we end up keeping the properties (instead of using constants) it
&gt; seems a bit ridiculous to allow “G_MAXUINT” as the maximum value
&gt; here. Anything more than a few hundreds of milliseconds will feel
&gt; sluggish to the user, so we can cap this at e.g. 1 second (1000ms).
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1611
&gt; &gt; +            0, G_MAXUINT, 8,
&gt; 
&gt; Same here, being able to specify a count of pixels bigger than a few hundreds
&gt; is kind of pointless as well :D
&gt; 
&gt; Related issue: how is this value treated for an output device which uses a
&gt; scaling factor different than 1x? Will this be scaled as well (meaning that
&gt; the value is in logical pixels) or not (the value is physical pixels)? It
&gt; should be at least documented if we keep the new public API.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1629
&gt; &gt; +            0, G_MAXUINT, 15,
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp:1647
&gt; &gt; +            0, G_MAXUINT, 30,
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/wpe/WPEView.h:69
&gt; &gt; +    static View* create(struct wpe_view_backend* backend, const API::PageConfiguration&amp; configuration, WebKitSettings* settings)
&gt; 
&gt; Using constant values for the scroll axis locking would prevent needing
&gt; to pass the WebKitSettings instance around.

Given that (most of) these values are in pixels, I feel they do need to be configurable. The values I&apos;ve chosen work well on a 10&quot; 1080p touch-screen, but I suppose as the ppi changes, or the accuracy of the touch-screen, these values probably wouldn&apos;t be satisfactory. Indeed, they also don&apos;t take pixel scale into account, so this is also a factor (though if that value is accessible, I could certainly modify it).

I can submit a version of the patch with these as constants if you like, but it seems we&apos;re going to need configuration down the line at some point anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702739</commentid>
    <comment_count>5</comment_count>
      <attachid>412655</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-29 08:59:46 -0700</bug_when>
    <thetext>Created attachment 412655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702749</commentid>
    <comment_count>6</comment_count>
      <attachid>412655</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-10-29 09:20:55 -0700</bug_when>
    <thetext>Comment on attachment 412655
Patch

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

&gt; Source/WebKit/UIProcess/API/wpe/ScrollGestureController.cpp:62
&gt; +                || deltaTime &gt;= scrollCaptureThreshold;

Much nicer to have this as a symbolic constant instead of a magic number 👍️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702751</commentid>
    <comment_count>7</comment_count>
      <attachid>412659</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-10-29 09:24:47 -0700</bug_when>
    <thetext>Created attachment 412659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702765</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-29 09:53:23 -0700</bug_when>
    <thetext>Committed r269151: &lt;https://trac.webkit.org/changeset/269151&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412659.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705662</commentid>
    <comment_count>9</comment_count>
      <attachid>412659</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2020-11-09 00:24:22 -0800</bug_when>
    <thetext>Comment on attachment 412659
Patch

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

&gt; Source/WebKit/UIProcess/API/wpe/ScrollGestureController.cpp:73
&gt; +            auto xOffset = std::abs(touchPoint-&gt;x - m_start.x);
&gt; +            auto yOffset = std::abs(touchPoint-&gt;y - m_start.y);

These values should be explicitly initialized as unsigned integers. Right now they are signed, causing compiler warnings (with GCC 10) about comparing signed and unsigned integers down below.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395562</attachid>
            <date>2020-04-06 07:08:17 -0700</date>
            <delta_ts>2020-10-29 08:59:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209729-20200406150815.patch</filename>
            <type>text/plain</type>
            <size>25671</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkNWFlNmNmOGRlNDdhNzky
ODE3YjI0ZjZmN2NiOGZjNmFmMzEzYjMuLjE3N2I0NzIxZjg4NmI4MDQ0M2Y2M2JmMTg1NGJiMWNm
NGFlYzI0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjAtMDQtMDYgIENocmlzIExv
cmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBheGlzLWxvY2tpbmcg
dG8ga2luZXRpYyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBheGlzLWxvY2tpbmcgdG8gc2Nyb2xsIGdlc3R1cmVzIG9uIFdQRSwg
YW5kIG5ldyBXUEUtc3BlY2lmaWMKKyAgICAgICAgc2V0dGluZ3MgdG8gY29udHJvbCB0aGUgcHJv
Y2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAg
ICAgKFdLVmlld0NyZWF0ZSk6CisgICAgICAgIChXS1ZpZXdDcmVhdGVXaXRoU2V0dGluZ3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYktpdFNldHRpbmdz
U2V0UHJvcGVydHkpOgorICAgICAgICAod2ViS2l0U2V0dGluZ3NHZXRQcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X3Njcm9sbF9jYXB0dXJlX3RocmVzaG9sZCk6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3Nfc2V0X3Njcm9sbF9jYXB0dXJlX3RocmVzaG9sZCk6CisgICAgICAgICh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2F4aXNfbG9ja19tb3ZlbWVudF90aHJlc2hvbGQpOgorICAgICAgICAod2Via2l0X3Nl
dHRpbmdzX3NldF9heGlzX2xvY2tfbW92ZW1lbnRfdGhyZXNob2xkKToKKyAgICAgICAgKHdlYmtp
dF9zZXR0aW5nc19nZXRfYXhpc19sb2NrX2FjdGl2YXRpb25fdGhyZXNob2xkKToKKyAgICAgICAg
KHdlYmtpdF9zZXR0aW5nc19zZXRfYXhpc19sb2NrX2FjdGl2YXRpb25fdGhyZXNob2xkKToKKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfYXhpc19sb2NrX3JlbGVhc2VfdGhyZXNob2xkKToK
KyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfYXhpc19sb2NrX3JlbGVhc2VfdGhyZXNob2xk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3Q3JlYXRlUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxH
ZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbEdl
c3R1cmVDb250cm9sbGVyOjpTY3JvbGxHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Vmlldyk6
CisgICAgICAgIChXS1dQRTo6bV9iYWNrZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dw
ZS9XUEVWaWV3Lmg6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZXR0aW5ncy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjAtMDQtMDEgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgcmVzb2x1dGlvbiBv
ZiBJUHY2IFNUVU4vVFVSTiBhZGRyZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1
NzU5YTNmZC4uMWM2MWNlNGNjZmFjNTQyMjQ4M2FkOWZiMWEzMGY2NDJhZmIyMmFjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldQRVZpZXcuaCIKKyNpbmNsdWRlICJXZWJLaXRTZXR0aW5ncy5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00Miw3ICs0MywxMiBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBDbGllbnRUcmFpdHM8V0tWaWV3Q2xpZW50QmFzZT4gewogCiBXS1ZpZXdSZWYgV0tWaWV3
Q3JlYXRlKHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBXS1BhZ2VDb25maWd1cmF0
aW9uUmVmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdLV1BFOjpWaWV3Ojpj
cmVhdGUoYmFja2VuZCwgKnRvSW1wbChjb25maWd1cmF0aW9uKSkpOworICAgIHJldHVybiBXS1Zp
ZXdDcmVhdGVXaXRoU2V0dGluZ3MoYmFja2VuZCwgY29uZmlndXJhdGlvbiwgd2Via2l0X3NldHRp
bmdzX25ldygpKTsKK30KKworV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhTZXR0aW5ncyhzdHJ1
Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25m
aWd1cmF0aW9uLCBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgcmV0dXJuIHRvQVBJ
KFdLV1BFOjpWaWV3OjpjcmVhdGUoYmFja2VuZCwgKnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2V0
dGluZ3MpKTsKIH0KIAogV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmgKaW5kZXggOGZiOTgzOTVj
ZjRmY2JjZDE2NGU2YzQxZmZiN2RhZDc1NWY0MWY4NS4uY2RlOTg5MWRkYTg1YjYxYTk3MjZjYzhk
YTI3YTQyOTk4NjZlZTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0Mvd3BlL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9X
S1ZpZXcuaApAQCAtMzMsOSArMzMsMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRTZXR0aW5ncyBXZWJLaXRTZXR0aW5nczsKIHN0cnVjdCB3cGVfdmll
d19iYWNrZW5kOwogCiBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShzdHJ1Y3Qgd3Bl
X3ZpZXdfYmFja2VuZCosIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpOworV0tfRVhQT1JUIFdLVmll
d1JlZiBXS1ZpZXdDcmVhdGVXaXRoU2V0dGluZ3Moc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqLCBX
S1BhZ2VDb25maWd1cmF0aW9uUmVmLCBXZWJLaXRTZXR0aW5ncyopOwogCiBXS19FWFBPUlQgV0tQ
YWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IDg1ZGExMjg5NzM3
ODEyYTI4YzZmYzA2OWNkZjM2YmZiMTlhMzQ2YmYuLmFlNjZjNWQ2OThiOTA5NzRiYzE5MGQ0N2Jh
ZDEzNDk5OGViMGM5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTg0LDYgKzg0LDEyIEBAIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgYm9vbCBlbmFibGVCYWNr
Rm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyB7IGZhbHNlIH07CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShXUEUpCisgICAgZ3VpbnQzMiBzY3JvbGxDYXB0dXJlVGhyZXNob2xkIHsgMjAwIH07CisgICAg
Z3VpbnQzMiBheGlzTG9ja01vdmVtZW50VGhyZXNob2xkIHsgOCB9OworICAgIGd1aW50MzIgYXhp
c0xvY2tBY3RpdmF0aW9uVGhyZXNob2xkIHsgMTUgfTsKKyAgICBndWludDMyIGF4aXNMb2NrUmVs
ZWFzZVRocmVzaG9sZCB7IDMwIH07CisjZW5kaWYKIH07CiAKIC8qKgpAQCAtMTcwLDYgKzE3Niwx
MiBAQCBlbnVtIHsKICNlbmRpZgogICAgIFBST1BfRU5BQkxFX0pBVkFTQ1JJUFRfTUFSS1VQLAog
ICAgIFBST1BfRU5BQkxFX01FRElBLAorI2lmIFBMQVRGT1JNKFdQRSkKKyAgICBQUk9QX1NDUk9M
TF9DQVBUVVJFX1RIUkVTSE9MRCwKKyAgICBQUk9QX0FYSVNfTE9DS19NT1ZFTUVOVF9USFJFU0hP
TEQsCisgICAgUFJPUF9BWElTX0xPQ0tfQUNUSVZBVElPTl9USFJFU0hPTEQsCisgICAgUFJPUF9B
WElTX0xPQ0tfUkVMRUFTRV9USFJFU0hPTEQsCisjZW5kaWYKIH07CiAKIHN0YXRpYyB2b2lkIHdl
YktpdFNldHRpbmdzRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCkBAIC00MDAsNiArNDEyLDIwIEBA
IHN0YXRpYyB2b2lkIHdlYktpdFNldHRpbmdzU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIGNvbnN0IEdWYWx1CiAgICAgY2FzZSBQUk9QX0VOQUJMRV9NRURJQToKICAg
ICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWEoc2V0dGluZ3MsIGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oV1BFKQor
ICAgIGNhc2UgUFJPUF9TQ1JPTExfQ0FQVFVSRV9USFJFU0hPTEQ6CisgICAgICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfc2Nyb2xsX2NhcHR1cmVfdGhyZXNob2xkKHNldHRpbmdzLCBnX3ZhbHVlX2dl
dF91aW50KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BWElTX0xPQ0tf
TU9WRU1FTlRfVEhSRVNIT0xEOgorICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9j
a19tb3ZlbWVudF90aHJlc2hvbGQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0FYSVNfTE9DS19BQ1RJVkFUSU9OX1RIUkVT
SE9MRDoKKyAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9heGlzX2xvY2tfYWN0aXZhdGlvbl90
aHJlc2hvbGQoc2V0dGluZ3MsIGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0FYSVNfTE9DS19SRUxFQVNFX1RIUkVTSE9MRDoKKyAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9heGlzX2xvY2tfcmVsZWFzZV90aHJlc2hvbGQoc2V0dGluZ3Ms
IGdfdmFsdWVfZ2V0X3VpbnQodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTkxLDYgKzYxNywyMCBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRTZXR0aW5nc0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbAogICAgIGNhc2UgUFJPUF9FTkFCTEVfTUVESUE6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX21lZGlhKHNldHRpbmdzKSk7CiAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKFdQRSkK
KyAgICBjYXNlIFBST1BfU0NST0xMX0NBUFRVUkVfVEhSRVNIT0xEOgorICAgICAgICBnX3ZhbHVl
X3NldF91aW50KHZhbHVlLCB3ZWJraXRfc2V0dGluZ3NfZ2V0X3Njcm9sbF9jYXB0dXJlX3RocmVz
aG9sZChzZXR0aW5ncykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQVhJU19MT0NL
X01PVkVNRU5UX1RIUkVTSE9MRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCh2YWx1ZSwgd2Vi
a2l0X3NldHRpbmdzX2dldF9heGlzX2xvY2tfbW92ZW1lbnRfdGhyZXNob2xkKHNldHRpbmdzKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9BWElTX0xPQ0tfQUNUSVZBVElPTl9USFJF
U0hPTEQ6CisgICAgICAgIGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9zZXR0aW5nc19n
ZXRfYXhpc19sb2NrX2FjdGl2YXRpb25fdGhyZXNob2xkKHNldHRpbmdzKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9BWElTX0xPQ0tfUkVMRUFTRV9USFJFU0hPTEQ6CisgICAgICAg
IGdfdmFsdWVfc2V0X3VpbnQodmFsdWUsIHdlYmtpdF9zZXR0aW5nc19nZXRfYXhpc19sb2NrX3Jl
bGVhc2VfdGhyZXNob2xkKHNldHRpbmdzKSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTE1MDIsNyArMTU0Miw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFNldHRpbmdz
Q2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgXygiV2hldGhlciBob3Jpem9udGFsIHN3aXBlIGdl
c3R1cmUgd2lsbCB0cmlnZ2VyIGJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIiksCiAgICAgICAgICAg
ICBGQUxTRSwKICAgICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKLSNl
bmRpZiAvLyBQTEFURk9UTShHVEspCisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiAgICAgLyoq
CiAgICAgICogV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLWphdmFzY3JpcHQtbWFya3VwOgpAQCAtMTUz
OCw2ICsxNTc4LDc1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9zZXR0aW5nc19jbGFzc19pbml0KFdl
YktpdFNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgVFJVRSwKICAgICAgICAgICAg
IHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKIAorI2lmIFBMQVRGT1JNKFdQRSkKKyAg
ICAvKioKKyAgICAgKiBXZWJLaXRTZXR0aW5nczpzY3JvbGwtY2FwdHVyZS10aHJlc2hvbGQ6Cisg
ICAgICoKKyAgICAgKiBUaGUgdGltZSB0byB3YWl0LCBpbiBtaWxsaXNlY29uZHMsIGJlZm9yZSBj
b25zaWRlcmluZyB0b3VjaCBldmVudHMgZm9yIHNjcm9sbGluZy4KKyAgICAgKgorICAgICAqIFNp
bmNlOiAyLjMwCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
T2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfU0NST0xMX0NBUFRVUkVfVEhSRVNIT0xELAorICAg
ICAgICBnX3BhcmFtX3NwZWNfdWludCgic2Nyb2xsLWNhcHR1cmUtdGhyZXNob2xkIiwKKyAgICAg
ICAgICAgIF8oIlNjcm9sbCBjYXB0dXJlIHRocmVzaG9sZCIpLAorICAgICAgICAgICAgXygiVGhl
IHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGNhcHR1cmluZyB0b3VjaCBldmVu
dHMgZm9yIHNjcm9sbGluZyIpLAorICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAyMDAsCisgICAg
ICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdzKSk7CisKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRTZXR0aW5nczpheGlzLWxvY2stbW92ZW1lbnQtdGhyZXNob2xkOgorICAgICAqCisg
ICAgICogVGhlIGRpc3RhbmNlLCBpbiBwaXhlbHMsIGF0IHdoaWNoIGEgc2Nyb2xsIGRyYWcgZ2Vz
dHVyZSB3aWxsIGJlIGNvbnNpZGVyZWQgYXMuCisgICAgICogaW50ZW50aW9uYWwuIElmIHRoaXMg
dGhyZXNob2xkIGlzIHJlYWNoZWQgb24gYW4gYXhpcyBiZWZvcmUgYXhpcy1sb2NraW5nIGhhcwor
ICAgICAqIGluaXRpYXRlZCwgbG9ja2luZyB3aWxsIG5vdCBpbml0aWF0ZSBvbiB0aGF0IGF4aXMu
CisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0FYSVNfTE9DS19N
T1ZFTUVOVF9USFJFU0hPTEQsCisgICAgICAgIGdfcGFyYW1fc3BlY191aW50KCJheGlzLWxvY2st
bW92ZW1lbnQtdGhyZXNob2xkIiwKKyAgICAgICAgICAgIF8oIkF4aXMtbG9jayBtb3ZlbWVudCB0
aHJlc2hvbGQiKSwKKyAgICAgICAgICAgIF8oIlRoZSBwaXhlbCBkaXN0YW5jZSBhdCB3aGljaCBh
IGRyYWcgZ2VzdHVyZSBpcyBjb25zaWRlcmVkIGludGVudGlvbmFsIiksCisgICAgICAgICAgICAw
LCBHX01BWFVJTlQsIDgsCisgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1Y3RQYXJhbUZsYWdz
KSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRTZXR0aW5nczpheGlzLWxvY2stYWN0aXZhdGlv
bi10aHJlc2hvbGQ6CisgICAgICoKKyAgICAgKiBUaGUgZGlzdGFuY2UsIGluIHBpeGVscywgYXQg
d2hpY2ggc2Nyb2xsIGF4aXMtbG9ja2luZyB3aWxsIGJlIGNvbnNpZGVyZWQuIElmIHRoaXMKKyAg
ICAgKiB0aHJlc2hvbGQgaXMgcmVhY2hlZCBvbiBvbmUgYXhpcyBiZWZvcmUgdGhlIG9wcG9zaW5n
IGF4aXMgaGFzIHJlYWNoZWQKKyAgICAgKiAjV2ViS2l0U2V0dGluZ3M6YXhpcy1sb2NrLW1vdmVt
ZW50LXRocmVzaG9sZCwgdGhlIG9wcG9zaW5nIGF4aXMgd2lsbCBiZSBsb2NrZWQgdG8KKyAgICAg
KiBpdHMgaW5pdGlhbCBwb3NpdGlvbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjMwCisgICAg
ICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnT2JqZWN0Q2xhc3MsCisg
ICAgICAgIFBST1BfQVhJU19MT0NLX0FDVElWQVRJT05fVEhSRVNIT0xELAorICAgICAgICBnX3Bh
cmFtX3NwZWNfdWludCgiYXhpcy1sb2NrLWFjdGl2YXRpb24tdGhyZXNob2xkIiwKKyAgICAgICAg
ICAgIF8oIkF4aXMtbG9jayBhY3RpdmF0aW9uIHRocmVzaG9sZCIpLAorICAgICAgICAgICAgXygi
VGhlIHBpeGVsIGRpc3RhbmNlIGJlZm9yZSBjb25zaWRlcmluZyBsb2NraW5nIHNjcm9sbGluZyBv
biB0aGUgb3Bwb3NpbmcgYXhpcyIpLAorICAgICAgICAgICAgMCwgR19NQVhVSU5ULCAxNSwKKyAg
ICAgICAgICAgIHJlYWRXcml0ZUNvbnN0cnVjdFBhcmFtRmxhZ3MpKTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFNldHRpbmdzOmF4aXMtbG9jay1yZWxlYXNlLXRocmVzaG9sZDoKKyAgICAgKgor
ICAgICAqIFRoZSBkaXN0YW5jZSwgaW4gcGl4ZWxzLCBhdCB3aGljaCBhIHNjcm9sbCBnZXN0dXJl
IG1heSBkaXNhYmxlIGEgc2Nyb2xsIGF4aXMtbG9jaywKKyAgICAgKiBpZiBhbiBheGlzLWxvY2sg
aGFkIGJlZW4gaW5pdGlhdGVkLiBTY3JvbGwgZ2VzdHVyZXMgYXQgYW5kIGJleW9uZCB0aGlzIGRp
c3RhbmNlCisgICAgICogd2lsbCBhbHdheXMgYmUgcmVzcGVjdGVkLCBhbmQgYXhpcy1sb2NraW5n
IHdpbGwgYmUgZGlzYWJsZWQgb24gdGhhdCBheGlzIGZvcgorICAgICAqIHRoZSByZW1haW5kZXIg
b2YgdGhlIGdlc3R1cmUuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAgICAgICBQ
Uk9QX0FYSVNfTE9DS19SRUxFQVNFX1RIUkVTSE9MRCwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3Vp
bnQoImF4aXMtbG9jay1yZWxlYXNlLXRocmVzaG9sZCIsCisgICAgICAgICAgICBfKCJBeGlzLWxv
Y2sgcmVsZWFzZSB0aHJlc2hvbGQiKSwKKyAgICAgICAgICAgIF8oIlRoZSBwaXhlbCBkaXN0YW5j
ZSBiZWZvcmUgYmVmb3JlIGFsbG93aW5nIGFuIGF4aXMgbG9jayB0byBiZSBicm9rZW4iKSwKKyAg
ICAgICAgICAgIDAsIEdfTUFYVUlOVCwgMzAsCisgICAgICAgICAgICByZWFkV3JpdGVDb25zdHJ1
Y3RQYXJhbUZsYWdzKSk7CisjZW5kaWYKIH0KIAogV2ViUHJlZmVyZW5jZXMqIHdlYmtpdFNldHRp
bmdzR2V0UHJlZmVyZW5jZXMoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQpAQCAtMzgwMiwzICsz
OTExLDE2NyBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhKFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2xlYW4gZW5hYmxlZAogICAgIHByaXYtPnByZWZlcmVuY2Vz
LT5zZXRNZWRpYUVuYWJsZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHNldHRpbmdzKSwgImVuYWJsZS1tZWRpYSIpOwogfQorCisjaWYgUExBVEZPUk0oV1BFKQorCisv
KioKKyAqIHdlYmtpdF9zZXR0aW5nc19nZXRfc2Nyb2xsX2NhcHR1cmVfdGhyZXNob2xkOgorICog
QHNldHRpbmdzOiBhICNXZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRp
bmdzOnNjcm9sbC1jYXB0dXJlLXRocmVzaG9sZCBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiBU
aGUgc2Nyb2xsLWNhcHR1cmUgdGhyZXNob2xkLCBpbiBwaXhlbHMuCisgKgorICogU2luY2U6IDIu
MzAKKyAqLworZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9zY3JvbGxfY2FwdHVyZV90aHJl
c2hvbGQoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyksIDApOworCisgICAgcmV0dXJuIHNldHRp
bmdzLT5wcml2LT5zY3JvbGxDYXB0dXJlVGhyZXNob2xkOworfQorCisvKioKKyAqIHdlYmtpdF9z
ZXR0aW5nc19zZXRfc2Nyb2xsX2NhcHR1cmVfdGhyZXNob2xkOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICogQG1pbGxpc2Vjb25kczogVmFsdWUgdG8gYmUgc2V0CisgKgorICog
U2V0IHRoZSAjV2ViS2l0U2V0dGluZ3M6c2Nyb2xsLWNhcHR1cmUtdGhyZXNob2xkIHByb3BlcnR5
LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfc2Ny
b2xsX2NhcHR1cmVfdGhyZXNob2xkKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywgZ3VpbnQzMiBt
aWxsaXNlY29uZHMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Mo
c2V0dGluZ3MpKTsKKworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdz
LT5wcml2OworICAgIGlmIChwcml2LT5zY3JvbGxDYXB0dXJlVGhyZXNob2xkID09IG1pbGxpc2Vj
b25kcykKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+c2Nyb2xsQ2FwdHVyZVRocmVzaG9s
ZCA9IG1pbGxpc2Vjb25kczsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAic2Nyb2xsLWNhcHR1cmUtdGhyZXNob2xkIik7Cit9CisKKy8qKgorICogd2Via2l0X3NldHRp
bmdzX2dldF9heGlzX2xvY2tfbW92ZW1lbnRfdGhyZXNob2xkOgorICogQHNldHRpbmdzOiBhICNX
ZWJLaXRTZXR0aW5ncworICoKKyAqIEdldCB0aGUgI1dlYktpdFNldHRpbmdzOmF4aXMtbG9jay1t
b3ZlbWVudC10aHJlc2hvbGQgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogVGhlIHNjcm9sbCBh
eGlzLWxvY2sgbW92ZW1lbnQgdGhyZXNob2xkLCBpbiBwaXhlbHMuCisgKgorICogU2luY2U6IDIu
MzAKKyAqLworZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9heGlzX2xvY2tfbW92ZW1lbnRf
dGhyZXNob2xkKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCAwKTsKKworICAgIHJldHVybiBz
ZXR0aW5ncy0+cHJpdi0+YXhpc0xvY2tNb3ZlbWVudFRocmVzaG9sZDsKK30KKworLyoqCisgKiB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9ja19tb3ZlbWVudF90aHJlc2hvbGQ6CisgKiBAc2V0
dGluZ3M6IGEgI1dlYktpdFNldHRpbmdzCisgKiBAcGl4ZWxzOiBWYWx1ZSB0byBiZSBzZXQKKyAq
CisgKiBTZXQgdGhlICNXZWJLaXRTZXR0aW5nczpheGlzLWxvY2stbW92ZW1lbnQtdGhyZXNob2xk
IHByb3BlcnR5LgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK3ZvaWQKK3dlYmtpdF9zZXR0aW5n
c19zZXRfYXhpc19sb2NrX21vdmVtZW50X3RocmVzaG9sZChXZWJLaXRTZXR0aW5ncyAqc2V0dGlu
Z3MsIGd1aW50MzIgcGl4ZWxzKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NF
VFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBz
ZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+YXhpc0xvY2tNb3ZlbWVudFRocmVzaG9sZCA9
PSBwaXhlbHMpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPmF4aXNMb2NrTW92ZW1lbnRU
aHJlc2hvbGQgPSBwaXhlbHM7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdz
KSwgImF4aXMtbG9jay1tb3ZlbWVudC10aHJlc2hvbGQiKTsKK30KKworLyoqCisgKiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2F4aXNfbG9ja19hY3RpdmF0aW9uX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5n
czogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRTZXR0aW5nczpheGlz
LWxvY2stYWN0aXZhdGlvbi10aHJlc2hvbGQgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogVGhl
IHNjcm9sbCBheGlzLWxvY2sgYWN0aXZhdGlvbiB0aHJlc2hvbGQsIGluIHBpeGVscy4KKyAqCisg
KiBTaW5jZTogMi4zMAorICovCitndWludDMyCit3ZWJraXRfc2V0dGluZ3NfZ2V0X2F4aXNfbG9j
a19hY3RpdmF0aW9uX3RocmVzaG9sZChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgMCk7CisK
KyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPmF4aXNMb2NrQWN0aXZhdGlvblRocmVzaG9sZDsK
K30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9ja19hY3RpdmF0aW9uX3Ro
cmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBwaXhlbHM6IFZh
bHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmF4aXMtbG9jay1h
Y3RpdmF0aW9uLXRocmVzaG9sZCBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit2
b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9ja19hY3RpdmF0aW9uX3RocmVzaG9sZChX
ZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsIGd1aW50MzIgcGl4ZWxzKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRTZXR0
aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+YXhpc0xv
Y2tBY3RpdmF0aW9uVGhyZXNob2xkID09IHBpeGVscykKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJpdi0+YXhpc0xvY2tBY3RpdmF0aW9uVGhyZXNob2xkID0gcGl4ZWxzOworICAgIGdfb2JqZWN0
X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJheGlzLWxvY2stYWN0aXZhdGlvbi10aHJlc2hv
bGQiKTsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2F4aXNfbG9ja19yZWxlYXNl
X3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqCisgKiBHZXQg
dGhlICNXZWJLaXRTZXR0aW5nczpheGlzLWxvY2stcmVsZWFzZS10aHJlc2hvbGQgcHJvcGVydHku
CisgKgorICogUmV0dXJuczogVGhlIHNjcm9sbCBheGlzLWxvY2sgcmVsZWFzZSB0aHJlc2hvbGQs
IGluIHBpeGVscy4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCitndWludDMyCit3ZWJraXRfc2V0
dGluZ3NfZ2V0X2F4aXNfbG9ja19yZWxlYXNlX3RocmVzaG9sZChXZWJLaXRTZXR0aW5ncyAqc2V0
dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNl
dHRpbmdzKSwgMCk7CisKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPmF4aXNMb2NrUmVsZWFz
ZVRocmVzaG9sZDsKK30KKworLyoqCisgKiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9ja19y
ZWxlYXNlX3RocmVzaG9sZDoKKyAqIEBzZXR0aW5nczogYSAjV2ViS2l0U2V0dGluZ3MKKyAqIEBw
aXhlbHM6IFZhbHVlIHRvIGJlIHNldAorICoKKyAqIFNldCB0aGUgI1dlYktpdFNldHRpbmdzOmF4
aXMtbG9jay1yZWxlYXNlLXRocmVzaG9sZCBwcm9wZXJ0eS4KKyAqCisgKiBTaW5jZTogMi4zMAor
ICovCit2b2lkCit3ZWJraXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9ja19yZWxlYXNlX3RocmVzaG9s
ZChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MsIGd1aW50MzIgcGl4ZWxzKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CisKKyAgICBXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKKyAgICBpZiAocHJpdi0+YXhp
c0xvY2tSZWxlYXNlVGhyZXNob2xkID09IHBpeGVscykKKyAgICAgICAgcmV0dXJuOworCisgICAg
cHJpdi0+YXhpc0xvY2tSZWxlYXNlVGhyZXNob2xkID0gcGl4ZWxzOworICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChzZXR0aW5ncyksICJheGlzLWxvY2stcmVsZWFzZS10aHJlc2hvbGQiKTsK
K30KKworI2VuZGlmIC8vIFBMQVRGT1JNKFdQRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYjc0M2EwZDM0MGJlMDNmNWZj
YzVjOWE1NjY1NGMxNTc0ZDZlNzk0Zi4uOTE0NDgxZDc1ZTQ0ZDY4ZjBjZTA5MWJmZjRmZTcyNzJi
MjBjYmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKQEAgLTIyMDcsNyArMjIwNyw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Ny
ZWF0ZVBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b24+CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CiAjZWxpZiBQTEFURk9STShXUEUpCi0gICAgd2ViVmlldy0+cHJpdi0+dmlldy5yZXNldChXS1dQ
RTo6Vmlldzo6Y3JlYXRlKHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF93cGVfYmFja2VuZCh3
ZWJWaWV3LT5wcml2LT5iYWNrZW5kLmdldCgpKSwgY29uZmlndXJhdGlvbi5nZXQoKSkpOworICAg
IHdlYlZpZXctPnByaXYtPnZpZXcucmVzZXQoV0tXUEU6OlZpZXc6OmNyZWF0ZSh3ZWJraXRfd2Vi
X3ZpZXdfYmFja2VuZF9nZXRfd3BlX2JhY2tlbmQod2ViVmlldy0+cHJpdi0+YmFja2VuZC5nZXQo
KSksIGNvbmZpZ3VyYXRpb24uZ2V0KCksIHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2Vi
VmlldykpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDg3MjkwZTMy
Y2ViNTE1MzI0Mjk5ZGNmM2E4NzUwZWQyYjI0ZDUzYWMuLmY1MzlmMGQ3NmE3OWExNTM0NzQzY2Jk
MWFiZDNhMzNlYzFmOWM0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsR2VzdHVyZUNvbnRyb2xs
ZXIuaCIKIAorI2luY2x1ZGUgIldlYktpdFNldHRpbmdzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxiYXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw2ICs0MCw4IEBAIGJvb2wg
U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZUV2ZW50KGNvbnN0IHN0cnVjdCB3cGVfaW5w
dXRfdG91Y2hfZXZlbnRfcmF3CiAgICAgICAgIG1fc3RhcnQueSA9IHRvdWNoUG9pbnQtPnk7CiAg
ICAgICAgIG1fb2Zmc2V0LnggPSB0b3VjaFBvaW50LT54OwogICAgICAgICBtX29mZnNldC55ID0g
dG91Y2hQb2ludC0+eTsKKyAgICAgICAgbV94QXhpc0xvY2tCcm9rZW4gPSBmYWxzZTsKKyAgICAg
ICAgbV95QXhpc0xvY2tCcm9rZW4gPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGNhc2Ugd3BlX2lucHV0X3RvdWNoX2V2ZW50X3R5cGVfbW90aW9uOgogICAgICAgICBpZiAoIW1f
aGFuZGxpbmcpIHsKQEAgLTQ5LDcgKzUyLDcgQEAgYm9vbCBTY3JvbGxHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXcKICAg
ICAgICAgICAgIGludCBwaXhlbHNQZXJMaW5lU3RlcCA9IFdlYkNvcmU6OlNjcm9sbGJhcjo6cGl4
ZWxzUGVyTGluZVN0ZXAoKTsKICAgICAgICAgICAgIG1faGFuZGxpbmcgPSBzdGQ6OmFicyhkZWx0
YVgpID49IHBpeGVsc1BlckxpbmVTdGVwCiAgICAgICAgICAgICAgICAgfHwgc3RkOjphYnMoZGVs
dGFZKSA+PSBwaXhlbHNQZXJMaW5lU3RlcAotICAgICAgICAgICAgICAgIHx8IGRlbHRhVGltZSA+
PSAyMDA7CisgICAgICAgICAgICAgICAgfHwgZGVsdGFUaW1lID49IHdlYmtpdF9zZXR0aW5nc19n
ZXRfc2Nyb2xsX2NhcHR1cmVfdGhyZXNob2xkKG1fc2V0dGluZ3MpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2hhbmRsaW5nKSB7CiAjaWYgV1BFX0NIRUNLX1ZFUlNJT04oMSwgNSwgMCkKQEAg
LTU4LDggKzYxLDI1IEBAIGJvb2wgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZUV2ZW50
KGNvbnN0IHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3CiAgICAgICAgICAgICAgICAg
dG91Y2hQb2ludC0+dGltZSwgbV9zdGFydC54LCBtX3N0YXJ0LnksCiAgICAgICAgICAgICAgICAg
MCwgMCwgMCwKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBtX2F4aXNFdmVudC54X2F4aXMg
PSAtKG1fb2Zmc2V0LnggLSB0b3VjaFBvaW50LT54KTsKLSAgICAgICAgICAgIG1fYXhpc0V2ZW50
LnlfYXhpcyA9IC0obV9vZmZzZXQueSAtIHRvdWNoUG9pbnQtPnkpOworCisgICAgICAgICAgICBh
dXRvIGxvY2tNb3ZlbWVudFRocmVzaG9sZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfYXhpc19sb2Nr
X21vdmVtZW50X3RocmVzaG9sZChtX3NldHRpbmdzKTsKKyAgICAgICAgICAgIGF1dG8gbG9ja0Fj
dGl2YXRlVGhyZXNob2xkID0gd2Via2l0X3NldHRpbmdzX2dldF9heGlzX2xvY2tfYWN0aXZhdGlv
bl90aHJlc2hvbGQobV9zZXR0aW5ncyk7CisgICAgICAgICAgICBhdXRvIGxvY2tSZWxlYXNlVGhy
ZXNob2xkID0gd2Via2l0X3NldHRpbmdzX2dldF9heGlzX2xvY2tfcmVsZWFzZV90aHJlc2hvbGQo
bV9zZXR0aW5ncyk7CisgICAgICAgICAgICBhdXRvIHhPZmZzZXQgPSBzdGQ6OmFicyh0b3VjaFBv
aW50LT54IC0gbV9zdGFydC54KTsKKyAgICAgICAgICAgIGF1dG8geU9mZnNldCA9IHN0ZDo6YWJz
KHRvdWNoUG9pbnQtPnkgLSBtX3N0YXJ0LnkpOworCisgICAgICAgICAgICBpZiAoeE9mZnNldCA+
PSBsb2NrUmVsZWFzZVRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICBtX3hBeGlzTG9ja0Jyb2tl
biA9IHRydWU7CisgICAgICAgICAgICBpZiAoeU9mZnNldCA+PSBsb2NrUmVsZWFzZVRocmVzaG9s
ZCkKKyAgICAgICAgICAgICAgICBtX3lBeGlzTG9ja0Jyb2tlbiA9IHRydWU7CisKKyAgICAgICAg
ICAgIGlmICh4T2Zmc2V0ID49IGxvY2tNb3ZlbWVudFRocmVzaG9sZCAmJiB5T2Zmc2V0ID49IGxv
Y2tNb3ZlbWVudFRocmVzaG9sZCAmJiB4T2Zmc2V0IDwgbG9ja0FjdGl2YXRlVGhyZXNob2xkICYm
IHlPZmZzZXQgPCBsb2NrQWN0aXZhdGVUaHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICBtX3hB
eGlzTG9ja0Jyb2tlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgbV95QXhpc0xvY2tCcm9rZW4g
PSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2F4aXNFdmVudC54X2F4aXMg
PSAobV94QXhpc0xvY2tCcm9rZW4gfHwgeU9mZnNldCA8IGxvY2tBY3RpdmF0ZVRocmVzaG9sZCkg
PyAgLShtX29mZnNldC54IC0gdG91Y2hQb2ludC0+eCkgOiAwOworICAgICAgICAgICAgbV9heGlz
RXZlbnQueV9heGlzID0gKG1feUF4aXNMb2NrQnJva2VuIHx8IHhPZmZzZXQgPCBsb2NrQWN0aXZh
dGVUaHJlc2hvbGQpID8gIC0obV9vZmZzZXQueSAtIHRvdWNoUG9pbnQtPnkpIDogMDsKICNlbHNl
CiAgICAgICAgICAgICBtX2F4aXNFdmVudCA9IHsKICAgICAgICAgICAgICAgICB3cGVfaW5wdXRf
YXhpc19ldmVudF90eXBlX21vdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCAyZDg3Zjk1YzI0
ZWM1YTM5YjdmMTBkZTZhYTU1ZWRlODI2YTE2ODhhLi4xZmYxNTg3NDI5NjU3MzcwNzQ2Mzk1MGU4
NWUxODJhOWNhYTE3Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOCwxMiArMjgsMTYgQEAK
ICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgPHdwZS93cGUuaD4KIAordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFNldHRpbmdzIFdlYktpdFNldHRpbmdzOworCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyKCkgPSBkZWZh
dWx0OworICAgIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyKFdlYktpdFNldHRpbmdzKiBzZXR0aW5n
cykKKyAgICAgICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQorICAgIHsgfQogCiAgICAgc3RydWN0
IHdwZV9pbnB1dF9heGlzX2V2ZW50KiBheGlzRXZlbnQoKQogICAgIHsKQEAgLTY4LDYgKzcyLDEw
IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IHdwZV9pbnB1dF9heGlzX2V2ZW50IG1fYXhpc0V2ZW50
OwogI2VuZGlmCiAgICAgV2ViV2hlZWxFdmVudDo6UGhhc2UgbV9waGFzZSB7IFdlYldoZWVsRXZl
bnQ6OlBoYXNlOjpQaGFzZU5vbmUgfTsKKworICAgIFdlYktpdFNldHRpbmdzKiBtX3NldHRpbmdz
OworICAgIGJvb2wgbV94QXhpc0xvY2tCcm9rZW4geyBmYWxzZSB9OworICAgIGJvb2wgbV95QXhp
c0xvY2tCcm9rZW4geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAppbmRleCBjYzgxZWVjNmJm
NzJhMjA3NWM4NjExZjgwNzZlOTJiODhmZTZkNzg3Li42Y2IwYjE3YzNlMzA0ZDExOTY0ZGEwM2Nh
ZmQzZjNhYzAxMmE3ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BF
Vmlldy5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFt
ZXNwYWNlIFdLV1BFIHsKIAotVmlldzo6VmlldyhzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFj
a2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgYmFzZUNvbmZpZ3VyYXRpb24pCitW
aWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbiwgV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzKQogICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCkpCi0gICAg
LCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXI+KCkpCisgICAgLCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8U2Ny
b2xsR2VzdHVyZUNvbnRyb2xsZXI+KHNldHRpbmdzKSkKICAgICAsIG1fcGFnZUNsaWVudChtYWtl
VW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCiAgICAgLCBtX3NpemUgeyA4MDAsIDYwMCB9
CiAgICAgLCBtX3ZpZXdTdGF0ZUZsYWdzIHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
IH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5k
KiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQwogCiAgICAgICAg
ICAgICBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQgdG91Y2hFdmVudChldmVudCwgcGFnZS5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKIAotICAgICAgICAgICAgYXV0byYgc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIgPSAqdmlldy5tX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyOworICAgICAgICAgICAg
YXV0byYgc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIgPSB2aWV3LnNjcm9sbEdlc3R1cmVDb250cm9s
bGVyKCk7CiAgICAgICAgICAgICBpZiAoc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaXNIYW5kbGlu
ZygpKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVu
dF9yYXcqIHRvdWNoUG9pbnQgPSB0b3VjaEV2ZW50Lm5hdGl2ZUZhbGxiYWNrVG91Y2hQb2ludCgp
OwogICAgICAgICAgICAgICAgIGlmICh0b3VjaFBvaW50LT50eXBlICE9IHdwZV9pbnB1dF90b3Vj
aF9ldmVudF90eXBlX251bGwgJiYgc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaGFuZGxlRXZlbnQo
dG91Y2hQb2ludCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgK
aW5kZXggOGY0YThmM2Y0MzYyNzJmNDE5NjM4NjNjNTZmMGQ1MGZkNzYwZGFkMy4uMzg5M2U3MjYx
N2IwZmMzMjFkOWZjNzY1MDA1ZmM2ZDBhNjQ2ZGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3Qg
T3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbENvbnRleHRSZWY7CiB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0IFdlYktpdElucHV0TWV0aG9kQ29udGV4dDsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRTZXR0aW5ncyBXZWJLaXRTZXR0aW5nczsKIHN0cnVjdCB3cGVfaW5wdXRf
a2V5Ym9hcmRfZXZlbnQ7CiBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZDsKIApAQCAtNjUsOSArNjYs
OSBAQCBuYW1lc3BhY2UgV0tXUEUgewogCiBjbGFzcyBWaWV3IDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Vmlldz4gewogcHVibGljOgotICAgIHN0YXRpYyBWaWV3
KiBjcmVhdGUoc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0IEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAgc3RhdGljIFZpZXcqIGNyZWF0ZShz
dHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbiwgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBWaWV3KGJhY2tlbmQsIGNvbmZpZ3VyYXRpb24pOworICAgICAgICBy
ZXR1cm4gbmV3IFZpZXcoYmFja2VuZCwgY29uZmlndXJhdGlvbiwgc2V0dGluZ3MpOwogICAgIH0K
IAogICAgIH5WaWV3KCk7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAgIFdlYktpdDo6
U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXImIHNjcm9sbEdlc3R1cmVDb250cm9sbGVyKCkgY29uc3Qg
eyByZXR1cm4gKm1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI7IH0KIAogcHJpdmF0ZToKLSAgICBW
aWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlv
biYpOworICAgIFZpZXcoc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqLCBjb25zdCBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uJiwgV2ViS2l0U2V0dGluZ3MqKTsKIAogICAgIHZvaWQgc2V0U2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBzZXRWaWV3U3RhdGUoT3B0aW9uU2V0PFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0U2V0dGluZ3MuaAppbmRleCA5ODMwMDQ5NDU0ODljMzY3NWYwOTU0
OTZkNWY3M2U0NWU2OWM1MmVlLi4xOTEzYWE5MTFkM2Y2MmI5ZjE0NGNjMTRjZTU4ZDI1MjhmMWM3
OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFNl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRTZXR0
aW5ncy5oCkBAIC00NjMsNiArNDYzLDM0IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfbWVkaWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFNldHRpbmdzICpzZXR0aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgZW5hYmxlZCk7CiAK
K1dFQktJVF9BUEkgZ3VpbnQzMgord2Via2l0X3NldHRpbmdzX2dldF9zY3JvbGxfY2FwdHVyZV90
aHJlc2hvbGQgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NldHRpbmdzX3NldF9zY3JvbGxfY2FwdHVyZV90aHJl
c2hvbGQgICAgICAgICAgICAgICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBndWludDMyICAgICAgICAgbWlsbGlzZWNvbmRzKTsKKworV0VCS0lUX0FQSSBndWludDMyCit3
ZWJraXRfc2V0dGluZ3NfZ2V0X2F4aXNfbG9ja19tb3ZlbWVudF90aHJlc2hvbGQgICAgICAgICAg
ICAgICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2F4aXNfbG9ja19tb3ZlbWVudF90aHJlc2hvbGQgICAgICAgICAgICAg
ICAoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICAgICBwaXhl
bHMpOworCitXRUJLSVRfQVBJIGd1aW50MzIKK3dlYmtpdF9zZXR0aW5nc19nZXRfYXhpc19sb2Nr
X2FjdGl2YXRpb25fdGhyZXNob2xkICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGlu
Z3MpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9zZXR0aW5nc19zZXRfYXhpc19sb2NrX2Fj
dGl2YXRpb25fdGhyZXNob2xkICAgICAgICAgICAgIChXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3VpbnQzMiAgICAgICAgIHBpeGVscyk7CisKK1dFQktJVF9BUEkgZ3VpbnQzMgor
d2Via2l0X3NldHRpbmdzX2dldF9heGlzX2xvY2tfcmVsZWFzZV90aHJlc2hvbGQgICAgICAgICAg
ICAgICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3NldHRpbmdzX3NldF9heGlzX2xvY2tfcmVsZWFzZV90aHJlc2hvbGQgICAgICAgICAgICAg
ICAgKFdlYktpdFNldHRpbmdzICpzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICAgICAgICAgcGl4
ZWxzKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIFdlYktpdFNldHRpbmdzX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4w
LXNlY3Rpb25zLnR4dAppbmRleCAwYzJkYzY1MTVjNjZiNzk1NzdhN2Q1ODA3Y2E0YTBmYmM1ZDA3
NTM5Li4xY2M4N2U2ZmYyMzU5ZTcwY2NhMTJkM2Y5MTBhZjhhN2M0ZmZhMzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2Vj
dGlvbnMudHh0CkBAIC01NDIsNiArNTQyLDE0IEBAIHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3df
dG9wX25hdmlnYXRpb25fdG9fZGF0YV91cmxzCiB3ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X3Rv
cF9uYXZpZ2F0aW9uX3RvX2RhdGFfdXJscwogd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVk
aWEKIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhCit3ZWJraXRfc2V0dGluZ3NfZ2V0
X3Njcm9sbF9jYXB0dXJlX3RocmVzaG9sZAord2Via2l0X3NldHRpbmdzX3NldF9zY3JvbGxfY2Fw
dHVyZV90aHJlc2hvbGQKK3dlYmtpdF9zZXR0aW5nc19nZXRfYXhpc19sb2NrX21vdmVtZW50X3Ro
cmVzaG9sZAord2Via2l0X3NldHRpbmdzX3NldF9heGlzX2xvY2tfbW92ZW1lbnRfdGhyZXNob2xk
Cit3ZWJraXRfc2V0dGluZ3NfZ2V0X2F4aXNfbG9ja19hY3RpdmF0aW9uX3RocmVzaG9sZAord2Vi
a2l0X3NldHRpbmdzX3NldF9heGlzX2xvY2tfYWN0aXZhdGlvbl90aHJlc2hvbGQKK3dlYmtpdF9z
ZXR0aW5nc19nZXRfYXhpc19sb2NrX3JlbGVhc2VfdGhyZXNob2xkCit3ZWJraXRfc2V0dGluZ3Nf
c2V0X2F4aXNfbG9ja19yZWxlYXNlX3RocmVzaG9sZAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4K
IFdlYktpdFNldHRpbmdzQ2xhc3MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412655</attachid>
            <date>2020-10-29 08:59:46 -0700</date>
            <delta_ts>2020-10-29 09:24:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209729-20201029155945.patch</filename>
            <type>text/plain</type>
            <size>4669</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkNjdhNjdhMTYzOWU3ODI5
ZWQwMDM1ZTdjZjdhM2FiNjFhOTNiYzIuLmFiNDFiYTgzYzczNDBlOWFkMjQzYzMzM2FlMGE3MzM3
MzZmOWRmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDgtMTcgIENocmlzIExv
cmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBheGlzLWxvY2tpbmcg
dG8ga2luZXRpYyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBheGlzLWxvY2tpbmcgdG8gc2Nyb2xsIGdlc3R1cmVzIG9uIFdQRSwg
YW5kIG5ldyBXUEUtc3BlY2lmaWMKKyAgICAgICAgc2V0dGluZ3MgdG8gY29udHJvbCB0aGUgcHJv
Y2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJv
bGxlci5oOgorCiAyMDIwLTEwLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gRWFnZXJseSBmbHVzaCB0aGUgUHV0SW1hZ2VEYXRh
IGl0ZW0gdG8gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDg3Mjkw
ZTMyY2ViNTE1MzI0Mjk5ZGNmM2E4NzUwZWQyYjI0ZDUzYWMuLmUzOTM4NmEyZDQ3M2UzMmExY2Rj
NDg3M2U0MGY0YmFlMWU2OWI5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yNiwxMCAr
MjYsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxHZXN0dXJlQ29u
dHJvbGxlci5oIgogCisjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbGJhci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gRklYTUU6IFRoZXNl
IG91Z2h0IHRvIGJlIGVpdGhlciBjb25maWd1cmFibGUgb3IgZGVyaXZlZCBmcm9tIHN5c3RlbQor
Ly8gICAgICAgIHByb3BlcnRpZXMsIHN1Y2ggYXMgc2NyZWVuIHNpemUgYW5kIHBpeGVsIGRlbnNp
dHkuCitzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNjcm9sbENhcHR1cmVUaHJlc2hvbGQgeyAy
MDAgfTsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgYXhpc0xvY2tNb3ZlbWVudFRocmVzaG9s
ZCB7IDggfTsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgYXhpc0xvY2tBY3RpdmF0aW9uVGhy
ZXNob2xkIHsgMTUgfTsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgYXhpc0xvY2tSZWxlYXNl
VGhyZXNob2xkIHsgMzAgfTsKKwogYm9vbCBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxl
RXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXcqIHRvdWNoUG9pbnQp
CiB7CiAgICAgc3dpdGNoICh0b3VjaFBvaW50LT50eXBlKSB7CkBAIC0zOSw2ICs0Nyw4IEBAIGJv
b2wgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZUV2ZW50KGNvbnN0IHN0cnVjdCB3cGVf
aW5wdXRfdG91Y2hfZXZlbnRfcmF3CiAgICAgICAgIG1fc3RhcnQueSA9IHRvdWNoUG9pbnQtPnk7
CiAgICAgICAgIG1fb2Zmc2V0LnggPSB0b3VjaFBvaW50LT54OwogICAgICAgICBtX29mZnNldC55
ID0gdG91Y2hQb2ludC0+eTsKKyAgICAgICAgbV94QXhpc0xvY2tCcm9rZW4gPSBmYWxzZTsKKyAg
ICAgICAgbV95QXhpc0xvY2tCcm9rZW4gPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGNhc2Ugd3BlX2lucHV0X3RvdWNoX2V2ZW50X3R5cGVfbW90aW9uOgogICAgICAgICBpZiAo
IW1faGFuZGxpbmcpIHsKQEAgLTQ5LDcgKzU5LDcgQEAgYm9vbCBTY3JvbGxHZXN0dXJlQ29udHJv
bGxlcjo6aGFuZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXcK
ICAgICAgICAgICAgIGludCBwaXhlbHNQZXJMaW5lU3RlcCA9IFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGl4ZWxzUGVyTGluZVN0ZXAoKTsKICAgICAgICAgICAgIG1faGFuZGxpbmcgPSBzdGQ6OmFicyhk
ZWx0YVgpID49IHBpeGVsc1BlckxpbmVTdGVwCiAgICAgICAgICAgICAgICAgfHwgc3RkOjphYnMo
ZGVsdGFZKSA+PSBwaXhlbHNQZXJMaW5lU3RlcAotICAgICAgICAgICAgICAgIHx8IGRlbHRhVGlt
ZSA+PSAyMDA7CisgICAgICAgICAgICAgICAgfHwgZGVsdGFUaW1lID49IHNjcm9sbENhcHR1cmVU
aHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1faGFuZGxpbmcpIHsKICNpZiBXUEVf
Q0hFQ0tfVkVSU0lPTigxLCA1LCAwKQpAQCAtNTgsOCArNjgsMjIgQEAgYm9vbCBTY3JvbGxHZXN0
dXJlQ29udHJvbGxlcjo6aGFuZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9l
dmVudF9yYXcKICAgICAgICAgICAgICAgICB0b3VjaFBvaW50LT50aW1lLCBtX3N0YXJ0LngsIG1f
c3RhcnQueSwKICAgICAgICAgICAgICAgICAwLCAwLCAwLAogICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIG1fYXhpc0V2ZW50LnhfYXhpcyA9IC0obV9vZmZzZXQueCAtIHRvdWNoUG9pbnQtPngp
OwotICAgICAgICAgICAgbV9heGlzRXZlbnQueV9heGlzID0gLShtX29mZnNldC55IC0gdG91Y2hQ
b2ludC0+eSk7CisKKyAgICAgICAgICAgIGF1dG8geE9mZnNldCA9IHN0ZDo6YWJzKHRvdWNoUG9p
bnQtPnggLSBtX3N0YXJ0LngpOworICAgICAgICAgICAgYXV0byB5T2Zmc2V0ID0gc3RkOjphYnMo
dG91Y2hQb2ludC0+eSAtIG1fc3RhcnQueSk7CisKKyAgICAgICAgICAgIGlmICh4T2Zmc2V0ID49
IGF4aXNMb2NrUmVsZWFzZVRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICBtX3hBeGlzTG9ja0Jy
b2tlbiA9IHRydWU7CisgICAgICAgICAgICBpZiAoeU9mZnNldCA+PSBheGlzTG9ja1JlbGVhc2VU
aHJlc2hvbGQpCisgICAgICAgICAgICAgICAgbV95QXhpc0xvY2tCcm9rZW4gPSB0cnVlOworCisg
ICAgICAgICAgICBpZiAoeE9mZnNldCA+PSBheGlzTG9ja01vdmVtZW50VGhyZXNob2xkICYmIHlP
ZmZzZXQgPj0gYXhpc0xvY2tNb3ZlbWVudFRocmVzaG9sZCAmJiB4T2Zmc2V0IDwgYXhpc0xvY2tB
Y3RpdmF0aW9uVGhyZXNob2xkICYmIHlPZmZzZXQgPCBheGlzTG9ja0FjdGl2YXRpb25UaHJlc2hv
bGQpIHsKKyAgICAgICAgICAgICAgICBtX3hBeGlzTG9ja0Jyb2tlbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgbV95QXhpc0xvY2tCcm9rZW4gPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtX2F4aXNFdmVudC54X2F4aXMgPSAobV94QXhpc0xvY2tCcm9rZW4gfHwgeU9mZnNl
dCA8IGF4aXNMb2NrQWN0aXZhdGlvblRocmVzaG9sZCkgPyAgLShtX29mZnNldC54IC0gdG91Y2hQ
b2ludC0+eCkgOiAwOworICAgICAgICAgICAgbV9heGlzRXZlbnQueV9heGlzID0gKG1feUF4aXNM
b2NrQnJva2VuIHx8IHhPZmZzZXQgPCBheGlzTG9ja0FjdGl2YXRpb25UaHJlc2hvbGQpID8gIC0o
bV9vZmZzZXQueSAtIHRvdWNoUG9pbnQtPnkpIDogMDsKICNlbHNlCiAgICAgICAgICAgICBtX2F4
aXNFdmVudCA9IHsKICAgICAgICAgICAgICAgICB3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlX21v
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Ny
b2xsR2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCA0ZDU3YmE3YzgwMTI2Y2YxNTg3MzRkZGZkN2Ez
ZTgzNjAyNjBmNjFhLi4zODcxZWI3OTMxZDAwODQzNzI4NGUwODM5M2RiZTc4NTg2ZDhmOTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxH
ZXN0dXJlQ29udHJvbGxlci5oCkBAIC02OCw2ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgc3RydWN0
IHdwZV9pbnB1dF9heGlzX2V2ZW50IG1fYXhpc0V2ZW50OwogI2VuZGlmCiAgICAgV2ViV2hlZWxF
dmVudDo6UGhhc2UgbV9waGFzZSB7IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUgfTsK
KworICAgIGJvb2wgbV94QXhpc0xvY2tCcm9rZW4geyBmYWxzZSB9OworICAgIGJvb2wgbV95QXhp
c0xvY2tCcm9rZW4geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412659</attachid>
            <date>2020-10-29 09:24:47 -0700</date>
            <delta_ts>2020-10-29 09:53:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209729-20201029162446.patch</filename>
            <type>text/plain</type>
            <size>4677</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFkNjdhNjdhMTYzOWU3ODI5
ZWQwMDM1ZTdjZjdhM2FiNjFhOTNiYzIuLmE1ZDk2ODU5ZjBjNTgxOGMwMTk5YzlkMDUwM2I4Nzc3
NzA3OWQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDgtMTcgIENocmlzIExv
cmQgIDxjbG9yZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEFkZCBheGlzLWxvY2tpbmcg
dG8ga2luZXRpYyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmlhbiBQZXJleiBk
ZSBDYXN0cm8uCisKKyAgICAgICAgQWRkIGF4aXMtbG9ja2luZyB0byBzY3JvbGwgZ2VzdHVyZXMg
b24gV1BFLCBhbmQgbmV3IFdQRS1zcGVjaWZpYworICAgICAgICBzZXR0aW5ncyB0byBjb250cm9s
IHRoZSBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVy
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1
cmVDb250cm9sbGVyLmg6CisKIDIwMjAtMTAtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBFYWdlcmx5IGZsdXNoIHRoZSBQdXRJ
bWFnZURhdGEgaXRlbSB0byB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5k
ZXggODcyOTBlMzJjZWI1MTUzMjQyOTlkY2YzYTg3NTBlZDJiMjRkNTNhYy4uZTM5Mzg2YTJkNDcz
ZTMyYTFjZGM0ODczZTQwZjRiYWUxZTY5YjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAg
LTI2LDEwICsyNiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbEdl
c3R1cmVDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJXZWJLaXRTZXR0aW5ncy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBGSVhN
RTogVGhlc2Ugb3VnaHQgdG8gYmUgZWl0aGVyIGNvbmZpZ3VyYWJsZSBvciBkZXJpdmVkIGZyb20g
c3lzdGVtCisvLyAgICAgICAgcHJvcGVydGllcywgc3VjaCBhcyBzY3JlZW4gc2l6ZSBhbmQgcGl4
ZWwgZGVuc2l0eS4KK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc2Nyb2xsQ2FwdHVyZVRocmVz
aG9sZCB7IDIwMCB9Oworc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBheGlzTG9ja01vdmVtZW50
VGhyZXNob2xkIHsgOCB9Oworc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBheGlzTG9ja0FjdGl2
YXRpb25UaHJlc2hvbGQgeyAxNSB9Oworc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBheGlzTG9j
a1JlbGVhc2VUaHJlc2hvbGQgeyAzMCB9OworCiBib29sIFNjcm9sbEdlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3JhdyogdG91
Y2hQb2ludCkKIHsKICAgICBzd2l0Y2ggKHRvdWNoUG9pbnQtPnR5cGUpIHsKQEAgLTM5LDYgKzQ3
LDggQEAgYm9vbCBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlRXZlbnQoY29uc3Qgc3Ry
dWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXcKICAgICAgICAgbV9zdGFydC55ID0gdG91Y2hQ
b2ludC0+eTsKICAgICAgICAgbV9vZmZzZXQueCA9IHRvdWNoUG9pbnQtPng7CiAgICAgICAgIG1f
b2Zmc2V0LnkgPSB0b3VjaFBvaW50LT55OworICAgICAgICBtX3hBeGlzTG9ja0Jyb2tlbiA9IGZh
bHNlOworICAgICAgICBtX3lBeGlzTG9ja0Jyb2tlbiA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgY2FzZSB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfdHlwZV9tb3Rpb246CiAgICAg
ICAgIGlmICghbV9oYW5kbGluZykgewpAQCAtNDksNyArNTksNyBAQCBib29sIFNjcm9sbEdlc3R1
cmVDb250cm9sbGVyOjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2
ZW50X3JhdwogICAgICAgICAgICAgaW50IHBpeGVsc1BlckxpbmVTdGVwID0gV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwogICAgICAgICAgICAgbV9oYW5kbGluZyA9IHN0
ZDo6YWJzKGRlbHRhWCkgPj0gcGl4ZWxzUGVyTGluZVN0ZXAKICAgICAgICAgICAgICAgICB8fCBz
dGQ6OmFicyhkZWx0YVkpID49IHBpeGVsc1BlckxpbmVTdGVwCi0gICAgICAgICAgICAgICAgfHwg
ZGVsdGFUaW1lID49IDIwMDsKKyAgICAgICAgICAgICAgICB8fCBkZWx0YVRpbWUgPj0gc2Nyb2xs
Q2FwdHVyZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICBpZiAobV9oYW5kbGluZykgewog
I2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDUsIDApCkBAIC01OCw4ICs2OCwyMiBAQCBib29sIFNj
cm9sbEdlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0
X3RvdWNoX2V2ZW50X3JhdwogICAgICAgICAgICAgICAgIHRvdWNoUG9pbnQtPnRpbWUsIG1fc3Rh
cnQueCwgbV9zdGFydC55LAogICAgICAgICAgICAgICAgIDAsIDAsIDAsCiAgICAgICAgICAgICB9
OwotICAgICAgICAgICAgbV9heGlzRXZlbnQueF9heGlzID0gLShtX29mZnNldC54IC0gdG91Y2hQ
b2ludC0+eCk7Ci0gICAgICAgICAgICBtX2F4aXNFdmVudC55X2F4aXMgPSAtKG1fb2Zmc2V0Lnkg
LSB0b3VjaFBvaW50LT55KTsKKworICAgICAgICAgICAgYXV0byB4T2Zmc2V0ID0gc3RkOjphYnMo
dG91Y2hQb2ludC0+eCAtIG1fc3RhcnQueCk7CisgICAgICAgICAgICBhdXRvIHlPZmZzZXQgPSBz
dGQ6OmFicyh0b3VjaFBvaW50LT55IC0gbV9zdGFydC55KTsKKworICAgICAgICAgICAgaWYgKHhP
ZmZzZXQgPj0gYXhpc0xvY2tSZWxlYXNlVGhyZXNob2xkKQorICAgICAgICAgICAgICAgIG1feEF4
aXNMb2NrQnJva2VuID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh5T2Zmc2V0ID49IGF4aXNMb2Nr
UmVsZWFzZVRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICBtX3lBeGlzTG9ja0Jyb2tlbiA9IHRy
dWU7CisKKyAgICAgICAgICAgIGlmICh4T2Zmc2V0ID49IGF4aXNMb2NrTW92ZW1lbnRUaHJlc2hv
bGQgJiYgeU9mZnNldCA+PSBheGlzTG9ja01vdmVtZW50VGhyZXNob2xkICYmIHhPZmZzZXQgPCBh
eGlzTG9ja0FjdGl2YXRpb25UaHJlc2hvbGQgJiYgeU9mZnNldCA8IGF4aXNMb2NrQWN0aXZhdGlv
blRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgIG1feEF4aXNMb2NrQnJva2VuID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBtX3lBeGlzTG9ja0Jyb2tlbiA9IHRydWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIG1fYXhpc0V2ZW50LnhfYXhpcyA9IChtX3hBeGlzTG9ja0Jyb2tlbiB8
fCB5T2Zmc2V0IDwgYXhpc0xvY2tBY3RpdmF0aW9uVGhyZXNob2xkKSA/ICAtKG1fb2Zmc2V0Lngg
LSB0b3VjaFBvaW50LT54KSA6IDA7CisgICAgICAgICAgICBtX2F4aXNFdmVudC55X2F4aXMgPSAo
bV95QXhpc0xvY2tCcm9rZW4gfHwgeE9mZnNldCA8IGF4aXNMb2NrQWN0aXZhdGlvblRocmVzaG9s
ZCkgPyAgLShtX29mZnNldC55IC0gdG91Y2hQb2ludC0+eSkgOiAwOwogI2Vsc2UKICAgICAgICAg
ICAgIG1fYXhpc0V2ZW50ID0gewogICAgICAgICAgICAgICAgIHdwZV9pbnB1dF9heGlzX2V2ZW50
X3R5cGVfbW90aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDRkNTdiYTdjODAxMjZjZjE1ODcz
NGRkZmQ3YTNlODM2MDI2MGY2MWEuLjM4NzFlYjc5MzFkMDA4NDM3Mjg0ZTA4MzkzZGJlNzg1ODZk
OGY5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKQEAgLTY4LDYgKzY4LDkgQEAgcHJpdmF0ZToKICAg
ICBzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQgbV9heGlzRXZlbnQ7CiAjZW5kaWYKICAgICBX
ZWJXaGVlbEV2ZW50OjpQaGFzZSBtX3BoYXNlIHsgV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNl
Tm9uZSB9OworCisgICAgYm9vbCBtX3hBeGlzTG9ja0Jyb2tlbiB7IGZhbHNlIH07CisgICAgYm9v
bCBtX3lBeGlzTG9ja0Jyb2tlbiB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>