<?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>202305</bug_id>
          
          <creation_ts>2019-09-27 04:50:38 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add about:gpu</short_desc>
          <delta_ts>2019-09-30 05:06:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1574777</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-27 04:50:38 -0700</bug_when>
    <thetext>A builtin protocol handler to show information about hardware acceleration. This is useful information we need from people reporting issues in accelerated compositing mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574778</commentid>
    <comment_count>1</comment_count>
      <attachid>379717</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-27 04:53:36 -0700</bug_when>
    <thetext>Created attachment 379717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574779</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-27 04:54:20 -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>1574784</commentid>
    <comment_count>3</comment_count>
      <attachid>379717</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-27 05:50:09 -0700</bug_when>
    <thetext>Comment on attachment 379717
Patch

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

This will be neat to have; I have added a few comments with improvement
proposals, but by no means they are blockers for landing the patch. Feel
free to use a follow-up patch instead of uploading a new one to this bug.

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:97
&gt; +    return &quot;WPEWEbKit&quot;;

As this is user-visible, I suppose we may want to use &quot;WPE WebKit&quot;,
which our preferred spelling for the port name ;-)

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:190
&gt; +        &quot;  &lt;td&gt;&lt;div class=\&quot;titlename\&quot;&gt;WebKit version&lt;/div&gt;&lt;/td&gt;&quot;

Instead of &lt;td&gt; and &lt;div class=&quot;...&quot;&gt; you could directly use &lt;td class=&quot;...&quot;&gt;.
Or, even better:

  &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Key&lt;/th&gt;&lt;td&gt;Value&lt;/td&gt;&lt;/tr&gt;

Then in the CSS snippet above you can just use:

  th { font-weight: bold; }

This makes the needed HTML shorter (small is good!) and much, much more semantic,
with “scope=&quot;row&quot;” attribute indicating that the &lt;th&gt; cell contains the title for
data in the table row (for example a11y technologies can use this information).

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:200
&gt; +        &quot; &lt;tbody&gt;&lt;tr&gt;&quot;

Is there any practical reason why you are putting each HTML table row
inside its own &lt;tbody&gt; element, instead of all &lt;tr&gt; rows inside a
single &lt;tbody&gt;?

Currently the code in the patch is generating:

  &lt;table&gt;
    ...
    &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Key1&lt;/td&gt;&lt;td&gt;Value1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
    ...
    &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;KeyN&lt;/td&gt;&lt;td&gt;ValueN&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
  &lt;/table&gt;

while the following is more common:

  &lt;table&gt;
    ...
    &lt;tbody&gt;
       &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Key1&lt;/th&gt;&lt;td&gt;Value1&lt;/td&gt;&lt;/tr&gt;
       ...
       &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;KeyN&lt;/th&gt;&lt;td&gt;ValueN&lt;/td&gt;&lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:219
&gt; +        CAIRO_VERSION_MAJOR, CAIRO_VERSION_MINOR, CAIRO_VERSION_MICRO);

You could use “CAIRO_VERSION_STRING” for simplicity here. I would call this
line “Cairo build version” and add an additional “Cairo runtime version”,
using the value returned by “cairo_version_string()” — the version being
loaded at run time may not match the headers used when building; for
example if a distribution builds WebKitGTK, then updates to the next
Cairo micro version but does not rebuild the WebKitGTK package because
the ABI of the Cairo library has not changed. Having both versions can
be useful to diagnose situations in which users might be doing unexpected
things like setting “$LD_LIBRARY_PATH” and accidentally loading an older
Cairo version which happens to have the same ABI but we know is bugged.

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:227
&gt; +        GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);

Same here, I would have an additional line with the GTK version being  loaded
at runtime, which can obtained with “gtk_get_{major,minor,micro}_version()”
functions.

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:236
&gt; +            WPE_FDO_MAJOR_VERSION, WPE_FDO_MINOR_VERSION, WPE_FDO_MICRO_VERSION,

Here we could use “wpe_get_{major,minor,micro}_version()” for
the runtime version of libwpe — sadly we do not have an equivalent
for WPEBackend-fdo, so I have filed at issue for that at
https://github.com/Igalia/WPEBackend-fdo/issues/80

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:304
&gt; +        hardwareAccelerationPolicy(request));

Would it be useful to also print the value of the
“WEBKIT_FORCE_COMPOSITING_MODE” environment variable? I suppose
it can be good to know whether the setting has been forced due
to the environment variable being set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574785</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-27 06:01:33 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #3)
&gt; Comment on attachment 379717 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379717&amp;action=review
&gt; 
&gt; This will be neat to have; I have added a few comments with improvement
&gt; proposals, but by no means they are blockers for landing the patch. Feel
&gt; free to use a follow-up patch instead of uploading a new one to this bug.

Sure, I have also a couple of improvements in mind to be added in followup patches, like adding a button to copy the report to the clipboard (or save it to a file that can be easily uploaded to bz). We could also add info about the distro.
 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:97
&gt; &gt; +    return &quot;WPEWEbKit&quot;;
&gt; 
&gt; As this is user-visible, I suppose we may want to use &quot;WPE WebKit&quot;,
&gt; which our preferred spelling for the port name ;-)

Sure.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:190
&gt; &gt; +        &quot;  &lt;td&gt;&lt;div class=\&quot;titlename\&quot;&gt;WebKit version&lt;/div&gt;&lt;/td&gt;&quot;
&gt; 
&gt; Instead of &lt;td&gt; and &lt;div class=&quot;...&quot;&gt; you could directly use &lt;td
&gt; class=&quot;...&quot;&gt;.
&gt; Or, even better:
&gt; 
&gt;   &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Key&lt;/th&gt;&lt;td&gt;Value&lt;/td&gt;&lt;/tr&gt;
&gt; 
&gt; Then in the CSS snippet above you can just use:
&gt; 
&gt;   th { font-weight: bold; }
&gt; 
&gt; This makes the needed HTML shorter (small is good!) and much, much more
&gt; semantic,
&gt; with “scope=&quot;row&quot;” attribute indicating that the &lt;th&gt; cell contains the
&gt; title for
&gt; data in the table row (for example a11y technologies can use this
&gt; information).

I don&apos;t know HTML, I copy pasted this from remoce inspector custom protocol impl, which was copied from ephy.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:200
&gt; &gt; +        &quot; &lt;tbody&gt;&lt;tr&gt;&quot;
&gt; 
&gt; Is there any practical reason why you are putting each HTML table row
&gt; inside its own &lt;tbody&gt; element, instead of all &lt;tr&gt; rows inside a
&gt; single &lt;tbody&gt;?
&gt; 
&gt; Currently the code in the patch is generating:
&gt; 
&gt;   &lt;table&gt;
&gt;     ...
&gt;     &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Key1&lt;/td&gt;&lt;td&gt;Value1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
&gt;     ...
&gt;     &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;KeyN&lt;/td&gt;&lt;td&gt;ValueN&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
&gt;   &lt;/table&gt;
&gt; 
&gt; while the following is more common:
&gt; 
&gt;   &lt;table&gt;
&gt;     ...
&gt;     &lt;tbody&gt;
&gt;        &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Key1&lt;/th&gt;&lt;td&gt;Value1&lt;/td&gt;&lt;/tr&gt;
&gt;        ...
&gt;        &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;KeyN&lt;/th&gt;&lt;td&gt;ValueN&lt;/td&gt;&lt;/tr&gt;
&gt;     &lt;/tbody&gt;
&gt;   &lt;/table&gt;

No reason, as I said I don&apos;t know html, nor css either, so I just copy pasted.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:219
&gt; &gt; +        CAIRO_VERSION_MAJOR, CAIRO_VERSION_MINOR, CAIRO_VERSION_MICRO);
&gt; 
&gt; You could use “CAIRO_VERSION_STRING” for simplicity here. I would call this
&gt; line “Cairo build version” and add an additional “Cairo runtime version”,
&gt; using the value returned by “cairo_version_string()” — the version being
&gt; loaded at run time may not match the headers used when building; for
&gt; example if a distribution builds WebKitGTK, then updates to the next
&gt; Cairo micro version but does not rebuild the WebKitGTK package because
&gt; the ABI of the Cairo library has not changed. Having both versions can
&gt; be useful to diagnose situations in which users might be doing unexpected
&gt; things like setting “$LD_LIBRARY_PATH” and accidentally loading an older
&gt; Cairo version which happens to have the same ABI but we know is bugged.

Good point. Maybe we could keep at as a single Foo Version and then add x.y.z (build) x.y.z (runtime). Both are indeed useful.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:227
&gt; &gt; +        GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
&gt; 
&gt; Same here, I would have an additional line with the GTK version being  loaded
&gt; at runtime, which can obtained with “gtk_get_{major,minor,micro}_version()”
&gt; functions.

Right.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:236
&gt; &gt; +            WPE_FDO_MAJOR_VERSION, WPE_FDO_MINOR_VERSION, WPE_FDO_MICRO_VERSION,
&gt; 
&gt; Here we could use “wpe_get_{major,minor,micro}_version()” for
&gt; the runtime version of libwpe — sadly we do not have an equivalent
&gt; for WPEBackend-fdo, so I have filed at issue for that at
&gt; https://github.com/Igalia/WPEBackend-fdo/issues/80
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:304
&gt; &gt; +        hardwareAccelerationPolicy(request));
&gt; 
&gt; Would it be useful to also print the value of the
&gt; “WEBKIT_FORCE_COMPOSITING_MODE” environment variable? I suppose
&gt; it can be good to know whether the setting has been forced due
&gt; to the environment variable being set.

I&apos;m not sure that&apos;s useful, but I don&apos;t mind to add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574788</commentid>
    <comment_count>5</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-27 06:11:46 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; (In reply to Adrian Perez from comment #3)
&gt; &gt; Comment on attachment 379717 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=379717&amp;action=review
&gt; &gt; 
&gt; &gt; This will be neat to have; I have added a few comments with improvement
&gt; &gt; proposals, but by no means they are blockers for landing the patch. Feel
&gt; &gt; free to use a follow-up patch instead of uploading a new one to this bug.
&gt; 
&gt; Sure, I have also a couple of improvements in mind to be added in followup
&gt; patches, like adding a button to copy the report to the clipboard (or save
&gt; it to a file that can be easily uploaded to bz). We could also add info
&gt; about the distro.

Cool!

For the information about the distribution, the “modern” way of doing
it seems to be reading from “/etc/os-release” (I think even Debian has
it nowadays). I don&apos;t expect it to be available in the BSDs, but for
those the information from uname() is enough to know what the user is
running (e.g. there is only one FreeBSD, and for “remixes” like
Debian/kFreeBSD probably there will be an “/etc/os-release” anyway). 

&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:97
&gt; &gt; &gt; +    return &quot;WPEWEbKit&quot;;
&gt; &gt; 
&gt; &gt; As this is user-visible, I suppose we may want to use &quot;WPE WebKit&quot;,
&gt; &gt; which our preferred spelling for the port name ;-)
&gt; 
&gt; Sure.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:190
&gt; &gt; &gt; +        &quot;  &lt;td&gt;&lt;div class=\&quot;titlename\&quot;&gt;WebKit version&lt;/div&gt;&lt;/td&gt;&quot;
&gt; &gt; 
&gt; &gt; Instead of &lt;td&gt; and &lt;div class=&quot;...&quot;&gt; you could directly use &lt;td
&gt; &gt; class=&quot;...&quot;&gt;.
&gt; &gt; Or, even better:
&gt; &gt; 
&gt; &gt;   &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Key&lt;/th&gt;&lt;td&gt;Value&lt;/td&gt;&lt;/tr&gt;
&gt; &gt; 
&gt; &gt; Then in the CSS snippet above you can just use:
&gt; &gt; 
&gt; &gt;   th { font-weight: bold; }
&gt; &gt; 
&gt; &gt; This makes the needed HTML shorter (small is good!) and much, much more
&gt; &gt; semantic,
&gt; &gt; with “scope=&quot;row&quot;” attribute indicating that the &lt;th&gt; cell contains the
&gt; &gt; title for
&gt; &gt; data in the table row (for example a11y technologies can use this
&gt; &gt; information).
&gt; 
&gt; I don&apos;t know HTML, I copy pasted this from remoce inspector custom protocol
&gt; impl, which was copied from ephy.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:200
&gt; &gt; &gt; +        &quot; &lt;tbody&gt;&lt;tr&gt;&quot;
&gt; &gt; 
&gt; &gt; Is there any practical reason why you are putting each HTML table row
&gt; &gt; inside its own &lt;tbody&gt; element, instead of all &lt;tr&gt; rows inside a
&gt; &gt; single &lt;tbody&gt;?
&gt; &gt; 
&gt; &gt; Currently the code in the patch is generating:
&gt; &gt; 
&gt; &gt;   &lt;table&gt;
&gt; &gt;     ...
&gt; &gt;     &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Key1&lt;/td&gt;&lt;td&gt;Value1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
&gt; &gt;     ...
&gt; &gt;     &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;KeyN&lt;/td&gt;&lt;td&gt;ValueN&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
&gt; &gt;   &lt;/table&gt;
&gt; &gt; 
&gt; &gt; while the following is more common:
&gt; &gt; 
&gt; &gt;   &lt;table&gt;
&gt; &gt;     ...
&gt; &gt;     &lt;tbody&gt;
&gt; &gt;        &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;Key1&lt;/th&gt;&lt;td&gt;Value1&lt;/td&gt;&lt;/tr&gt;
&gt; &gt;        ...
&gt; &gt;        &lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;KeyN&lt;/th&gt;&lt;td&gt;ValueN&lt;/td&gt;&lt;/tr&gt;
&gt; &gt;     &lt;/tbody&gt;
&gt; &gt;   &lt;/table&gt;
&gt; 
&gt; No reason, as I said I don&apos;t know html, nor css either, so I just copy
&gt; pasted.

That&apos;s fine, like I said it&apos;s just a suggestion. At the end of the
day “about:gpu” will be a debugging feature and it does not need to
be pretty :)

&gt; &gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:219
&gt; &gt; &gt; +        CAIRO_VERSION_MAJOR, CAIRO_VERSION_MINOR, CAIRO_VERSION_MICRO);
&gt; &gt; 
&gt; &gt; You could use “CAIRO_VERSION_STRING” for simplicity here. I would call this
&gt; &gt; line “Cairo build version” and add an additional “Cairo runtime version”,
&gt; &gt; using the value returned by “cairo_version_string()” — the version being
&gt; &gt; loaded at run time may not match the headers used when building; for
&gt; &gt; example if a distribution builds WebKitGTK, then updates to the next
&gt; &gt; Cairo micro version but does not rebuild the WebKitGTK package because
&gt; &gt; the ABI of the Cairo library has not changed. Having both versions can
&gt; &gt; be useful to diagnose situations in which users might be doing unexpected
&gt; &gt; things like setting “$LD_LIBRARY_PATH” and accidentally loading an older
&gt; &gt; Cairo version which happens to have the same ABI but we know is bugged.
&gt; 
&gt; Good point. Maybe we could keep at as a single Foo Version and then add
&gt; x.y.z (build) x.y.z (runtime). Both are indeed useful.

A single line sounds good as well 👍
 
&gt; &gt; Would it be useful to also print the value of the
&gt; &gt; “WEBKIT_FORCE_COMPOSITING_MODE” environment variable? I suppose
&gt; &gt; it can be good to know whether the setting has been forced due
&gt; &gt; to the environment variable being set.
&gt; 
&gt; I&apos;m not sure that&apos;s useful, but I don&apos;t mind to add it.

No strong opinion.

I was thinking of cases where we ask users to set the variable and
test something for us, so we can be sure that they have set it to
the value we have asked them to use. Mainly that, because I don&apos;t
expect it to be set accidentally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574791</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-27 06:16:42 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #5)
[...]
&gt; &gt; &gt; Would it be useful to also print the value of the
&gt; &gt; &gt; “WEBKIT_FORCE_COMPOSITING_MODE” environment variable? I suppose
&gt; &gt; &gt; it can be good to know whether the setting has been forced due
&gt; &gt; &gt; to the environment variable being set.
&gt; &gt; 
&gt; &gt; I&apos;m not sure that&apos;s useful, but I don&apos;t mind to add it.
&gt; 
&gt; No strong opinion.
&gt; 
&gt; I was thinking of cases where we ask users to set the variable and
&gt; test something for us, so we can be sure that they have set it to
&gt; the value we have asked them to use. Mainly that, because I don&apos;t
&gt; expect it to be set accidentally.

The env vars change the setting, so if you force the AC mode using the env var, you will see &quot;always&quot; in about:gpu (and never if you disable it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574796</commentid>
    <comment_count>7</comment_count>
      <attachid>379720</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-27 06:59:18 -0700</bug_when>
    <thetext>Created attachment 379720
Updated patch

Added some of Adri&apos;s suggestions and also added the WPE version and backend lib name for WPE that I had forgotten.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575211</commentid>
    <comment_count>8</comment_count>
      <attachid>379720</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-30 01:47:50 -0700</bug_when>
    <thetext>Comment on attachment 379720
Updated patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:97
&gt; +    return &quot;WPE WEbKit&quot;;

Typo.

&gt; Source/WebKit/UIProcess/API/glib/WebKitProtocolHandler.cpp:134
&gt; +#if USE(LIBEPOXY)
&gt; +    if (epoxy_is_desktop_gl())
&gt; +        return &quot;OpenGL&quot;;
&gt; +    return &quot;OpenGL ES 2&quot;;

In this case we could append &quot;(libepoxy)&quot; to the end of the GL string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575237</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-30 05:06:30 -0700</bug_when>
    <thetext>Committed r250517: &lt;https://trac.webkit.org/changeset/250517&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379717</attachid>
            <date>2019-09-27 04:53:36 -0700</date>
            <delta_ts>2019-09-27 06:59:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-about-gpu.diff</filename>
            <type>text/plain</type>
            <size>26184</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZTlhMWIzYzY4Yy4uZTNh
OTU3MjVlMTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOS0wOS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgYWJvdXQ6Z3B1CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU1ZOX1JFVklTSU9OIGRlZmlu
aXRpb24gdG8gdGhlIGJ1aWxkLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6CisKIDIwMTkt
MDktMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIHJ1
bi13ZWItcGxhdGZvcm0tdGVzdHM6IHJlbW92ZSBzdXBwb3J0IGZvciBpbi1yZXBvc2l0b3J5IG1h
bmlmZXN0LCBleHBlY3RhdGlvbiBtYW5hZ2VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwYzBjNGZjMzQyLi4y
MWZlNTU1ZTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wOS0yNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBBZGQgYWJvdXQ6Z3B1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDIzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIGJ1aWx0aW4gcHJvdG9jb2wgaGFuZGxlciB0byBzaG93IGluZm9ybWF0aW9uIGFi
b3V0IGhhcmR3YXJlIGFjY2VsZXJhdGlvbi4gVGhpcyBpcyB1c2VmdWwgaW5mb3JtYXRpb24gd2Ug
bmVlZAorICAgICAgICBmcm9tIHBlb3BsZSByZXBvcnRpbmcgaXNzdWVzIGluIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIG1vZGUuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJv
dG9jb2xIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYktpdFByb3RvY29s
SGFuZGxlcjo6V2ViS2l0UHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0
UHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6d2Via2l0
UG9ydE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpoYXJkd2FyZUFjY2VsZXJhdGlvblBvbGljeSk6
CisgICAgICAgIChXZWJLaXQ6OndlYkdMRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Om9wZW5H
TEFQSSk6CisgICAgICAgIChXZWJLaXQ6Om5hdGl2ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlR1BVKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZCk6CisKIDIwMTktMDktMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIFdlYktpdFdl
YlZpZXc6cGFnZS1pZCBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggN2JlZGYyMWRhNjUu
LjU1ZDE4YzI2ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTE2Myw2ICsxNjMsNyBAQCBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFBsdWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFByaXZhdGUuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFByb3RvY29sSGFuZGxlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggYzBm
N2VmZjE1OTYuLjI0ODViYjYxYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNX
UEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTE1MSw2ICsxNTEs
NyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11
bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBsdWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFByaXZhdGUuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFhMDU4MGVmYzFmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMCwwICsxLDQ0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktp
dFByb3RvY29sSGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0RXJyb3IuaCIKKyNpbmNsdWRl
ICJXZWJLaXRWZXJzaW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlz
cGxheS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbmNsdWRlIDxj
YWlyby5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KKworI2lmIE9TKFVOSVgpCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpICYmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVkZSA8d3BlL2Zkby5oPgorI2VuZGlm
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheVgxMS5oPgorI2VuZGlmCisKKyNpZiBVU0UoTElCRVBPWFkpCisjaW5jbHVkZSA8ZXBv
eHkvZ2wuaD4KKyNlbmRpZgorCisjaWYgVVNFKEVHTCkKKyNpZiBVU0UoTElCRVBPWFkpCisjaW5j
bHVkZSA8ZXBveHkvZWdsLmg+CisjZWxzZQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNlbmRpZgor
I2VuZGlmCisKKyNpZiBVU0UoR0xYKQorI2luY2x1ZGUgPEdML2dseC5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYktpdFByb3Rv
Y29sSGFuZGxlcjo6V2ViS2l0UHJvdG9jb2xIYW5kbGVyKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRf
cmVnaXN0ZXJfdXJpX3NjaGVtZShjb250ZXh0LCAid2Via2l0IiwgW10oV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViS2l0UHJvdG9jb2xIYW5kbGVyKj4odXNlckRhdGEpLT5oYW5kbGVSZXF1ZXN0KHJlcXVl
c3QpOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworfQorCit2b2lkIFdlYktpdFByb3RvY29sSGFu
ZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9n
ZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBpZiAocmVxdWVzdFVSTC5ob3N0KCkgPT0gImdwdSIpIHsK
KyAgICAgICAgaGFuZGxlR1BVKHJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoV0VCS0lUX1BP
TElDWV9FUlJPUiwgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hPV19VUkksICJOb3QgZm91
bmQiKSk7CisgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJl
cXVlc3QsIGVycm9yLmdldCgpKTsKK30KKworc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiB3ZWJr
aXRQb3J0TmFtZSgpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHJldHVybiAiV2ViS2l0R1RL
IjsKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyAgICByZXR1cm4gIldQRVdFYktpdCI7CisjZW5kaWYK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgY29uc3QgY2hh
ciogaGFyZHdhcmVBY2NlbGVyYXRpb25Qb2xpY3koV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyNpZiBQTEFURk9STShXUEUpCisgICAgcmV0dXJuICJhbHdheXMiOworI2VsaWYg
UExBVEZPUk0oR1RLKQorICAgIGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1
ZXN0X2dldF93ZWJfdmlldyhyZXF1ZXN0KTsKKyAgICBBU1NFUlQod2ViVmlldyk7CisKKyAgICBz
d2l0Y2ggKHdlYmtpdF9zZXR0aW5nc19nZXRfaGFyZHdhcmVfYWNjZWxlcmF0aW9uX3BvbGljeSh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSkgeworICAgIGNhc2UgV0VCS0lU
X0hBUkRXQVJFX0FDQ0VMRVJBVElPTl9QT0xJQ1lfTkVWRVI6CisgICAgICAgIHJldHVybiAibmV2
ZXIiOworICAgIGNhc2UgV0VCS0lUX0hBUkRXQVJFX0FDQ0VMRVJBVElPTl9QT0xJQ1lfQUxXQVlT
OgorICAgICAgICByZXR1cm4gImFsd2F5cyI7CisgICAgY2FzZSBXRUJLSVRfSEFSRFdBUkVfQUND
RUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQ6CisgICAgICAgIHJldHVybiAib24gZGVtYW5kIjsK
KyAgICB9CisjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitz
dGF0aWMgYm9vbCB3ZWJHTEVuYWJsZWQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfd2Vi
X3ZpZXcocmVxdWVzdCk7CisgICAgQVNTRVJUKHdlYlZpZXcpOworICAgIHJldHVybiB3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJnbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdl
YlZpZXcpKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIG9wZW5HTEFQSSgpCit7CisjaWYgVVNF
KExJQkVQT1hZKQorICAgIGlmIChlcG94eV9pc19kZXNrdG9wX2dsKCkpCisgICAgICAgIHJldHVy
biAiT3BlbkdMIjsKKyAgICByZXR1cm4gIk9wZW5HTCBFUyAyIjsKKyNlbHNlCisjaWYgVVNFKEdM
WCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZXR1cm4gIk9wZW5HTCI7CisjZW5k
aWYKKyNpZiBVU0UoRUdMKQorI2lmIFVTRShPUEVOR0xfRVMpCisgICAgcmV0dXJuICJPcGVuR0wg
RVMgMiI7CisjZWxzZQorICAgIHJldHVybiAiT3BlbkdMIjsKKyNlbmRpZgorI2VuZGlmCisjZW5k
aWYKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgY29uc3Qg
Y2hhciogbmF0aXZlSW50ZXJmYWNlKCkKK3sKKyNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdM
WCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQorICAgICAgICByZXR1cm4gIkdMWCI7CisjZW5kaWYK
KyNlbmRpZgorCisjaWYgVVNFKEVHTCkKKyAgICByZXR1cm4gIkVHTCI7CisjZW5kaWYKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFdlYktpdFByb3RvY29sSGFu
ZGxlcjo6aGFuZGxlR1BVKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAg
R1N0cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygKKyAgICAgICAgIjxodG1sPjxoZWFkPjx0aXRs
ZT5HUFUgaW5mb3JtYXRpb248L3RpdGxlPiIKKyAgICAgICAgIjxtZXRhIGh0dHAtZXF1aXY9XCJD
b250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgLz4iCisg
ICAgICAgICI8c3R5bGU+IgorICAgICAgICAiICBoMSB7IGNvbG9yOiAjYmFiZGI2OyB0ZXh0LXNo
YWRvdzogMCAxcHggMCB3aGl0ZTsgbWFyZ2luLWJvdHRvbTogMDsgfSIKKyAgICAgICAgIiAgaHRt
bCB7IGZvbnQtZmFtaWx5OiAtd2Via2l0LXN5c3RlbS1mb250OyBmb250LXNpemU6IDExcHQ7IGNv
bG9yOiAjMmUzNDM2OyBwYWRkaW5nOiAyMHB4IDIwcHggMCAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiAjZjZmNmY0OyAiCisgICAgICAgICIgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0
LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAsICNl
ZWVlZWMpLCBjb2xvci1zdG9wKDEsICNmNmY2ZjQpKTsiCisgICAgICAgICIgICAgICAgICBiYWNr
Z3JvdW5kLXNpemU6IDEwMCUgNWVtOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9Igor
ICAgICAgICAiICB0YWJsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNl
OyB9IgorICAgICAgICAiICB0YWJsZSwgdGQgeyBib3JkZXI6IDFweCBzb2xpZCAjZDNkN2NmOyBi
b3JkZXItbGVmdDogbm9uZTsgYm9yZGVyLXJpZ2h0OiBub25lOyB9IgorICAgICAgICAiICBwIHsg
bWFyZ2luLWJvdHRvbTogMzBweDsgfSIKKyAgICAgICAgIiAgdGQgeyBwYWRkaW5nOiAxNXB4OyB9
IgorICAgICAgICAiICB0ZC5kYXRhIHsgd2lkdGg6IDIwMHB4OyB9IgorICAgICAgICAiICAudGl0
bGVuYW1lIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iCisgICAgICAgICI8L3N0eWxlPjwvaGVhZD48
Ym9keT4iKTsKKworICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLAorICAgICAgICAiPGgxPlZlcnNp
b24gSW5mb3JtYXRpb248L2gxPiIKKyAgICAgICAgIjx0YWJsZT4iKTsKKworICAgIGdfc3RyaW5n
X2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgIiAg
PHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5XZWJLaXQgdmVyc2lvbjwvZGl2PjwvdGQ+Igor
ICAgICAgICAiICA8dGQ+JXMgJWQuJWQuJWQgKCVzKTwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+
PC90cj4iLAorICAgICAgICB3ZWJraXRQb3J0TmFtZSgpLCBXRUJLSVRfTUFKT1JfVkVSU0lPTiwg
V0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OLCBTVk5fUkVWSVNJT04p
OworCisjaWYgT1MoVU5JWCkKKyAgICBzdHJ1Y3QgdXRzbmFtZSBvc05hbWU7CisgICAgdW5hbWUo
Jm9zTmFtZSk7CisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZigKKyAgICAgICAgaHRtbCwKKyAg
ICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5h
bWVcIj5PcGVyYXRpbmcgc3lzdGVtPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lcyAlcyAl
cyAlczwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICBvc05hbWUuc3lz
bmFtZSwgb3NOYW1lLnJlbGVhc2UsIG9zTmFtZS52ZXJzaW9uLCBvc05hbWUubWFjaGluZSk7Cisj
ZW5kaWYKKworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJv
ZHk+PHRyPiIKKyAgICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5EZXNrdG9w
PC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+
PC90cj4iLAorICAgICAgICBnX2dldGVudigiWERHX0NVUlJFTlRfREVTS1RPUCIpKTsKKworICAg
IGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAg
ICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5DYWlybyB2ZXJzaW9uPC9kaXY+
PC90ZD4iCisgICAgICAgICIgIDx0ZD4lZC4lZC4lZDwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+
PC90cj4iLAorICAgICAgICBDQUlST19WRVJTSU9OX01BSk9SLCBDQUlST19WRVJTSU9OX01JTk9S
LCBDQUlST19WRVJTSU9OX01JQ1JPKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBnX3N0cmlu
Z19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIg
IDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+R1RLIHZlcnNpb248L2Rpdj48L3RkPiIKKyAg
ICAgICAgIiAgPHRkPiVkLiVkLiVkPC90ZD4iCisgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisg
ICAgICAgIEdUS19NQUpPUl9WRVJTSU9OLCBHVEtfTUlOT1JfVkVSU0lPTiwgR1RLX01JQ1JPX1ZF
UlNJT04pOworCisjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKFdQRV9SRU5ERVJFUikKKyAg
ICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgeworICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRm
KGh0bWwsCisgICAgICAgICAgICAiIDx0Ym9keT48dHI+IgorICAgICAgICAgICAgIiAgPHRkPjxk
aXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5XUEUgdmVyc2lvbjwvZGl2PjwvdGQ+IgorICAgICAgICAg
ICAgIiAgPHRkPiVkLiVkLiVkICh1c2luZyBmZG8gYmFja2VuZCAlZC4lZC4lZCk8L3RkPiIKKyAg
ICAgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgICAgICBXUEVfRkRPX01BSk9SX1ZF
UlNJT04sIFdQRV9GRE9fTUlOT1JfVkVSU0lPTiwgV1BFX0ZET19NSUNST19WRVJTSU9OLAorICAg
ICAgICAgICAgV1BFX01BSk9SX1ZFUlNJT04sIFdQRV9NSU5PUl9WRVJTSU9OLCBXUEVfTUlDUk9f
VkVSU0lPTik7CisgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICBnX3N0cmluZ19hcHBlbmQoaHRt
bCwgIjx0YWJsZT4iKTsKKworICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLAorICAgICAgICAiPGgx
PkRpc3BsYXkgSW5mb3JtYXRpb248L2gxPiIKKyAgICAgICAgIjx0YWJsZT4iKTsKKworI2lmIFBM
QVRGT1JNKEdUSykKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIg
PHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+VHlw
ZTwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5
PjwvdHI+IiwKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCA/ICJXYXlsYW5kIiA6ICJYMTEiKTsK
KyNlbmRpZgorCisgICAgYXV0byByZWN0ID0gSW50UmVjdChzY3JlZW5SZWN0KG51bGxwdHIpKTsK
KyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4i
CisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+U2NyZWVuIGdlb21ldHJ5
PC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lZCwlZCAlZHglZDwvdGQ+IgorICAgICAgICAi
IDwvdGJvZHk+PC90cj4iLAorICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0ID0gSW50UmVjdChzY3JlZW5BdmFpbGFibGVS
ZWN0KG51bGxwdHIpKTsKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAg
ICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+
U2NyZWVuIHdvcmsgYXJlYTwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JWQsJWQgJWR4JWQ8
L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgcmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworCisgICAgZ19zdHJpbmdfYXBwZW5k
X3ByaW50ZihodG1sLAorICAgICAgICAiIDx0Ym9keT48dHI+IgorICAgICAgICAiICA8dGQ+PGRp
diBjbGFzcz1cInRpdGxlbmFtZVwiPkRlcHRoPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4l
ZDwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICBzY3JlZW5EZXB0aChu
dWxscHRyKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIg
PHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+Qml0
cyBwZXIgY29sb3IgY29tcG9uZW50PC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lZDwvdGQ+
IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChudWxscHRyKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAg
ICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1l
XCI+RFBJPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lLjJmPC90ZD4iCisgICAgICAgICIg
PC90Ym9keT48L3RyPiIsCisgICAgICAgIHNjcmVlbkRQSSgpKTsKKworICAgIGdfc3RyaW5nX2Fw
cGVuZChodG1sLCAiPHRhYmxlPiIpOworCisgICAgZ19zdHJpbmdfYXBwZW5kKGh0bWwsCisgICAg
ICAgICI8aDE+SGFyZHdhcmUgQWNjZWxlcmF0aW9uIEluZm9ybWF0aW9uPC9oMT4iCisgICAgICAg
ICI8dGFibGU+Iik7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAg
ICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+
UG9saWN5PC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwv
dGJvZHk+PC90cj4iLAorICAgICAgICBoYXJkd2FyZUFjY2VsZXJhdGlvblBvbGljeShyZXF1ZXN0
KSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5
Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+V2ViR0wgZW5h
YmxlZDwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Ri
b2R5PjwvdHI+IiwKKyAgICAgICAgd2ViR0xFbmFibGVkKHJlcXVlc3QpID8gIlllcyIgOiAiTm8i
KTsKKworICAgIGF1dG8gZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250
ZXh0KCk7CisgICAgZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGdfc3Ry
aW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAg
IiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5BUEk8L2Rpdj48L3RkPiIKKyAgICAgICAg
IiAgPHRkPiVzPC90ZD4iCisgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgIG9wZW5H
TEFQSSgpKTsKKworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8
dGJvZHk+PHRyPiIKKyAgICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5OYXRp
dmUgaW50ZXJmYWNlPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAg
ICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICBuYXRpdmVJbnRlcmZhY2UoKSk7CisKKyAgICBn
X3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAg
ICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+R0xfUkVOREVSRVI8L2Rpdj48L3Rk
PiIKKyAgICAgICAgIiAgPHRkPiVzPC90ZD4iCisgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1JFTkRF
UkVSKSkpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAorICAgICAgICAiIDx0
Ym9keT48dHI+IgorICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxlbmFtZVwiPkdMX1ZF
TkRPUjwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Ri
b2R5PjwvdHI+IiwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRT
dHJpbmcoR0xfVkVORE9SKSkpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAor
ICAgICAgICAiIDx0Ym9keT48dHI+IgorICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxl
bmFtZVwiPkdMX1ZFUlNJT048L2Rpdj48L3RkPiIKKyAgICAgICAgIiAgPHRkPiVzPC90ZD4iCisg
ICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGdsR2V0U3RyaW5nKEdMX1ZFUlNJT04pKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRf
cHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2
IGNsYXNzPVwidGl0bGVuYW1lXCI+R0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OPC9kaXY+PC90
ZD4iCisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAor
ICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9TSEFE
SU5HX0xBTkdVQUdFX1ZFUlNJT04pKSk7CisKKyNpZiBVU0UoT1BFTkdMX0VTKQorICAgIGdfc3Ry
aW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAg
IiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5HTF9FWFRFTlNJT05TPC9kaXY+PC90ZD4i
CisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAg
ICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJ
T05TKSkpOworI2Vsc2UKKyAgICBHU3RyaW5nKiBleHRlbnNpb25zID0gZ19zdHJpbmdfbmV3KG51
bGxwdHIpOworICAgIEdMaW50IG51bUV4dGVuc2lvbnMgPSAwOworICAgIGdsR2V0SW50ZWdlcnYo
R0xfTlVNX0VYVEVOU0lPTlMsICZudW1FeHRlbnNpb25zKTsKKyAgICBmb3IgKEdMaW50IGkgPSAw
OyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAg
Z19zdHJpbmdfYXBwZW5kX2MoZXh0ZW5zaW9ucywgJyAnKTsKKyAgICAgICAgZ19zdHJpbmdfYXBw
ZW5kKGV4dGVuc2lvbnMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5n
aShHTF9FWFRFTlNJT05TLCBpKSkpOworICAgIH0KKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRm
KGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNz
PVwidGl0bGVuYW1lXCI+R0xfRVhURU5TSU9OUzwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+
JXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgZXh0ZW5zaW9ucy0+
c3RyKTsKKyAgICBnX3N0cmluZ19mcmVlKGV4dGVuc2lvbnMsIFRSVUUpOworI2VuZGlmCisKKyAg
ICBib29sIGlzR0xYID0gZmFsc2U7CisjaWYgVVNFKEdMWCkKKyAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDEx
KSB7CisgICAgICAgIGlzR0xYID0gdHJ1ZTsKKyAgICAgICAgYXV0byogeDExRGlzcGxheSA9IGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpOworCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAg
ICAgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1c
InRpdGxlbmFtZVwiPkdMWF9WRVJTSU9OPC9kaXY+PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+
JXM8L3RkPiIKKyAgICAgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgICAgICBnbFhH
ZXRDbGllbnRTdHJpbmcoeDExRGlzcGxheSwgR0xYX1ZFUlNJT04pKTsKKworICAgICAgICBnX3N0
cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICAgICAiIDx0Ym9keT48dHI+IgorICAg
ICAgICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5HTFhfVkVORE9SPC9kaXY+
PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgICAgICIgPC90Ym9k
eT48L3RyPiIsCisgICAgICAgICAgICBnbFhHZXRDbGllbnRTdHJpbmcoeDExRGlzcGxheSwgR0xY
X1ZFTkRPUikpOworCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAg
ICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRp
dGxlbmFtZVwiPkdMWF9FWFRFTlNJT05TPC9kaXY+PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+
JXM8L3RkPiIKKyAgICAgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgICAgICBnbFhH
ZXRDbGllbnRTdHJpbmcoeDExRGlzcGxheSwgR0xYX0VYVEVOU0lPTlMpKTsKKyAgICB9CisjZW5k
aWYKKworI2lmIFVTRShFR0wpCisgICAgaWYgKCFpc0dMWCkgeworICAgICAgICBhdXRvIGVnbERp
c3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisK
KyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAorICAgICAgICAgICAgIiA8dGJv
ZHk+PHRyPiIKKyAgICAgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+RUdM
X1ZFUlNJT048L2Rpdj48L3RkPiIKKyAgICAgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAg
ICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgICAgIGVnbFF1ZXJ5U3RyaW5nKGVnbERp
c3BsYXksIEVHTF9WRVJTSU9OKSk7CisKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50Ziho
dG1sLAorICAgICAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgICAgICIgIDx0ZD48ZGl2
IGNsYXNzPVwidGl0bGVuYW1lXCI+RUdMX1ZFTkRPUjwvZGl2PjwvdGQ+IgorICAgICAgICAgICAg
IiAgPHRkPiVzPC90ZD4iCisgICAgICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICAg
ICAgZWdsUXVlcnlTdHJpbmcoZWdsRGlzcGxheSwgRUdMX1ZFTkRPUikpOworCisgICAgICAgIGdf
c3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgICAgICIgPHRib2R5Pjx0cj4iCisg
ICAgICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxlbmFtZVwiPkVHTF9FWFRFTlNJT05T
PC9kaXY+PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgICAgICIg
PC90Ym9keT48L3RyPiIsCisgICAgICAgICAgICBlZ2xRdWVyeVN0cmluZyhlZ2xEaXNwbGF5LCBF
R0xfRVhURU5TSU9OUykpOworICAgIH0KKyNlbmRpZgorCisgICAgZ19zdHJpbmdfYXBwZW5kKGh0
bWwsICI8dGFibGU+Iik7CisKKyAgICBnX3N0cmluZ19hcHBlbmQoaHRtbCwgIjwvYm9keT48L2h0
bWw+Iik7CisgICAgZ3NpemUgc3RyZWFtTGVuZ3RoID0gaHRtbC0+bGVuOworICAgIEdSZWZQdHI8
R0lucHV0U3RyZWFtPiBzdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25l
d19mcm9tX2RhdGEoZ19zdHJpbmdfZnJlZShodG1sLCBGQUxTRSksIHN0cmVhbUxlbmd0aCwgZ19m
cmVlKSk7CisgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2gocmVxdWVzdCwgc3Ry
ZWFtLmdldCgpLCBzdHJlYW1MZW5ndGgsICJ0ZXh0L2h0bWwiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRQcm90b2NvbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFByb3RvY29sSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi45YTc1M2ZmMWZjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5oCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNv
bnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktpdFByb3RvY29sSGFu
ZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViS2l0UHJvdG9jb2xIYW5kbGVyKFdlYktpdFdlYkNvbnRleHQqKTsKKyAgICB+V2ViS2l0
UHJvdG9jb2xIYW5kbGVyKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxl
UmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Kik7CisgICAgdm9pZCBoYW5kbGVHUFUoV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCopOworCisgICAgV2ViS2l0V2ViQ29udGV4dCogbV9jb250ZXh0
IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IDRlZmVhNTY1M2IwLi45OGE3Yzg1YWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYktp
dFBsdWdpblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAi
V2ViS2l0UHJvdG9jb2xIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlNYW5hZ2Vy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVj
dCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRB
dXRvbWF0aW9uQ2xpZW50PiBhdXRvbWF0aW9uQ2xpZW50OwogICAgIEdSZWZQdHI8V2ViS2l0QXV0
b21hdGlvblNlc3Npb24+IGF1dG9tYXRpb25TZXNzaW9uOwogI2VuZGlmCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYktpdFByb3RvY29sSGFuZGxlcj4gd2Via2l0UHJvdG9jb2xIYW5kbGVyOwogfTsK
IAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtMzU0LDYg
KzM1Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ICAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CiAjZW5kaWYKKyAgICBw
cml2LT53ZWJraXRQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFdlYktpdFByb3RvY29sSGFu
ZGxlcj4od2ViQ29udGV4dCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHREaXNw
b3NlKEdPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggMGFlMWJiNzE4MTMu
LmMzMWJjMGNkYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTg5LDYgKzE4OSwxMyBAQCBh
ZGRfZGVmaW5pdGlvbnMoLURHRVRURVhUX1BBQ0tBR0U9IldlYktpdDJHVEstJHtXRUJLSVRHVEtf
QVBJX1ZFUlNJT059IikKIGFkZF9kZWZpbml0aW9ucygtRFdFQktJVEdUS19BUElfVkVSU0lPTl9T
VFJJTkc9IiR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfSIpCiBhZGRfZGVmaW5pdGlvbnMoLURKU0Nf
R0xJQl9BUElfRU5BQkxFRCkKIAoraWYgKEVYSVNUUyAiJHtUT09MU19ESVJ9L2dsaWIvc3ZuLXJl
dmlzaW9uIikKKyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1RPT0xTX0RJUn0vZ2xpYi9z
dm4tcmV2aXNpb24gRVJST1JfUVVJRVQgT1VUUFVUX1ZBUklBQkxFIFNWTl9SRVZJU0lPTiBPVVRQ
VVRfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRSkKK2Vsc2UgKCkKKyAgICBzZXQoU1ZOX1JFVklT
SU9OICJ0YXJiYWxsIikKK2VuZGlmICgpCithZGRfZGVmaW5pdGlvbnMoLURTVk5fUkVWSVNJT049
IiR7U1ZOX1JFVklTSU9OfSIpCisKIHNldChHVEtfTElCUkFSSUVTICR7R1RLM19MSUJSQVJJRVN9
KQogc2V0KEdUS19JTkNMVURFX0RJUlMgJHtHVEszX0lOQ0xVREVfRElSU30pCiBzZXQoR0RLX0xJ
QlJBUklFUyAke0dESzNfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggNjU4OGJh
MWZiNzUuLjNhNzZlYmNmYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAtMTcxLDYgKzE3MSwx
MyBAQCBhZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19XUEVfXz0xKQogYWRkX2RlZmluaXRpb25z
KC1ER0VUVEVYVF9QQUNLQUdFPSJXUEUiKQogYWRkX2RlZmluaXRpb25zKC1ESlNDX0dMSUJfQVBJ
X0VOQUJMRUQpCiAKK2lmIChFWElTVFMgIiR7VE9PTFNfRElSfS9nbGliL3N2bi1yZXZpc2lvbiIp
CisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtUT09MU19ESVJ9L2dsaWIvc3ZuLXJldmlz
aW9uIEVSUk9SX1FVSUVUIE9VVFBVVF9WQVJJQUJMRSBTVk5fUkVWSVNJT04gT1VUUFVUX1NUUklQ
X1RSQUlMSU5HX1dISVRFU1BBQ0UpCitlbHNlICgpCisgICAgc2V0KFNWTl9SRVZJU0lPTiAidGFy
YmFsbCIpCitlbmRpZiAoKQorYWRkX2RlZmluaXRpb25zKC1EU1ZOX1JFVklTSU9OPSIke1NWTl9S
RVZJU0lPTn0iKQorCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChIQVZFX0FDQ0VTU0lCSUxJVFkg
JHtFTkFCTEVfQUNDRVNTSUJJTElUWX0pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQVRL
ICR7RU5BQkxFX0FDQ0VTU0lCSUxJVFl9KQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NB
SVJPIFRSVUUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggN2I2YmNmMGI5OTAuLjAzNDkwMzZkM2IzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDktMjcgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
W1dQRV0gQWRkIGFib3V0OmdwdQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgdG8gdXNlIGFib3V0OmdwdSBpbiBNaW5pQnJvd3Nlci4gQWRkIGEg
c2NyaXB0IHRvIGdldCB0aGUgY3VycmVudCBzdm4gcmV2aXNpb24uCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jOgorICAgICAgICAoZ2V0SW50ZXJuYWxVUkkpOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChhcmd1bWVudFRvVVJMKToK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBnbGliL3N2bi1yZXZpc2lvbjogQWRkZWQuCisKIDIwMTktMDktMjYgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0g
QWRkIFdlYktpdFdlYlZpZXc6cGFnZS1pZCBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
VGFiLmMKaW5kZXggNjZkMTE1YTAzY2UuLjA3YjM4NDQ5ZTM0IDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyVGFiLmMKQEAgLTQ2Miw2ICs0NjIsOSBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3RhYl9j
bGFzc19pbml0KEJyb3dzZXJUYWJDbGFzcyAqa2xhc3MpCiAKIHN0YXRpYyBjaGFyICpnZXRJbnRl
cm5hbFVSSShjb25zdCBjaGFyICp1cmkpCiB7CisgICAgaWYgKGdfc3RyX2VxdWFsKHVyaSwgImFi
b3V0OmdwdSIpKQorICAgICAgICByZXR1cm4gZ19zdHJkdXAoIndlYmtpdDovL2dwdSIpOworCiAg
ICAgLyogSW50ZXJuYWxseSB3ZSB1c2UgbWluaWJyb3dzZXItYWJvdXQ6IGFzIGFib3V0OiBwcmVm
aXggaXMgaWdub3JlZCBieSBXZWJLaXQuICovCiAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgodXJp
LCAiYWJvdXQ6IikgJiYgIWdfc3RyX2VxdWFsKHVyaSwgImFib3V0OmJsYW5rIikpCiAgICAgICAg
IHJldHVybiBnX3N0cmNvbmNhdChCUk9XU0VSX0FCT1VUX1NDSEVNRSwgdXJpICsgc3RybGVuICgi
YWJvdXQiKSwgTlVMTCk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5j
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA4M2NkMjkzNDc3Yi4uOTgxNWFl
ODJkNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNjYsNiArNjYsOSBAQCBzdGF0aWMgR1F1YXJr
IG1pbmlCcm93c2VyRXJyb3JRdWFyaygpCiAKIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChj
b25zdCBjaGFyICpmaWxlbmFtZSkKIHsKKyAgICBpZiAoZ19zdHJfZXF1YWwoZmlsZW5hbWUsICJh
Ym91dDpncHUiKSkKKyAgICAgICAgZmlsZW5hbWUgPSAid2Via2l0Oi8vZ3B1IjsKKwogICAgIEdG
aWxlICpnZmlsZSA9IGdfZmlsZV9uZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyhmaWxlbmFtZSk7CiAg
ICAgZ2NoYXIgKmZpbGVVUkwgPSBnX2ZpbGVfZ2V0X3VyaShnZmlsZSk7CiAgICAgZ19vYmplY3Rf
dW5yZWYoZ2ZpbGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
IGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4IGI3M2I3N2U2OWMxLi4xNzA1
NWUxYTAwZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtMzA2LDYgKzMwNiwxMCBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2JhY2tncm91bmRfY29sb3Iod2ViVmlldywgJmNvbG9yKTsKIAogICAgIGlmICh1cmlBcmd1bWVu
dHMpIHsKKyAgICAgICAgY29uc3QgY2hhciogdXJpID0gdXJpQXJndW1lbnRzWzBdOworICAgICAg
ICBpZiAoZ19zdHJfZXF1YWwodXJpLCAiYWJvdXQ6Z3B1IikpCisgICAgICAgICAgICB1cmkgPSAi
d2Via2l0Oi8vZ3B1IjsKKwogICAgICAgICBHRmlsZSogZmlsZSA9IGdfZmlsZV9uZXdfZm9yX2Nv
bW1hbmRsaW5lX2FyZyh1cmlBcmd1bWVudHNbMF0pOwogICAgICAgICBjaGFyKiB1cmwgPSBnX2Zp
bGVfZ2V0X3VyaShmaWxlKTsKICAgICAgICAgZ19vYmplY3RfdW5yZWYoZmlsZSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9nbGliL3N2bi1yZXZpc2lvbiBiL1Rvb2xzL2dsaWIvc3ZuLXJldmlzaW9uCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwLi5jMjhmYWEyN2VhOQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL2dsaWIvc3ZuLXJldmlzaW9uCkBAIC0wLDAgKzEsMzAgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4K
KyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0
aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwg
Ii4uIikpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3Rv
cnksICJUb29scyIsICJTY3JpcHRzIikpCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCisKK3NjbSA9IFNDTURldGVjdG9yKEZp
bGVTeXN0ZW0oKSwgRXhlY3V0aXZlKCkpLmRlZmF1bHRfc2NtKCkKK3ByaW50ICgiciIgKyBzY20u
aGVhZF9zdm5fcmV2aXNpb24oKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379720</attachid>
            <date>2019-09-27 06:59:18 -0700</date>
            <delta_ts>2019-09-30 01:47:50 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-about-gpu.diff</filename>
            <type>text/plain</type>
            <size>27031</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZTlhMWIzYzY4Yy4uZTNh
OTU3MjVlMTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOS0wOS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgYWJvdXQ6Z3B1CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU1ZOX1JFVklTSU9OIGRlZmlu
aXRpb24gdG8gdGhlIGJ1aWxkLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6CisKIDIwMTkt
MDktMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIHJ1
bi13ZWItcGxhdGZvcm0tdGVzdHM6IHJlbW92ZSBzdXBwb3J0IGZvciBpbi1yZXBvc2l0b3J5IG1h
bmlmZXN0LCBleHBlY3RhdGlvbiBtYW5hZ2VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwYzBjNGZjMzQyLi4y
MWZlNTU1ZTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wOS0yNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBBZGQgYWJvdXQ6Z3B1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDIzMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIGJ1aWx0aW4gcHJvdG9jb2wgaGFuZGxlciB0byBzaG93IGluZm9ybWF0aW9uIGFi
b3V0IGhhcmR3YXJlIGFjY2VsZXJhdGlvbi4gVGhpcyBpcyB1c2VmdWwgaW5mb3JtYXRpb24gd2Ug
bmVlZAorICAgICAgICBmcm9tIHBlb3BsZSByZXBvcnRpbmcgaXNzdWVzIGluIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIG1vZGUuCisKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJv
dG9jb2xIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYktpdFByb3RvY29s
SGFuZGxlcjo6V2ViS2l0UHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0
UHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6d2Via2l0
UG9ydE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpoYXJkd2FyZUFjY2VsZXJhdGlvblBvbGljeSk6
CisgICAgICAgIChXZWJLaXQ6OndlYkdMRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Om9wZW5H
TEFQSSk6CisgICAgICAgIChXZWJLaXQ6Om5hdGl2ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlR1BVKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZCk6CisKIDIwMTktMDktMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIFdlYktpdFdl
YlZpZXc6cGFnZS1pZCBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
R1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggN2JlZGYyMWRhNjUu
LjU1ZDE4YzI2ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTE2Myw2ICsxNjMsNyBAQCBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFBsdWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFByaXZhdGUuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFByb3RvY29sSGFuZGxlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggYzBm
N2VmZjE1OTYuLjI0ODViYjYxYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNX
UEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTE1MSw2ICsxNTEs
NyBAQCBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11
bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFBsdWdpbi5jcHAgQG5vLXVuaWZ5CiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9saWN5RGVjaXNpb24uY3BwIEBuby11bmlmeQogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFByaXZhdGUuY3BwIEBuby11bmlmeQorVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0U2NyaXB0RGlhbG9nLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ1ZDg5YmE1NzNhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMCwwICsxLDQ2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktp
dFByb3RvY29sSGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0RXJyb3IuaCIKKyNpbmNsdWRl
ICJXZWJLaXRWZXJzaW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlz
cGxheS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbmNsdWRlIDxj
YWlyby5oPgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KKworI2lmIE9TKFVOSVgpCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworI2lmIFBMQVRGT1JNKFdB
WUxBTkQpICYmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVkZSA8d3BlL2Zkby5oPgorI2VuZGlm
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheVgxMS5oPgorI2VuZGlmCisKKyNpZiBVU0UoTElCRVBPWFkpCisjaW5jbHVkZSA8ZXBv
eHkvZ2wuaD4KKyNlbmRpZgorCisjaWYgVVNFKEVHTCkKKyNpZiBVU0UoTElCRVBPWFkpCisjaW5j
bHVkZSA8ZXBveHkvZWdsLmg+CisjZWxzZQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNlbmRpZgor
I2VuZGlmCisKKyNpZiBVU0UoR0xYKQorI2luY2x1ZGUgPEdML2dseC5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYktpdFByb3Rv
Y29sSGFuZGxlcjo6V2ViS2l0UHJvdG9jb2xIYW5kbGVyKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRf
cmVnaXN0ZXJfdXJpX3NjaGVtZShjb250ZXh0LCAid2Via2l0IiwgW10oV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViS2l0UHJvdG9jb2xIYW5kbGVyKj4odXNlckRhdGEpLT5oYW5kbGVSZXF1ZXN0KHJlcXVl
c3QpOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworfQorCit2b2lkIFdlYktpdFByb3RvY29sSGFu
ZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9n
ZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBpZiAocmVxdWVzdFVSTC5ob3N0KCkgPT0gImdwdSIpIHsK
KyAgICAgICAgaGFuZGxlR1BVKHJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoV0VCS0lUX1BP
TElDWV9FUlJPUiwgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hPV19VUkksICJOb3QgZm91
bmQiKSk7CisgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJl
cXVlc3QsIGVycm9yLmdldCgpKTsKK30KKworc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiB3ZWJr
aXRQb3J0TmFtZSgpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHJldHVybiAiV2ViS2l0R1RL
IjsKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyAgICByZXR1cm4gIldQRSBXRWJLaXQiOworI2VuZGlm
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIGNvbnN0IGNo
YXIqIGhhcmR3YXJlQWNjZWxlcmF0aW9uUG9saWN5KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJl
cXVlc3QpCit7CisjaWYgUExBVEZPUk0oV1BFKQorICAgIHJldHVybiAiYWx3YXlzIjsKKyNlbGlm
IFBMQVRGT1JNKEdUSykKKyAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0X3VyaV9zY2hlbWVfcmVx
dWVzdF9nZXRfd2ViX3ZpZXcocmVxdWVzdCk7CisgICAgQVNTRVJUKHdlYlZpZXcpOworCisgICAg
c3dpdGNoICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2hhcmR3YXJlX2FjY2VsZXJhdGlvbl9wb2xpY3ko
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSkpIHsKKyAgICBjYXNlIFdFQktJ
VF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX05FVkVSOgorICAgICAgICByZXR1cm4gIm5l
dmVyIjsKKyAgICBjYXNlIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX0FMV0FZ
UzoKKyAgICAgICAgcmV0dXJuICJhbHdheXMiOworICAgIGNhc2UgV0VCS0lUX0hBUkRXQVJFX0FD
Q0VMRVJBVElPTl9QT0xJQ1lfT05fREVNQU5EOgorICAgICAgICByZXR1cm4gIm9uIGRlbWFuZCI7
CisgICAgfQorI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
c3RhdGljIGJvb2wgd2ViR0xFbmFibGVkKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
Cit7CisgICAgYXV0byogd2ViVmlldyA9IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dl
Yl92aWV3KHJlcXVlc3QpOworICAgIEFTU0VSVCh3ZWJWaWV3KTsKKyAgICByZXR1cm4gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2wod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3
ZWJWaWV3KSk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBvcGVuR0xBUEkoKQoreworI2lmIFVT
RShMSUJFUE9YWSkKKyAgICBpZiAoZXBveHlfaXNfZGVza3RvcF9nbCgpKQorICAgICAgICByZXR1
cm4gIk9wZW5HTCI7CisgICAgcmV0dXJuICJPcGVuR0wgRVMgMiI7CisjZWxzZQorI2lmIFVTRShH
TFgpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuICJPcGVuR0wiOworI2Vu
ZGlmCisjaWYgVVNFKEVHTCkKKyNpZiBVU0UoT1BFTkdMX0VTKQorICAgIHJldHVybiAiT3BlbkdM
IEVTIDIiOworI2Vsc2UKKyAgICByZXR1cm4gIk9wZW5HTCI7CisjZW5kaWYKKyNlbmRpZgorI2Vu
ZGlmCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIGNvbnN0
IGNoYXIqIG5hdGl2ZUludGVyZmFjZSgpCit7CisjaWYgUExBVEZPUk0oR1RLKQorI2lmIFVTRShH
TFgpCisgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAgcmV0dXJuICJHTFgiOworI2VuZGlm
CisjZW5kaWYKKworI2lmIFVTRShFR0wpCisgICAgcmV0dXJuICJFR0wiOworI2VuZGlmCisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJLaXRQcm90b2NvbEhh
bmRsZXI6OmhhbmRsZUdQVShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAg
IEdTdHJpbmcqIGh0bWwgPSBnX3N0cmluZ19uZXcoCisgICAgICAgICI8aHRtbD48aGVhZD48dGl0
bGU+R1BVIGluZm9ybWF0aW9uPC90aXRsZT4iCisgICAgICAgICI8bWV0YSBodHRwLWVxdWl2PVwi
Q29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiIC8+Igor
ICAgICAgICAiPHN0eWxlPiIKKyAgICAgICAgIiAgaDEgeyBjb2xvcjogI2JhYmRiNjsgdGV4dC1z
aGFkb3c6IDAgMXB4IDAgd2hpdGU7IG1hcmdpbi1ib3R0b206IDA7IH0iCisgICAgICAgICIgIGh0
bWwgeyBmb250LWZhbWlseTogLXdlYmtpdC1zeXN0ZW0tZm9udDsgZm9udC1zaXplOiAxMXB0OyBj
b2xvcjogIzJlMzQzNjsgcGFkZGluZzogMjBweCAyMHB4IDAgMjBweDsgYmFja2dyb3VuZC1jb2xv
cjogI2Y2ZjZmNDsgIgorICAgICAgICAiICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtp
dC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLCAj
ZWVlZWVjKSwgY29sb3Itc3RvcCgxLCAjZjZmNmY0KSk7IgorICAgICAgICAiICAgICAgICAgYmFj
a2dyb3VuZC1zaXplOiAxMDAlIDVlbTsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfSIK
KyAgICAgICAgIiAgdGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBz
ZTsgfSIKKyAgICAgICAgIiAgdGFibGUsIHRkIHsgYm9yZGVyOiAxcHggc29saWQgI2QzZDdjZjsg
Ym9yZGVyLWxlZnQ6IG5vbmU7IGJvcmRlci1yaWdodDogbm9uZTsgfSIKKyAgICAgICAgIiAgcCB7
IG1hcmdpbi1ib3R0b206IDMwcHg7IH0iCisgICAgICAgICIgIHRkIHsgcGFkZGluZzogMTVweDsg
fSIKKyAgICAgICAgIiAgdGQuZGF0YSB7IHdpZHRoOiAyMDBweDsgfSIKKyAgICAgICAgIiAgLnRp
dGxlbmFtZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9IgorICAgICAgICAiPC9zdHlsZT48L2hlYWQ+
PGJvZHk+Iik7CisKKyAgICBnX3N0cmluZ19hcHBlbmQoaHRtbCwKKyAgICAgICAgIjxoMT5WZXJz
aW9uIEluZm9ybWF0aW9uPC9oMT4iCisgICAgICAgICI8dGFibGU+Iik7CisKKyAgICBnX3N0cmlu
Z19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIg
IDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+V2ViS2l0IHZlcnNpb248L2Rpdj48L3RkPiIK
KyAgICAgICAgIiAgPHRkPiVzICVkLiVkLiVkICglcyk8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5
PjwvdHI+IiwKKyAgICAgICAgd2Via2l0UG9ydE5hbWUoKSwgV0VCS0lUX01BSk9SX1ZFUlNJT04s
IFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTiwgU1ZOX1JFVklTSU9O
KTsKKworI2lmIE9TKFVOSVgpCisgICAgc3RydWN0IHV0c25hbWUgb3NOYW1lOworICAgIHVuYW1l
KCZvc05hbWUpOworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoCisgICAgICAgIGh0bWwsCisg
ICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVu
YW1lXCI+T3BlcmF0aW5nIHN5c3RlbTwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXMgJXMg
JXMgJXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgb3NOYW1lLnN5
c25hbWUsIG9zTmFtZS5yZWxlYXNlLCBvc05hbWUudmVyc2lvbiwgb3NOYW1lLm1hY2hpbmUpOwor
I2VuZGlmCisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRi
b2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+RGVza3Rv
cDwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5
PjwvdHI+IiwKKyAgICAgICAgZ19nZXRlbnYoIlhER19DVVJSRU5UX0RFU0tUT1AiKSk7CisKKyAg
ICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisg
ICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+Q2Fpcm8gdmVyc2lvbjwvZGl2
PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXMgKGJ1aWxkKSAlcyAocnVudGltZSk8L3RkPiIKKyAg
ICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgQ0FJUk9fVkVSU0lPTl9TVFJJTkcsIGNh
aXJvX3ZlcnNpb25fc3RyaW5nKCkpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGdfc3RyaW5n
X2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgIiAg
PHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5HVEsgdmVyc2lvbjwvZGl2PjwvdGQ+IgorICAg
ICAgICAiICA8dGQ+JWQuJWQuJWQgKGJ1aWxkKSAlZC4lZC4lZCAocnVudGltZSk8L3RkPiIKKyAg
ICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgR1RLX01BSk9SX1ZFUlNJT04sIEdUS19N
SU5PUl9WRVJTSU9OLCBHVEtfTUlDUk9fVkVSU0lPTiwKKyAgICAgICAgZ3RrX2dldF9tYWpvcl92
ZXJzaW9uKCksIGd0a19nZXRfbWlub3JfdmVyc2lvbigpLCBndGtfZ2V0X21pY3JvX3ZlcnNpb24o
KSk7CisKKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBVU0UoV1BFX1JFTkRFUkVSKQorICAgIGlm
IChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNw
bGF5OjpUeXBlOjpXYXlsYW5kKSB7CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRt
bCwKKyAgICAgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICAgICAiICA8dGQ+PGRpdiBj
bGFzcz1cInRpdGxlbmFtZVwiPldQRSB2ZXJzaW9uPC9kaXY+PC90ZD4iCisgICAgICAgICAgICAi
ICA8dGQ+JWQuJWQuJWQgKHVzaW5nIGZkbyBiYWNrZW5kICVkLiVkLiVkKTwvdGQ+IgorICAgICAg
ICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgICAgIFdQRV9GRE9fTUFKT1JfVkVSU0lP
TiwgV1BFX0ZET19NSU5PUl9WRVJTSU9OLCBXUEVfRkRPX01JQ1JPX1ZFUlNJT04sCisgICAgICAg
ICAgICBXUEVfTUFKT1JfVkVSU0lPTiwgV1BFX01JTk9SX1ZFUlNJT04sIFdQRV9NSUNST19WRVJT
SU9OKTsKKyAgICB9CisjZW5kaWYKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV1BFKQorICAgIGdf
c3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAg
ICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5XUEUgdmVyc2lvbjwvZGl2PjwvdGQ+
IgorICAgICAgICAiICA8dGQ+JWQuJWQuJWQgKGJ1aWxkKSAlZC4lZC4lZCAocnVudGltZSk8L3Rk
PiIKKyAgICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgV1BFX01BSk9SX1ZFUlNJT04s
IFdQRV9NSU5PUl9WRVJTSU9OLCBXUEVfTUlDUk9fVkVSU0lPTiwKKyAgICAgICAgd3BlX2dldF9t
YWpvcl92ZXJzaW9uKCksIHdwZV9nZXRfbWlub3JfdmVyc2lvbigpLCB3cGVfZ2V0X21pY3JvX3Zl
cnNpb24oKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIg
PHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+V1BF
IGJhY2tlbmQ8L2Rpdj48L3RkPiIKKyAgICAgICAgIiAgPHRkPiVzPC90ZD4iCisgICAgICAgICIg
PC90Ym9keT48L3RyPiIsCisgICAgICAgIHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRh
dGlvbl9saWJyYXJ5X25hbWUoKSk7CisjZW5kaWYKKyAgICBnX3N0cmluZ19hcHBlbmQoaHRtbCwg
Ijx0YWJsZT4iKTsKKworICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLAorICAgICAgICAiPGgxPkRp
c3BsYXkgSW5mb3JtYXRpb248L2gxPiIKKyAgICAgICAgIjx0YWJsZT4iKTsKKworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRi
b2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+VHlwZTwv
ZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5Pjwv
dHI+IiwKKyAgICAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09
IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCA/ICJXYXlsYW5kIiA6ICJYMTEiKTsKKyNl
bmRpZgorCisgICAgYXV0byByZWN0ID0gSW50UmVjdChzY3JlZW5SZWN0KG51bGxwdHIpKTsKKyAg
ICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisg
ICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+U2NyZWVuIGdlb21ldHJ5PC9k
aXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lZCwlZCAlZHglZDwvdGQ+IgorICAgICAgICAiIDwv
dGJvZHk+PC90cj4iLAorICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CisKKyAgICByZWN0ID0gSW50UmVjdChzY3JlZW5BdmFpbGFibGVSZWN0
KG51bGxwdHIpKTsKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIg
PHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+U2Ny
ZWVuIHdvcmsgYXJlYTwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JWQsJWQgJWR4JWQ8L3Rk
PiIKKyAgICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgcmVjdC54KCksIHJlY3QueSgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3By
aW50ZihodG1sLAorICAgICAgICAiIDx0Ym9keT48dHI+IgorICAgICAgICAiICA8dGQ+PGRpdiBj
bGFzcz1cInRpdGxlbmFtZVwiPkRlcHRoPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lZDwv
dGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICBzY3JlZW5EZXB0aChudWxs
cHRyKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRi
b2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+Qml0cyBw
ZXIgY29sb3IgY29tcG9uZW50PC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lZDwvdGQ+Igor
ICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dChudWxscHRyKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAg
ICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+
RFBJPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lLjJmPC90ZD4iCisgICAgICAgICIgPC90
Ym9keT48L3RyPiIsCisgICAgICAgIHNjcmVlbkRQSSgpKTsKKworICAgIGdfc3RyaW5nX2FwcGVu
ZChodG1sLCAiPHRhYmxlPiIpOworCisgICAgZ19zdHJpbmdfYXBwZW5kKGh0bWwsCisgICAgICAg
ICI8aDE+SGFyZHdhcmUgQWNjZWxlcmF0aW9uIEluZm9ybWF0aW9uPC9oMT4iCisgICAgICAgICI8
dGFibGU+Iik7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIg
PHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+UG9s
aWN5PC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwvdGJv
ZHk+PC90cj4iLAorICAgICAgICBoYXJkd2FyZUFjY2VsZXJhdGlvblBvbGljeShyZXF1ZXN0KSk7
CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0
cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+V2ViR0wgZW5hYmxl
ZDwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5
PjwvdHI+IiwKKyAgICAgICAgd2ViR0xFbmFibGVkKHJlcXVlc3QpID8gIlllcyIgOiAiTm8iKTsK
KworICAgIGF1dG8gZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0
KCk7CisgICAgZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIGdfc3RyaW5n
X2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgIiAg
PHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5BUEk8L2Rpdj48L3RkPiIKKyAgICAgICAgIiAg
PHRkPiVzPC90ZD4iCisgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgIG9wZW5HTEFQ
SSgpKTsKKworICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJv
ZHk+PHRyPiIKKyAgICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5OYXRpdmUg
aW50ZXJmYWNlPC9kaXY+PC90ZD4iCisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAi
IDwvdGJvZHk+PC90cj4iLAorICAgICAgICBuYXRpdmVJbnRlcmZhY2UoKSk7CisKKyAgICBnX3N0
cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAg
ICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+R0xfUkVOREVSRVI8L2Rpdj48L3RkPiIK
KyAgICAgICAgIiAgPHRkPiVzPC90ZD4iCisgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVS
KSkpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAorICAgICAgICAiIDx0Ym9k
eT48dHI+IgorICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxlbmFtZVwiPkdMX1ZFTkRP
UjwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5
PjwvdHI+IiwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJp
bmcoR0xfVkVORE9SKSkpOworCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAorICAg
ICAgICAiIDx0Ym9keT48dHI+IgorICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxlbmFt
ZVwiPkdMX1ZFUlNJT048L2Rpdj48L3RkPiIKKyAgICAgICAgIiAgPHRkPiVzPC90ZD4iCisgICAg
ICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGdsR2V0U3RyaW5nKEdMX1ZFUlNJT04pKSk7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJp
bnRmKGh0bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNs
YXNzPVwidGl0bGVuYW1lXCI+R0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OPC9kaXY+PC90ZD4i
CisgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAg
ICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9TSEFESU5H
X0xBTkdVQUdFX1ZFUlNJT04pKSk7CisKKyNpZiBVU0UoT1BFTkdMX0VTKQorICAgIGdfc3RyaW5n
X2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgIiAg
PHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5HTF9FWFRFTlNJT05TPC9kaXY+PC90ZD4iCisg
ICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAg
ICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05T
KSkpOworI2Vsc2UKKyAgICBHU3RyaW5nKiBleHRlbnNpb25zID0gZ19zdHJpbmdfbmV3KG51bGxw
dHIpOworICAgIEdMaW50IG51bUV4dGVuc2lvbnMgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xf
TlVNX0VYVEVOU0lPTlMsICZudW1FeHRlbnNpb25zKTsKKyAgICBmb3IgKEdMaW50IGkgPSAwOyBp
IDwgbnVtRXh0ZW5zaW9uczsgKytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgZ19z
dHJpbmdfYXBwZW5kX2MoZXh0ZW5zaW9ucywgJyAnKTsKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5k
KGV4dGVuc2lvbnMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5naShH
TF9FWFRFTlNJT05TLCBpKSkpOworICAgIH0KKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0
bWwsCisgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwi
dGl0bGVuYW1lXCI+R0xfRVhURU5TSU9OUzwvZGl2PjwvdGQ+IgorICAgICAgICAiICA8dGQ+JXM8
L3RkPiIKKyAgICAgICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgZXh0ZW5zaW9ucy0+c3Ry
KTsKKyAgICBnX3N0cmluZ19mcmVlKGV4dGVuc2lvbnMsIFRSVUUpOworI2VuZGlmCisKKyAgICBi
b29sIGlzR0xYID0gZmFsc2U7CisjaWYgVVNFKEdMWCkKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7
CisgICAgICAgIGlzR0xYID0gdHJ1ZTsKKyAgICAgICAgYXV0byogeDExRGlzcGxheSA9IGRvd25j
YXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkp
Lm5hdGl2ZSgpOworCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAg
ICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRp
dGxlbmFtZVwiPkdMWF9WRVJTSU9OPC9kaXY+PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+JXM8
L3RkPiIKKyAgICAgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgICAgICBnbFhHZXRD
bGllbnRTdHJpbmcoeDExRGlzcGxheSwgR0xYX1ZFUlNJT04pKTsKKworICAgICAgICBnX3N0cmlu
Z19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICAgICAiIDx0Ym9keT48dHI+IgorICAgICAg
ICAgICAgIiAgPHRkPjxkaXYgY2xhc3M9XCJ0aXRsZW5hbWVcIj5HTFhfVkVORE9SPC9kaXY+PC90
ZD4iCisgICAgICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgICAgICIgPC90Ym9keT48
L3RyPiIsCisgICAgICAgICAgICBnbFhHZXRDbGllbnRTdHJpbmcoeDExRGlzcGxheSwgR0xYX1ZF
TkRPUikpOworCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAg
ICAgICIgPHRib2R5Pjx0cj4iCisgICAgICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxl
bmFtZVwiPkdMWF9FWFRFTlNJT05TPC9kaXY+PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+JXM8
L3RkPiIKKyAgICAgICAgICAgICIgPC90Ym9keT48L3RyPiIsCisgICAgICAgICAgICBnbFhHZXRD
bGllbnRTdHJpbmcoeDExRGlzcGxheSwgR0xYX0VYVEVOU0lPTlMpKTsKKyAgICB9CisjZW5kaWYK
KworI2lmIFVTRShFR0wpCisgICAgaWYgKCFpc0dMWCkgeworICAgICAgICBhdXRvIGVnbERpc3Bs
YXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCk7CisKKyAg
ICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAorICAgICAgICAgICAgIiA8dGJvZHk+
PHRyPiIKKyAgICAgICAgICAgICIgIDx0ZD48ZGl2IGNsYXNzPVwidGl0bGVuYW1lXCI+RUdMX1ZF
UlNJT048L2Rpdj48L3RkPiIKKyAgICAgICAgICAgICIgIDx0ZD4lczwvdGQ+IgorICAgICAgICAg
ICAgIiA8L3Rib2R5PjwvdHI+IiwKKyAgICAgICAgICAgIGVnbFF1ZXJ5U3RyaW5nKGVnbERpc3Bs
YXksIEVHTF9WRVJTSU9OKSk7CisKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1s
LAorICAgICAgICAgICAgIiA8dGJvZHk+PHRyPiIKKyAgICAgICAgICAgICIgIDx0ZD48ZGl2IGNs
YXNzPVwidGl0bGVuYW1lXCI+RUdMX1ZFTkRPUjwvZGl2PjwvdGQ+IgorICAgICAgICAgICAgIiAg
PHRkPiVzPC90ZD4iCisgICAgICAgICAgICAiIDwvdGJvZHk+PC90cj4iLAorICAgICAgICAgICAg
ZWdsUXVlcnlTdHJpbmcoZWdsRGlzcGxheSwgRUdMX1ZFTkRPUikpOworCisgICAgICAgIGdfc3Ry
aW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgICAgICIgPHRib2R5Pjx0cj4iCisgICAg
ICAgICAgICAiICA8dGQ+PGRpdiBjbGFzcz1cInRpdGxlbmFtZVwiPkVHTF9FWFRFTlNJT05TPC9k
aXY+PC90ZD4iCisgICAgICAgICAgICAiICA8dGQ+JXM8L3RkPiIKKyAgICAgICAgICAgICIgPC90
Ym9keT48L3RyPiIsCisgICAgICAgICAgICBlZ2xRdWVyeVN0cmluZyhlZ2xEaXNwbGF5LCBFR0xf
RVhURU5TSU9OUykpOworICAgIH0KKyNlbmRpZgorCisgICAgZ19zdHJpbmdfYXBwZW5kKGh0bWws
ICI8dGFibGU+Iik7CisKKyAgICBnX3N0cmluZ19hcHBlbmQoaHRtbCwgIjwvYm9keT48L2h0bWw+
Iik7CisgICAgZ3NpemUgc3RyZWFtTGVuZ3RoID0gaHRtbC0+bGVuOworICAgIEdSZWZQdHI8R0lu
cHV0U3RyZWFtPiBzdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19m
cm9tX2RhdGEoZ19zdHJpbmdfZnJlZShodG1sLCBGQUxTRSksIHN0cmVhbUxlbmd0aCwgZ19mcmVl
KSk7CisgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2gocmVxdWVzdCwgc3RyZWFt
LmdldCgpLCBzdHJlYW1MZW5ndGgsICJ0ZXh0L2h0bWwiKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRQcm90b2NvbEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFByb3RvY29sSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi45YTc1M2ZmMWZjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYktpdFByb3RvY29sSGFuZGxl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViS2l0UHJvdG9jb2xIYW5kbGVyKFdlYktpdFdlYkNvbnRleHQqKTsKKyAgICB+V2ViS2l0UHJv
dG9jb2xIYW5kbGVyKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgaGFuZGxlUmVx
dWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Kik7CisgICAgdm9pZCBoYW5kbGVHUFUoV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdCopOworCisgICAgV2ViS2l0V2ViQ29udGV4dCogbV9jb250ZXh0IHsg
bnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDRl
ZmVhNTY1M2IwLi45OGE3Yzg1YWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYktpdFBs
dWdpblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2Vi
S2l0UHJvdG9jb2xIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgpAQCAtMTkyLDYgKzE5Myw3IEBAIHN0cnVjdCBf
V2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRBdXRv
bWF0aW9uQ2xpZW50PiBhdXRvbWF0aW9uQ2xpZW50OwogICAgIEdSZWZQdHI8V2ViS2l0QXV0b21h
dGlvblNlc3Npb24+IGF1dG9tYXRpb25TZXNzaW9uOwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYktpdFByb3RvY29sSGFuZGxlcj4gd2Via2l0UHJvdG9jb2xIYW5kbGVyOwogfTsKIAog
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtMzU0LDYgKzM1
Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CiAjZW5kaWYKKyAgICBwcml2
LT53ZWJraXRQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFdlYktpdFByb3RvY29sSGFuZGxl
cj4od2ViQ29udGV4dCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHREaXNwb3Nl
KEdPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggMGFlMWJiNzE4MTMuLmMz
MWJjMGNkYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTg5LDYgKzE4OSwxMyBAQCBhZGRf
ZGVmaW5pdGlvbnMoLURHRVRURVhUX1BBQ0tBR0U9IldlYktpdDJHVEstJHtXRUJLSVRHVEtfQVBJ
X1ZFUlNJT059IikKIGFkZF9kZWZpbml0aW9ucygtRFdFQktJVEdUS19BUElfVkVSU0lPTl9TVFJJ
Tkc9IiR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfSIpCiBhZGRfZGVmaW5pdGlvbnMoLURKU0NfR0xJ
Ql9BUElfRU5BQkxFRCkKIAoraWYgKEVYSVNUUyAiJHtUT09MU19ESVJ9L2dsaWIvc3ZuLXJldmlz
aW9uIikKKyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1RPT0xTX0RJUn0vZ2xpYi9zdm4t
cmV2aXNpb24gRVJST1JfUVVJRVQgT1VUUFVUX1ZBUklBQkxFIFNWTl9SRVZJU0lPTiBPVVRQVVRf
U1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRSkKK2Vsc2UgKCkKKyAgICBzZXQoU1ZOX1JFVklTSU9O
ICJ0YXJiYWxsIikKK2VuZGlmICgpCithZGRfZGVmaW5pdGlvbnMoLURTVk5fUkVWSVNJT049IiR7
U1ZOX1JFVklTSU9OfSIpCisKIHNldChHVEtfTElCUkFSSUVTICR7R1RLM19MSUJSQVJJRVN9KQog
c2V0KEdUS19JTkNMVURFX0RJUlMgJHtHVEszX0lOQ0xVREVfRElSU30pCiBzZXQoR0RLX0xJQlJB
UklFUyAke0dESzNfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggNjU4OGJhMWZi
NzUuLjNhNzZlYmNmYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAtMTcxLDYgKzE3MSwxMyBA
QCBhZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19XUEVfXz0xKQogYWRkX2RlZmluaXRpb25zKC1E
R0VUVEVYVF9QQUNLQUdFPSJXUEUiKQogYWRkX2RlZmluaXRpb25zKC1ESlNDX0dMSUJfQVBJX0VO
QUJMRUQpCiAKK2lmIChFWElTVFMgIiR7VE9PTFNfRElSfS9nbGliL3N2bi1yZXZpc2lvbiIpCisg
ICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtUT09MU19ESVJ9L2dsaWIvc3ZuLXJldmlzaW9u
IEVSUk9SX1FVSUVUIE9VVFBVVF9WQVJJQUJMRSBTVk5fUkVWSVNJT04gT1VUUFVUX1NUUklQX1RS
QUlMSU5HX1dISVRFU1BBQ0UpCitlbHNlICgpCisgICAgc2V0KFNWTl9SRVZJU0lPTiAidGFyYmFs
bCIpCitlbmRpZiAoKQorYWRkX2RlZmluaXRpb25zKC1EU1ZOX1JFVklTSU9OPSIke1NWTl9SRVZJ
U0lPTn0iKQorCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChIQVZFX0FDQ0VTU0lCSUxJVFkgJHtF
TkFCTEVfQUNDRVNTSUJJTElUWX0pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQVRLICR7
RU5BQkxFX0FDQ0VTU0lCSUxJVFl9KQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJP
IFRSVUUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggN2I2YmNmMGI5OTAuLjAzNDkwMzZkM2IzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDktMjcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gQWRkIGFib3V0OmdwdQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAyMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsb3cgdG8gdXNlIGFib3V0OmdwdSBpbiBNaW5pQnJvd3Nlci4gQWRkIGEgc2Ny
aXB0IHRvIGdldCB0aGUgY3VycmVudCBzdm4gcmV2aXNpb24uCisKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9ndGsvQnJvd3NlclRhYi5jOgorICAgICAgICAoZ2V0SW50ZXJuYWxVUkkpOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6CisgICAgICAgIChhcmd1bWVudFRvVVJMKToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBnbGliL3N2bi1yZXZpc2lvbjogQWRkZWQuCisKIDIwMTktMDktMjYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRk
IFdlYktpdFdlYlZpZXc6cGFnZS1pZCBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFi
LmMKaW5kZXggNjZkMTE1YTAzY2UuLjA3YjM4NDQ5ZTM0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyVGFiLmMKQEAgLTQ2Miw2ICs0NjIsOSBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3RhYl9jbGFz
c19pbml0KEJyb3dzZXJUYWJDbGFzcyAqa2xhc3MpCiAKIHN0YXRpYyBjaGFyICpnZXRJbnRlcm5h
bFVSSShjb25zdCBjaGFyICp1cmkpCiB7CisgICAgaWYgKGdfc3RyX2VxdWFsKHVyaSwgImFib3V0
OmdwdSIpKQorICAgICAgICByZXR1cm4gZ19zdHJkdXAoIndlYmtpdDovL2dwdSIpOworCiAgICAg
LyogSW50ZXJuYWxseSB3ZSB1c2UgbWluaWJyb3dzZXItYWJvdXQ6IGFzIGFib3V0OiBwcmVmaXgg
aXMgaWdub3JlZCBieSBXZWJLaXQuICovCiAgICAgaWYgKGdfc3RyX2hhc19wcmVmaXgodXJpLCAi
YWJvdXQ6IikgJiYgIWdfc3RyX2VxdWFsKHVyaSwgImFib3V0OmJsYW5rIikpCiAgICAgICAgIHJl
dHVybiBnX3N0cmNvbmNhdChCUk9XU0VSX0FCT1VUX1NDSEVNRSwgdXJpICsgc3RybGVuICgiYWJv
dXQiKSwgTlVMTCk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCA4M2NkMjkzNDc3Yi4uOTgxNWFlODJk
NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtNjYsNiArNjYsOSBAQCBzdGF0aWMgR1F1YXJrIG1p
bmlCcm93c2VyRXJyb3JRdWFyaygpCiAKIHN0YXRpYyBnY2hhciAqYXJndW1lbnRUb1VSTChjb25z
dCBjaGFyICpmaWxlbmFtZSkKIHsKKyAgICBpZiAoZ19zdHJfZXF1YWwoZmlsZW5hbWUsICJhYm91
dDpncHUiKSkKKyAgICAgICAgZmlsZW5hbWUgPSAid2Via2l0Oi8vZ3B1IjsKKwogICAgIEdGaWxl
ICpnZmlsZSA9IGdfZmlsZV9uZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyhmaWxlbmFtZSk7CiAgICAg
Z2NoYXIgKmZpbGVVUkwgPSBnX2ZpbGVfZ2V0X3VyaShnZmlsZSk7CiAgICAgZ19vYmplY3RfdW5y
ZWYoZ2ZpbGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIv
VG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4IGI3M2I3N2U2OWMxLi5mZWZmM2Nj
MTkwYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAtMzA2LDcgKzMwNiwxMSBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Jh
Y2tncm91bmRfY29sb3Iod2ViVmlldywgJmNvbG9yKTsKIAogICAgIGlmICh1cmlBcmd1bWVudHMp
IHsKLSAgICAgICAgR0ZpbGUqIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9jb21tYW5kbGluZV9hcmco
dXJpQXJndW1lbnRzWzBdKTsKKyAgICAgICAgY29uc3QgY2hhciogdXJpID0gdXJpQXJndW1lbnRz
WzBdOworICAgICAgICBpZiAoZ19zdHJfZXF1YWwodXJpLCAiYWJvdXQ6Z3B1IikpCisgICAgICAg
ICAgICB1cmkgPSAid2Via2l0Oi8vZ3B1IjsKKworICAgICAgICBHRmlsZSogZmlsZSA9IGdfZmls
ZV9uZXdfZm9yX2NvbW1hbmRsaW5lX2FyZyh1cmkpOwogICAgICAgICBjaGFyKiB1cmwgPSBnX2Zp
bGVfZ2V0X3VyaShmaWxlKTsKICAgICAgICAgZ19vYmplY3RfdW5yZWYoZmlsZSk7CiAgICAgICAg
IHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LCB1cmwpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvZ2xpYi9zdm4tcmV2aXNpb24gYi9Ub29scy9nbGliL3N2bi1yZXZpc2lvbgpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uYzI4ZmFhMjdlYTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9nbGliL3N2bi1yZXZpc2lvbgpAQCAtMCwwICsxLDMwIEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisjCisjIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMK
KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBv
cnQgb3MKK2ltcG9ydCBzeXMKKwordG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBh
dGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIpKQor
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAiVG9v
bHMiLCAiU2NyaXB0cyIpKQorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0
ZWN0aW9uIGltcG9ydCBTQ01EZXRlY3RvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmls
ZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorCitzY20gPSBTQ01EZXRlY3RvcihGaWxlU3lzdGVt
KCksIEV4ZWN1dGl2ZSgpKS5kZWZhdWx0X3NjbSgpCitwcmludCAoInIiICsgc2NtLmhlYWRfc3Zu
X3JldmlzaW9uKCkpCg==
</data>
<flag name="review"
          id="395450"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>