<?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>150323</bug_id>
          
          <creation_ts>2015-10-19 03:52:59 -0700</creation_ts>
          <short_desc>[GTK] Graphics corruption when entering/leaving AC mode quickly</short_desc>
          <delta_ts>2015-10-20 05:04:43 -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>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cosimoc</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134541</commentid>
    <comment_count>0</comment_count>
      <attachid>263467</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2015-10-19 03:52:59 -0700</bug_when>
    <thetext>Created attachment 263467
Reduced test case

DESCRIPTION

Starting with WebKit2GTK+ 2.8, there seems to be an issue that happens sometimes when Accelerated Compositing mode is exited and then re-activated again very quickly, which sometimes can lead to some weird &quot;flickering effects&quot;, where the webview would show wrong contents for a split second.

More specifically, in my case I could see at least 3 manifestations of this issue, which I think it could be a sign of a memory corruption issue in the backing store:
  A. The webview displays a previous rendering state for a split second, then quickly switches to its current state again
  B. The webview refuses to load the contents of an image, which could be never shown in the end if belonging to an animation (where the image would be shown only for a moment)
  C. The webview shows some corrupted pixels at the top for a moment

I&apos;ve debugged this issue for a while already and found that in WebKit2GTK+ 2.6 and previous versions the PageClientImpl::enterAcceleratedCompositingMode() and PageClientImpl::exitAcceleratedCompositingMode() where not implemented, while now they are implemented to cause a resize of both the XRedirectedCompositeWindow used for AC, and the drawing area (only on entering AC), so I believe that&apos;s the crucial difference that exposed the problem now, and why I could not see it in 2.6 at all.

Now, trying to come up with a reliable test case to prove this issue I wrote a simple test HTML which I can use to reproduce at least (B) and (C) in my laptop, using WebKit upstream (r191124) and MiniBrowser, which I&apos;m attaching right now. (A) is harder to reproduce as a simplified test case, so forgive me for not providing a reliable test for it, but the other two problems I can reproduce them with this test case relatively easy (as in 3/10) in my laptop.


STEPS TO REPRODUCE

  1. Uncompress the contents of the attached file and load index.html in MiniBrowser
  2. You should see some small text together with a black box underneath for a split second, then just some text without any black box around
  3. Press Ctrl+R to refresh and repeat step 2
  4. Repeat steps 2-3 a bunch of times (e.g. 20 times or so)


EXPECTED OUTCOME:

Whenever you refresh, you should ALWAYS see a black box underneath the text that shows up briefly text, and then no black box at all when the second text is shown    


ACTUAL OUTCOME:

Sometimes the black box is not shown together with the initial text when refreshing, sometimes some corrupted graphics are rendered at the top of the web view. Sometimes it works ok, too!


OTHER COMMENTS:

Notice that the problems mentioned above do NOT HAPPEN AT ALL if Accelerated Compositing mode stayed ON ALL THE TIME while the test is run (instead of exitting/re-entering quickly, which is what that test forces).

In order to try this out yourself, simply uncomment lines 22-24 in the attached test case and repear the STEPS above. In this case, you should never see the problems and the EXPECTED OUTCOME should be the actual time, everytime you refresh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134561</commentid>
    <comment_count>1</comment_count>
      <attachid>263476</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-19 06:20:59 -0700</bug_when>
    <thetext>Created attachment 263476
Patch

The ExitAcceleratedCompositingMode message that the web process sends to the UI process, includes a backing store update to avoid this flickering. The DrawingArea first calls exitAcceleratedCompositingMode() and then incorporateUpdate() to render the given update. Since we are resizing the redirected window immediately to clear its resources, it&apos;s happening before the incorporateUpdate(). So, the same way we wait for 2 seconds to discard the non AC backing store, we can do the same with the redirected window. This ensure that when the window is resized, the new update has already rendered and also that switching quickly between AC and non Ac mode doesn&apos;t resize the redirected window unnecessarily. Hopefully this removes the flickering and rendering artifacts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134562</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 06:22:55 -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>1134727</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2015-10-19 15:38:52 -0700</bug_when>
    <thetext>While I believe this patch made the reduced test case attached to fail less often, I&apos;ve tested in the machine where I originally found the issue and the problem is still there.

So, it&apos;s possible that this is a race condition depending on how fast the machine is, or just that this patch did not really fix the issue and I&apos;m just a victim of a placebo effect :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134813</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-19 23:10:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; While I believe this patch made the reduced test case attached to fail less
&gt; often, I&apos;ve tested in the machine where I originally found the issue and the
&gt; problem is still there.
&gt; 
&gt; So, it&apos;s possible that this is a race condition depending on how fast the
&gt; machine is, or just that this patch did not really fix the issue and I&apos;m
&gt; just a victim of a placebo effect :)

I think the patch fixes half of the problem, the flickering when leaving AC mode,  but not the one when entering. I&apos;ll submit a new patch to hopefully fix the other half too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134823</commentid>
    <comment_count>5</comment_count>
      <attachid>263558</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-20 00:57:54 -0700</bug_when>
    <thetext>Created attachment 263558
Updated patch

Try to fix the other half of the problem :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134848</commentid>
    <comment_count>6</comment_count>
      <attachid>263558</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2015-10-20 03:26:25 -0700</bug_when>
    <thetext>Comment on attachment 263558
Updated patch

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

I&apos;ve tried this patch locally and I can confirm it fixes all the glitches I could see so far, not only with the provided test case but also with the original problem that prompted me to report the issue.

I&apos;ve also reviewed and it looks good to me, I only have a suggestion related to code readability, but overall I think this is good to land. Thanks Carlos!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h:75
&gt; +void webkitWebViewBaseWillEnterAcceleratedCompositingMode(WebKitWebViewBase*);

I think I&apos;d declare this method before webkitWebViewBaseEnterAcceleratedCompositingMode(), so that it&apos;s clear that these 3 callbacks are normally executed in that order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134861</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-20 05:04:43 -0700</bug_when>
    <thetext>Committed r191340: &lt;http://trac.webkit.org/changeset/191340&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>263467</attachid>
            <date>2015-10-19 03:52:59 -0700</date>
            <delta_ts>2015-10-19 03:52:59 -0700</delta_ts>
            <desc>Reduced test case</desc>
            <filename>wk-graphics-corruption.tgz</filename>
            <type>application/x-compressed-tar</type>
            <size>997</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">H4sIADbIJFYAA+2WzW8bRRTANxzasKhSIy4IhPSyPcRWsbO7iV0p/hBObLWB4kTECCJUqePdiXeU
2R1rd9YfqsKh7QEOiAM3VCE4IXHgP4C/gTMXDly4IPEPIJjZ9dpp1NrhkEaI+VnrGb158z7mzcwu
CVw8Knrcp9qFYQrK5U3ZWrdK5ulWsmFbJc2yy5Zlbdqyb1q2WbI0MC8upBlxxFEIoPkoJGyO3qLx
/yjV1ebeTudwvwVyD9T16qSJ+Jjiuu6SATwAl0R9isZbELAAV+BE14uccIrhgQ6CwhB3jwkv8BAF
0REL/S0IGUccf5TbLLm4l68kanOGhcUbxEe9zGIXOce9kMWBW0jEWxCHNLeW9Iv9oLc2Melh0vP4
FpTL/VEqGRKXe5ngRK+uTxKprnsYuXVdr3aZO5btaqEAHwQO830ccOAehiNGKRuSoAeUBDgCzoQo
dDA0dmRfbJQxsAAQpYk6Jz6GQqGemqrKpXIoiqKagZxWgLoUhwYk7mvGdAW7lDnHlXlLZiZLAs8d
MuozpwANx8HCkRh2YYf5fRYRLjPwmYuBRNC4+2Hj8AD22qJ2w1PRrotwU0N6Ejlxa0ZSU8vIskhL
HHHct4z6IYsh8lhM3cxkhDEgkY8oFXTZCESxcBhgxD2xOsIzxyOeupl5SAo4dZBWfOJgonomGvsZ
0dhPRdPe66ShBOM5wTBRsPB0SGKHOyHpc6Ao6MUijprxDhqgg0Ro1PWBuBRcfIRiyjuizizmUAPL
NCvJSBJzi2K5dSIx4DInlv1iD/NMvD3ekZG3kY9zRppkfjbb/rezbTlbP4oDhxOxCUPsswHOtHN4
0slPDpDYN5AjwrZZAQJVyMaLFAc97lXg5k2S6Uqy8Y/JvWKyZYuTHStMrMlTv5YerxN5VKdBTHRe
TBTJyXlmGGIKDg/kCucya2cje6pg+eyqCFw2LEY4q3COYjTAiaG3zhQ/vaOmHmeKU49nCnI+h9PI
7QUOZ4pzU7TPn+IijzPF86YoZs/JUCypOD5mXl7JySGTd3J2F6+nb53Lfhn+D5m+Ui/Qx4LvP3Nj
w0y+/8wN0y7dEnLLKm+a6vvvRfDZfvv2Nf11efSu7d5pvi/abfksXxH/v3W030Vzpfvu7ab2t/x9
8+N3XwrJy/07h5GmvfKqfJa0r568JoRX+e57rau/6tdXCm88/GkFhAjvNhud0S9//Ly0opnL2rfD
vyrHX7zZvP/951+/tGI0P72+uv14eUHn7QUan/T/vLH0qHD3yb7MZ7fVbv6wff/hJS2nQqFQKBQK
hUKhUCgUCoVCoVAoFAqFQnGp/AMiBs3SACgAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263476</attachid>
            <date>2015-10-19 06:20:59 -0700</date>
            <delta_ts>2015-10-20 00:57:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ac-switch-flickering.diff</filename>
            <type>text/plain</type>
            <size>3089</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjYmQ3ZWM4Li5iOWMwYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTUtMTAtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEdyYXBoaWNzIGNvcnJ1cHRpb24gd2hlbiBlbnRlcmluZy9sZWF2
aW5nIEFDIG1vZGUgcXVpY2tseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBsZWF2aW5nIGFjY2VsZXJhdGVkIGNvbXBzaXRpbmcgbW9kZSwgY2xl
YXIgdGhlIHJlZGlyZWN0ZWQKKyAgICAgICAgd2luZG93IHJlc291cmNlcyBhZnRlciBhIHNob3J0
IGRlbGF5LiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZlCisgICAgICAgIGFscmVhZHkgcmVuZGVy
ZWQgdGhlIHVwZGF0ZSBzZW50IGluIHRoZSBFeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUK
KyAgICAgICAgbWVzc2FnZSwgYnV0IGFsc28gdGhhdCBlbnRlcmluZy9sZWF2aW5nIEFDIG1vZGUg
cXVpY2tseSBkb2Vzbid0CisgICAgICAgIHByb2R1Y2UgYW55IHJlZGlyZWN0ZWQgd2luZG93IHJl
c2l6ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSk6CisKKzIwMTUtMTAtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEFTU0VSVElPTiBGQUlMRUQ6IHBhcmVudCBpbiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMzE5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBlMDZl
MGM0Li41MjM0Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xODksNiArMTg5LDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
PiByZWRpcmVjdGVkV2luZG93OworICAgIEdNYWluTG9vcFNvdXJjZSBjbGVhclJlZGlyZWN0ZWRX
aW5kb3dTb29uOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTM0Miw2
ICsxMzQzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFcKIHsKICNpZiBVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYg
PSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBwcml2LT5jbGVhclJlZGlyZWN0ZWRXaW5k
b3dTb29uLmNhbmNlbCgpOwogICAgIGlmICghcHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKICAgICAg
ICAgcmV0dXJuOwogICAgIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRp
Y19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4ocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJl
YSgpKTsKQEAgLTEzNjAsOSArMTM2MiwxNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0Vwogdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7CiAjaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCisgICAgLy8gUmVzaXplIHRoZSB3aW5kb3cgbGF0ZXIgdG8gZW5zdXJl
IHdlIGhhdmUgYWxyZWFkeSByZW5kZXJlZCB0aGUKKyAgICAvLyBub24gY29tcG9zaXRlZCBjb250
ZW50cyBhbmQgYXZvaWQgZmxpY2tlcmluZy4gV2UgY2FuIGFsc28gYXZvaWQgdGhlCisgICAgLy8g
d2luZG93IHJlc2l6ZSBlbnRpcmVseSBpZiB3ZSBzd2l0Y2ggYmFjayB0byBBQyBtb2RlIHF1aWNr
bHkuCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jh
c2UtPnByaXY7Ci0gICAgaWYgKHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCi0gICAgICAgIHByaXYt
PnJlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShJbnRTaXplKCkpOworICAgIEFTU0VSVCghcHJpdi0+
Y2xlYXJSZWRpcmVjdGVkV2luZG93U29vbi5pc0FjdGl2ZSgpKTsKKyAgICBzdGF0aWMgY29uc3Qg
c3RkOjpjaHJvbm86OnNlY29uZHMgY2xlYXJSZWRpcmVjdGVkV2luZG93U29vbkRlbGF5ID0gMl9z
OworICAgIHByaXYtPmNsZWFyUmVkaXJlY3RlZFdpbmRvd1Nvb24uc2NoZWR1bGVBZnRlckRlbGF5
KCJbV2ViS2l0XSBDbGVhciBSZWRpcmVjdGVkd2luZG93IHNvb24iLCBbcHJpdl0oKSB7CisgICAg
ICAgIGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93KQorICAgICAgICAgICAgcHJpdi0+cmVkaXJl
Y3RlZFdpbmRvdy0+cmVzaXplKEludFNpemUoKSk7CisgICAgfSwgY2xlYXJSZWRpcmVjdGVkV2lu
ZG93U29vbkRlbGF5KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNl
KTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263558</attachid>
            <date>2015-10-20 00:57:54 -0700</date>
            <delta_ts>2015-10-20 03:26:25 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-ac-flickering.diff</filename>
            <type>text/plain</type>
            <size>19689</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMjc3NjdiLi41M2MwN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTUtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEdyYXBoaWNzIGNvcnJ1cHRpb24gd2hlbiBlbnRlcmluZy9sZWF2
aW5nIEFDIG1vZGUgcXVpY2tseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIFVJIHByb2Nlc3MgaXMgbm90aWZpZWQgd2hlbiBlbnRlcmluZyBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZworICAgICAgICBtb2RlIGFmdGVyIHRoZSBsYXllcnMgaGF2ZSBi
ZWVuIGZsdXNoZWQgYW5kIHJlbmRlcmVkIHRvIGF2b2lkCisgICAgICAgIGZsaWNrZXJpbmcuIEhv
d2V2ZXIsIHRoaXMgaXMgcHJvZHVjaW5nIGZsaWNrZXJpbmcgaW4gdGhlIEdUSysKKyAgICAgICAg
cG9ydCwgYmVjYXVzZSB3ZSB1c2UgYW4gb2Zmc2NyZWVuIHJlZGlyZWN0ZWQgd2luZG93IHRoYXQg
aXMKKyAgICAgICAgcmVzaXplZCB0byBhIG1pbmltaXVtIHNpemUgdG8gc2F2ZSBtZW1vcnkgd2hl
biBub3QgaW4gQUMgbW9kZS4gVGhlCisgICAgICAgIHdlYiBwcm9jZXNzIGFsd2F5cyB1c2VzIHRo
ZSBjdXJyZW50IHNpemUgb2YgdGhlIHJlZGlyZWN0ZWQgd2luZG93LAorICAgICAgICBzbyB3aGVu
IGVudGVyaW5nIEFDIG1vZGUsIGNvbnRlbnRzIGFyZSByZW5kZXJlZCBpbnRvIHRoZSAxeDEKKyAg
ICAgICAgd2luZG93LCB0aGVuIHRoZSBVSSBwcm9jZXNzIGlzIG5vdGlmaWVkLCB0aGUgcmVkaXJl
Y3RlZCB3aW5kb3cgaXMKKyAgICAgICAgcmVzaXplZCB0byBpdHMgYWN0dWFsIHNpemUsIGFuZCB3
ZSBmb3JjZSBhIHJlc2l6ZSB0byBhc2sgdGhlIHdlYgorICAgICAgICBwcm9jZXNzIHRvIHJlbmRl
ciBhZ2Fpbiwgbm93IGF0IHRoZSBjb3JyZWN0IHNpemUuIFJlbmRlcmluZyBhdCAxeDEKKyAgICAg
ICAgYW5kIHRoZW4gcmVzaXppbmcgdGhlIHdpbmRvdyBpcyB3aGF0IHByb2R1Y2VzIHRoZSBmbGlj
a2VyaW5nIHdoZW4KKyAgICAgICAgZW50ZXJpbmcgQUMgbW9kZSwgYnV0IGl0J3MgYWxzbyBpbmVm
ZmljaWVudCwgc2luY2Ugd2UgbmVlZCB0bworICAgICAgICByZW5kZXIgYWdhaW4gYWZ0ZXIgdGhl
IHJlZGlyZWN0ZWQgd2luZG93IGlzIHJlc2l6ZWQuIFNvLCB0aGlzCisgICAgICAgIHBhdGNoIGFk
ZHMgYSBXaWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nIG1lc3NhZ2UgdGhhdCBpcyBzZW50
CisgICAgICAgIHRvIHRoZSBVSSBwcm9jZXNzIHdoZW4gdGhlIGxheWVyIHRyZWUgaG9zdCBpcyBj
cmVhdGVkIGJ1dCBiZWZvcmUKKyAgICAgICAgdGhlIGNvbnRlbnRzIGhhdmUgYmVlbiBjb21wb3Np
dGVkIGFuZCByZW5kZXJlZC4gVGhpcyBpcworICAgICAgICBpbXBsZW1lbnRlZCBieSB0aGUgR1RL
KyBwb3J0IHRvIHByZXBhcmUgZm9yIGVudGVyaW5nIEFDIG1vZGUsIGJ5CisgICAgICAgIHJlc2l6
aW5nIHRoZSByZWRpcmVjdGVkIHdpbmRvdy4gV2hlbiB3ZSBhY3R1YWxseSBlbnRlciBBQyBtb2Rl
LAorICAgICAgICB0aGUgY29udGVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVuZGVyZWQgaW4gdGhl
IHdlYiBwcm9jZXNzIGF0IHRoZQorICAgICAgICBjb3JyZWN0IHNpemUsIHNvIHdlIGNhbiBqdXN0
IHVzZSB0aGUgcmVkaXJlY3RlZCB3aW5kb3cgc3VyZmFjZQorICAgICAgICBpbnN0ZWFkIG9mIHRo
ZSBkcmF3aW5nIGFyZWEgb25lLCBhbmQgcGFpbnQgaW4gdGhlIHdlYiB2aWV3IHdpdGhvdXQKKyAg
ICAgICAgYW55IGZsaWNrZXJpbmcuIFdlIG5vIGxvbmdlciBuZWVkIHRoZSBmb3JjZVJlc2l6ZSBl
aXRoZXIuCisgICAgICAgIFdoZW4gbGVhdmluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2Rl
LCB3ZSBub3cgY2xlYXIgdGhlIHJlZGlyZWN0ZWQKKyAgICAgICAgd2luZG93IHJlc291cmNlcyBh
ZnRlciBhIHNob3J0IGRlbGF5LiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZlCisgICAgICAgIGFs
cmVhZHkgcmVuZGVyZWQgdGhlIHVwZGF0ZSBzZW50IGluIHRoZSBFeGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUKKyAgICAgICAgbWVzc2FnZSwgYnV0IGFsc28gdGhhdCBlbnRlcmluZy9sZWF2
aW5nIEFDIG1vZGUgcXVpY2tseSBkb2Vzbid0CisgICAgICAgIHByb2R1Y2UgYW55IHJlZGlyZWN0
ZWQgd2luZG93IHJlc2l6ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndpbGxFbnRlckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ2xlYXJSZWRpcmVjdGVkV2lu
ZG93U29vbik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVdpbGxFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OndpbGxFbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6d2lsbEVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6Zm9y
Y2VSZXNpemUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6d2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndpbGxFbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKwogMjAxNS0xMC0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgRVJST1I6IFVuaGFuZGxlZCB3ZWIgcHJvY2Vz
cyBtZXNzYWdlICdTdG9yYWdlQXJlYU1hcDpEaXNwYXRjaFN0b3JhZ2VFdmVudCcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRl
eCA2NjFjYjNmLi41ZGRmNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yMzMsNiArMjMzLDExIEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiAgICAgd2Via2l0
V2ViVmlld0Jhc2VFeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV92aWV3V2lkZ2V0KSk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OndpbGxFbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVdp
bGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdFQktJVF9XRUJfVklFV19CQVNFKG1f
dmlld1dpZGdldCkpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmgKaW5kZXggMzhmZGRmYi4uZjY3YzFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC05NSw2ICs5NSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBl
eGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250
ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
aW5kZXggZTA2ZTBjNC4uYjU4YWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMTg5LDYgKzE4OSw3IEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKIAogI2lmIFVTRShSRURJUkVDVEVE
X1hDT01QT1NJVEVfV0lORE9XKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdz4gcmVkaXJlY3RlZFdpbmRvdzsKKyAgICBHTWFpbkxvb3BTb3VyY2UgY2xlYXJS
ZWRpcmVjdGVkV2luZG93U29vbjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
QEAgLTEzMzgsNyArMTMzOSwxNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVzZXRDbGlja0Nv
dW50ZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5jbGlja0NvdW50ZXIucmVzZXQoKTsKIH0KIAotdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZUVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlKQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDbGVh
clJlZGlyZWN0ZWRXaW5kb3dTb29uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKK3sKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3
QmFzZS0+cHJpdjsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgY2xlYXJS
ZWRpcmVjdGVkV2luZG93U29vbkRlbGF5ID0gMl9zOworICAgIHByaXYtPmNsZWFyUmVkaXJlY3Rl
ZFdpbmRvd1Nvb24uc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBDbGVhciBSZWRpcmVjdGVk
V2luZG93IHNvb24iLCBbcHJpdl0oKSB7CisgICAgICAgIGlmIChwcml2LT5yZWRpcmVjdGVkV2lu
ZG93KQorICAgICAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKEludFNpemUo
KSk7CisgICAgfSwgY2xlYXJSZWRpcmVjdGVkV2luZG93U29vbkRlbGF5KTsKK30KKwordm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIHsKICNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3
ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKQEAgLTEzNTAsOCArMTM2MSwxOCBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3
QmFzZSogd2Via2l0VwogCiAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+c2V0RGV2aWNlU2Nh
bGVGYWN0b3Iod2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKGRyYXdpbmdBcmVh
LT5zaXplKCkpOwotICAgIC8vIEZvcmNlIGEgcmVzaXplIHRvIGVuc3VyZSB0aGUgbmV3IHJlZGly
ZWN0ZWQgd2luZG93IHNpemUgaXMgdXNlZCBieSB0aGUgV2ViUHJvY2Vzcy4KLSAgICBkcmF3aW5n
QXJlYS0+Zm9yY2VSZXNpemUoKTsKKworICAgIC8vIENsZWFyIHRoZSByZWRpcmVjdGVkIHdpbmRv
dyBpZiB3ZSBkb24ndCBlbnRlciBBQyBtb2RlIGluIHRoZSBlbmQuCisgICAgd2Via2l0V2ViVmll
d0Jhc2VDbGVhclJlZGlyZWN0ZWRXaW5kb3dTb29uKHdlYmtpdFdlYlZpZXdCYXNlKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHdlYmtpdFdlYlZpZXdCYXNlKTsKKyNlbmRpZgorfQorCit2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCit7CisjaWYgVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCisgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmNsZWFyUmVkaXJl
Y3RlZFdpbmRvd1Nvb24uY2FuY2VsKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRX
ZWJWaWV3QmFzZSk7CiAjZW5kaWYKQEAgLTEzNjAsOSArMTM4MSwxMCBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0Vwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7CiAjaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgaWYgKHByaXYtPnJlZGly
ZWN0ZWRXaW5kb3cpCi0gICAgICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShJbnRT
aXplKCkpOworICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IGxhdGVyIHRvIGVuc3VyZSB3ZSBoYXZl
IGFscmVhZHkgcmVuZGVyZWQgdGhlCisgICAgLy8gbm9uIGNvbXBvc2l0ZWQgY29udGVudHMgYW5k
IGF2b2lkIGZsaWNrZXJpbmcuIFdlIGNhbiBhbHNvIGF2b2lkIHRoZQorICAgIC8vIHdpbmRvdyBy
ZXNpemUgZW50aXJlbHkgaWYgd2Ugc3dpdGNoIGJhY2sgdG8gQUMgbW9kZSBxdWlja2x5LgorICAg
IHdlYmtpdFdlYlZpZXdCYXNlQ2xlYXJSZWRpcmVjdGVkV2luZG93U29vbih3ZWJraXRXZWJWaWV3
QmFzZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFzZSk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggMmIwMjVmNS4uZGVmNTZlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmgKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUFk
ZFdlYkluc3BlY3RvcihXZWJLaXRXZWJWaWV3QmFzZSosIEd0a1dpZGdldCogaW5zcGVjdG9yLAog
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlc2V0Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZpZXdCYXNl
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShXZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUV4aXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZShXZWJLaXRXZWJWaWV3QmFzZSopOwordm9pZCB3ZWJraXRXZWJW
aWV3QmFzZVdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdlYlZpZXdC
YXNlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktp
dFdlYlZpZXdCYXNlKik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCmlu
ZGV4IGRhOTE4NjEuLjliZjFjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKQEAgLTE4OCw2ICsxODgsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBl
eGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpIG92ZXJyaWRlIHsgfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
ICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlDbGllbnQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCmluZGV4IDAyNmM1NmQuLjc5NzNkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMTIyLDYgKzEyMiw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3Qg
LyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3Qg
LyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgVXBkYXRlSW5mbyYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCAvKiBi
YWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90
IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8pIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVHZW9tZXRyeSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBp
bnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDQ3MzYwZTMuLjhkNTFjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw2ICsy
Niw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhUHJveHkgewogICAgIEVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpM
YXllclRyZWVDb250ZXh0IGNvbnRleHQpCiAgICAgRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6VXBkYXRlSW5mbyB1cGRh
dGVJbmZvKQogICAgIFVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJh
Y2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQorICAg
IFdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9y
ZVN0YXRlSUQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAppbmRleCA4ZGNlMjc3Li41MWQzNWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAK
QEAgLTIwOCw2ICsyMDgsMTUgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6dXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3IKICAgICB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAordm9pZCBE
cmF3aW5nQXJlYVByb3h5SW1wbDo6d2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
dWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCkKK3sKKyAgICBBU1NFUlRfQVJHKGJhY2tpbmdT
dG9yZVN0YXRlSUQsIGJhY2tpbmdTdG9yZVN0YXRlSUQgPD0gbV9jdXJyZW50QmFja2luZ1N0b3Jl
U3RhdGVJRCk7CisgICAgaWYgKGJhY2tpbmdTdG9yZVN0YXRlSUQgPCBtX2N1cnJlbnRCYWNraW5n
U3RvcmVTdGF0ZUlEKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2VQcm94eS53aWxs
RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworfQorCiB2b2lkIERyYXdpbmdBcmVh
UHJveHlJbXBsOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
KQogewogICAgIEFTU0VSVCghaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCBk
ZWZlMjhmLi4zNDNlMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuaApAQCAtNTIsOCArNTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRO
YXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIGZvcmNlUmVzaXplKCkgeyBzaXplRGlkQ2hhbmdlKCk7IH0KLQogcHJpdmF0ZToKICAg
ICAvLyBEcmF3aW5nQXJlYVByb3h5CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoKTsK
QEAgLTYzLDExICs2MSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQmFj
a2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIAogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRs
ZXJzCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlE
LCBjb25zdCBVcGRhdGVJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJhY2tpbmdT
dG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8m
LCBjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYpOwotICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5m
byYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1
aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25z
dCBVcGRhdGVJbmZvJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJhY2tp
bmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUlu
Zm8mLCBjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3Rh
dGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3Rh
dGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlE
LCBjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdp
bGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0
YXRlSUQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRh
dGVJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDliZWNj
NDAuLmU1NTY3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjQw
LDYgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKCkgPSAwOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBwbHVn
aW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDFmZTJkZC4u
NWVhY2IzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTUxNjAsNiArNTE2MCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZQogICAgIG1fcGFnZUNs
aWVudC51cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShsYXllclRyZWVDb250ZXh0KTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OndpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCkKK3sKKyAgICBtX3BhZ2VDbGllbnQud2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogewog
ICAgIG1fYmFja0ZvcndhcmRMaXN0LT5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGNkMWE4ZGQuLjc2YWNmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgxMyw3ICs4MTMsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwotICAgIAorICAgIHZvaWQgd2lsbEVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKKwogICAgIGVudW0gVW5kb09yUmVkbyB7IFVuZG8sIFJl
ZG8gfTsKICAgICB2b2lkIGFkZEVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkqKTsKICAg
ICB2b2lkIHJlbW92ZUVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA5MzUw
Y2E0Li5mMGU1NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250
ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoTGF5
ZXJPclZpZXcgKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXllck9yVmlldyAqYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5
ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIExh
eWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNDdlNDY4MC4uMTU0MWQ4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCkBAIC00NzUsNiArNDc1LDEwIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZUFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKQogewogfQogCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgp
Cit7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdS
b290TGF5ZXIoTGF5ZXJPclZpZXcgKnJvb3RMYXllcikKIHsKICAgICBbbV9jb250ZW50VmlldyBf
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RWaWV3OnJvb3RMYXllcl07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggOTcwNzgxYi4uZDMw
MmYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
aApAQCAtMTQxLDYgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBO
YXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA0MTJkY2JlLi5kMjc5NzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTU1NSw2
ICs1NTUsMTAgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGEKICAgICBbbV93a1ZpZXcgX3NldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOnJlbmRlckxheWVyXTsKIH0KIAordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6d2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQor
eworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsKICAgICBbbV93a1ZpZXcgX3NldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOnJvb3RMYXllcl07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDg3
MDE1NTkuLjkyOTY3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC00NjUsNiArNDY1LDggQEAgdm9pZCBEcmF3
aW5nQXJlYUltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXkKICAgICBtX2V4aXRDb21wb3NpdGluZ1RpbWVyLnN0b3AoKTsKICAgICBt
X3dhbnRzVG9FeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBmYWxzZTsKIAorICAgIG1f
d2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpXaWxsRW50ZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZShtX2JhY2tpbmdTdG9yZVN0YXRlSUQpKTsKKwogICAgIEFTU0VS
VCghbV9sYXllclRyZWVIb3N0KTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IExheWVyVHJlZUhv
c3Q6OmNyZWF0ZSgmbV93ZWJQYWdlKTsK
</data>
<flag name="review"
          id="288694"
          type_id="1"
          status="+"
          setter="mario"
    />
          </attachment>
      

    </bug>

</bugzilla>