<?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>223479</bug_id>
          
          <creation_ts>2021-03-18 14:11:54 -0700</creation_ts>
          <short_desc>[WPE][GTK] Run web processes in separate cgroups using systemd-run</short_desc>
          <delta_ts>2021-03-30 16:42:59 -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>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1741410</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-18 14:11:54 -0700</bug_when>
    <thetext>systemd 248 introduces systemd-oomd, a userspace oom killer contributed by Facebook. Unlike earlyoom and other earlier killers, systemd-oomd operates with cgroup-level granularity. That is, if a process in any given cgroup is using an excessive amount of memory, systemd-oomd will kill the entire cgroup all at once. This has implications for desktop environments like GNOME and KDE, which have started launching applications in separate cgroups to ensure a misbehaving application does not cause the entire desktop to be killed. It also has implications for multiprocess applications like terminals and web browsers.

In WebKit, the web processes are untrusted and are designed to crash and be restarted independently of each other. If a single web process uses an excessive amount of memory, we do not want systemd-oomd to kill the entire browser; instead, it should just kill the affected web process. We can achieve this using systemd-run. Of course, there is no point in doing this unless we are already building with -DUSE_SYSTEMD=ON. Also, we&apos;ll restrict this behavior to systemd 246 or newer, which adds the --slice-inherit argument to systemd-run. Both the bubblewrap sandbox launcher and the legacy unsandboxed process launcher are modified. The flatpak-spawn launcher is not modified because the spawn portal already runs subprocesses in a new cgroup. Note that it doesn&apos;t make sense to do this for the network process (or other trusted subprocesses), since WebKit is not designed to cope with the network process disappearing. Only the web processes should be run in separate cgroups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741414</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-18 14:15:19 -0700</bug_when>
    <thetext>Before, all processes (including two web processes) in one cgroup:

│   │ │ ├─app-org.gnome.Terminal.slice 
│   │ │ │ ├─vte-spawn-f5ea225f-122d-4e91-90d7-cb738bf49f4a.scope 
│   │ │ │ │ ├─77720 bash
│   │ │ │ │ ├─78871 systemd-cgls
│   │ │ │ │ └─78872 less
│   │ │ │ ├─vte-spawn-043103de-4ec0-46be-9edd-27a709be51ac.scope 
│   │ │ │ │ ├─39766 bash
│   │ │ │ │ ├─78590 epiphany
│   │ │ │ │ ├─78598 /usr/libexec/webkit2gtk-4.0/WebKitNetworkProcess 1 20
│   │ │ │ │ ├─78663 /usr/bin/bwrap --args 52 -- /usr/bin/xdg-dbus-proxy --args=49
│   │ │ │ │ ├─78664 /usr/bin/bwrap --args 52 -- /usr/bin/xdg-dbus-proxy --args=49
│   │ │ │ │ ├─78667 /usr/bin/xdg-dbus-proxy --args=49
│   │ │ │ │ ├─78669 /usr/bin/bwrap --args 53 -- /usr/bin/xdg-dbus-proxy --args=50
│   │ │ │ │ ├─78670 /usr/bin/bwrap --args 53 -- /usr/bin/xdg-dbus-proxy --args=50
│   │ │ │ │ ├─78671 /usr/bin/xdg-dbus-proxy --args=50
│   │ │ │ │ ├─78673 /usr/bin/bwrap --args 50 -- /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 11 44
│   │ │ │ │ ├─78674 /usr/bin/bwrap --args 50 -- /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 11 44
│   │ │ │ │ ├─78675 /usr/bin/bwrap --args 57 -- /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 17 53
│   │ │ │ │ ├─78676 /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 11 44
│   │ │ │ │ ├─78679 /usr/bin/bwrap --args 57 -- /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 17 53
│   │ │ │ │ └─78680 /usr/libexec/webkit2gtk-4.0/WebKitWebProcess 17 53
│   │ │ │ └─gnome-terminal-server.service 
│   │ │ │   └─35067 /usr/libexec/gnome-terminal-server

After, web processes split into separate cgroups:

│   │ │ ├─app-org.gnome.Terminal.slice 
│   │ │ │ ├─vte-spawn-f5ea225f-122d-4e91-90d7-cb738bf49f4a.scope 
│   │ │ │ │ ├─77720 bash
│   │ │ │ │ ├─86472 epiphany
│   │ │ │ │ ├─86481 /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitNetworkProcess 1 18
│   │ │ │ │ ├─86545 /usr/bin/bwrap --args 51 -- /usr/bin/xdg-dbus-proxy --args=48
│   │ │ │ │ ├─86546 /usr/bin/bwrap --args 51 -- /usr/bin/xdg-dbus-proxy --args=48
│   │ │ │ │ ├─86548 /usr/bin/xdg-dbus-proxy --args=48
│   │ │ │ │ ├─86550 /usr/bin/bwrap --args 52 -- /usr/bin/xdg-dbus-proxy --args=49
│   │ │ │ │ ├─86551 /usr/bin/bwrap --args 52 -- /usr/bin/xdg-dbus-proxy --args=49
│   │ │ │ │ └─86552 /usr/bin/xdg-dbus-proxy --args=49
│   │ │ │ ├─vte-spawn-043103de-4ec0-46be-9edd-27a709be51ac.scope 
│   │ │ │ │ ├─39766 bash
│   │ │ │ │ ├─86769 systemd-cgls
│   │ │ │ │ └─86770 less
│   │ │ │ ├─run-r4b1acfd6a19a4fe78622c8b608dde6ef.scope 
│   │ │ │ │ ├─86554 /usr/bin/bwrap --args 49 -- /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitWebProcess 11 43
│   │ │ │ │ ├─86555 /usr/bin/bwrap --args 49 -- /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitWebProcess 11 43
│   │ │ │ │ └─86558 /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitWebProcess 11 43
│   │ │ │ ├─run-r02f98d5665514673a73066896b4a1c65.scope 
│   │ │ │ │ ├─86556 /usr/bin/bwrap --args 56 -- /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitWebProcess 17 52
│   │ │ │ │ ├─86560 /usr/bin/bwrap --args 56 -- /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitWebProcess 17 52
│   │ │ │ │ └─86561 /home/mcatanzaro/Projects/GNOME/install/libexec/webkit2gtk-4.0/WebKitWebProcess 17 52
│   │ │ │ └─gnome-terminal-server.service 
│   │ │ │   └─35067 /usr/libexec/gnome-terminal-server

(Note that bwrap execs itself, so there are two bwrap processes with identical command lines for every web process and xdg-dbus-proxy process.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741425</commentid>
    <comment_count>2</comment_count>
      <attachid>423657</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-18 14:29:09 -0700</bug_when>
    <thetext>Created attachment 423657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741471</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-18 15:54:42 -0700</bug_when>
    <thetext>It seems I have some #if guards messed up somewhere. I&apos;m bisecting something now, will fix it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741539</commentid>
    <comment_count>4</comment_count>
      <attachid>423678</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-18 18:21:53 -0700</bug_when>
    <thetext>Created attachment 423678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741626</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Berg">benjamin</who>
    <bug_when>2021-03-19 01:58:16 -0700</bug_when>
    <thetext>On the patch itself seems good in general.

Some suggestions:

1. I would suggest adding &quot;--collect&quot; to the systemd-run options. There is no reason to leave transient units lying around if one of the helper processes does not exit cleanly.

2. With the unit name as-is, you&apos;ll break the resource usage display in &quot;GNOME Usage&quot; and KDE. I think you can fix this by using &quot;sd_pid_get_user_unit&quot;, splitting off the trailing unit type (.service/.scope), and then appending e.g. the PID (without a new &quot;-&quot; character for scopes).

3. If you need to grab your own unit name already. Maybe add a `PartOf=` to your own unit. That way systemd guarantees it&apos;ll eventually be killed after the parent is gone. I doubt this is important though, just feels like a nice touch to me.


I&apos;ll discuss this with some other people. My fear is that we&apos;ll want something quite different in the long run. This was the reason for wanting to go for an external hack (i.e. the &quot;cgroupify&quot; thingy I wrote), as it means we can propose a more sound long term solution to browsers eventually and just disable it.

Unfortunately, so far all discussions about this have ended inconclusively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741672</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-19 06:20:52 -0700</bug_when>
    <thetext>(In reply to Benjamin Berg from comment #5)
&gt; On the patch itself seems good in general.
&gt; 
&gt; Some suggestions:
&gt; 
&gt; 1. I would suggest adding &quot;--collect&quot; to the systemd-run options. There is
&gt; no reason to leave transient units lying around if one of the helper
&gt; processes does not exit cleanly.

OK.

&gt; 2. With the unit name as-is, you&apos;ll break the resource usage display in
&gt; &quot;GNOME Usage&quot; and KDE. I think you can fix this by using
&gt; &quot;sd_pid_get_user_unit&quot;, splitting off the trailing unit type
&gt; (.service/.scope), and then appending e.g. the PID (without a new &quot;-&quot;
&gt; character for scopes).

OK, passing the result to the --unit flag I suppose.

&gt; 3. If you need to grab your own unit name already. Maybe add a `PartOf=` to
&gt; your own unit. That way systemd guarantees it&apos;ll eventually be killed after
&gt; the parent is gone. I doubt this is important though, just feels like a nice
&gt; touch to me.

Using the --property flag? It&apos;s not needed because the web process will close itself when its connection to the UI process is closed.

&gt; I&apos;ll discuss this with some other people. My fear is that we&apos;ll want
&gt; something quite different in the long run. This was the reason for wanting
&gt; to go for an external hack (i.e. the &quot;cgroupify&quot; thingy I wrote), as it
&gt; means we can propose a more sound long term solution to browsers eventually
&gt; and just disable it.
&gt; 
&gt; Unfortunately, so far all discussions about this have ended inconclusively.

I haven&apos;t heard of cgroupify. :) Anyway sure, let&apos;s hold off on this until discussions progress further. FWIW I don&apos;t think any of the above is too hard, except calculating our own scope name to provide to --unit sounds a little bit annoying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745404</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-03-30 16:42:59 -0700</bug_when>
    <thetext>This is obsoleted by https://gitlab.freedesktop.org/benzea/uresourced/-/commit/9be60420d117b5015ef22eb6937f946db971bc68, at least for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423657</attachid>
            <date>2021-03-18 14:29:09 -0700</date>
            <delta_ts>2021-03-18 18:21:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223479-20210318162908.patch</filename>
            <type>text/plain</type>
            <size>20768</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRmOTA4NTRmZTlmNGVlYjk4
ZTA4OTRkMWQ3YWZkNzE4NDI5ZGI3ZDUuLjBiYTBiMmNhNmQ1MDA0MTk3YWQ5MjRhNzgxOTBiNDdk
OTNhM2JhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDIxLTAzLTE4ICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFtXUEVdW0dUS10g
UnVuIHdlYiBwcm9jZXNzZXMgaW4gc2VwYXJhdGUgY2dyb3VwcyB1c2luZyBzeXN0ZW1kLXJ1bgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3lzdGVtZCAy
NDggaW50cm9kdWNlcyBzeXN0ZW1kLW9vbWQsIGEgdXNlcnNwYWNlIG9vbSBraWxsZXIgY29udHJp
YnV0ZWQgYnkgRmFjZWJvb2suIFVubGlrZQorICAgICAgICBlYXJseW9vbSBhbmQgb3RoZXIgZWFy
bGllciBraWxsZXJzLCBzeXN0ZW1kLW9vbWQgb3BlcmF0ZXMgd2l0aCBjZ3JvdXAtbGV2ZWwgZ3Jh
bnVsYXJpdHkuCisgICAgICAgIFRoYXQgaXMsIGlmIGEgcHJvY2VzcyBpbiBhbnkgZ2l2ZW4gY2dy
b3VwIGlzIHVzaW5nIGFuIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgbWVtb3J5LAorICAgICAgICBzeXN0
ZW1kLW9vbWQgd2lsbCBraWxsIHRoZSBlbnRpcmUgY2dyb3VwIGFsbCBhdCBvbmNlLiBUaGlzIGhh
cyBpbXBsaWNhdGlvbnMgZm9yIGRlc2t0b3AKKyAgICAgICAgZW52aXJvbm1lbnRzIGxpa2UgR05P
TUUgYW5kIEtERSwgd2hpY2ggaGF2ZSBzdGFydGVkIGxhdW5jaGluZyBhcHBsaWNhdGlvbnMgaW4g
c2VwYXJhdGUKKyAgICAgICAgY2dyb3VwcyB0byBlbnN1cmUgYSBtaXNiZWhhdmluZyBhcHBsaWNh
dGlvbiBkb2VzIG5vdCBjYXVzZSB0aGUgZW50aXJlIGRlc2t0b3AgdG8gYmUga2lsbGVkLgorICAg
ICAgICBJdCBhbHNvIGhhcyBpbXBsaWNhdGlvbnMgZm9yIG11bHRpcHJvY2VzcyBhcHBsaWNhdGlv
bnMgbGlrZSB0ZXJtaW5hbHMgYW5kIHdlYiBicm93c2Vycy4KKworICAgICAgICBJbiBXZWJLaXQs
IHRoZSB3ZWIgcHJvY2Vzc2VzIGFyZSB1bnRydXN0ZWQgYW5kIGFyZSBkZXNpZ25lZCB0byBjcmFz
aCBhbmQgYmUgcmVzdGFydGVkCisgICAgICAgIGluZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlci4g
SWYgYSBzaW5nbGUgd2ViIHByb2Nlc3MgdXNlcyBhbiBleGNlc3NpdmUgYW1vdW50IG9mIG1lbW9y
eSwgd2UKKyAgICAgICAgZG8gbm90IHdhbnQgc3lzdGVtZC1vb21kIHRvIGtpbGwgdGhlIGVudGly
ZSBicm93c2VyOyBpbnN0ZWFkLCBpdCBzaG91bGQganVzdCBraWxsIHRoZQorICAgICAgICBhZmZl
Y3RlZCB3ZWIgcHJvY2Vzcy4gV2UgY2FuIGFjaGlldmUgdGhpcyB1c2luZyBzeXN0ZW1kLXJ1bi4g
T2YgY291cnNlLCB0aGVyZSBpcyBubyBwb2ludCBpbgorICAgICAgICBkb2luZyB0aGlzIHVubGVz
cyB3ZSBhcmUgYWxyZWFkeSBidWlsZGluZyB3aXRoIC1EVVNFX1NZU1RFTUQ9T04uIEFsc28sIHdl
J2xsIHJlc3RyaWN0IHRoaXMKKyAgICAgICAgYmVoYXZpb3IgdG8gc3lzdGVtZCAyNDYgb3IgbmV3
ZXIsIHdoaWNoIGFkZHMgdGhlIC0tc2xpY2UtaW5oZXJpdCBhcmd1bWVudCB0byBzeXN0ZW1kLXJ1
bi4KKyAgICAgICAgQm90aCB0aGUgYnViYmxld3JhcCBzYW5kYm94IGxhdW5jaGVyIGFuZCB0aGUg
bGVnYWN5IHVuc2FuZGJveGVkIHByb2Nlc3MgbGF1bmNoZXIgYXJlCisgICAgICAgIG1vZGlmaWVk
LiBUaGUgZmxhdHBhay1zcGF3biBsYXVuY2hlciBpcyBub3QgbW9kaWZpZWQgYmVjYXVzZSB0aGUg
c3Bhd24gcG9ydGFsIGFscmVhZHkgcnVucworICAgICAgICBzdWJwcm9jZXNzZXMgaW4gYSBuZXcg
Y2dyb3VwLiBOb3RlIHRoYXQgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGRvIHRoaXMgZm9yIHRo
ZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgKG9yIG90aGVyIHRydXN0ZWQgc3VicHJvY2Vzc2Vz
KSwgc2luY2UgV2ViS2l0IGlzIG5vdCBkZXNpZ25lZCB0byBjb3BlIHdpdGggdGhlCisgICAgICAg
IG5ldHdvcmsgcHJvY2VzcyBkaXNhcHBlYXJpbmcuIE9ubHkgdGhlIHdlYiBwcm9jZXNzZXMgc2hv
dWxkIGJlIHJ1biBpbiBzZXBhcmF0ZSBjZ3JvdXBzLgorCisgICAgICAgIEJlZm9yZSwgYWxsIHBy
b2Nlc3NlcyAoaW5jbHVkaW5nIHR3byB3ZWIgcHJvY2Vzc2VzKSBpbiBvbmUgY2dyb3VwOgorCisg
ICAgICAgIOKUgiAgIOKUgiDilIIg4pSc4pSAYXBwLW9yZy5nbm9tZS5UZXJtaW5hbC5zbGljZQor
ICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilJzilIB2dGUtc3Bhd24tZjVlYTIyNWYtMTIyZC00
ZTkxLTkwZDctY2I3MzhiZjQ5ZjRhLnNjb3BlCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKU
giDilJzilIA3NzcyMCBiYXNoCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3
ODg3MSBzeXN0ZW1kLWNnbHMKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUlOKUgDc4
ODcyIGxlc3MKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSc4pSAdnRlLXNwYXduLTA0MzEw
M2RlLTRlYzAtNDZiZS05ZWRkLTI3YTcwOWJlNTFhYy5zY29wZQorICAgICAgICDilIIgICDilIIg
4pSCIOKUgiDilIIg4pSc4pSAMzk3NjYgYmFzaAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDi
lIIg4pSc4pSANzg1OTAgZXBpcGhhbnkKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKU
nOKUgDc4NTk4IC91c3IvbGliZXhlYy93ZWJraXQyZ3RrLTQuMC9XZWJLaXROZXR3b3JrUHJvY2Vz
cyAxIDIwCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3ODY2MyAvdXNyL2Jp
bi9id3JhcCAtLWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdzPTQ5Cisg
ICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3ODY2NCAvdXNyL2Jpbi9id3JhcCAt
LWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdzPTQ5CisgICAgICAgIOKU
giAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3ODY2NyAvdXNyL2Jpbi94ZGctZGJ1cy1wcm94eSAt
LWFyZ3M9NDkKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4NjY5IC91c3Iv
YmluL2J3cmFwIC0tYXJncyA1MyAtLSAvdXNyL2Jpbi94ZGctZGJ1cy1wcm94eSAtLWFyZ3M9NTAK
KyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4NjcwIC91c3IvYmluL2J3cmFw
IC0tYXJncyA1MyAtLSAvdXNyL2Jpbi94ZGctZGJ1cy1wcm94eSAtLWFyZ3M9NTAKKyAgICAgICAg
4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4NjcxIC91c3IvYmluL3hkZy1kYnVzLXByb3h5
IC0tYXJncz01MAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSANzg2NzMgL3Vz
ci9iaW4vYndyYXAgLS1hcmdzIDUwIC0tIC91c3IvbGliZXhlYy93ZWJraXQyZ3RrLTQuMC9XZWJL
aXRXZWJQcm9jZXNzIDExIDQ0CisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3
ODY3NCAvdXNyL2Jpbi9id3JhcCAtLWFyZ3MgNTAgLS0gL3Vzci9saWJleGVjL3dlYmtpdDJndGst
NC4wL1dlYktpdFdlYlByb2Nlc3MgMTEgNDQKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSC
IOKUnOKUgDc4Njc1IC91c3IvYmluL2J3cmFwIC0tYXJncyA1NyAtLSAvdXNyL2xpYmV4ZWMvd2Vi
a2l0Mmd0ay00LjAvV2ViS2l0V2ViUHJvY2VzcyAxNyA1MworICAgICAgICDilIIgICDilIIg4pSC
IOKUgiDilIIg4pSc4pSANzg2NzYgL3Vzci9saWJleGVjL3dlYmtpdDJndGstNC4wL1dlYktpdFdl
YlByb2Nlc3MgMTEgNDQKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4Njc5
IC91c3IvYmluL2J3cmFwIC0tYXJncyA1NyAtLSAvdXNyL2xpYmV4ZWMvd2Via2l0Mmd0ay00LjAv
V2ViS2l0V2ViUHJvY2VzcyAxNyA1MworICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSU
4pSANzg2ODAgL3Vzci9saWJleGVjL3dlYmtpdDJndGstNC4wL1dlYktpdFdlYlByb2Nlc3MgMTcg
NTMKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSU4pSAZ25vbWUtdGVybWluYWwtc2VydmVy
LnNlcnZpY2UKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIgICDilJTilIAzNTA2NyAvdXNyL2xp
YmV4ZWMvZ25vbWUtdGVybWluYWwtc2VydmVyCisKKyAgICAgICAgQWZ0ZXIsIHdlYiBwcm9jZXNz
ZXMgc3BsaXQgaW50byBzZXBhcmF0ZSBjZ3JvdXBzOgorCisgICAgICAgIOKUgiAgIOKUgiDilIIg
4pSc4pSAYXBwLW9yZy5nbm9tZS5UZXJtaW5hbC5zbGljZQorICAgICAgICDilIIgICDilIIg4pSC
IOKUgiDilJzilIB2dGUtc3Bhd24tZjVlYTIyNWYtMTIyZC00ZTkxLTkwZDctY2I3MzhiZjQ5ZjRh
LnNjb3BlCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3NzcyMCBiYXNoCisg
ICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjQ3MiBlcGlwaGFueQorICAgICAg
ICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY0ODEgL2hvbWUvbWNhdGFuemFyby9Qcm9q
ZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMvd2Via2l0Mmd0ay00LjAvV2ViS2l0TmV0d29ya1By
b2Nlc3MgMSAxOAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY1NDUgL3Vz
ci9iaW4vYndyYXAgLS1hcmdzIDUxIC0tIC91c3IvYmluL3hkZy1kYnVzLXByb3h5IC0tYXJncz00
OAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY1NDYgL3Vzci9iaW4vYndy
YXAgLS1hcmdzIDUxIC0tIC91c3IvYmluL3hkZy1kYnVzLXByb3h5IC0tYXJncz00OAorICAgICAg
ICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY1NDggL3Vzci9iaW4veGRnLWRidXMtcHJv
eHkgLS1hcmdzPTQ4CisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjU1MCAv
dXNyL2Jpbi9id3JhcCAtLWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdz
PTQ5CisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjU1MSAvdXNyL2Jpbi9i
d3JhcCAtLWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdzPTQ5CisgICAg
ICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJTilIA4NjU1MiAvdXNyL2Jpbi94ZGctZGJ1cy1w
cm94eSAtLWFyZ3M9NDkKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSc4pSAdnRlLXNwYXdu
LTA0MzEwM2RlLTRlYzAtNDZiZS05ZWRkLTI3YTcwOWJlNTFhYy5zY29wZQorICAgICAgICDilIIg
ICDilIIg4pSCIOKUgiDilIIg4pSc4pSAMzk3NjYgYmFzaAorICAgICAgICDilIIgICDilIIg4pSC
IOKUgiDilIIg4pSc4pSAODY3Njkgc3lzdGVtZC1jZ2xzCisgICAgICAgIOKUgiAgIOKUgiDilIIg
4pSCIOKUgiDilJTilIA4Njc3MCBsZXNzCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUnOKU
gHJ1bi1yNGIxYWNmZDZhMTlhNGZlNzg2MjJjOGI2MDhkZGU2ZWYuc2NvcGUKKyAgICAgICAg4pSC
ICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDg2NTU0IC91c3IvYmluL2J3cmFwIC0tYXJncyA0OSAt
LSAvaG9tZS9tY2F0YW56YXJvL1Byb2plY3RzL0dOT01FL2luc3RhbGwvbGliZXhlYy93ZWJraXQy
Z3RrLTQuMC9XZWJLaXRXZWJQcm9jZXNzIDExIDQzCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSC
IOKUgiDilJzilIA4NjU1NSAvdXNyL2Jpbi9id3JhcCAtLWFyZ3MgNDkgLS0gL2hvbWUvbWNhdGFu
emFyby9Qcm9qZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMvd2Via2l0Mmd0ay00LjAvV2ViS2l0
V2ViUHJvY2VzcyAxMSA0MworICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSU4pSAODY1
NTggL2hvbWUvbWNhdGFuemFyby9Qcm9qZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMvd2Via2l0
Mmd0ay00LjAvV2ViS2l0V2ViUHJvY2VzcyAxMSA0MworICAgICAgICDilIIgICDilIIg4pSCIOKU
giDilJzilIBydW4tcjAyZjk4ZDU2NjU1MTQ2NzNhNzMwNjY4OTZiNGExYzY1LnNjb3BlCisgICAg
ICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjU1NiAvdXNyL2Jpbi9id3JhcCAtLWFy
Z3MgNTYgLS0gL2hvbWUvbWNhdGFuemFyby9Qcm9qZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMv
d2Via2l0Mmd0ay00LjAvV2ViS2l0V2ViUHJvY2VzcyAxNyA1MgorICAgICAgICDilIIgICDilIIg
4pSCIOKUgiDilIIg4pSc4pSAODY1NjAgL3Vzci9iaW4vYndyYXAgLS1hcmdzIDU2IC0tIC9ob21l
L21jYXRhbnphcm8vUHJvamVjdHMvR05PTUUvaW5zdGFsbC9saWJleGVjL3dlYmtpdDJndGstNC4w
L1dlYktpdFdlYlByb2Nlc3MgMTcgNTIKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKU
lOKUgDg2NTYxIC9ob21lL21jYXRhbnphcm8vUHJvamVjdHMvR05PTUUvaW5zdGFsbC9saWJleGVj
L3dlYmtpdDJndGstNC4wL1dlYktpdFdlYlByb2Nlc3MgMTcgNTIKKyAgICAgICAg4pSCICAg4pSC
IOKUgiDilIIg4pSU4pSAZ25vbWUtdGVybWluYWwtc2VydmVyLnNlcnZpY2UKKyAgICAgICAg4pSC
ICAg4pSCIOKUgiDilIIgICDilJTilIAzNTA2NyAvdXNyL2xpYmV4ZWMvZ25vbWUtdGVybWluYWwt
c2VydmVyCisKKyAgICAgICAgKE5vdGUgdGhhdCBid3JhcCBleGVjcyBpdHNlbGYsIHNvIHRoZXJl
IGFyZSB0d28gYndyYXAgcHJvY2Vzc2VzIHdpdGggaWRlbnRpY2FsIGNvbW1hbmQgbGluZXMgZm9y
IGV2ZXJ5IHdlYiBwcm9jZXNzIGFuZCB4ZGctZGJ1cy1wcm94eSBwcm9jZXNzLikKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpYREdEQnVzUHJveHlMYXVuY2hlcjo6bGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6YnVi
Ymxld3JhcFNwYXduKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3
cmFwTGF1bmNoZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNz
TGF1bmNoZXJHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpzeXN0
ZW1kUnVuQXJncyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OmlzSW5zaWRlRG9ja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6aXNJbnNpZGVGbGF0cGFrKToKKyAgICAgICAgKFdlYktpdDo6aXNJbnNp
ZGVTbmFwKToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkQnViYmxld3JhcFNwYXduKToKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpzYW5kYm94RW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisKIDIwMjEtMDMt
MTYgIEtoZW0gUmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQnVp
bGQgZmFpbHMgb24gUklTQy1WIHdpdGggR0NDIDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDEwODFiYTJhNWJmYzM0Yjlm
YjczYWY4ODUxMjUzZTc4ZWFhZWIzYzguLjhkYjgzYjVhNGNlZjdiYWVlYTcyZjUwNDczNDVhY2Vj
YjE2NDFlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJ
RC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC0xMjMsNiArMTI0LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3Jt
SW52YWxpZGF0ZSgpOwogCisjaWYgVVNFKFNZU1RFTURfUlVOKSB8fCBFTkFCTEUoQlVCQkxFV1JB
UF9TQU5EQk9YKQorICAgIFZlY3RvcjxDU3RyaW5nPiYgc3lzdGVtZFJ1bkFyZ3MoKSBjb25zdDsK
KyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGJvb2wgc2FuZGJveEVuYWJsZWQoKSBjb25zdDsK
KyAgICBtdXRhYmxlIFRyaVN0YXRlIG1fc2FuZGJveEVuYWJsZWQgPSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKKyNlbmRpZgorCiAgICAgQ2xpZW50KiBtX2NsaWVudDsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xp
Yi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCmluZGV4IGUxODMwMTI5ZTQ1YTQ0ODAyZjRj
NjliYTk4ODlmMmRjMmU5MzkwMWUuLmFlZmE2MjlkY2IyOGUwMTM1OGVlZTdjNGY3ZmNlOTNiZDVi
NGE4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRpb25z
OwogICAgICAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQ
cm9jZXNzVHlwZTo6REJ1c1Byb3h5OwogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+IHByb2Nlc3MgPSBidWJibGV3cmFwU3Bh
d24obGF1bmNoZXIuZ2V0KCksIGxhdW5jaE9wdGlvbnMsIGFyZ3YsICZlcnJvci5vdXRQdHIoKSk7
CisgICAgICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+IHByb2Nlc3MgPSBidWJibGV3cmFwU3Bhd24o
bGF1bmNoZXIuZ2V0KCksIGxhdW5jaE9wdGlvbnMsIHsgfSwgYXJndiwgJmVycm9yLm91dFB0cigp
KTsKICAgICAgICAgaWYgKCFwcm9jZXNzLmdldCgpKQogICAgICAgICAgICAgZ19lcnJvcigiRmFp
bGVkIHRvIHN0YXJ0IGRidXMgcHJveHk6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwogCkBAIC03NDAs
NyArNzQwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVW5zaGFyZU5ldHdvcmsoUHJvY2Vzc0xhdW5j
aGVyOjpQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotR1Jl
ZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxld3JhcFNwYXduKEdTdWJwcm9jZXNzTGF1bmNoZXIqIGxh
dW5jaGVyLCBjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlv
bnMsIGNoYXIqKiBhcmd2LCBHRXJyb3IgKiplcnJvcikKK0dSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1
YmJsZXdyYXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBjb25zdCBWZWN0b3I8Q1N0
cmluZz4mIHN5c3RlbWRSdW5BcmdzLCBjaGFyKiogYXJndiwgR0Vycm9yKiogZXJyb3IpCiB7CiAg
ICAgQVNTRVJUKGxhdW5jaGVyKTsKIApAQCAtOTI4LDkgKzkyOCwxMSBAQCBHUmVmUHRyPEdTdWJw
cm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIGNv
bnN0IFByb2NlcwogICAgICAgICAiLS0iLAogICAgIH07CiAKLSAgICBjaGFyKiogbmV3QXJndiA9
IGdfbmV3YShjaGFyKiwgZ19zdHJ2X2xlbmd0aChhcmd2KSArIGJ3cmFwQXJncy5zaXplKCkgKyAx
KTsKKyAgICBjaGFyKiogbmV3QXJndiA9IGdfbmV3YShjaGFyKiwgc3lzdGVtZFJ1bkFyZ3Muc2l6
ZSgpICsgZ19zdHJ2X2xlbmd0aChhcmd2KSArIGJ3cmFwQXJncy5zaXplKCkgKyAxKTsKICAgICBz
aXplX3QgaSA9IDA7CiAKKyAgICBmb3IgKGF1dG8mIGFyZyA6IHN5c3RlbWRSdW5BcmdzKQorICAg
ICAgICBuZXdBcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihhcmcuZGF0YSgpKTsKICAgICBm
b3IgKGF1dG8mIGFyZyA6IGJ3cmFwQXJncykKICAgICAgICAgbmV3QXJndltpKytdID0gY29uc3Rf
Y2FzdDxjaGFyKj4oYXJnLmRhdGEoKSk7CiAgICAgZm9yIChzaXplX3QgeCA9IDA7IGFyZ3ZbeF07
IHgrKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9n
bGliL0J1YmJsZXdyYXBMYXVuY2hlci5oCmluZGV4IDBjMmNkNTU1NGYwNTU5ZGJiNzljNDA1MDE5
OWE0ZjZkNmY2YjZhM2QuLmY1MDQ4OWNhMGY1ZDUwYmRjZjlkZjg1MmI1N2M1NGMzNDA3MmI4OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxl
d3JhcExhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xp
Yi9CdWJibGV3cmFwTGF1bmNoZXIuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBf
R1N1YnByb2Nlc3NMYXVuY2hlciBHU3VicHJvY2Vzc0xhdW5jaGVyOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotR1JlZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxld3JhcFNwYXduKEdTdWJwcm9jZXNz
TGF1bmNoZXIqLCBjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmLCBjaGFyKiog
YXJndiwgR0Vycm9yKiopOworR1JlZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxld3JhcFNwYXduKEdT
dWJwcm9jZXNzTGF1bmNoZXIqLCBjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
LCBjb25zdCBWZWN0b3I8Q1N0cmluZz4mIHN5c3RlbWRSdW5BcmdzLCBjaGFyKiogYXJndiwgR0Vy
cm9yKiopOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCBiYTVkNWNlNDk5
OWQ1NTliZTU2NjExYmE2YzQ5NTlhMDQ5MzFhZjJjLi5iZWFjMzZiMWE1MjBmODI3Y2RjNDdkYjdj
ODdhNjMxM2FkM2Q4ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KQEAgLTY0LDM4ICs2NSw3MSBAQCBzdGF0aWMg
Ym9vbCBpc0ZsYXRwYWtTcGF3blVzYWJsZSgpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShTWVNURU1E
X1JVTikgfHwgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKK1ZlY3RvcjxDU3RyaW5nPiYgUHJv
Y2Vzc0xhdW5jaGVyOjpzeXN0ZW1kUnVuQXJncygpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFZlY3RvcjxDU3RyaW5nPj4gZW1wdHlBcmdzOworCisjaWYgVVNFKFNZU1RFTURf
UlVOKQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q1N0cmluZz4+IHJlYWxBcmdz
OworICAgIGlmIChyZWFsQXJncy0+aXNFbXB0eSgpKSB7CisgICAgICAgIHJlYWxBcmdzLT5hcHBl
bmQoInN5c3RlbWQtcnVuIik7CisgICAgICAgIHJlYWxBcmdzLT5hcHBlbmQoIi0tc2NvcGUiKTsK
KyAgICAgICAgcmVhbEFyZ3MtPmFwcGVuZCgiLS1zbGljZS1pbmhlcml0Iik7CisgICAgICAgIHJl
YWxBcmdzLT5hcHBlbmQoIi0tcXVpZXQiKTsKKyAgICAgICAgcmVhbEFyZ3MtPmFwcGVuZCgiLS11
c2VyIik7CisgICAgfQorCisgICAgLy8gV2Ugd2FudCB0byBydW4gd2ViIHByb2Nlc3NlcyBpbiBh
IHNlcGFyYXRlIGNncm91cCB0byBlbnN1cmUgdGhleSBhcmUga2lsbGVkIGluZGl2aWR1YWxseSBi
eQorICAgIC8vIHN5c3RlbWQtb29tZC4gQnV0IG90aGVyIHN1YnByb2Nlc3NlcyBiZWxvbmcgaW4g
dGhlIHNhbWUgY2dyb3VwIGFzIHRoZSBVSSBwcm9jZXNzIGJlY2F1c2UKKyAgICAvLyBXZWJLaXQg
Y2Fubm90IGNvbnRpbnVlIHRvIGZ1bmN0aW9uIGlmIGEgc3VicHJvY2VzcyBvdGhlciB0aGFuIGEg
d2ViIHByb2Nlc3MgaXMga2lsbGVkLgorICAgIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5
cGUgPT0gUHJvY2Vzc1R5cGU6OldlYikKKyAgICAgICAgcmV0dXJuIHJlYWxBcmdzLmdldCgpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gZW1wdHlBcmdzLmdldCgpOworfQorI2VuZGlmCisKICNpZiBF
TkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogc3RhdGljIGJvb2wgaXNJbnNpZGVEb2NrZXIoKQog
ewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7Ci0gICAgaWYgKHJldCkKLSAgICAgICAg
cmV0dXJuICpyZXQ7Ci0KLSAgICByZXQgPSBnX2ZpbGVfdGVzdCgiLy5kb2NrZXJlbnYiLCBHX0ZJ
TEVfVEVTVF9FWElTVFMpOwotICAgIHJldHVybiAqcmV0OworICAgIHJldHVybiBnX2ZpbGVfdGVz
dCgiLy5kb2NrZXJlbnYiLCBHX0ZJTEVfVEVTVF9FWElTVFMpOwogfQogCiBzdGF0aWMgYm9vbCBp
c0luc2lkZUZsYXRwYWsoKQogewotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7Ci0gICAg
aWYgKHJldCkKLSAgICAgICAgcmV0dXJuICpyZXQ7Ci0KLSAgICByZXQgPSBnX2ZpbGVfdGVzdCgi
Ly5mbGF0cGFrLWluZm8iLCBHX0ZJTEVfVEVTVF9FWElTVFMpOwotICAgIHJldHVybiAqcmV0Owor
ICAgIHJldHVybiBnX2ZpbGVfdGVzdCgiLy5mbGF0cGFrLWluZm8iLCBHX0ZJTEVfVEVTVF9FWElT
VFMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0luc2lkZVNuYXAoKQoreworICAgIC8vIFRoZSAiU05B
UCIgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHVubGlrZWx5IHRvIGJlIHNldCBmb3IvYnkg
c29tZXRoaW5nIG90aGVyCisgICAgLy8gdGhhbiBTbmFwLCBzbyBjaGVjayBhIGNvdXBsZSBvZiBh
ZGRpdGlvbmFsIHZhcmlhYmxlcyB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuCisgICAgLy8gU2Vl
OiBodHRwczovL3NuYXBjcmFmdC5pby9kb2NzL2Vudmlyb25tZW50LXZhcmlhYmxlcworICAgIHJl
dHVybiBnX2dldGVudigiU05BUCIpICYmIGdfZ2V0ZW52KCJTTkFQX05BTUUiKSAmJiBnX2dldGVu
digiU05BUF9SRVZJU0lPTiIpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRCdWJibGV3cmFwU3Bh
d24oKQogewogICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CiAgICAgaWYgKHJldCkKICAg
ICAgICAgcmV0dXJuICpyZXQ7CiAKLSAgICAvLyBUaGUgIlNOQVAiIGVudmlyb25tZW50IHZhcmlh
YmxlIGlzIG5vdCB1bmxpa2VseSB0byBiZSBzZXQgZm9yL2J5IHNvbWV0aGluZyBvdGhlcgotICAg
IC8vIHRoYW4gU25hcCwgc28gY2hlY2sgYSBjb3VwbGUgb2YgYWRkaXRpb25hbCB2YXJpYWJsZXMg
dG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLgotICAgIC8vIFNlZTogaHR0cHM6Ly9zbmFwY3JhZnQu
aW8vZG9jcy9lbnZpcm9ubWVudC12YXJpYWJsZXMKLSAgICByZXQgPSBnX2dldGVudigiU05BUCIp
ICYmIGdfZ2V0ZW52KCJTTkFQX05BTUUiKSAmJiBnX2dldGVudigiU05BUF9SRVZJU0lPTiIpOwot
ICAgIHJldHVybiAqcmV0OworICAgIHJldHVybiAhaXNJbnNpZGVEb2NrZXIoKSAmJiAhaXNJbnNp
ZGVGbGF0cGFrKCkgJiYgIWlzSW5zaWRlU25hcCgpOworfQorI2VuZGlmCisKKyNpZiBPUyhMSU5V
WCkKK2Jvb2wgUHJvY2Vzc0xhdW5jaGVyOjpzYW5kYm94RW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2FuZGJveEVuYWJsZWQgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGNoYXIqIHNhbmRib3hFbnYgPSBnX2dldGVudigiV0VCS0lUX0ZPUkNFX1NB
TkRCT1giKSkKKyAgICAgICAgICAgIG1fc2FuZGJveEVuYWJsZWQgPSB0cmlTdGF0ZSghc3RyY21w
KHNhbmRib3hFbnYsICIxIikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3NhbmRib3hF
bmFibGVkID0gdHJpU3RhdGUobV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmdldCgiZW5hYmxlLXNhbmRib3giKSA9PSAidHJ1ZSIpOworICAgIH0KKyAgICByZXR1cm4gbV9z
YW5kYm94RW5hYmxlZCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KICNlbmRpZgogCkBAIC0xMjUsNyAr
MTU5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIHJlYWxF
eGVjdXRhYmxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVj
dXRhYmxlUGF0aCk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcHJvY2Vzc0lkZW50aWZpZXIoZ19z
dHJkdXBfcHJpbnRmKCIlIiBQUkl1NjQsIG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzSWRlbnRpZmll
ci50b1VJbnQ2NCgpKSk7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gd2Via2l0U29ja2V0KGdfc3Ry
ZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRQYWlyLmNsaWVudCkpOwotICAgIHVuc2lnbmVkIG5hcmdz
ID0gNTsgLy8gc2l6ZSBvZiB0aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9hc3luYygpCisgICAg
dW5zaWduZWQgbmFyZ3MgPSA0OyAvLyBzaXplIG9mIHRoZSBhcmd2IGFycmF5IGZvciBnX3NwYXdu
X2FzeW5jKCkKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBWZWN0b3I8Q1N0cmlu
Zz4gcHJlZml4QXJnczsKQEAgLTE0MSw2ICsxNzUsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBuYXJncysrOwogICAgIH0KICNlbmRpZgorI2lmIFVT
RShTWVNURU1EX1JVTikKKyAgICBpZiAoIXNhbmRib3hFbmFibGVkKCkgfHwgIXNob3VsZEJ1YmJs
ZXdyYXBTcGF3bigpKQorICAgICAgICBuYXJncyArPSBzeXN0ZW1kUnVuQXJncygpLnNpemUoKTsK
KyNlbmRpZgogCiAgICAgY2hhcioqIGFyZ3YgPSBnX25ld2EoY2hhciosIG5hcmdzKTsKICAgICB1
bnNpZ25lZCBpID0gMDsKQEAgLTE0OCw2ICsxODYsMTIgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogICAgIC8vIElmIHRoZXJlJ3MgYSBwcmVmaXggY29tbWFuZCwgcHV0
IGl0IGJlZm9yZSB0aGUgcmVzdCBvZiB0aGUgYXJncy4KICAgICBmb3IgKGF1dG8mIGFyZyA6IHBy
ZWZpeEFyZ3MpCiAgICAgICAgIGFyZ3ZbaSsrXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGFyZy5kYXRh
KCkpOworI2VuZGlmCisjaWYgVVNFKFNZU1RFTURfUlVOKQorICAgIGlmICghc2FuZGJveEVuYWJs
ZWQoKSB8fCAhc2hvdWxkQnViYmxld3JhcFNwYXduKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBh
cmcgOiBzeXN0ZW1kUnVuQXJncygpKQorICAgICAgICAgICAgYXJndltpKytdID0gY29uc3RfY2Fz
dDxjaGFyKj4oYXJnLmRhdGEoKSk7CisgICAgfQogI2VuZGlmCiAgICAgYXJndltpKytdID0gY29u
c3RfY2FzdDxjaGFyKj4ocmVhbEV4ZWN1dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndltpKytd
ID0gcHJvY2Vzc0lkZW50aWZpZXIuZ2V0KCk7CkBAIC0xNTcsMjggKzIwMSwyMCBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIGFyZ3ZbaSsrXSA9IGNvbnN0
X2Nhc3Q8Y2hhcio+KCItLWNvbmZpZ3VyZS1qc2MtZm9yLXRlc3RpbmciKTsKICNlbmRpZgogICAg
IGFyZ3ZbaSsrXSA9IG51bGxwdHI7Ci0gICAgYXJndltpKytdID0gbnVsbHB0cjsKIAogICAgIEdS
ZWZQdHI8R1N1YnByb2Nlc3NMYXVuY2hlcj4gbGF1bmNoZXIgPSBhZG9wdEdSZWYoZ19zdWJwcm9j
ZXNzX2xhdW5jaGVyX25ldyhHX1NVQlBST0NFU1NfRkxBR1NfSU5IRVJJVF9GRFMpKTsKICAgICBn
X3N1YnByb2Nlc3NfbGF1bmNoZXJfdGFrZV9mZChsYXVuY2hlci5nZXQoKSwgc29ja2V0UGFpci5j
bGllbnQsIHNvY2tldFBhaXIuY2xpZW50KTsKIAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKICAgICBHUmVmUHRyPEdTdWJwcm9jZXNzPiBwcm9jZXNzOwotCiAjaWYgT1MoTElOVVgp
Ci0gICAgY29uc3QgY2hhciogc2FuZGJveEVudiA9IGdfZ2V0ZW52KCJXRUJLSVRfRk9SQ0VfU0FO
REJPWCIpOwotICAgIGJvb2wgc2FuZGJveEVuYWJsZWQgPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEuZ2V0KCJlbmFibGUtc2FuZGJveCIpID09ICJ0cnVlIjsKLQotICAg
IGlmIChzYW5kYm94RW52KQotICAgICAgICBzYW5kYm94RW5hYmxlZCA9ICFzdHJjbXAoc2FuZGJv
eEVudiwgIjEiKTsKLQotICAgIGlmIChzYW5kYm94RW5hYmxlZCAmJiBpc0ZsYXRwYWtTcGF3blVz
YWJsZSgpKQorICAgIGlmIChzYW5kYm94RW5hYmxlZCgpICYmIGlzRmxhdHBha1NwYXduVXNhYmxl
KCkpCiAgICAgICAgIHByb2Nlc3MgPSBmbGF0cGFrU3Bhd24obGF1bmNoZXIuZ2V0KCksIG1fbGF1
bmNoT3B0aW9ucywgYXJndiwgc29ja2V0UGFpci5jbGllbnQsICZlcnJvci5vdXRQdHIoKSk7CiAj
aWYgRU5BQkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKICAgICAvLyBZb3UgY2Fubm90IHVzZSBidWJi
bGV3cmFwIHdpdGhpbiBGbGF0cGFrIG9yIERvY2tlciBzbyBsZXRzIGVuc3VyZSBpdCBuZXZlciBo
YXBwZW5zLgogICAgIC8vIFNuYXAgY2FuIGFsbG93IGl0IGJ1dCBoYXMgaXRzIG93biBsaW1pdGF0
aW9ucyB0aGF0IHJlcXVpcmUgd29ya2Fyb3VuZHMuCi0gICAgZWxzZSBpZiAoc2FuZGJveEVuYWJs
ZWQgJiYgIWlzSW5zaWRlRmxhdHBhaygpICYmICFpc0luc2lkZVNuYXAoKSAmJiAhaXNJbnNpZGVE
b2NrZXIoKSkKLSAgICAgICAgcHJvY2VzcyA9IGJ1YmJsZXdyYXBTcGF3bihsYXVuY2hlci5nZXQo
KSwgbV9sYXVuY2hPcHRpb25zLCBhcmd2LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGVsc2UgaWYg
KHNhbmRib3hFbmFibGVkKCkgJiYgc2hvdWxkQnViYmxld3JhcFNwYXduKCkpCisgICAgICAgIHBy
b2Nlc3MgPSBidWJibGV3cmFwU3Bhd24obGF1bmNoZXIuZ2V0KCksIG1fbGF1bmNoT3B0aW9ucywg
c3lzdGVtZFJ1bkFyZ3MoKSwgYXJndiwgJmVycm9yLm91dFB0cigpKTsKICNlbmRpZiAvLyBFTkFC
TEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogICAgIGVsc2UKICNlbmRpZiAvLyBPUyhMSU5VWCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UKaW5kZXggOWQwMGZmNDBhMzlkYTViZGU5NjNkOGJmZTM1M2E3YTcxYjYw
YzExZi4uYjQ2MjlhOTFlMGRhYzM0NzYxYjU5MTg4NTk4Zjc1NWQ4NTJkOWQ4MiAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UKQEAgLTgwLDcgKzgwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX09Q
RU5KUEVHICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBKUEVHMjAwMCBpbWFnZXMKIFdF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9TT1VQMiAiV2hldGhlciB0byBlbmFibGUgdXNhZ2Ugb2Yg
U291cCAyIGluc3RlYWQgb2YgU291cCAzLiIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZJ
TkUoVVNFX1dPRkYyICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBXT0ZGMiBXZWIgRm9u
dHMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfV1BFX1JFTkRFUkVSICJX
aGV0aGVyIHRvIGVuYWJsZSBXUEUgcmVuZGVyaW5nIiBQVUJMSUMgT04pCi1XRUJLSVRfT1BUSU9O
X0RFRklORShVU0VfU1lTVEVNRCAiV2hldGhlciB0byBlbmFibGUgam91cm5hbGQgbG9nZ2luZyIg
UFVCTElDIE9OKQorV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX1NZU1RFTUQgIldoZXRoZXIgdG8g
ZW5hYmxlIGpvdXJuYWxkIGxvZ2dpbmcgYW5kIHN5c3RlbWQtcnVuIiBQVUJMSUMgT04pCiAKICMg
UHJpdmF0ZSBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBHVEsgcG9ydC4gQ2hhbmdpbmcgdGhlc2Ug
b3B0aW9ucyBpcwogIyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLiBUaGV5IGFyZSBpbnRlbmRlZCBm
b3IgdXNlIG9ubHkgYnkgV2ViS2l0IGRldmVsb3BlcnMuCkBAIC00NDksNiArNDQ5LDkgQEAgaWYg
KFVTRV9TWVNURU1EKQogICAgIGVsc2UgKCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAi
bGlic3lzdGVtZCBpcyBuZWVkZWQgZm9yIFVTRV9TWVNURU1EIikKICAgICBlbmRpZiAoKQorICAg
IGlmIChTeXN0ZW1kX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSX0VRVUFMIDI0NikKKyAgICAgICAg
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1NZU1RFTURfUlVOIFRSVUUpCisgICAgZW5kaWYg
KCkKIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfRU5DUllQVEVEX01FRElBIEFORCBFTkFCTEVfVEhV
TkRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggNzgyOWFmZWNjMzIwMmI5YzNmODQzMTk2ZWRh
MDYwZjAzN2JiNDc3ZC4uMDNkYTQ4ZDVkZDFkZWEzODBlY2ViZGQ2N2FiYmM1MzM3NTliM2IxNCAx
MDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNXUEUuY21ha2UKQEAgLTg2LDcgKzg2LDcgQEAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0dUS0RPQyAiV2hldGhlciBvciBub3QgdG8gdXNlIGdlbmVyYXRlIGd0a2RvYy4i
IFBVQkwKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9PUEVOSlBFRyAiV2hldGhlciB0byBlbmFi
bGUgc3VwcG9ydCBmb3IgSlBFRzIwMDAgaW1hZ2VzLiIgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZJTkUoVVNFX1dPRkYyICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBXT0ZGMiBX
ZWIgRm9udHMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfV1BFX1FU
X0FQSSAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFF0NS9RTUwgcGx1Z2luIiBQ
VUJMSUMgJHtFTkFCTEVfREVWRUxPUEVSX01PREV9KQotV0VCS0lUX09QVElPTl9ERUZJTkUoVVNF
X1NZU1RFTUQgIldoZXRoZXIgdG8gZW5hYmxlIGpvdXJuYWxkIGxvZ2dpbmciIFBVQkxJQyBPTikK
K1dFQktJVF9PUFRJT05fREVGSU5FKFVTRV9TWVNURU1EICJXaGV0aGVyIHRvIGVuYWJsZSBqb3Vy
bmFsZCBsb2dnaW5nIGFuZCBzeXN0ZW1kLXJ1biIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9E
RUZJTkUoVVNFX1NPVVAyICJXaGV0aGVyIHRvIGVuYWJsZSB1c2FnZSBvZiBTb3VwIDIgaW5zdGVh
ZCBvZiBTb3VwIDMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfTENNUyAi
V2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgaW1hZ2UgY29sb3IgbWFuYWdlbWVudCB1c2lu
ZyBsaWJjbXMyLiIgUFVCTElDIE9OKQogCkBAIC0yMDksNiArMjA5LDkgQEAgaWYgKFVTRV9TWVNU
RU1EKQogICAgIGVsc2UgKCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGlic3lzdGVt
ZCBpcyBuZWVkZWQgZm9yIFVTRV9TWVNURU1EIikKICAgICBlbmRpZiAoKQorICAgIGlmIChTeXN0
ZW1kX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSX0VRVUFMIDI0NikKKyAgICAgICAgU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX1NZU1RFTURfUlVOIFRSVUUpCisgICAgZW5kaWYgKCkKIGVuZGlm
ICgpCiAKIGlmIChFTkFCTEVfRU5DUllQVEVEX01FRElBIEFORCBFTkFCTEVfVEhVTkRFUikKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2ODY3NjdkMjk4Y2Q0NWNhNzBk
NTkyNGExYjJiMmUxNDRhYmRhOGYyLi5iOTNkN2ZkNzJiMmFkYWVmYTc4ZmMxNWE3NDI4MWI2OTFl
MTg2Yzk2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMDMtMTggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5v
cmc+CisKKyAgICAgICAgW1dQRV1bR1RLXSBSdW4gd2ViIHByb2Nlc3NlcyBpbiBzZXBhcmF0ZSBj
Z3JvdXBzIHVzaW5nIHN5c3RlbWQtcnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjM0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOgorCiAyMDIxLTAzLTE2ICBLaGVtIFJh
aiAgPHJhai5raGVtQGdtYWlsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIEJ1aWxkIGZhaWxzIG9u
IFJJU0MtViB3aXRoIEdDQyAxMQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423678</attachid>
            <date>2021-03-18 18:21:53 -0700</date>
            <delta_ts>2021-03-19 06:15:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223479-20210318202152.patch</filename>
            <type>text/plain</type>
            <size>19931</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkNDg2MzdjM2IzZmI1NjZh
MDVlZWZkYzU3ZWQzNjJjOGM5MjE1NzcuLjgxYWNhMzEzNjIwMGVhODg2OTk2MGRmMmJjZDAzOWU1
YWIyMGRiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDIxLTAzLTE4ICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFtXUEVdW0dUS10g
UnVuIHdlYiBwcm9jZXNzZXMgaW4gc2VwYXJhdGUgY2dyb3VwcyB1c2luZyBzeXN0ZW1kLXJ1bgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNDc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3lzdGVtZCAy
NDggaW50cm9kdWNlcyBzeXN0ZW1kLW9vbWQsIGEgdXNlcnNwYWNlIG9vbSBraWxsZXIgY29udHJp
YnV0ZWQgYnkgRmFjZWJvb2suIFVubGlrZQorICAgICAgICBlYXJseW9vbSBhbmQgb3RoZXIgZWFy
bGllciBraWxsZXJzLCBzeXN0ZW1kLW9vbWQgb3BlcmF0ZXMgd2l0aCBjZ3JvdXAtbGV2ZWwgZ3Jh
bnVsYXJpdHkuCisgICAgICAgIFRoYXQgaXMsIGlmIGEgcHJvY2VzcyBpbiBhbnkgZ2l2ZW4gY2dy
b3VwIGlzIHVzaW5nIGFuIGV4Y2Vzc2l2ZSBhbW91bnQgb2YgbWVtb3J5LAorICAgICAgICBzeXN0
ZW1kLW9vbWQgd2lsbCBraWxsIHRoZSBlbnRpcmUgY2dyb3VwIGFsbCBhdCBvbmNlLiBUaGlzIGhh
cyBpbXBsaWNhdGlvbnMgZm9yIGRlc2t0b3AKKyAgICAgICAgZW52aXJvbm1lbnRzIGxpa2UgR05P
TUUgYW5kIEtERSwgd2hpY2ggaGF2ZSBzdGFydGVkIGxhdW5jaGluZyBhcHBsaWNhdGlvbnMgaW4g
c2VwYXJhdGUKKyAgICAgICAgY2dyb3VwcyB0byBlbnN1cmUgYSBtaXNiZWhhdmluZyBhcHBsaWNh
dGlvbiBkb2VzIG5vdCBjYXVzZSB0aGUgZW50aXJlIGRlc2t0b3AgdG8gYmUga2lsbGVkLgorICAg
ICAgICBJdCBhbHNvIGhhcyBpbXBsaWNhdGlvbnMgZm9yIG11bHRpcHJvY2VzcyBhcHBsaWNhdGlv
bnMgbGlrZSB0ZXJtaW5hbHMgYW5kIHdlYiBicm93c2Vycy4KKworICAgICAgICBJbiBXZWJLaXQs
IHRoZSB3ZWIgcHJvY2Vzc2VzIGFyZSB1bnRydXN0ZWQgYW5kIGFyZSBkZXNpZ25lZCB0byBjcmFz
aCBhbmQgYmUgcmVzdGFydGVkCisgICAgICAgIGluZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlci4g
SWYgYSBzaW5nbGUgd2ViIHByb2Nlc3MgdXNlcyBhbiBleGNlc3NpdmUgYW1vdW50IG9mIG1lbW9y
eSwgd2UKKyAgICAgICAgZG8gbm90IHdhbnQgc3lzdGVtZC1vb21kIHRvIGtpbGwgdGhlIGVudGly
ZSBicm93c2VyOyBpbnN0ZWFkLCBpdCBzaG91bGQganVzdCBraWxsIHRoZQorICAgICAgICBhZmZl
Y3RlZCB3ZWIgcHJvY2Vzcy4gV2UgY2FuIGFjaGlldmUgdGhpcyB1c2luZyBzeXN0ZW1kLXJ1bi4g
T2YgY291cnNlLCB0aGVyZSBpcyBubyBwb2ludCBpbgorICAgICAgICBkb2luZyB0aGlzIHVubGVz
cyB3ZSBhcmUgYWxyZWFkeSBidWlsZGluZyB3aXRoIC1EVVNFX1NZU1RFTUQ9T04uIEFsc28sIHdl
J2xsIHJlc3RyaWN0IHRoaXMKKyAgICAgICAgYmVoYXZpb3IgdG8gc3lzdGVtZCAyNDYgb3IgbmV3
ZXIsIHdoaWNoIGFkZHMgdGhlIC0tc2xpY2UtaW5oZXJpdCBhcmd1bWVudCB0byBzeXN0ZW1kLXJ1
bi4KKyAgICAgICAgQm90aCB0aGUgYnViYmxld3JhcCBzYW5kYm94IGxhdW5jaGVyIGFuZCB0aGUg
bGVnYWN5IHVuc2FuZGJveGVkIHByb2Nlc3MgbGF1bmNoZXIgYXJlCisgICAgICAgIG1vZGlmaWVk
LiBUaGUgZmxhdHBhay1zcGF3biBsYXVuY2hlciBpcyBub3QgbW9kaWZpZWQgYmVjYXVzZSB0aGUg
c3Bhd24gcG9ydGFsIGFscmVhZHkgcnVucworICAgICAgICBzdWJwcm9jZXNzZXMgaW4gYSBuZXcg
Y2dyb3VwLiBOb3RlIHRoYXQgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGRvIHRoaXMgZm9yIHRo
ZSBuZXR3b3JrCisgICAgICAgIHByb2Nlc3MgKG9yIG90aGVyIHRydXN0ZWQgc3VicHJvY2Vzc2Vz
KSwgc2luY2UgV2ViS2l0IGlzIG5vdCBkZXNpZ25lZCB0byBjb3BlIHdpdGggdGhlCisgICAgICAg
IG5ldHdvcmsgcHJvY2VzcyBkaXNhcHBlYXJpbmcuIE9ubHkgdGhlIHdlYiBwcm9jZXNzZXMgc2hv
dWxkIGJlIHJ1biBpbiBzZXBhcmF0ZSBjZ3JvdXBzLgorCisgICAgICAgIEJlZm9yZSwgYWxsIHBy
b2Nlc3NlcyAoaW5jbHVkaW5nIHR3byB3ZWIgcHJvY2Vzc2VzKSBpbiBvbmUgY2dyb3VwOgorCisg
ICAgICAgIOKUgiAgIOKUgiDilIIg4pSc4pSAYXBwLW9yZy5nbm9tZS5UZXJtaW5hbC5zbGljZQor
ICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilJzilIB2dGUtc3Bhd24tZjVlYTIyNWYtMTIyZC00
ZTkxLTkwZDctY2I3MzhiZjQ5ZjRhLnNjb3BlCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKU
giDilJzilIA3NzcyMCBiYXNoCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3
ODg3MSBzeXN0ZW1kLWNnbHMKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUlOKUgDc4
ODcyIGxlc3MKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSc4pSAdnRlLXNwYXduLTA0MzEw
M2RlLTRlYzAtNDZiZS05ZWRkLTI3YTcwOWJlNTFhYy5zY29wZQorICAgICAgICDilIIgICDilIIg
4pSCIOKUgiDilIIg4pSc4pSAMzk3NjYgYmFzaAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDi
lIIg4pSc4pSANzg1OTAgZXBpcGhhbnkKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKU
nOKUgDc4NTk4IC91c3IvbGliZXhlYy93ZWJraXQyZ3RrLTQuMC9XZWJLaXROZXR3b3JrUHJvY2Vz
cyAxIDIwCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3ODY2MyAvdXNyL2Jp
bi9id3JhcCAtLWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdzPTQ5Cisg
ICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3ODY2NCAvdXNyL2Jpbi9id3JhcCAt
LWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdzPTQ5CisgICAgICAgIOKU
giAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3ODY2NyAvdXNyL2Jpbi94ZGctZGJ1cy1wcm94eSAt
LWFyZ3M9NDkKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4NjY5IC91c3Iv
YmluL2J3cmFwIC0tYXJncyA1MyAtLSAvdXNyL2Jpbi94ZGctZGJ1cy1wcm94eSAtLWFyZ3M9NTAK
KyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4NjcwIC91c3IvYmluL2J3cmFw
IC0tYXJncyA1MyAtLSAvdXNyL2Jpbi94ZGctZGJ1cy1wcm94eSAtLWFyZ3M9NTAKKyAgICAgICAg
4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4NjcxIC91c3IvYmluL3hkZy1kYnVzLXByb3h5
IC0tYXJncz01MAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSANzg2NzMgL3Vz
ci9iaW4vYndyYXAgLS1hcmdzIDUwIC0tIC91c3IvbGliZXhlYy93ZWJraXQyZ3RrLTQuMC9XZWJL
aXRXZWJQcm9jZXNzIDExIDQ0CisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3
ODY3NCAvdXNyL2Jpbi9id3JhcCAtLWFyZ3MgNTAgLS0gL3Vzci9saWJleGVjL3dlYmtpdDJndGst
NC4wL1dlYktpdFdlYlByb2Nlc3MgMTEgNDQKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSC
IOKUnOKUgDc4Njc1IC91c3IvYmluL2J3cmFwIC0tYXJncyA1NyAtLSAvdXNyL2xpYmV4ZWMvd2Vi
a2l0Mmd0ay00LjAvV2ViS2l0V2ViUHJvY2VzcyAxNyA1MworICAgICAgICDilIIgICDilIIg4pSC
IOKUgiDilIIg4pSc4pSANzg2NzYgL3Vzci9saWJleGVjL3dlYmtpdDJndGstNC4wL1dlYktpdFdl
YlByb2Nlc3MgMTEgNDQKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDc4Njc5
IC91c3IvYmluL2J3cmFwIC0tYXJncyA1NyAtLSAvdXNyL2xpYmV4ZWMvd2Via2l0Mmd0ay00LjAv
V2ViS2l0V2ViUHJvY2VzcyAxNyA1MworICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSU
4pSANzg2ODAgL3Vzci9saWJleGVjL3dlYmtpdDJndGstNC4wL1dlYktpdFdlYlByb2Nlc3MgMTcg
NTMKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSU4pSAZ25vbWUtdGVybWluYWwtc2VydmVy
LnNlcnZpY2UKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIgICDilJTilIAzNTA2NyAvdXNyL2xp
YmV4ZWMvZ25vbWUtdGVybWluYWwtc2VydmVyCisKKyAgICAgICAgQWZ0ZXIsIHdlYiBwcm9jZXNz
ZXMgc3BsaXQgaW50byBzZXBhcmF0ZSBjZ3JvdXBzOgorCisgICAgICAgIOKUgiAgIOKUgiDilIIg
4pSc4pSAYXBwLW9yZy5nbm9tZS5UZXJtaW5hbC5zbGljZQorICAgICAgICDilIIgICDilIIg4pSC
IOKUgiDilJzilIB2dGUtc3Bhd24tZjVlYTIyNWYtMTIyZC00ZTkxLTkwZDctY2I3MzhiZjQ5ZjRh
LnNjb3BlCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA3NzcyMCBiYXNoCisg
ICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjQ3MiBlcGlwaGFueQorICAgICAg
ICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY0ODEgL2hvbWUvbWNhdGFuemFyby9Qcm9q
ZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMvd2Via2l0Mmd0ay00LjAvV2ViS2l0TmV0d29ya1By
b2Nlc3MgMSAxOAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY1NDUgL3Vz
ci9iaW4vYndyYXAgLS1hcmdzIDUxIC0tIC91c3IvYmluL3hkZy1kYnVzLXByb3h5IC0tYXJncz00
OAorICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY1NDYgL3Vzci9iaW4vYndy
YXAgLS1hcmdzIDUxIC0tIC91c3IvYmluL3hkZy1kYnVzLXByb3h5IC0tYXJncz00OAorICAgICAg
ICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSc4pSAODY1NDggL3Vzci9iaW4veGRnLWRidXMtcHJv
eHkgLS1hcmdzPTQ4CisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjU1MCAv
dXNyL2Jpbi9id3JhcCAtLWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdz
PTQ5CisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjU1MSAvdXNyL2Jpbi9i
d3JhcCAtLWFyZ3MgNTIgLS0gL3Vzci9iaW4veGRnLWRidXMtcHJveHkgLS1hcmdzPTQ5CisgICAg
ICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJTilIA4NjU1MiAvdXNyL2Jpbi94ZGctZGJ1cy1w
cm94eSAtLWFyZ3M9NDkKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSc4pSAdnRlLXNwYXdu
LTA0MzEwM2RlLTRlYzAtNDZiZS05ZWRkLTI3YTcwOWJlNTFhYy5zY29wZQorICAgICAgICDilIIg
ICDilIIg4pSCIOKUgiDilIIg4pSc4pSAMzk3NjYgYmFzaAorICAgICAgICDilIIgICDilIIg4pSC
IOKUgiDilIIg4pSc4pSAODY3Njkgc3lzdGVtZC1jZ2xzCisgICAgICAgIOKUgiAgIOKUgiDilIIg
4pSCIOKUgiDilJTilIA4Njc3MCBsZXNzCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUnOKU
gHJ1bi1yNGIxYWNmZDZhMTlhNGZlNzg2MjJjOGI2MDhkZGU2ZWYuc2NvcGUKKyAgICAgICAg4pSC
ICAg4pSCIOKUgiDilIIg4pSCIOKUnOKUgDg2NTU0IC91c3IvYmluL2J3cmFwIC0tYXJncyA0OSAt
LSAvaG9tZS9tY2F0YW56YXJvL1Byb2plY3RzL0dOT01FL2luc3RhbGwvbGliZXhlYy93ZWJraXQy
Z3RrLTQuMC9XZWJLaXRXZWJQcm9jZXNzIDExIDQzCisgICAgICAgIOKUgiAgIOKUgiDilIIg4pSC
IOKUgiDilJzilIA4NjU1NSAvdXNyL2Jpbi9id3JhcCAtLWFyZ3MgNDkgLS0gL2hvbWUvbWNhdGFu
emFyby9Qcm9qZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMvd2Via2l0Mmd0ay00LjAvV2ViS2l0
V2ViUHJvY2VzcyAxMSA0MworICAgICAgICDilIIgICDilIIg4pSCIOKUgiDilIIg4pSU4pSAODY1
NTggL2hvbWUvbWNhdGFuemFyby9Qcm9qZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMvd2Via2l0
Mmd0ay00LjAvV2ViS2l0V2ViUHJvY2VzcyAxMSA0MworICAgICAgICDilIIgICDilIIg4pSCIOKU
giDilJzilIBydW4tcjAyZjk4ZDU2NjU1MTQ2NzNhNzMwNjY4OTZiNGExYzY1LnNjb3BlCisgICAg
ICAgIOKUgiAgIOKUgiDilIIg4pSCIOKUgiDilJzilIA4NjU1NiAvdXNyL2Jpbi9id3JhcCAtLWFy
Z3MgNTYgLS0gL2hvbWUvbWNhdGFuemFyby9Qcm9qZWN0cy9HTk9NRS9pbnN0YWxsL2xpYmV4ZWMv
d2Via2l0Mmd0ay00LjAvV2ViS2l0V2ViUHJvY2VzcyAxNyA1MgorICAgICAgICDilIIgICDilIIg
4pSCIOKUgiDilIIg4pSc4pSAODY1NjAgL3Vzci9iaW4vYndyYXAgLS1hcmdzIDU2IC0tIC9ob21l
L21jYXRhbnphcm8vUHJvamVjdHMvR05PTUUvaW5zdGFsbC9saWJleGVjL3dlYmtpdDJndGstNC4w
L1dlYktpdFdlYlByb2Nlc3MgMTcgNTIKKyAgICAgICAg4pSCICAg4pSCIOKUgiDilIIg4pSCIOKU
lOKUgDg2NTYxIC9ob21lL21jYXRhbnphcm8vUHJvamVjdHMvR05PTUUvaW5zdGFsbC9saWJleGVj
L3dlYmtpdDJndGstNC4wL1dlYktpdFdlYlByb2Nlc3MgMTcgNTIKKyAgICAgICAg4pSCICAg4pSC
IOKUgiDilIIg4pSU4pSAZ25vbWUtdGVybWluYWwtc2VydmVyLnNlcnZpY2UKKyAgICAgICAg4pSC
ICAg4pSCIOKUgiDilIIgICDilJTilIAzNTA2NyAvdXNyL2xpYmV4ZWMvZ25vbWUtdGVybWluYWwt
c2VydmVyCisKKyAgICAgICAgKE5vdGUgdGhhdCBid3JhcCBleGVjcyBpdHNlbGYsIHNvIHRoZXJl
IGFyZSB0d28gYndyYXAgcHJvY2Vzc2VzIHdpdGggaWRlbnRpY2FsIGNvbW1hbmQgbGluZXMgZm9y
IGV2ZXJ5IHdlYiBwcm9jZXNzIGFuZCB4ZGctZGJ1cy1wcm94eSBwcm9jZXNzLikKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpYREdEQnVzUHJveHlMYXVuY2hlcjo6bGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6YnVi
Ymxld3JhcFNwYXduKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3
cmFwTGF1bmNoZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNz
TGF1bmNoZXJHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpzeXN0
ZW1kUnVuQXJncyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OmlzSW5zaWRlRG9ja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6aXNJbnNpZGVGbGF0cGFrKToKKyAgICAgICAgKFdlYktpdDo6aXNJbnNp
ZGVTbmFwKToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkQnViYmxld3JhcFNwYXduKToKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpzYW5kYm94RW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisKIDIwMjEtMDMt
MTggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBIYW5kbGUgZW1w
dHkgYm91bmQgc2l6ZSBkdXJpbmcgYW5pbWF0ZWQgcmVzaXppbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggMTA4MWJhMmE1
YmZjMzRiOWZiNzNhZjg4NTEyNTNlNzhlYWFlYjNjOC4uOGRiODNiNWE0Y2VmN2JhZWVhNzJmNTA0
NzM0NWFjZWNiMTY0MWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTEyMyw2ICsxMjQsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKKyNpZiBVU0UoU1lTVEVNRF9SVU4pIHx8IEVOQUJMRShC
VUJCTEVXUkFQX1NBTkRCT1gpCisgICAgVmVjdG9yPENTdHJpbmc+JiBzeXN0ZW1kUnVuQXJncygp
IGNvbnN0OworI2VuZGlmCisjaWYgT1MoTElOVVgpCisgICAgYm9vbCBzYW5kYm94RW5hYmxlZCgp
IGNvbnN0OworICAgIG11dGFibGUgVHJpU3RhdGUgbV9zYW5kYm94RW5hYmxlZCA9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOworI2VuZGlmCisKICAgICBDbGllbnQqIG1fY2xpZW50OwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKaW5kZXggZTE4MzAxMjllNDVh
NDQ4MDJmNGM2OWJhOTg4OWYyZGMyZTkzOTAxZS4uYWVmYTYyOWRjYjI4ZTAxMzU4ZWVlN2M0Zjdm
Y2U5M2JkNWI0YThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMjM1LDcgKzIzNSw3
IEBAIHB1YmxpYzoKICAgICAgICAgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zIGxhdW5j
aE9wdGlvbnM7CiAgICAgICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1
bmNoZXI6OlByb2Nlc3NUeXBlOjpEQnVzUHJveHk7CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKLSAgICAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gcHJvY2VzcyA9IGJ1YmJs
ZXdyYXBTcGF3bihsYXVuY2hlci5nZXQoKSwgbGF1bmNoT3B0aW9ucywgYXJndiwgJmVycm9yLm91
dFB0cigpKTsKKyAgICAgICAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gcHJvY2VzcyA9IGJ1YmJsZXdy
YXBTcGF3bihsYXVuY2hlci5nZXQoKSwgbGF1bmNoT3B0aW9ucywgeyB9LCBhcmd2LCAmZXJyb3Iu
b3V0UHRyKCkpOwogICAgICAgICBpZiAoIXByb2Nlc3MuZ2V0KCkpCiAgICAgICAgICAgICBnX2Vy
cm9yKCJGYWlsZWQgdG8gc3RhcnQgZGJ1cyBwcm94eTogJXMiLCBlcnJvci0+bWVzc2FnZSk7CiAK
QEAgLTc0MCw3ICs3NDAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVbnNoYXJlTmV0d29yayhQcm9j
ZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1HUmVmUHRyPEdTdWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1
bmNoT3B0aW9ucywgY2hhcioqIGFyZ3YsIEdFcnJvciAqKmVycm9yKQorR1JlZlB0cjxHU3VicHJv
Y2Vzcz4gYnViYmxld3JhcFNwYXduKEdTdWJwcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBjb25z
dCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGNvbnN0IFZl
Y3RvcjxDU3RyaW5nPiYgc3lzdGVtZFJ1bkFyZ3MsIGNoYXIqKiBhcmd2LCBHRXJyb3IqKiBlcnJv
cikKIHsKICAgICBBU1NFUlQobGF1bmNoZXIpOwogCkBAIC05MjgsOSArOTI4LDExIEBAIEdSZWZQ
dHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVu
Y2hlciwgY29uc3QgUHJvY2VzCiAgICAgICAgICItLSIsCiAgICAgfTsKIAotICAgIGNoYXIqKiBu
ZXdBcmd2ID0gZ19uZXdhKGNoYXIqLCBnX3N0cnZfbGVuZ3RoKGFyZ3YpICsgYndyYXBBcmdzLnNp
emUoKSArIDEpOworICAgIGNoYXIqKiBuZXdBcmd2ID0gZ19uZXdhKGNoYXIqLCBzeXN0ZW1kUnVu
QXJncy5zaXplKCkgKyBnX3N0cnZfbGVuZ3RoKGFyZ3YpICsgYndyYXBBcmdzLnNpemUoKSArIDEp
OwogICAgIHNpemVfdCBpID0gMDsKIAorICAgIGZvciAoYXV0byYgYXJnIDogc3lzdGVtZFJ1bkFy
Z3MpCisgICAgICAgIG5ld0FyZ3ZbaSsrXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGFyZy5kYXRhKCkp
OwogICAgIGZvciAoYXV0byYgYXJnIDogYndyYXBBcmdzKQogICAgICAgICBuZXdBcmd2W2krK10g
PSBjb25zdF9jYXN0PGNoYXIqPihhcmcuZGF0YSgpKTsKICAgICBmb3IgKHNpemVfdCB4ID0gMDsg
YXJndlt4XTsgeCsrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmgKaW5kZXggMGMyY2Q1NTU0ZjA1NTlkYmI3
OWM0MDUwMTk5YTRmNmQ2ZjZiNmEzZC4uZjUwNDg5Y2EwZjVkNTBiZGNmOWRmODUyYjU3YzU0YzM0
MDcyYjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xp
Yi9CdWJibGV3cmFwTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYg
c3RydWN0IF9HU3VicHJvY2Vzc0xhdW5jaGVyIEdTdWJwcm9jZXNzTGF1bmNoZXI7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1HUmVmUHRyPEdTdWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1
YnByb2Nlc3NMYXVuY2hlciosIGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYs
IGNoYXIqKiBhcmd2LCBHRXJyb3IqKik7CitHUmVmUHRyPEdTdWJwcm9jZXNzPiBidWJibGV3cmFw
U3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciosIGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYsIGNvbnN0IFZlY3RvcjxDU3RyaW5nPiYgc3lzdGVtZFJ1bkFyZ3MsIGNoYXIqKiBh
cmd2LCBHRXJyb3IqKik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCmluZGV4IDk0
MDhjMTZkYzM5YjY5MWRlZjRmNzY3NzU0NzhkZGFhMzhhZWZmZjYuLmY5MzljNDkwYTJhMjc4NTc3
MDBmMTc1YzU2MzgwMGE3ZGM3NzlmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2lu
Y2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgpAQCAtNjQsMzggKzY1LDY5IEBA
IHN0YXRpYyBib29sIGlzRmxhdHBha1NwYXduVXNhYmxlKCkKIH0KICNlbmRpZgogCi0jaWYgRU5B
QkxFKEJVQkJMRVdSQVBfU0FOREJPWCkKLXN0YXRpYyBib29sIGlzSW5zaWRlRG9ja2VyKCkKKyNp
ZiBVU0UoU1lTVEVNRF9SVU4pIHx8IEVOQUJMRShCVUJCTEVXUkFQX1NBTkRCT1gpCitWZWN0b3I8
Q1N0cmluZz4mIFByb2Nlc3NMYXVuY2hlcjo6c3lzdGVtZFJ1bkFyZ3MoKSBjb25zdAogewotICAg
IHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7Ci0gICAgaWYgKHJldCkKLSAgICAgICAgcmV0dXJu
ICpyZXQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxDU3RyaW5nPj4gZW1wdHlB
cmdzOworCisjaWYgVVNFKFNZU1RFTURfUlVOKQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8Q1N0cmluZz4+IHJlYWxBcmdzOworICAgIGlmIChyZWFsQXJncy0+aXNFbXB0eSgpKSB7
CisgICAgICAgIHJlYWxBcmdzLT5hcHBlbmQoInN5c3RlbWQtcnVuIik7CisgICAgICAgIHJlYWxB
cmdzLT5hcHBlbmQoIi0tc2NvcGUiKTsKKyAgICAgICAgcmVhbEFyZ3MtPmFwcGVuZCgiLS1zbGlj
ZS1pbmhlcml0Iik7CisgICAgICAgIHJlYWxBcmdzLT5hcHBlbmQoIi0tcXVpZXQiKTsKKyAgICAg
ICAgcmVhbEFyZ3MtPmFwcGVuZCgiLS11c2VyIik7CisgICAgfQogCi0gICAgcmV0ID0gZ19maWxl
X3Rlc3QoIi8uZG9ja2VyZW52IiwgR19GSUxFX1RFU1RfRVhJU1RTKTsKLSAgICByZXR1cm4gKnJl
dDsKKyAgICAvLyBXZSB3YW50IHRvIHJ1biB3ZWIgcHJvY2Vzc2VzIGluIGEgc2VwYXJhdGUgY2dy
b3VwIHRvIGVuc3VyZSB0aGV5IGFyZSBraWxsZWQgaW5kaXZpZHVhbGx5IGJ5CisgICAgLy8gc3lz
dGVtZC1vb21kLiBCdXQgb3RoZXIgc3VicHJvY2Vzc2VzIGJlbG9uZyBpbiB0aGUgc2FtZSBjZ3Jv
dXAgYXMgdGhlIFVJIHByb2Nlc3MgYmVjYXVzZQorICAgIC8vIFdlYktpdCBjYW5ub3QgY29udGlu
dWUgdG8gZnVuY3Rpb24gaWYgYSBzdWJwcm9jZXNzIG90aGVyIHRoYW4gYSB3ZWIgcHJvY2VzcyBp
cyBraWxsZWQuCisgICAgaWYgKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNz
VHlwZTo6V2ViKQorICAgICAgICByZXR1cm4gcmVhbEFyZ3MuZ2V0KCk7CisjZW5kaWYKKworICAg
IHJldHVybiBlbXB0eUFyZ3MuZ2V0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlzSW5zaWRlRmxhdHBh
aygpCitzdGF0aWMgYm9vbCBpc0luc2lkZURvY2tlcigpCiB7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PGJvb2w+IHJldDsKLSAgICBpZiAocmV0KQotICAgICAgICByZXR1cm4gKnJldDsKKyAgICByZXR1
cm4gZ19maWxlX3Rlc3QoIi8uZG9ja2VyZW52IiwgR19GSUxFX1RFU1RfRVhJU1RTKTsKK30KIAot
ICAgIHJldCA9IGdfZmlsZV90ZXN0KCIvLmZsYXRwYWstaW5mbyIsIEdfRklMRV9URVNUX0VYSVNU
Uyk7Ci0gICAgcmV0dXJuICpyZXQ7CitzdGF0aWMgYm9vbCBpc0luc2lkZUZsYXRwYWsoKQorewor
ICAgIHJldHVybiBnX2ZpbGVfdGVzdCgiLy5mbGF0cGFrLWluZm8iLCBHX0ZJTEVfVEVTVF9FWElT
VFMpOwogfQogCiBzdGF0aWMgYm9vbCBpc0luc2lkZVNuYXAoKQoreworICAgIC8vIFRoZSAiU05B
UCIgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHVubGlrZWx5IHRvIGJlIHNldCBmb3IvYnkg
c29tZXRoaW5nIG90aGVyCisgICAgLy8gdGhhbiBTbmFwLCBzbyBjaGVjayBhIGNvdXBsZSBvZiBh
ZGRpdGlvbmFsIHZhcmlhYmxlcyB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuCisgICAgLy8gU2Vl
OiBodHRwczovL3NuYXBjcmFmdC5pby9kb2NzL2Vudmlyb25tZW50LXZhcmlhYmxlcworICAgIHJl
dHVybiBnX2dldGVudigiU05BUCIpICYmIGdfZ2V0ZW52KCJTTkFQX05BTUUiKSAmJiBnX2dldGVu
digiU05BUF9SRVZJU0lPTiIpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRCdWJibGV3cmFwU3Bh
d24oKQogewogICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiByZXQ7CiAgICAgaWYgKHJldCkKICAg
ICAgICAgcmV0dXJuICpyZXQ7CiAKLSAgICAvLyBUaGUgIlNOQVAiIGVudmlyb25tZW50IHZhcmlh
YmxlIGlzIG5vdCB1bmxpa2VseSB0byBiZSBzZXQgZm9yL2J5IHNvbWV0aGluZyBvdGhlcgotICAg
IC8vIHRoYW4gU25hcCwgc28gY2hlY2sgYSBjb3VwbGUgb2YgYWRkaXRpb25hbCB2YXJpYWJsZXMg
dG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLgotICAgIC8vIFNlZTogaHR0cHM6Ly9zbmFwY3JhZnQu
aW8vZG9jcy9lbnZpcm9ubWVudC12YXJpYWJsZXMKLSAgICByZXQgPSBnX2dldGVudigiU05BUCIp
ICYmIGdfZ2V0ZW52KCJTTkFQX05BTUUiKSAmJiBnX2dldGVudigiU05BUF9SRVZJU0lPTiIpOwot
ICAgIHJldHVybiAqcmV0OworICAgIHJldHVybiAhaXNJbnNpZGVEb2NrZXIoKSAmJiAhaXNJbnNp
ZGVGbGF0cGFrKCkgJiYgIWlzSW5zaWRlU25hcCgpOworfQorI2VuZGlmCisKKyNpZiBPUyhMSU5V
WCkKK2Jvb2wgUHJvY2Vzc0xhdW5jaGVyOjpzYW5kYm94RW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2FuZGJveEVuYWJsZWQgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGNoYXIqIHNhbmRib3hFbnYgPSBnX2dldGVudigiV0VCS0lUX0ZPUkNFX1NB
TkRCT1giKSkKKyAgICAgICAgICAgIG1fc2FuZGJveEVuYWJsZWQgPSB0cmlTdGF0ZSghc3RyY21w
KHNhbmRib3hFbnYsICIxIikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3NhbmRib3hF
bmFibGVkID0gdHJpU3RhdGUobV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmdldCgiZW5hYmxlLXNhbmRib3giKSA9PSAidHJ1ZSIpOworICAgIH0KKyAgICByZXR1cm4gbV9z
YW5kYm94RW5hYmxlZCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KICNlbmRpZgogCkBAIC0xNDEsNiAr
MTczLDEwIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAg
bmFyZ3MrKzsKICAgICB9CiAjZW5kaWYKKyNpZiBVU0UoU1lTVEVNRF9SVU4pCisgICAgaWYgKCFz
YW5kYm94RW5hYmxlZCgpIHx8ICFzaG91bGRCdWJibGV3cmFwU3Bhd24oKSkKKyAgICAgICAgbmFy
Z3MgKz0gc3lzdGVtZFJ1bkFyZ3MoKS5zaXplKCk7CisjZW5kaWYKIAogICAgIGNoYXIqKiBhcmd2
ID0gZ19uZXdhKGNoYXIqLCBuYXJncyk7CiAgICAgdW5zaWduZWQgaSA9IDA7CkBAIC0xNDgsNiAr
MTg0LDEyIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAvLyBJ
ZiB0aGVyZSdzIGEgcHJlZml4IGNvbW1hbmQsIHB1dCBpdCBiZWZvcmUgdGhlIHJlc3Qgb2YgdGhl
IGFyZ3MuCiAgICAgZm9yIChhdXRvJiBhcmcgOiBwcmVmaXhBcmdzKQogICAgICAgICBhcmd2W2kr
K10gPSBjb25zdF9jYXN0PGNoYXIqPihhcmcuZGF0YSgpKTsKKyNlbmRpZgorI2lmIFVTRShTWVNU
RU1EX1JVTikKKyAgICBpZiAoIXNhbmRib3hFbmFibGVkKCkgfHwgIXNob3VsZEJ1YmJsZXdyYXBT
cGF3bigpKSB7CisgICAgICAgIGZvciAoYXV0byYgYXJnIDogc3lzdGVtZFJ1bkFyZ3MoKSkKKyAg
ICAgICAgICAgIGFyZ3ZbaSsrXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGFyZy5kYXRhKCkpOworICAg
IH0KICNlbmRpZgogICAgIGFyZ3ZbaSsrXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxFeGVjdXRh
YmxlUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbaSsrXSA9IHByb2Nlc3NJZGVudGlmaWVyLmdldCgp
OwpAQCAtMTY1LDE5ICsyMDcsMTMgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+IHByb2Nlc3M7CiAKICNpZiBPUyhMSU5VWCkK
LSAgICBjb25zdCBjaGFyKiBzYW5kYm94RW52ID0gZ19nZXRlbnYoIldFQktJVF9GT1JDRV9TQU5E
Qk9YIik7Ci0gICAgYm9vbCBzYW5kYm94RW5hYmxlZCA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5nZXQoImVuYWJsZS1zYW5kYm94IikgPT0gInRydWUiOwotCi0gICAg
aWYgKHNhbmRib3hFbnYpCi0gICAgICAgIHNhbmRib3hFbmFibGVkID0gIXN0cmNtcChzYW5kYm94
RW52LCAiMSIpOwotCi0gICAgaWYgKHNhbmRib3hFbmFibGVkICYmIGlzRmxhdHBha1NwYXduVXNh
YmxlKCkpCisgICAgaWYgKHNhbmRib3hFbmFibGVkKCkgJiYgaXNGbGF0cGFrU3Bhd25Vc2FibGUo
KSkKICAgICAgICAgcHJvY2VzcyA9IGZsYXRwYWtTcGF3bihsYXVuY2hlci5nZXQoKSwgbV9sYXVu
Y2hPcHRpb25zLCBhcmd2LCBzb2NrZXRQYWlyLmNsaWVudCwgJmVycm9yLm91dFB0cigpKTsKICNp
ZiBFTkFCTEUoQlVCQkxFV1JBUF9TQU5EQk9YKQogICAgIC8vIFlvdSBjYW5ub3QgdXNlIGJ1YmJs
ZXdyYXAgd2l0aGluIEZsYXRwYWsgb3IgRG9ja2VyIHNvIGxldHMgZW5zdXJlIGl0IG5ldmVyIGhh
cHBlbnMuCiAgICAgLy8gU25hcCBjYW4gYWxsb3cgaXQgYnV0IGhhcyBpdHMgb3duIGxpbWl0YXRp
b25zIHRoYXQgcmVxdWlyZSB3b3JrYXJvdW5kcy4KLSAgICBlbHNlIGlmIChzYW5kYm94RW5hYmxl
ZCAmJiAhaXNJbnNpZGVGbGF0cGFrKCkgJiYgIWlzSW5zaWRlU25hcCgpICYmICFpc0luc2lkZURv
Y2tlcigpKQotICAgICAgICBwcm9jZXNzID0gYnViYmxld3JhcFNwYXduKGxhdW5jaGVyLmdldCgp
LCBtX2xhdW5jaE9wdGlvbnMsIGFyZ3YsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZWxzZSBpZiAo
c2FuZGJveEVuYWJsZWQgJiYgc2hvdWxkQnViYmxld3JhcFNwYXduKCkpCisgICAgICAgIHByb2Nl
c3MgPSBidWJibGV3cmFwU3Bhd24obGF1bmNoZXIuZ2V0KCksIG1fbGF1bmNoT3B0aW9ucywgc3lz
dGVtZFJ1bkFyZ3MoKSwgYXJndiwgJmVycm9yLm91dFB0cigpKTsKICNlbmRpZiAvLyBFTkFCTEUo
QlVCQkxFV1JBUF9TQU5EQk9YKQogICAgIGVsc2UKICNlbmRpZiAvLyBPUyhMSU5VWCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UKaW5kZXggYTNjNTg3ZjkzZjIzOTk4Mzk1MGY5YTA3YjVmNDI2NmUyZjUzMDFk
Yi4uOTQ0ZGE1ODUyNjU5ZjRkNjI4MzI4MTZhMDEzZjlhNTdmMjhkNTc1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKQEAgLTgwLDcgKzgwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX09QRU5K
UEVHICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBKUEVHMjAwMCBpbWFnZXMKIFdFQktJ
VF9PUFRJT05fREVGSU5FKFVTRV9TT1VQMiAiV2hldGhlciB0byBlbmFibGUgdXNhZ2Ugb2YgU291
cCAyIGluc3RlYWQgb2YgU291cCAzLiIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZJTkUo
VVNFX1dPRkYyICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBXT0ZGMiBXZWIgRm9udHMu
IiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfV1BFX1JFTkRFUkVSICJXaGV0
aGVyIHRvIGVuYWJsZSBXUEUgcmVuZGVyaW5nIiBQVUJMSUMgT04pCi1XRUJLSVRfT1BUSU9OX0RF
RklORShVU0VfU1lTVEVNRCAiV2hldGhlciB0byBlbmFibGUgam91cm5hbGQgbG9nZ2luZyIgUFVC
TElDIE9OKQorV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX1NZU1RFTUQgIldoZXRoZXIgdG8gZW5h
YmxlIGpvdXJuYWxkIGxvZ2dpbmcgYW5kIHN5c3RlbWQtcnVuIiBQVUJMSUMgT04pCiAKICMgUHJp
dmF0ZSBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSBHVEsgcG9ydC4gQ2hhbmdpbmcgdGhlc2Ugb3B0
aW9ucyBpcwogIyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLiBUaGV5IGFyZSBpbnRlbmRlZCBmb3Ig
dXNlIG9ubHkgYnkgV2ViS2l0IGRldmVsb3BlcnMuCkBAIC00NDksNiArNDQ5LDkgQEAgaWYgKFVT
RV9TWVNURU1EKQogICAgIGVsc2UgKCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGli
c3lzdGVtZCBpcyBuZWVkZWQgZm9yIFVTRV9TWVNURU1EIikKICAgICBlbmRpZiAoKQorICAgIGlm
IChTeXN0ZW1kX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSX0VRVUFMIDI0NikKKyAgICAgICAgU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1NZU1RFTURfUlVOIFRSVUUpCisgICAgZW5kaWYgKCkK
IGVuZGlmICgpCiAKIGlmIChFTkFCTEVfRU5DUllQVEVEX01FRElBIEFORCBFTkFCTEVfVEhVTkRF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggNzI3MjgyNzk1NDUxMzhjMjBkYzE4OWJlMzYzNTUw
YjI5ZWZhMTVjZS4uMjk0NDBmN2EzYzVkMDk5NGJiNzRmMDRjODBlZjkyMThjNDI0NzAyYSAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXUEUuY21ha2UKQEAgLTc0LDcgKzc0LDcgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0dUS0RPQyAiV2hldGhlciBvciBub3QgdG8gdXNlIGdlbmVyYXRlIGd0a2RvYy4iIFBV
QkwKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9PUEVOSlBFRyAiV2hldGhlciB0byBlbmFibGUg
c3VwcG9ydCBmb3IgSlBFRzIwMDAgaW1hZ2VzLiIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9E
RUZJTkUoVVNFX1dPRkYyICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBXT0ZGMiBXZWIg
Rm9udHMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfV1BFX1FUX0FQ
SSAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFF0NS9RTUwgcGx1Z2luIiBQVUJM
SUMgJHtFTkFCTEVfREVWRUxPUEVSX01PREV9KQotV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX1NZ
U1RFTUQgIldoZXRoZXIgdG8gZW5hYmxlIGpvdXJuYWxkIGxvZ2dpbmciIFBVQkxJQyBPTikKK1dF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9TWVNURU1EICJXaGV0aGVyIHRvIGVuYWJsZSBqb3VybmFs
ZCBsb2dnaW5nIGFuZCBzeXN0ZW1kLXJ1biIgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZJ
TkUoVVNFX1NPVVAyICJXaGV0aGVyIHRvIGVuYWJsZSB1c2FnZSBvZiBTb3VwIDIgaW5zdGVhZCBv
ZiBTb3VwIDMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfTENNUyAiV2hl
dGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgaW1hZ2UgY29sb3IgbWFuYWdlbWVudCB1c2luZyBs
aWJjbXMyLiIgUFVCTElDIE9OKQogCkBAIC0yMTYsNiArMjE2LDkgQEAgaWYgKFVTRV9TWVNURU1E
KQogICAgIGVsc2UgKCkKICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGlic3lzdGVtZCBp
cyBuZWVkZWQgZm9yIFVTRV9TWVNURU1EIikKICAgICBlbmRpZiAoKQorICAgIGlmIChTeXN0ZW1k
X1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSX0VRVUFMIDI0NikKKyAgICAgICAgU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX1NZU1RFTURfUlVOIFRSVUUpCisgICAgZW5kaWYgKCkKIGVuZGlmICgp
CiAKIGlmIChFTkFCTEVfRU5DUllQVEVEX01FRElBIEFORCBFTkFCTEVfVEhVTkRFUikKZGlmZiAt
LWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlOTcyNzk5ZTRjYmI3OWQwNDk5OGE1
MDA5YmNiZmNkMGIxODg3YTM1Li45NWYwZWJmYzhjMGQ1YmY2MjlhOGJkMzQzOGE3Y2M1ZWRiNTlm
MTZhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjEtMDMtMTggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+
CisKKyAgICAgICAgW1dQRV1bR1RLXSBSdW4gd2ViIHByb2Nlc3NlcyBpbiBzZXBhcmF0ZSBjZ3Jv
dXBzIHVzaW5nIHN5c3RlbWQtcnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOgorCiAyMDIxLTAzLTE4ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBCdW1wIEFQ
SSB2ZXJzaW9uIHdoZW4gYnVpbGRpbmcgd2l0aCBsaWJzb3VwMwo=
</data>
<flag name="commit-queue"
          id="443157"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>