<?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>48127</bug_id>
          
          <creation_ts>2010-10-22 06:12:08 -0700</creation_ts>
          <short_desc>[Qt][WK2] Plugin initialization</short_desc>
          <delta_ts>2011-03-01 09:52:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>eric</cc>
    
    <cc>girish</cc>
    
    <cc>gustavo</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ossy</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297939</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-22 06:12:08 -0700</bug_when>
    <thetext>We need to implement plugin initialization on UNIX (non-mac) and furthermore
we need to apply the Qt specific quirks (especially for flash) as well as we do in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298916</commentid>
    <comment_count>1</comment_count>
      <attachid>71764</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-25 09:41:00 -0700</bug_when>
    <thetext>Created attachment 71764
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298918</commentid>
    <comment_count>2</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-25 09:41:34 -0700</bug_when>
    <thetext>*** Bug 46262 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298930</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-25 10:00:24 -0700</bug_when>
    <thetext>Attachment 71764 did not build on qt:
Build output: http://queues.webkit.org/results/4623086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298939</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-25 10:15:20 -0700</bug_when>
    <thetext>Do we really need a NetscapePluginQt?

I was talking to Adam Roben about this and maybe we could have a special PLUGIN_PLATFORM or PLUGIN_ARCHITECTURE macro that could have one of three values: X11, MAC or WINDOWS. That way Qt could use the right plug-in architecture based on which platform it&apos;s being compiled on.

If we need any platform specific code we should try to put it below the plug-in implementation itself. Adam, do you agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298971</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-25 11:02:08 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Do we really need a NetscapePluginQt?
&gt; 
&gt; I was talking to Adam Roben about this and maybe we could have a special PLUGIN_PLATFORM or PLUGIN_ARCHITECTURE macro that could have one of three values: X11, MAC or WINDOWS. That way Qt could use the right plug-in architecture based on which platform it&apos;s being compiled on.

That sounds good to me.

&gt; If we need any platform specific code we should try to put it below the plug-in implementation itself. Adam, do you agree?

Obviously some platform-specific code will be in the plug-in implementation (e.g., NetscapePluginMac and NetscapePluginWin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298977</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 11:18:17 -0700</bug_when>
    <thetext>Attachment 71764 did not build on mac:
Build output: http://queues.webkit.org/results/4715089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299009</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-25 12:02:56 -0700</bug_when>
    <thetext>Sounds OK with me. I&apos;m adding Girish as he is the guy who have been working on the Qt Linux related plugin code lately, and knows about the GTK+ implementation as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299016</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-25 12:11:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Sounds OK with me. I&apos;m adding Girish as he is the guy who have been working on the Qt Linux related plugin code lately, and knows about the GTK+ implementation as well.

Great! I&apos;d really like the WebKit2 plug-in code to stay sane and not become a mess of #ifdefs and different codepaths like the one in WebCore :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299347</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-26 01:56:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Sounds OK with me. I&apos;m adding Girish as he is the guy who have been working on the Qt Linux related plugin code lately, and knows about the GTK+ implementation as well.
&gt; 
&gt; Great! I&apos;d really like the WebKit2 plug-in code to stay sane and not become a mess of #ifdefs and different codepaths like the one in WebCore :)

Me too. I tried to avoid ifdefs in common code and code duplication as well.
What do you mean about &quot;the plugin implementation itself&quot;? As I see
NetscapePlugin is the plugin implementation. The Qt specific code I have added
is for qt-linux-x11. On Windows and Mac Qt should reuse the existing
implementation as it does in WebCore. Please taking into account that event
handling and painting is port specific everywhere in WebKit so I think we cannot
omit NetscapePluginQt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299351</commentid>
    <comment_count>10</comment_count>
      <attachid>71853</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-26 02:14:31 -0700</bug_when>
    <thetext>Created attachment 71853
build fixed patch

Same as the previous one with build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299366</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-26 03:11:24 -0700</bug_when>
    <thetext>Attachment 71853 did not build on mac:
Build output: http://queues.webkit.org/results/4748016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299506</commentid>
    <comment_count>12</comment_count>
      <attachid>71897</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-26 09:10:38 -0700</bug_when>
    <thetext>Created attachment 71897
fixed Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299554</commentid>
    <comment_count>13</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-26 10:22:50 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Sounds OK with me. I&apos;m adding Girish as he is the guy who have been working on the Qt Linux related plugin code lately, and knows about the GTK+ implementation as well.
&gt; &gt; 
&gt; &gt; Great! I&apos;d really like the WebKit2 plug-in code to stay sane and not become a mess of #ifdefs and different codepaths like the one in WebCore :)
&gt; 
&gt; Me too. I tried to avoid ifdefs in common code and code duplication as well.
&gt; What do you mean about &quot;the plugin implementation itself&quot;? As I see
&gt; NetscapePlugin is the plugin implementation. The Qt specific code I have added
&gt; is for qt-linux-x11. On Windows and Mac Qt should reuse the existing
&gt; implementation as it does in WebCore. Please taking into account that event
&gt; handling and painting is port specific everywhere in WebKit so I think we cannot
&gt; omit NetscapePluginQt.

Could we have a NetscapePluginX11 instead of a NetscapePluginQt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299822</commentid>
    <comment_count>14</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-26 15:02:41 -0700</bug_when>
    <thetext>&gt; Could we have a NetscapePluginX11 instead of a NetscapePluginQt?

I hardly think that for example Qt and GTK can use the same
implementation even on X11. My argument is again the fact that painting and event handling is always port specific and not &quot;just&quot; platform
specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300412</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-27 11:52:24 -0700</bug_when>
    <thetext>Attachment 71897 did not build on gtk:
Build output: http://queues.webkit.org/results/4807035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300565</commentid>
    <comment_count>16</comment_count>
      <attachid>72084</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-27 14:16:46 -0700</bug_when>
    <thetext>Created attachment 72084
GTK build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300568</commentid>
    <comment_count>17</comment_count>
      <attachid>72084</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-27 14:21:47 -0700</bug_when>
    <thetext>Comment on attachment 72084
GTK build fix

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

&gt; WebCore/plugins/unix/UNIXPluginQuirks.cpp:139
&gt; +#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
&gt; +    // Passing a 32-bit depth pixmap to NPAPI plugins is too inefficient. Instead, pass a X Pixmap
&gt; +    // that has same depth as the screen depth since graphics operations are optimized
&gt; +    // for this depth.
&gt; +    quirks-&gt;add(PluginQuirkRequiresDefaultScreenDepth);
&gt; +#endif

This seems qt specific and it is not inside #if PLATFORM(QT). Maybe that would make it more clean that it is a Qt workaround?

&gt; WebCore/plugins/unix/UNIXPluginQuirks.h:51
&gt; +class UNIXPluginQuirks {

Remember Mac is UNIX as well.

&gt; WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:86
&gt; +void NetscapePlugin::platformPreInitialize(Parameters*)
&gt; +{
&gt; +}

No comment to why this is empty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300571</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-27 14:23:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Could we have a NetscapePluginX11 instead of a NetscapePluginQt?
&gt; 
&gt; I hardly think that for example Qt and GTK can use the same
&gt; implementation even on X11. My argument is again the fact that painting and event handling is always port specific and not &quot;just&quot; platform
&gt; specific.

But well, Qt uses the Windows impl on Windows and the mac impl on mac, so why not? but maybe it will become an ifdef hell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300578</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-27 14:29:57 -0700</bug_when>
    <thetext>Are these not X11 quirks? That would be a better name than UNIX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300579</commentid>
    <comment_count>20</comment_count>
      <attachid>72084</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-27 14:30:34 -0700</bug_when>
    <thetext>Comment on attachment 72084
GTK build fix

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

&gt; WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:404
&gt; +        loadURL(&quot;GET&quot;, effectivePararmeters.url.string(), String(), HTTPHeaderMap(), Vector&lt;uint8_t&gt;(), false, 0);

Spelling mistake here. It is parameters and not para_R_meters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300582</commentid>
    <comment_count>21</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-27 14:32:14 -0700</bug_when>
    <thetext>I don&apos;t think it will become an ifdef hell - we&apos;ll have something like

#if PLATFORM(MAC)
#define PLUGIN_ARCHITECTURE_MAC 1
#elif PLATFORM(WIN)
#define PLUGIN_ARCHITECTURE_WIN 1
#elif PLATFORM(QT)
#if (qt for mac)
#define PLUGIN_ARCHITECTURE_MAC 1
#elif (qt for x11)
#define PLUGIN_ARCHITECTURE_X11
#endif
#endif

I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300589</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-10-27 14:37:53 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I don&apos;t think it will become an ifdef hell - we&apos;ll have something like
&gt; 
&gt; #if PLATFORM(MAC)
&gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; #elif PLATFORM(WIN)
&gt; #define PLUGIN_ARCHITECTURE_WIN 1
&gt; #elif PLATFORM(QT)
&gt; #if (qt for mac)
&gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; #elif (qt for x11)
&gt; #define PLUGIN_ARCHITECTURE_X11
&gt; #endif
&gt; #endif
&gt; 
&gt; I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.

Yes, this is a good suggestion. I also agree that the patch needs to be split up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300608</commentid>
    <comment_count>23</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-27 14:57:57 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 72084 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72084&amp;action=review
&gt; 
&gt; &gt; WebCore/plugins/unix/UNIXPluginQuirks.cpp:139
&gt; &gt; +#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
&gt; &gt; +    // Passing a 32-bit depth pixmap to NPAPI plugins is too inefficient. Instead, pass a X Pixmap
&gt; &gt; +    // that has same depth as the screen depth since graphics operations are optimized
&gt; &gt; +    // for this depth.
&gt; &gt; +    quirks-&gt;add(PluginQuirkRequiresDefaultScreenDepth);
&gt; &gt; +#endif
&gt; 
&gt; This seems qt specific and it is not inside #if PLATFORM(QT). Maybe that would make it more clean that it is a Qt workaround?

Right.

&gt; 
&gt; &gt; WebCore/plugins/unix/UNIXPluginQuirks.h:51
&gt; &gt; +class UNIXPluginQuirks {
&gt; 
&gt; Remember Mac is UNIX as well.

True.

&gt;
&gt; 
&gt; &gt; WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:86
&gt; &gt; +void NetscapePlugin::platformPreInitialize(Parameters*)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; No comment to why this is empty?

I think this is self documenting. A platform method that does nothing
=&gt; there is nothing to do on that platform at that point :)
I can add a comment however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300611</commentid>
    <comment_count>24</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-27 14:58:48 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Are these not X11 quirks? That would be a better name than UNIX.

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300616</commentid>
    <comment_count>25</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-27 15:06:51 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I don&apos;t think it will become an ifdef hell - we&apos;ll have something like
&gt; 
&gt; #if PLATFORM(MAC)
&gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; #elif PLATFORM(WIN)
&gt; #define PLUGIN_ARCHITECTURE_WIN 1
&gt; #elif PLATFORM(QT)
&gt; #if (qt for mac)
&gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; #elif (qt for x11)
&gt; #define PLUGIN_ARCHITECTURE_X11
&gt; #endif
&gt; #endif
&gt; 
&gt; I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.

What would it solve? The ifdef hell would be in NetscapePluginX11.cpp
with a lot of code guarded by #if PLATFORM(QT), #if PLATFORM(GTK), ...
Unfortunately the plugin implementation is depends on the arch and on
the port as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300626</commentid>
    <comment_count>26</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-27 15:16:47 -0700</bug_when>
    <thetext>&gt; &gt; I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.
 
True. However, another approach that had came to my mind is to
determining the quirks in the UI process and send more information
about the plugin to the web process than just the plugin path. Do you
think it would be better? This would help to solve the issue in
https://bugs.webkit.org/show_bug.cgi?id=46076 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300672</commentid>
    <comment_count>27</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-27 16:10:23 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #21)
&gt; &gt; I don&apos;t think it will become an ifdef hell - we&apos;ll have something like
&gt; &gt; 
&gt; &gt; #if PLATFORM(MAC)
&gt; &gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; &gt; #elif PLATFORM(WIN)
&gt; &gt; #define PLUGIN_ARCHITECTURE_WIN 1
&gt; &gt; #elif PLATFORM(QT)
&gt; &gt; #if (qt for mac)
&gt; &gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; &gt; #elif (qt for x11)
&gt; &gt; #define PLUGIN_ARCHITECTURE_X11
&gt; &gt; #endif
&gt; &gt; #endif
&gt; &gt; 
&gt; &gt; I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.
&gt; 
&gt; What would it solve? The ifdef hell would be in NetscapePluginX11.cpp
&gt; with a lot of code guarded by #if PLATFORM(QT), #if PLATFORM(GTK), ...
&gt; Unfortunately the plugin implementation is depends on the arch and on
&gt; the port as well.

What are the things you would guard by Qt and GTK specific ifdefs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300673</commentid>
    <comment_count>28</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-27 16:11:28 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; &gt; I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.
&gt; 
&gt; True. However, another approach that had came to my mind is to
&gt; determining the quirks in the UI process and send more information
&gt; about the plugin to the web process than just the plugin path. Do you
&gt; think it would be better? This would help to solve the issue in
&gt; https://bugs.webkit.org/show_bug.cgi?id=46076 as well.

I don&apos;t think doing that would buy us anything. 46076 is all about site-specific quirks and not plug-in quirks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303463</commentid>
    <comment_count>29</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-11-02 10:40:24 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #21)
&gt; &gt; I don&apos;t think it will become an ifdef hell - we&apos;ll have something like
&gt; &gt; 
&gt; &gt; #if PLATFORM(MAC)
&gt; &gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; &gt; #elif PLATFORM(WIN)
&gt; &gt; #define PLUGIN_ARCHITECTURE_WIN 1
&gt; &gt; #elif PLATFORM(QT)
&gt; &gt; #if (qt for mac)
&gt; &gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; &gt; #elif (qt for x11)
&gt; &gt; #define PLUGIN_ARCHITECTURE_X11
&gt; &gt; #endif
&gt; &gt; #endif
&gt; &gt; 
&gt; &gt; I also think that this patch should be split up. The quirk refactoring could definitely be done as a separate patch.
&gt; 
&gt; What would it solve? The ifdef hell would be in NetscapePluginX11.cpp
&gt; with a lot of code guarded by #if PLATFORM(QT), #if PLATFORM(GTK), ...
&gt; Unfortunately the plugin implementation is depends on the arch and on
&gt; the port as well.

I agree with Anders here, we should have a NetscapePluginX11.cpp with #if PLATFORM(QT), #if PLATFORM(GTK) guards for the port-specific bits. Even if there will be a few of those guards, it&apos;s certainly better than the approach we have in WebCore now with PluginViewQt and PluginViewGtk. 

PluginViewMac in WebCore shows how the Qt and Wx port shares most stuff, and many of those port-specific bits could be put into widget or hidden somewhere closer to where the difference really is.

Regarding the name X11 is preferable, it would clash a bit with XP_UNIX, but I don&apos;t mind that. 

I&apos;d also split up this patch as others say, the renaming etc can be done separately from sharing the quirks between WebKit and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304015</commentid>
    <comment_count>30</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-11-03 06:58:47 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I don&apos;t think it will become an ifdef hell - we&apos;ll have something like
&gt; 
&gt; #if PLATFORM(MAC)
&gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; #elif PLATFORM(WIN)
&gt; #define PLUGIN_ARCHITECTURE_WIN 1
&gt; #elif PLATFORM(QT)
&gt; #if (qt for mac)
&gt; #define PLUGIN_ARCHITECTURE_MAC 1
&gt; #elif (qt for x11)
&gt; #define PLUGIN_ARCHITECTURE_X11
&gt; #endif
&gt; #endif

Would it make sense to just use the XP-defines from npapi? Apart from XP_UNIX being really XP_X11 they cover what we want? 

The alternative is to add another layer of abstraction/indirection by going for PLUGIN_ARCHITECTURE_FOO like you say. But then what do we base those on?

a) We have the choices made in npapi.h to enable the XP-defines: XP_OS2, XP_WIN, XP_SYMBIAN, XP_MACOSX (for some reason XP_UNIX is not defined there).

b) We have the OS() macros, which work for MAC_OS_X and WINDOWS, but not for X11 (LINUX would not be correct). 

c) Or we have PLATFORM()-macros.

If we go for the latter two we&apos;ll have two different definitions of &quot;plugin architecture&quot;, XP_FOO and PLUGIN_ARCHITECTURE_FOO.

I&apos;d prefer to stay with the XP-defines or add another level to make it clearer what they mean but to map them to the XP-defines. 

The downside to this is of course that we have platform-detection code both in npapi.h and Platform.h. Would it make sense to have npapi.h use the macros from Platform.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304016</commentid>
    <comment_count>31</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-03 07:01:28 -0700</bug_when>
    <thetext>
&gt; Would it make sense to just use the XP-defines from npapi? Apart from XP_UNIX being really XP_X11 they cover what we want? 

We are wrongly assuming in webcore that unix == x11 for plugins. It is not always true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304017</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-11-03 07:05:07 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; I&apos;d prefer to stay with the XP-defines or add another level to make it clearer what they mean but to map them to the XP-defines.

That makes sense to me.
 
&gt; The downside to this is of course that we have platform-detection code both in npapi.h and Platform.h. Would it make sense to have npapi.h use the macros from Platform.h?

npapi.h can&apos;t use Platform.h. npapi.h is an API header that plugins include, and plugins don&apos;t have access to Platform.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304049</commentid>
    <comment_count>33</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2010-11-03 09:10:59 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #30)
&gt; &gt; I&apos;d prefer to stay with the XP-defines or add another level to make it clearer what they mean but to map them to the XP-defines.
&gt; 
&gt; That makes sense to me.

So we could have:

#define NESCAPE_PLUGIN_PLATFORM(WTF_FEATURE) (defined XP_##WTF_FEATURE &amp;&amp; XP_##WTF_FEATURE)

And then either use NESCAPE_PLUGIN_PLATFORM(UNIX) all around, or #define XP_X11 XP_UNIX and use the clearer NESCAPE_PLUGIN_PLATFORM(X11)

&gt; 
&gt; &gt; The downside to this is of course that we have platform-detection code both in npapi.h and Platform.h. Would it make sense to have npapi.h use the macros from Platform.h?
&gt; 
&gt; npapi.h can&apos;t use Platform.h. npapi.h is an API header that plugins include, and plugins don&apos;t have access to Platform.h.

Right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304087</commentid>
    <comment_count>34</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-11-03 10:12:36 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #30)
&gt; &gt; &gt; I&apos;d prefer to stay with the XP-defines or add another level to make it clearer what they mean but to map them to the XP-defines.
&gt; &gt; 
&gt; &gt; That makes sense to me.
&gt; 
&gt; So we could have:
&gt; 
&gt; #define NESCAPE_PLUGIN_PLATFORM(WTF_FEATURE) (defined XP_##WTF_FEATURE &amp;&amp; XP_##WTF_FEATURE)
&gt; 

I like this, but it would be far more elegant if we didn&apos;t have to #define XP_X11. I suppose we could do something like

#ifdef XP_MACOSX
#define WTF_XP_MACOSX XP_MACOSX
#endif

#ifdef XP_WIN
#define WTF_XP_WIN XP_WIN
#endif

#ifdef XP_UNIX
#define WTF_XP_X11 XP_UNIX
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304088</commentid>
    <comment_count>35</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-11-03 10:14:18 -0700</bug_when>
    <thetext>Or we could just change the global npapi.h!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305802</commentid>
    <comment_count>36</comment_count>
      <attachid>72084</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-11-06 12:03:17 -0700</bug_when>
    <thetext>Comment on attachment 72084
GTK build fix

Remove r? since this approached had
been rejected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355179</commentid>
    <comment_count>37</comment_count>
      <attachid>83298</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-22 04:30:52 -0800</bug_when>
    <thetext>Created attachment 83298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355185</commentid>
    <comment_count>38</comment_count>
      <attachid>83298</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-22 04:55:15 -0800</bug_when>
    <thetext>Comment on attachment 83298
Patch

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

Looks ok, but I have a few comments

&gt; Source/WebCore/plugins/PluginPackage.cpp:42
&gt; +#if XP_UNIX
&gt; +#include &quot;x11/X11PluginQuirks.h&quot;
&gt; +#endif

for Qt we could check for X11. Q_WS_X11

&gt; Source/WebCore/plugins/x11/X11PluginQuirks.cpp:5
&gt; + * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
&gt; + * Copyright (C) 2008 Collabora Ltd. All rights reserved.
&gt; + * Copyright (C) 2009 Holger Hans Peter Freyther
&gt; + * Copyright (C) 2010 University of Szeged. All rights reserved.

Strange that there is no Nokia copyright</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355188</commentid>
    <comment_count>39</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-22 04:57:58 -0800</bug_when>
    <thetext>&gt; &gt; &gt; WebCore/plugins/unix/UNIXPluginQuirks.cpp:139
&gt; &gt; &gt; +#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
&gt; &gt; &gt; +    // Passing a 32-bit depth pixmap to NPAPI plugins is too inefficient. Instead, pass a X Pixmap
&gt; &gt; &gt; +    // that has same depth as the screen depth since graphics operations are optimized
&gt; &gt; &gt; +    // for this depth.
&gt; &gt; &gt; +    quirks-&gt;add(PluginQuirkRequiresDefaultScreenDepth);
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; This seems qt specific and it is not inside #if PLATFORM(QT). Maybe that would make it more clean that it is a Qt workaround?
&gt; 

I have forgot this in the new patch. Can be handled before landing if the patch
is good otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355204</commentid>
    <comment_count>40</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-22 05:46:43 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 83298 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83298&amp;action=review
&gt; 
&gt; Looks ok, but I have a few comments
&gt; 
&gt; &gt; Source/WebCore/plugins/PluginPackage.cpp:42
&gt; &gt; +#if XP_UNIX
&gt; &gt; +#include &quot;x11/X11PluginQuirks.h&quot;
&gt; &gt; +#endif
&gt; 
&gt; for Qt we could check for X11. Q_WS_X11

I don&apos;t mind using that but we need to check XP_UNIX for GTK and others.
Some grep output:

GNUmakefile.am
168:# For the Gtk port we want to use XP_UNIX both in X11 and Mac
169-if !TARGET_WIN32
170-global_cppflags += \
171:    -DXP_UNIX
172-endif

Source/cmake/OptionsCommon.cmake-11-IF (WTF_OS_UNIX)
Source/cmake/OptionsCommon.cmake:12:    ADD_DEFINITIONS(-DXP_UNIX)
Source/cmake/OptionsCommon.cmake-13-ENDIF (WTF_OS_UNIX)

&gt; 
&gt; &gt; Source/WebCore/plugins/x11/X11PluginQuirks.cpp:5
&gt; &gt; + * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
&gt; &gt; + * Copyright (C) 2008 Collabora Ltd. All rights reserved.
&gt; &gt; + * Copyright (C) 2009 Holger Hans Peter Freyther
&gt; &gt; + * Copyright (C) 2010 University of Szeged. All rights reserved.
&gt; 
&gt; Strange that there is no Nokia copyright

It is mostly copy-paste so I just copied the copyrights. Should I add Nokia? (Sounds strange to me.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355206</commentid>
    <comment_count>41</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-22 05:50:59 -0800</bug_when>
    <thetext>
&gt; 
&gt; It is mostly copy-paste so I just copied the copyrights. Should I add Nokia? (Sounds strange to me.)

Why? Most of that code was done by Girish under Nokia contract. I even think that I did parts of it, if I&apos;m not mistaken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355214</commentid>
    <comment_count>42</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-22 06:05:43 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; &gt; 
&gt; &gt; It is mostly copy-paste so I just copied the copyrights. Should I add Nokia? (Sounds strange to me.)
&gt; 
&gt; Why? Most of that code was done by Girish under Nokia contract. I even think that I did parts of it, if I&apos;m not mistaken.


I don&apos;t understand why should Balázs add Nokia copyright in this patch.

If Girishr missed to add this copyright before, we should add it 
in a separate patch with reference to the original changesets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355216</commentid>
    <comment_count>43</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-22 06:10:13 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt; &gt; 
&gt; &gt; &gt; It is mostly copy-paste so I just copied the copyrights. Should I add Nokia? (Sounds strange to me.)
&gt; &gt; 
&gt; &gt; Why? Most of that code was done by Girish under Nokia contract. I even think that I did parts of it, if I&apos;m not mistaken.
&gt; 
&gt; 
&gt; I don&apos;t understand why should Balázs add Nokia copyright in this patch.
&gt; 
&gt; If Girishr missed to add this copyright before, we should add it 
&gt; in a separate patch with reference to the original changesets.

I don&apos;t care about copyrights, please guys make a compromise about this and tell me what to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355217</commentid>
    <comment_count>44</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-22 06:10:49 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt; &gt; 
&gt; &gt; &gt; It is mostly copy-paste so I just copied the copyrights. Should I add Nokia? (Sounds strange to me.)
&gt; &gt; 
&gt; &gt; Why? Most of that code was done by Girish under Nokia contract. I even think that I did parts of it, if I&apos;m not mistaken.
&gt; 
&gt; 
&gt; I don&apos;t understand why should Balázs add Nokia copyright in this patch.
&gt; 
&gt; If Girishr missed to add this copyright before, we should add it 
&gt; in a separate patch with reference to the original changesets.

Yes that is fine, it could be added separately, but I thought it had gone missing during the moving around of files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355375</commentid>
    <comment_count>45</comment_count>
      <attachid>83298</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-22 10:31:20 -0800</bug_when>
    <thetext>Comment on attachment 83298
Patch

While hacking on the rest of this I have became dubious about that this will be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355663</commentid>
    <comment_count>46</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-22 15:52:29 -0800</bug_when>
    <thetext>Let me summarize the problems. For making flash work we need to determine some quirks
even before calling NP_Initialize. At that point we only have the plugin path but don&apos;t
know exactly the supported mime types, description, etc., so we just guess that this is
that &quot;wonderful&quot; piece of software. Unfortunately there is no way on linux to query those
information without actually loading and initializing the plugin. After we have initialized
the plugin we can call NP_GetMIMEDescription and NP_GetValue and determine the rest of plugins.

I see two possibility for setting up things correctly:
1. add two X11 specific helper to NetscapePlugin, like determineQuirksByPluginPath and
determineQuirksByQueryingPlugin and call them before and after calling NP_Initialize in
NetscapePlugin::initialize. Also we need a quirk set member (likely WebCore::PluginQuirkSet)
but this seems necessary anyway. Pro: somewhat straightforward. Contra: #ifdef&apos;s.
2. determine quirks at the UI side - where we need to load the plugin lib anyway to get the mime
types - by reusing logic from WebCore (PluginPackage) and send them (in the case of X11). 
Pro: less #ifdef. Contra: (even more) different behavior on X11.

So, which one do you like better, or is there a better approach that I don&apos;t see?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357066</commentid>
    <comment_count>47</comment_count>
      <attachid>83667</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-24 09:08:31 -0800</bug_when>
    <thetext>Created attachment 83667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357068</commentid>
    <comment_count>48</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-24 09:10:57 -0800</bug_when>
    <thetext>At least flash returns with NPERR_NO_ERROR from NP_Initialize with this.
Avoid duplicating the hacks for flash seems to be overkill so I had give
up with the refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357606</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-24 18:00:08 -0800</bug_when>
    <thetext>Attachment 83667 did not build on mac:
Build output: http://queues.webkit.org/results/7983679</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357836</commentid>
    <comment_count>50</comment_count>
      <attachid>83794</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-25 04:24:14 -0800</bug_when>
    <thetext>Created attachment 83794
Patch

Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357885</commentid>
    <comment_count>51</comment_count>
      <attachid>83803</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-25 06:39:51 -0800</bug_when>
    <thetext>Created attachment 83803
Patch

Fix handling of the NPNVToolkit case in NPN_GetValue - return with error if the callback is not expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359115</commentid>
    <comment_count>52</comment_count>
      <attachid>84074</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 09:37:33 -0800</bug_when>
    <thetext>Created attachment 84074
Patch - partI

Part I. PLUGIN_ARCHITECTURE macros and X11 way of initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359132</commentid>
    <comment_count>53</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 10:01:54 -0800</bug_when>
    <thetext>The change will need a follow-up that replaces PLATFORM(x) macros with
PLUGIN_ARCHITECTURE(x).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359146</commentid>
    <comment_count>54</comment_count>
      <attachid>84079</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 10:24:27 -0800</bug_when>
    <thetext>Created attachment 84079
Patch - partII

Part II. X11 quirks (for flash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359147</commentid>
    <comment_count>55</comment_count>
      <attachid>84074</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 10:25:27 -0800</bug_when>
    <thetext>Comment on attachment 84074
Patch - partI

Didn&apos;t meant to obsolete it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359177</commentid>
    <comment_count>56</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-28 11:04:42 -0800</bug_when>
    <thetext>Attachment 84079 did not build on win:
Build output: http://queues.webkit.org/results/8071367</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359185</commentid>
    <comment_count>57</comment_count>
      <attachid>84079</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-02-28 11:13:34 -0800</bug_when>
    <thetext>Comment on attachment 84079
Patch - partII

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

I&apos;m going to go ahead and mark this as r- because it didn&apos;t build on Windows. Please upload a new patch and I&apos;ll r+ it.

&gt; Source/WebKit2/Shared/Plugins/PluginQuirks.h:42
&gt; +        RequiresGTKToolKit,

Please add a comment to this quirk that explain what it&apos;s for and why it&apos;s necessary.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:490
&gt; +               *reinterpret_cast&lt;uint32_t*&gt;(value) = 2;

Please add a comment explaining what &quot;2&quot; means here, or maybe put it in a constant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359191</commentid>
    <comment_count>58</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-28 11:22:52 -0800</bug_when>
    <thetext>Attachment 84079 did not build on qt:
Build output: http://queues.webkit.org/results/8070438</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359344</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-28 14:14:55 -0800</bug_when>
    <thetext>Attachment 84079 did not build on mac:
Build output: http://queues.webkit.org/results/8073433</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359375</commentid>
    <comment_count>60</comment_count>
      <attachid>84074</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 14:48:39 -0800</bug_when>
    <thetext>Comment on attachment 84074
Patch - partI

Clearing flags on attachment: 84074

Committed r79925: &lt;http://trac.webkit.org/changeset/79925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359376</commentid>
    <comment_count>61</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 14:48:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359380</commentid>
    <comment_count>62</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 14:50:11 -0800</bug_when>
    <thetext>Reopen for the second patch (I should use webkit-patch more carefully).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359446</commentid>
    <comment_count>63</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 15:51:08 -0800</bug_when>
    <thetext>The second patch depends on the first one, that caused the build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359452</commentid>
    <comment_count>64</comment_count>
      <attachid>84140</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-02-28 15:56:30 -0800</bug_when>
    <thetext>Created attachment 84140
Patch - part II v2

Incorporated review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359686</commentid>
    <comment_count>65</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-28 23:40:45 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; (From update of attachment 84074 [details])
&gt; Clearing flags on attachment: 84074
&gt; 
&gt; Committed r79925: &lt;http://trac.webkit.org/changeset/79925&gt;

Unfortunately it broke Qt Linux Release Minimal buildbot. :(
(Clean build with r79924 works, but clean build with r79925 doesn&apos;t work.)

The error message:
../../WebCore/release/libwebcore.a(PluginPackageNone.o): In function `WebCore::PluginPackage::determineQuirks(WTF::String const&amp;)&apos;:
PluginPackageNone.cpp:(.text._ZN7WebCore13PluginPackage15determineQuirksERKN3WTF6StringE+0x0): multiple definition of `WebCore::PluginPackage::determineQuirks(WTF::String const&amp;)&apos;
../../WebCore/release/libwebcore.a(PluginPackage.o):PluginPackage.cpp:(.text._ZN7WebCore13PluginPackage15determineQuirksERKN3WTF6StringE+0x0): first defined here
collect2: ld returned 1 exit status
make[1]: *** [../../lib/libQtWebKit.so.4.9.0] Error 1

It seems that PluginPackage::determineQuirks is multiple defined by 
PluginPackage.cpp and PluginPackageNone.cpp.

I think PluginPackage::determineQuirks from PluginPackageNone.cpp
wasn&apos;t build previously and the conflict was revieled by your change.
(moving XP_UNIX definition)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359692</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-28 23:56:59 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79925 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359921</commentid>
    <comment_count>67</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-03-01 08:59:31 -0800</bug_when>
    <thetext>(In reply to comment #65)
&gt; I think PluginPackage::determineQuirks from PluginPackageNone.cpp
&gt; wasn&apos;t build previously and the conflict was revieled by your change.
&gt; (moving XP_UNIX definition)

The minimal build was fixed in http://trac.webkit.org/changeset/79982.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359959</commentid>
    <comment_count>68</comment_count>
      <attachid>84140</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-01 09:47:21 -0800</bug_when>
    <thetext>Comment on attachment 84140
Patch - part II v2

Clearing flags on attachment: 84140

Committed r80007: &lt;http://trac.webkit.org/changeset/80007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359964</commentid>
    <comment_count>69</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-03-01 09:52:09 -0800</bug_when>
    <thetext>We are still far from working plugins in Qt/GTK WebKit2 but we should continue the work in new bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71764</attachid>
            <date>2010-10-25 09:41:00 -0700</date>
            <delta_ts>2010-10-26 02:14:31 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>land_plugin_init.diff</filename>
            <type>text/plain</type>
            <size>30750</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGY3N2Y0NS4uNjIzMjU0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0xMC0yNSAgQmFsYXpzIEtlbGVt
ZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcKKworICAgICAg
ICBObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgRmFjdG9y
aW5nIG91dCB0aGUgUXQgc3BlY2lmaWMgaGFja3MgdGhhdCBtYWtlcyBmbGFzaCB3b3JraW5nCisg
ICAgICAgIGFuZCB0aGUgVU5JWCBzcGVjaWZpYyBxdWlyayBkZXRlcm1pbmF0aW9uIGJlY2F1c2Ug
d2UgbmVlZCB0bworICAgICAgICB1c2UgdGhlbSBpbiBXZWJLaXQyLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpkZXRlcm1p
bmVRdWlya3MpOgorICAgICAgICAqIHBsdWdpbnMvbnBmdW5jdGlvbnMuaDoKKyAgICAgICAgKiBw
bHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Q
YWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5j
cHA6IEFkZGVkLgorICAgICAgICBUaGUgbG9naWMgaGFkIGJlZW4gbW92ZWQgZnJvbSBQbHVnaW5Q
YWNrYWdlLmNwcCBhbmQgUGx1Z2luUGFja2FnZVF0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlVO
SVhQbHVnaW5RdWlya3M6OmlzTlBXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVOSVhQbHVn
aW5RdWlya3M6OmlzRmxhc2hQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6VU5JWFBsdWdpblF1
aXJrczo6aW5pdGlhbGl6ZUdUSyk6CisgICAgICAgIChXZWJDb3JlOjpVTklYUGx1Z2luUXVpcmtz
OjpkZXRlcm1pbmVRdWlya3MpOiBNaW5vciBmaXg6CisgICAgICAgIHRoZSBkZWZhdWx0IHNjcmVl
biBkZXB0aCBvbiBNYWVtbyB3YXMgbm90IGFwcGxpZWQgaW4gdGhlCisgICAgICAgIGNhc2Ugb2Yg
dGhlIEphdmEgcGx1Z2luIGJlY2F1c2Ugd2Ugd2VyZSByZXR1cm5pbmcgZWFybGllci4KKyAgICAg
ICAgKiBwbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5oOiBBZGRlZC4KKwogMjAxMC0xMC0y
NSAgUGV0ZXIgUnliaW4gIDxwZXRlci5yeWJpbkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNjODc4M2YuLmRjZWJiNzkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
MzYyOCw3ICszNjI4LDkgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9jYWNoZS93ZWJraXQvc291cC1jYWNoZS1wcml2YXRlLmggXAogCVdl
YkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAgXAogCVdlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luUGFja2FnZUd0ay5jcHAgXAotCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmll
d0d0ay5jcHAKKwlXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwIFwKKwlXZWJD
b3JlL3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmggXAorCVdlYkNvcmUvcGx1Z2lucy91
bml4L1VOSVhQbHVnaW5RdWlya3MuY3BwCiAKIGlmIFRBUkdFVF9YMTEKIHdlYmNvcmVndGtfc291
cmNlcyArPSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA1NTFiZDliLi44NWQ0N2M5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI3ODEsOSArMjc4MSwxMSBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAgICAgICAg
ICAgICAgICAgU09VUkNFUyArPSBcCiAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1
Z2luQ29udGFpbmVyUXQuY3BwIFwKICAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVn
aW5QYWNrYWdlUXQuY3BwIFwKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNw
cCBcCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNw
cAogICAgICAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgICAgICAgICBwbHVn
aW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmgKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9x
dC9QbHVnaW5Db250YWluZXJRdC5oIFwKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy91bml4
L1VOSVhQbHVnaW5RdWlya3MuaAogICAgICAgICAgICAgICAgIERFRklORVMgKz0gWFBfVU5JWAog
ICAgICAgICAgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9NRVRBREFU
QV9DQUNIRT0xCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXgg
MmUwMzA4Yi4uMzJmNjNkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2th
Z2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMzcsNiAr
MzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKKyNpZiBYUF9VTklYCisjaW5jbHVkZSAidW5peC9VTklYUGx1Z2luUXVp
cmtzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVnaW5QYWNrYWdlOjp+
UGx1Z2luUGFja2FnZSgpCkBAIC0xODEsNTMgKzE4NSw3IEBAIFBhc3NSZWZQdHI8UGx1Z2luUGFj
a2FnZT4gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25zdCBTdHJpbmcm
IHBhCiAjaWYgZGVmaW5lZChYUF9VTklYKQogdm9pZCBQbHVnaW5QYWNrYWdlOjpkZXRlcm1pbmVR
dWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoTUlNRVR5cGVSZWdpc3Ry
eTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIC8vIEJlY2F1c2Ug
YSBzaW5nbGUgcHJvY2VzcyBjYW5ub3QgY3JlYXRlIG11bHRpcGxlIFZNcywgYW5kIHdlIGNhbm5v
dCByZWxpYWJseSB1bmxvYWQgYQotICAgICAgICAvLyBKYXZhIFZNLCB3ZSBjYW5ub3QgdW5sb2Fk
IHRoZSBKYXZhIHBsdWdpbiwgb3Igd2UnbGwgbG9zZSByZWZlcmVuY2UgdG8gb3VyIG9ubHkgVk0K
LSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrRG9udFVubG9hZFBsdWdpbik7Ci0KLSAg
ICAgICAgLy8gU2V0dGluZyB0aGUgd2luZG93IHJlZ2lvbiB0byBhbiBlbXB0eSByZWdpb24gY2F1
c2VzIGJhZCBzY3JvbGxpbmcgcmVwYWludCBwcm9ibGVtcwotICAgICAgICAvLyB3aXRoIHRoZSBK
YXZhIHBsdWctaW4uCi0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0RvbnRDbGlwVG9a
ZXJvUmVjdFdoZW5TY3JvbGxpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKLSAgICAgICAg
c3RhdGljIGNvbnN0IFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBmbGFzaFRlblZlcnNpb24oMHgwYTAw
MDAwMCk7Ci0KLSAgICAgICAgaWYgKGNvbXBhcmVGaWxlVmVyc2lvbihmbGFzaFRlblZlcnNpb24p
ID49IDApIHsKLSAgICAgICAgICAgIC8vIEZsYXNoIDEwLjAgYjIxOCBkb2Vzbid0IGxpa2UgaGF2
aW5nIGEgTlVMTCB3aW5kb3cgaGFuZGxlCi0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2lu
UXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7Ci0jaWYgUExBVEZPUk0oUVQp
Ci0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQp
OwotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGbGFzaCA5IGFuZCBv
bGRlciByZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYgd2UgcmV0dXJuIGEgbW96aWxsYSB1
c2VyIGFnZW50Ci0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtXYW50c01vemls
bGFVc2VyQWdlbnQpOwotICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShRVCkKLSAgICAgICAgLy8g
Rmxhc2ggd2lsbCBjcmFzaCBvbiByZXBlYXRlZCBjYWxscyB0byBTZXRXaW5kb3cgaW4gd2luZG93
ZWQgbW9kZQotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtEb250Q2FsbFNldFdpbmRv
d01vcmVUaGFuT25jZSk7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAvLyA2NC1iaXQgRmxh
c2ggZnJlZXplcyBpZiByaWdodC1jbGljayBpcyBzZW50IGluIHdpbmRvd2xlc3MgbW9kZQotICAg
ICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNz
TW9kZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWly
a1JlcXVpcmVzRGVmYXVsdFNjcmVlbkRlcHRoKTsKLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdp
blF1aXJrVGhyb3R0bGVJbnZhbGlkYXRlKTsKLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1
aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOwotICAgICAgICBtX3F1aXJrcy5hZGQo
UGx1Z2luUXVpcmtGbGFzaFVSTE5vdGlmeUJ1Zyk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChRX1dT
X01BRU1PXzUpIHx8IGRlZmluZWQoUV9XU19NQUVNT182KQotICAgIC8vIFBhc3NpbmcgYSAzMi1i
aXQgZGVwdGggcGl4bWFwIHRvIE5QQVBJIHBsdWdpbnMgaXMgdG9vIGluZWZmaWNpZW50LiBJbnN0
ZWFkLCBwYXNzIGEgWCBQaXhtYXAKLSAgICAvLyB0aGF0IGhhcyBzYW1lIGRlcHRoIGFzIHRoZSBz
Y3JlZW4gZGVwdGggc2luY2UgZ3JhcGhpY3Mgb3BlcmF0aW9ucyBhcmUgb3B0aW1pemVkCi0gICAg
Ly8gZm9yIHRoaXMgZGVwdGguCi0gICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrUmVxdWlyZXNE
ZWZhdWx0U2NyZWVuRGVwdGgpOwotI2VuZGlmCisgICAgVU5JWFBsdWdpblF1aXJrczo6ZGV0ZXJt
aW5lUXVpcmtzKG1pbWVUeXBlLCBtX21vZHVsZVZlcnNpb24sICZtX3F1aXJrcyk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL25wZnVuY3Rpb25zLmggYi9XZWJDb3Jl
L3BsdWdpbnMvbnBmdW5jdGlvbnMuaAppbmRleCAxNzI3NTRiLi5jODMzZjBjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsdWdpbnMvbnBmdW5jdGlvbnMuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvbnBm
dW5jdGlvbnMuaApAQCAtMjYsNyArMjYsNyBAQAogI2RlZmluZSBOUEZVTkNUSU9OU19ICiAKIAot
I2luY2x1ZGUgIm5wcnVudGltZS5oIgorI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgog
I2luY2x1ZGUgIm5wYXBpLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luUGFja2FnZVF0LmNwcAppbmRleCBlNzA1OGM3Li5jZjZkYzQwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsdWdp
bnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogCisjaW5jbHVk
ZSAiLi4vdW5peC9VTklYUGx1Z2luUXVpcmtzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJh
c2UuaCIKQEAgLTg4LDQ5ICs5MCw2IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6c2V0TUlNRURlc2Ny
aXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQogICAgIH0KIH0KIAotc3RhdGlj
IE5QRXJyb3Igc3RhdGljUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRfTlBOX0dldFZhbHVl
KE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQotewotICAg
IGlmICh2YXJpYWJsZSA9PSBOUE5WVG9vbGtpdCkgewotICAgICAgICAqc3RhdGljX2Nhc3Q8dWlu
dDMyX3QqPih2YWx1ZSkgPSAyOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAg
fQotCi0gICAgcmV0dXJuIE5QTl9HZXRWYWx1ZShpbnN0YW5jZSwgdmFyaWFibGUsIHZhbHVlKTsK
LX0KLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUd0ayhRTGlicmFyeSogbW9kdWxlID0gMCkKLXsK
LSAgICAvLyBFbnN1cmVzIG1pc3NpbmcgR3RrIGluaXRpYWxpemF0aW9uIGluIHNvbWUgdmVyc2lv
bnMgb2YgQWRvYmUncyBmbGFzaCBwbGF5ZXIKLSAgICAvLyBwbHVnaW4gZG8gbm90IGNhdXNlIGNy
YXNoZXMuIFNlZSBCUiMgNDA1NjcsIDQ0MzI0LCBhbmQgNDQ0MDUgZm9yIGRldGFpbHMuICAKLSAg
ICBpZiAobW9kdWxlKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9wdHIpKGlu
dCosIGNoYXIqKiopOwotICAgICAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IChndGtfaW5pdF9w
dHIpbW9kdWxlLT5yZXNvbHZlKCJndGtfaW5pdCIpOwotICAgICAgICBpZiAoZ3RrSW5pdCkgewot
ICAgICAgICAgICAgLy8gUHJldmVudCBndGtfaW5pdCgpIGZyb20gcmVwbGFjaW5nIHRoZSBYIGVy
cm9yIGhhbmRsZXJzLCBzaW5jZSB0aGUgR3RrCi0gICAgICAgICAgICAvLyBoYW5kbGVycyBhYm9y
dCB3aGVuIHRoZXkgcmVjZWl2ZSBhbiBYIGVycm9yLCB0aHVzIGtpbGxpbmcgdGhlIHZpZXdlci4K
LSNpZmRlZiBRX1dTX1gxMQotICAgICAgICAgICAgaW50ICgqb2xkX2Vycm9yX2hhbmRsZXIpKERp
c3BsYXkqLCBYRXJyb3JFdmVudCopID0gWFNldEVycm9ySGFuZGxlcigwKTsKLSAgICAgICAgICAg
IGludCAoKm9sZF9pb19lcnJvcl9oYW5kbGVyKShEaXNwbGF5KikgPSBYU2V0SU9FcnJvckhhbmRs
ZXIoMCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGd0a0luaXQoMCwgMCk7Ci0jaWZkZWYgUV9XU19Y
MTEKLSAgICAgICAgICAgIFhTZXRFcnJvckhhbmRsZXIob2xkX2Vycm9yX2hhbmRsZXIpOwotICAg
ICAgICAgICAgWFNldElPRXJyb3JIYW5kbGVyKG9sZF9pb19lcnJvcl9oYW5kbGVyKTsKLSNlbmRp
ZgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUxpYnJhcnkg
bGlicmFyeSgibGliZ3RrLXgxMS0yLjAuc28uMCIpOwotICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkg
ewotICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFy
KioqKTsKLSAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IChndGtfaW5p
dF9jaGVja19wdHIpbGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpOwotICAgICAgICAv
LyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2Fs
bHMgZXhpdCgpIG9uIGZhaWx1cmUuCi0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAg
ICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDApOwotICAgIH0KLX0KLQogYm9vbCBQbHVnaW5Q
YWNrYWdlOjpsb2FkKCkKIHsKICAgICBpZiAobV9pc0xvYWRlZCkgewpAQCAtMTYyLDE3ICsxMjEs
MTYgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIAogICAgIGluaXRpYWxpemVCcm93c2Vy
RnVuY3MoKTsKIAotICAgIGlmIChtX3BhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKSkgeworICAg
IGlmIChVTklYUGx1Z2luUXVpcmtzOjppc05QV3JhcHBlcihtX3BhdGgpKSB7CiAgICAgICAgIC8v
IG5zcGx1Z2lud3JhcHBlciByZWxpZXMgb24gdGhlIHRvb2xraXQgdmFsdWUgdG8ga25vdyBpZiBn
bGliIGlzIGF2YWlsYWJsZQotICAgICAgICAvLyBJdCBkb2VzIHNvIGluIE5QX0luaXRpYWxpemUg
d2l0aCBhIG51bGwgaW5zdGFuY2UsIHRoZXJlZm9yZSBpdCBpcyBkb25lIHRoaXMgd2F5OgotICAg
ICAgICBtX2Jyb3dzZXJGdW5jcy5nZXR2YWx1ZSA9IHN0YXRpY1BsdWdpblF1aXJrUmVxdWlyZXNH
dGtUb29sS2l0X05QTl9HZXRWYWx1ZTsKLSAgICAgICAgLy8gV29ya2Fyb3VuZCBBZG9iZSdzIGZh
aWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsgaW4gc29tZSB2ZXJzaW9ucwotICAgICAg
ICAvLyBvZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgotICAgICAgICBpbml0aWFsaXplR3Rr
KCk7Ci0gICAgfSBlbHNlIGlmIChtX3BhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsKKyAg
ICAgICAgLy8gSXQgZG9lcyBzbyBpbiBOUF9Jbml0aWFsaXplIHdpdGggYSBudWxsIGluc3RhbmNl
LCB0aGVyZWZvcmUgd2Ugc2hvdWxkIHNldAorICAgICAgICAvLyB0aGlzIHF1aXJrIGJlZm9yZSBj
YWxsaW5nIGl0LgorICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rv
b2xLaXQpOworICAgICAgICBVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKCk7CisgICAg
fSBlbHNlIGlmIChVTklYUGx1Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2luKG1fcGF0aCkpIHsKICAg
ICAgICAgLy8gV29ya2Fyb3VuZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6
ZSBHdGsgaW4gc29tZSB2ZXJzaW9ucwogICAgICAgICAvLyBvZiB0aGVpciBmbGFzaCBwbGF5ZXIg
cGx1Z2luLgotICAgICAgICBpbml0aWFsaXplR3RrKG1fbW9kdWxlKTsKKyAgICAgICAgVU5JWFBs
dWdpblF1aXJrczo6aW5pdGlhbGl6ZUdUSyhtX21vZHVsZSk7CiAgICAgfQogCiAjaWYgZGVmaW5l
ZChYUF9VTklYKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1
aXJrcy5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTM3YmMxCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAKQEAgLTAsMCArMSwx
MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVn
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJVTklYUGx1Z2luUXVpcmtzLmgiCisKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0Lmgi
CisjaW5jbHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiCisjaW5jbHVkZSA8UUxpYnJhcnk+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
I2lmIFBMQVRGT1JNKFFUKQorYm9vbCBVTklYUGx1Z2luUXVpcmtzOjppc05QV3JhcHBlcihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpCit7CisgICAgcmV0dXJuIHBsdWdpblBhdGguY29udGFpbnMo
Im5wd3JhcHBlci4iKTsKK30KKworYm9vbCBVTklYUGx1Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2lu
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICByZXR1cm4gcGx1Z2luUGF0aC5jb250
YWlucygiZmxhc2hwbGF5ZXIiKTsKK30KKwordm9pZCBVTklYUGx1Z2luUXVpcmtzOjppbml0aWFs
aXplR1RLKFFMaWJyYXJ5KiBwbHVnaW5Nb2R1bGUpCit7CisgICAgLy8gRW5zdXJlcyBtaXNzaW5n
IEd0ayBpbml0aWFsaXphdGlvbiBpbiBzb21lIHZlcnNpb25zIG9mIEFkb2JlJ3MgZmxhc2ggcGxh
eWVyCisgICAgLy8gcGx1Z2luIGRvIG5vdCBjYXVzZSBjcmFzaGVzLiBTZWUgQlIjIDQwNTY3LCA0
NDMyNCwgYW5kIDQ0NDA1IGZvciBkZXRhaWxzLgorICAgIGlmIChwbHVnaW5Nb2R1bGUpIHsKKyAg
ICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X3B0cikoaW50KiwgY2hhcioqKik7CisgICAg
ICAgIGd0a19pbml0X3B0ciBndGtJbml0ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9wdHI+
KHBsdWdpbk1vZHVsZS0+cmVzb2x2ZSgiZ3RrX2luaXQiKSk7CisgICAgICAgIGlmIChndGtJbml0
KSB7CisgICAgICAgICAgICAvLyBQcmV2ZW50IGd0a19pbml0KCkgZnJvbSByZXBsYWNpbmcgdGhl
IFggZXJyb3IgaGFuZGxlcnMsIHNpbmNlIHRoZSBHdGsKKyAgICAgICAgICAgIC8vIGhhbmRsZXJz
IGFib3J0IHdoZW4gdGhleSByZWNlaXZlIGFuIFggZXJyb3IsIHRodXMga2lsbGluZyB0aGUgdmll
d2VyLgorI2lmZGVmIFFfV1NfWDExCisgICAgICAgICAgICBpbnQgKCpvbGRfZXJyb3JfaGFuZGxl
cikoRGlzcGxheSosIFhFcnJvckV2ZW50KikgPSBYU2V0RXJyb3JIYW5kbGVyKDApOworICAgICAg
ICAgICAgaW50ICgqb2xkX2lvX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqKSA9IFhTZXRJT0Vycm9y
SGFuZGxlcigwKTsKKyNlbmRpZgorICAgICAgICAgICAgZ3RrSW5pdCgwLCAwKTsKKyNpZmRlZiBR
X1dTX1gxMQorICAgICAgICAgICAgWFNldEVycm9ySGFuZGxlcihvbGRfZXJyb3JfaGFuZGxlcik7
CisgICAgICAgICAgICBYU2V0SU9FcnJvckhhbmRsZXIob2xkX2lvX2Vycm9yX2hhbmRsZXIpOwor
I2VuZGlmCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRTGli
cmFyeSBsaWJyYXJ5KCJsaWJndGsteDExLTIuMC5zby4wIik7CisgICAgaWYgKGxpYnJhcnkubG9h
ZCgpKSB7CisgICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9jaGVja19wdHIpKGludCos
IGNoYXIqKiopOworICAgICAgICBndGtfaW5pdF9jaGVja19wdHIgZ3RrSW5pdENoZWNrID0gcmVp
bnRlcnByZXRfY2FzdDxndGtfaW5pdF9jaGVja19wdHI+KGxpYnJhcnkucmVzb2x2ZSgiZ3RrX2lu
aXRfY2hlY2siKSk7CisgICAgICAgIC8vIE5PVEU6IFdlJ3JlIHVzaW5nIGd0a19pbml0X2NoZWNr
KCkgc2luY2UgZ3RrX2luaXQoKSBjYWxscyBleGl0KCkgb24gZmFpbHVyZS4KKyAgICAgICAgaWYg
KGd0a0luaXRDaGVjaykKKyAgICAgICAgICAgICh2b2lkKSBndGtJbml0Q2hlY2soMCwgMCk7Cisg
ICAgfQorfQorI2VuZGlmCisKK3ZvaWQgVU5JWFBsdWdpblF1aXJrczo6ZGV0ZXJtaW5lUXVpcmtz
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBtb2R1bGVWZXJz
aW9uLCBQbHVnaW5RdWlya1NldCogcXVpcmtzKQoreworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAgICAgICAgLy8gQmVjYXVzZSBh
IHNpbmdsZSBwcm9jZXNzIGNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgVk1zLCBhbmQgd2UgY2Fubm90
IHJlbGlhYmx5IHVubG9hZCBhCisgICAgICAgIC8vIEphdmEgVk0sIHdlIGNhbm5vdCB1bmxvYWQg
dGhlIEphdmEgcGx1Z2luLCBvciB3ZSdsbCBsb3NlIHJlZmVyZW5jZSB0byBvdXIgb25seSBWTQor
ICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0RvbnRVbmxvYWRQbHVnaW4pOworCisgICAg
ICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyByZWdpb24gdG8gYW4gZW1wdHkgcmVnaW9uIGNhdXNl
cyBiYWQgc2Nyb2xsaW5nIHJlcGFpbnQgcHJvYmxlbXMKKyAgICAgICAgLy8gd2l0aCB0aGUgSmF2
YSBwbHVnLWluLgorICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0RvbnRDbGlwVG9aZXJv
UmVjdFdoZW5TY3JvbGxpbmcpOworCisgICAgfSBlbHNlIGlmIChtaW1lVHlwZSA9PSAiYXBwbGlj
YXRpb24veC1zaG9ja3dhdmUtZmxhc2giKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBQbGF0Zm9y
bU1vZHVsZVZlcnNpb24gZmxhc2hUZW5WZXJzaW9uKDB4MGEwMDAwMDApOworCisgICAgICAgIC8v
IFdlIGFyZSBhcHBseWluZyBxdWlya3MgZm9yIGJvdGggbW9kdWxlVmVyc2lvbiBpZiB3ZSBkbyBu
b3Qga25vdyB0aGUgbW9kdWxlVmVyc2lvbi4KKyAgICAgICAgaWYgKG1vZHVsZVZlcnNpb24gPj0g
Zmxhc2hUZW5WZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uKSB7CisgICAgICAgICAgICAvLyBGbGFz
aCAxMC4wIGIyMTggZG9lc24ndCBsaWtlIGhhdmluZyBhIDAgd2luZG93IGhhbmRsZQorICAgICAg
ICAgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVz
dHJveSk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5R
dWlya1JlcXVpcmVzR3RrVG9vbEtpdCk7CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtb2R1bGVWZXJzaW9uIDwgZmxhc2hUZW5WZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uKSB7Cisg
ICAgICAgICAgICAvLyBGbGFzaCA5IGFuZCBvbGRlciByZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdp
bnMgaWYgd2UgcmV0dXJuIGEgbW96aWxsYSB1c2VyIGFnZW50CisgICAgICAgICAgICBxdWlya3Mt
PmFkZChQbHVnaW5RdWlya1dhbnRzTW96aWxsYVVzZXJBZ2VudCk7CisgICAgICAgIH0KKworI2lm
IFBMQVRGT1JNKFFUKQorICAgICAgICAvLyBGbGFzaCB3aWxsIGNyYXNoIG9uIHJlcGVhdGVkIGNh
bGxzIHRvIFNldFdpbmRvdyBpbiB3aW5kb3dlZCBtb2RlCisgICAgICAgIHF1aXJrcy0+YWRkKFBs
dWdpblF1aXJrRG9udENhbGxTZXRXaW5kb3dNb3JlVGhhbk9uY2UpOworCisjaWYgQ1BVKFg4Nl82
NCkKKyAgICAgICAgLy8gNjQtYml0IEZsYXNoIGZyZWV6ZXMgaWYgcmlnaHQtY2xpY2sgaXMgc2Vu
dCBpbiB3aW5kb3dsZXNzIG1vZGUKKyAgICAgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtJZ25v
cmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7CisjZW5kaWYKKyNlbmRpZgorCisgICAgICAg
IHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOworICAg
ICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1Rocm90dGxlSW52YWxpZGF0ZSk7CisgICAgICAg
IHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOwor
ICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0ZsYXNoVVJMTm90aWZ5QnVnKTsKKworICAg
IH0KKworI2lmIGRlZmluZWQoUV9XU19NQUVNT181KSB8fCBkZWZpbmVkKFFfV1NfTUFFTU9fNikK
KyAgICAvLyBQYXNzaW5nIGEgMzItYml0IGRlcHRoIHBpeG1hcCB0byBOUEFQSSBwbHVnaW5zIGlz
IHRvbyBpbmVmZmljaWVudC4gSW5zdGVhZCwgcGFzcyBhIFggUGl4bWFwCisgICAgLy8gdGhhdCBo
YXMgc2FtZSBkZXB0aCBhcyB0aGUgc2NyZWVuIGRlcHRoIHNpbmNlIGdyYXBoaWNzIG9wZXJhdGlv
bnMgYXJlIG9wdGltaXplZAorICAgIC8vIGZvciB0aGlzIGRlcHRoLgorICAgIHF1aXJrcy0+YWRk
KFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOworI2VuZGlmCit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy91bml4L1VO
SVhQbHVnaW5RdWlya3MuaCBiL1dlYkNvcmUvcGx1Z2lucy91bml4L1VOSVhQbHVnaW5RdWlya3Mu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzUxOTBlCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEg
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBT
emVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVU5JWFBsdWdpblF1
aXJrc19oCisjZGVmaW5lIFVOSVhQbHVnaW5RdWlya3NfaAorCisjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgU3RyaW5nOworfQorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UXRHbG9iYWw+CitR
VF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFMaWJyYXJ5OworUVRfRU5EX05BTUVTUEFDRQorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGx1Z2luUXVpcmtTZXQ7CisKK2Ns
YXNzIFVOSVhQbHVnaW5RdWlya3MgeworcHVibGljOgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0
YXRpYyBib29sIGlzTlBXcmFwcGVyKGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0ZsYXNoUGx1Z2luKGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5QYXRo
KTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplR1RLKFFMaWJyYXJ5KiBwbHVnaW5Nb2R1bGUg
PSAwKTsKKyNlbmRpZgorCisgICAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uIG1vZHVsZVZlcnNpb24s
IFBsdWdpblF1aXJrU2V0KiBxdWlya3MpOworfTsKKworfQorCisjZW5kaWYgLy8gVU5JWFBsdWdp
blF1aXJrc19oCmRpZmYgLS1naXQgYS9XZWJLaXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDViMmY1ZjAuLjY2Y2E3NTMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMTAtMjUgIEJh
bGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok1vZHVsZTo6bG9hZCk6IFVzZSB0aGUgUmVzb2x2ZUFsbFN5bWJvbHNIaW50IGhpbnQKKyAgICAg
ICAgd2hlbiBsb2FkaW5nIHRoZSBsaWJyYXJ5IGFzIHdlIGRvIGluIFdlYkNvcmUuCisgICAgICAg
ICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKTog
QXBwbHkgdGhlIFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0CisgICAgICAgIHF1aXJrIHdo
ZW4gbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppbml0aWFsaXpl
KTogQ2FsbCB0aGUgbmV3bHkgaW50cm9kdWNlZAorICAgICAgICBwbGF0Zm9ybVByZUluaXRpYWxp
emUgZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcgTlBfSW5pdGlhbGl6ZS4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW46OnF1aXJrcyk6IEFkZGVkIGEgUGx1Z2luUXVpcmtTZXQgbWVtYmVy
CisgICAgICAgIGFuZCBhIGdldHRlci4gQ3VycmVudGx5IHRoaXMgaXMgb25seSB1c2VkIGJ5IFF0
IGJ1dCBvdGhlcgorICAgICAgICBwb3J0cyB3b3VsZCBsaWtlbHkgbmVlZCBpdCBpbiB0aGUgZnV0
dXJlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlM
b2FkKTogQ2FsbCBOUF9Jbml0aWFsaXplCisgICAgICAgIGluIHRoZSBVTklYIHdheSBvbiBub24t
TWFjIFVOSVggcGxhdGZvcm1zLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6cGF0aCk6IEFkZGVkIGdldHRlci4KKyAgICAgICAgVXNlZCBpbiBOZXRzY2FwZVBM
dWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOiBBZGRlZC4KKyAgICAgICAgTWFr
ZXMgcG9zc2libGUgZm9yIHRoZSBwbGF0Zm9ybSB0byBjaGFuZ2UgdGhlIHBsdWdpbiBwYXJhbWV0
ZXJzCisgICAgICAgIGFuZCBkbyB3aGF0ZXZlciBpdCBuZWVkcyB0byBkbyBiZWZvcmUgY2FsbGlu
ZyBOUF9Jbml0aWFsaXplLgorICAgICAgICBDdXJyZW50bHkgb25seSB0aGUgUXQgaW1wbGVtZW50
YXRpb24gaXMgbm9uIGVtcHR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZSk6CisgICAgICAgIFNldCB0aGUgUGx1Z2luUXVpcmtS
ZXF1aXJlc0d0a1Rvb2xLaXQgYmVmb3JlIGNhbGxpbmcgTlBfSW5pdGlhbGl6ZSBmb3IKKyAgICAg
ICAgbnB3cmFwcGVycyBiZWNhdXNlIHRob3NlIG5lZWQgdGhlIHRvb2xraXQgdmFsdWUgZnJvbSBO
UF9Jbml0aWFsaXplLgorICAgICAgICBDYWxsIGd0a19pbml0IGZvciBmbGFzaCBhbmQgY2hhbmdl
IHRoZSBwYXJhbWV0ZXJzIHRvIGZvcmJpZCB3aW5kb3dlZAorICAgICAgICBtb2RlIGFuZCB0cmFz
cGFyZW5jeSB0aGF0IHdlIGRvIG5vdCBzdXBwb3J0LgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3dpbi9OZXRzY2FwZVBsdWdpbldpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorCiAyMDEwLTEwLTI1
ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9QbGF0
Zm9ybS9xdC9Nb2R1bGVRdC5jcHAgYi9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcApp
bmRleCA4YTY4Y2Y0Li44NGI4ZmIwIDEwMDY0NAotLS0gYS9XZWJLaXQyL1BsYXRmb3JtL3F0L01v
ZHVsZVF0LmNwcAorKysgYi9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcApAQCAtMzEs
NiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKICAg
ICBtX2xpYi5zZXRGaWxlTmFtZShzdGF0aWNfY2FzdDxRU3RyaW5nPihtX3BhdGgpKTsKKyAgICBt
X2xpYi5zZXRMb2FkSGludHMoUUxpYnJhcnk6OlJlc29sdmVBbGxTeW1ib2xzSGludCk7CiAgICAg
cmV0dXJuIG1fbGliLmxvYWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJLaXQyLnBy
byBiL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXggOTU0YzNhZi4uYjUxZTM4YyAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yMCw2
ICsyMCw4IEBAIERFU1RESVIgPSAkJFdFQktJVDJfREVTVERJUgogICAgIERFRklORVMgKz0gTkRF
QlVHCiB9CiAKK0RFRklORVMgKz0gWFBfVU5JWAorCiBJTkNMVURFUEFUSCA9IFwKICAgICAkJFBX
RC8uLiBcCiAgICAgJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUgXApkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3Mu
Y3BwCmluZGV4IGM1YzcwNWIuLmRmNzY3NjcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAg
LTQ1NSw2ICs0NTUsMTQgQEAgc3RhdGljIE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5Q
TlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKICAgICAgICBjYXNlIE5QTlZTdXBwb3J0
c1dpbmRvd2xlc3M6CiAgICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHRydWU7CiAgICAgICAg
ICAgIGJyZWFrOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGNhc2UgTlBOVlRvb2xraXQ6
IHsKKyAgICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQ
bHVnaW46OmZyb21OUFAobnBwKTsKKworICAgICAgICAgICAgaWYgKHBsdWdpbi0+cXVpcmtzKCku
Y29udGFpbnMoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQpKQorICAgICAgICAgICAgICAg
ICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNDc5OTcyNS4uMjlmOTIxOCAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcApAQCAtMzQwLDIxICszNDAsMjQgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6aW5pdGlh
bGl6ZShQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyLCBjb25zdCBQYXJhbWUKICAg
ICBBU1NFUlQocGx1Z2luQ29udHJvbGxlcik7CiAKICAgICBtX3BsdWdpbkNvbnRyb2xsZXIgPSBw
bHVnaW5Db250cm9sbGVyOwotICAgIAorCisgICAgQVNTRVJUKHBhcmFtZXRlcnMubmFtZXMuc2l6
ZSgpID09IHBhcmFtZXRlcnMudmFsdWVzLnNpemUoKSk7CiAgICAgdWludDE2X3QgbW9kZSA9IHBh
cmFtZXRlcnMubG9hZE1hbnVhbGx5ID8gTlBfRlVMTCA6IE5QX0VNQkVEOwotICAgIAogICAgIG1f
bG9hZE1hbnVhbGx5ID0gcGFyYW1ldGVycy5sb2FkTWFudWFsbHk7Ci0gICAgbV9pbk5QUE5ldyA9
IHRydWU7CiAKLSAgICBDU3RyaW5nIG1pbWVUeXBlQ1N0cmluZyA9IHBhcmFtZXRlcnMubWltZVR5
cGUudXRmOCgpOworICAgIFBhcmFtZXRlcnMgZWZmZWN0aXZlUGFyYXJtZXRlcnMgPSBwYXJhbWV0
ZXJzOworICAgIHBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgmZWZmZWN0aXZlUGFyYXJtZXRlcnMpOwor
ICAgIEFTU0VSVChlZmZlY3RpdmVQYXJhcm1ldGVycy5uYW1lcy5zaXplKCkgPT0gZWZmZWN0aXZl
UGFyYXJtZXRlcnMudmFsdWVzLnNpemUoKSk7CiAKLSAgICBBU1NFUlQocGFyYW1ldGVycy5uYW1l
cy5zaXplKCkgPT0gcGFyYW1ldGVycy52YWx1ZXMuc2l6ZSgpKTsKKyAgICBtX2luTlBQTmV3ID0g
dHJ1ZTsKKworICAgIENTdHJpbmcgbWltZVR5cGVDU3RyaW5nID0gZWZmZWN0aXZlUGFyYXJtZXRl
cnMubWltZVR5cGUudXRmOCgpOwogCiAgICAgVmVjdG9yPENTdHJpbmc+IHBhcmFtTmFtZXM7CiAg
ICAgVmVjdG9yPENTdHJpbmc+IHBhcmFtVmFsdWVzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFyYW1ldGVycy5uYW1lcy5zaXplKCk7ICsraSkgewotICAgICAgICBwYXJhbU5hbWVzLmFw
cGVuZChwYXJhbWV0ZXJzLm5hbWVzW2ldLnV0ZjgoKSk7Ci0gICAgICAgIHBhcmFtVmFsdWVzLmFw
cGVuZChwYXJhbWV0ZXJzLnZhbHVlc1tpXS51dGY4KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZWZmZWN0aXZlUGFyYXJtZXRlcnMubmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
cGFyYW1OYW1lcy5hcHBlbmQoZWZmZWN0aXZlUGFyYXJtZXRlcnMubmFtZXNbaV0udXRmOCgpKTsK
KyAgICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKGVmZmVjdGl2ZVBhcmFybWV0ZXJzLnZhbHVlc1tp
XS51dGY4KCkpOwogICAgIH0KIAogICAgIC8vIFRoZSBzdHJpbmdzIHRoYXQgdGhlc2UgcG9pbnRl
cnMgcG9pbnQgdG8gYXJlIGtlcHQgYWxpdmUgYnkgcGFyYW1OYW1lcyBhbmQgcGFyYW1WYWx1ZXMu
CkBAIC0zNzcsMTQgKzM4MCwxNCBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppbml0aWFsaXplKFBs
dWdpbkNvbnRyb2xsZXIqIHBsdWdpbkNvbnRyb2xsZXIsIGNvbnN0IFBhcmFtZQogICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGluIGFsbCBjYXNlcy4KICAgICBtX25wV2luZG93LnR5
cGUgPSBOUFdpbmRvd1R5cGVEcmF3YWJsZTsKIAotICAgIGlmICghcGxhdGZvcm1Qb3N0SW5pdGlh
bGl6ZSgpKSB7CisgICAgaWYgKCFwbGF0Zm9ybVBvc3RJbml0aWFsaXplKGVmZmVjdGl2ZVBhcmFy
bWV0ZXJzKSkgewogICAgICAgICBkZXN0cm95KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICAvLyBMb2FkIHRoZSBzcmMgVVJMIGlmIG5lZWRlZC4KLSAgICBpZiAoIXBhcmFt
ZXRlcnMubG9hZE1hbnVhbGx5ICYmICFwYXJhbWV0ZXJzLnVybC5pc0VtcHR5KCkgJiYgc2hvdWxk
TG9hZFNyY1VSTCgpKQotICAgICAgICBsb2FkVVJMKCJHRVQiLCBwYXJhbWV0ZXJzLnVybC5zdHJp
bmcoKSwgU3RyaW5nKCksIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNl
LCAwKTsKKyAgICBpZiAoIWVmZmVjdGl2ZVBhcmFybWV0ZXJzLmxvYWRNYW51YWxseSAmJiAhZWZm
ZWN0aXZlUGFyYXJtZXRlcnMudXJsLmlzRW1wdHkoKSAmJiBzaG91bGRMb2FkU3JjVVJMKCkpCisg
ICAgICAgIGxvYWRVUkwoIkdFVCIsIGVmZmVjdGl2ZVBhcmFybWV0ZXJzLnVybC5zdHJpbmcoKSwg
U3RyaW5nKCksIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlLCAwKTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGY4N2ZhNjIuLjM5MTY3MjUg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblF1aXJrU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgpAQCAtNzMsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgc2V0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgZXZhbHVhdGUoTlBPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7CiAgICAg
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBXZWJDb3JlOjpQbHVnaW5RdWly
a1NldCBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrczsgfQogCiAgICAgLy8gVGhlc2Ug
cmV0dXJuIHJldGFpbmVkIG9iamVjdHMuCiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCk7CkBAIC0xMTAsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BBbGxTdHJl
YW1zKCk7CiAgICAgYm9vbCBhbGxvd1BvcHVwcygpIGNvbnN0OwogCisgICAgdm9pZCBwbGF0Zm9y
bVByZUluaXRpYWxpemUoUGFyYW1ldGVycyopOwogICAgIGJvb2wgcGxhdGZvcm1Qb3N0SW5pdGlh
bGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAgICAgYm9vbCBwbGF0Zm9ybUlu
dmFsaWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpAQCAtMTg3LDYgKzE5MCw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2xvYWRNYW51YWxseTsKICAgICBSZWZQdHI8TmV0c2NhcGVQbHVn
aW5TdHJlYW0+IG1fbWFudWFsU3RyZWFtOwogCisgICAgV2ViQ29yZTo6UGx1Z2luUXVpcmtTZXQg
bV9xdWlya3M7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlBEcmF3aW5nTW9kZWwgbV9kcmF3
aW5nTW9kZWw7CiAgICAgTlBFdmVudE1vZGVsIG1fZXZlbnRNb2RlbDsKZGlmZiAtLWdpdCBhL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNw
cCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9k
dWxlLmNwcAppbmRleCA2YzE0YzRkLi4zZjExOWJiIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3Bw
CkBAIC0xMzUsOSArMTM1LDExIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQo
KQogICAgIGlmICghaW5pdGlhbGl6ZUZ1bmNQdHIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
I2lmICFYUF9VTklYCiAgICAgTlBfR2V0RW50cnlQb2ludHNGdW5jUHRyIGdldEVudHJ5UG9pbnRz
RnVuY1B0ciA9IG1fbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8TlBfR2V0RW50cnlQb2ludHNGdW5j
UHRyPigiTlBfR2V0RW50cnlQb2ludHMiKTsKICAgICBpZiAoIWdldEVudHJ5UG9pbnRzRnVuY1B0
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAKICAgICBtX3NodXRkb3duUHJvY1B0
ciA9IG1fbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8TlBQX1NodXRkb3duUHJvY1B0cj4oIk5QX1No
dXRkb3duIik7CiAgICAgaWYgKCFtX3NodXRkb3duUHJvY1B0cikKQEAgLTE1NSw2ICsxNTcsOSBA
QCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICNlbGlmIFBMQVRGT1JNKFdJ
TikKICAgICBpZiAoZ2V0RW50cnlQb2ludHNGdW5jUHRyKCZtX3BsdWdpbkZ1bmNzKSAhPSBOUEVS
Ul9OT19FUlJPUiB8fCBpbml0aWFsaXplRnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5jcygpKSAh
PSBOUEVSUl9OT19FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgWFBfVU5JWAor
ICAgIGlmIChpbml0aWFsaXplRnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5jcygpLCAmbV9wbHVn
aW5GdW5jcykgIT0gTlBFUlJfTk9fRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAppbmRleCBlNDk1MjQyLi41
ODZiZDEzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5oCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgog
ICAgIHZvaWQgcGx1Z2luQ3JlYXRlZCgpOwogICAgIHZvaWQgcGx1Z2luRGVzdHJveWVkKCk7CiAK
KyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luUGF0aDsgfQorCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IE5ldHNjYXBlUGx1Z2luTW9kdWxlKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCBmYjljMWRmLi5iZDhiOWMx
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0
c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC04MSw2ICs4MSwxMCBAQCBOUEVycm9yIE5l
dHNjYXBlUGx1Z2luOjpzZXRFdmVudE1vZGVsKE5QRXZlbnRNb2RlbCBldmVudE1vZGVsKQogICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KIAordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1QcmVJbml0aWFsaXplKFBhcmFtZXRlcnMqKQoreworfQorCiBib29sIE5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplKCkKIHsKICAgICBpZiAobV9kcmF3aW5nTW9kZWwgPT0g
c3RhdGljX2Nhc3Q8TlBEcmF3aW5nTW9kZWw+KC0xKSkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5jcHAgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcApp
bmRleCA4OWU2YzllLi5lNWQzMzM3IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcAorKysgYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcApAQCAtMjgsMTUg
KzI4LDQ1IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VTklYUGx1Z2luUXVpcmtzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUlu
aXRpYWxpemUoUGFyYW1ldGVycyogcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIGRldGVjdCB0aGUgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLgorICAgIFVOSVhQbHVnaW5RdWly
a3M6OmRldGVybWluZVF1aXJrcyhwYXJhbWV0ZXJzLT5taW1lVHlwZSwgMCAvKm1vZHVsZVZlcnNp
b24qLywgJm1fcXVpcmtzKTsKKworICAgIC8vIFdvcmthcm91bmQgQWRvYmUncyBmYWlsdXJlIHRv
IHByb3Blcmx5IGluaXRpYWxpemUgR3RrCisgICAgLy8gaW4gc29tZSB2ZXJzaW9ucyBvZiB0aGVp
ciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgorICAgIGlmIChVTklYUGx1Z2luUXVpcmtzOjppc05QV3Jh
cHBlcihtX3BsdWdpbk1vZHVsZS0+cGF0aCgpKSkgeworICAgICAgICAvLyBuc3BsdWdpbndyYXBw
ZXIgcmVsaWVzIG9uIHRoZSB0b29sa2l0IHZhbHVlIHRvIGtub3cgaWYgZ2xpYiBpcyBhdmFpbGFi
bGUKKyAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0KTsK
KyAgICAgICAgV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aW5pdGlhbGl6ZUdUSygpOworICAg
IH0gZWxzZSBpZiAoVU5JWFBsdWdpblF1aXJrczo6aXNGbGFzaFBsdWdpbihtX3BsdWdpbk1vZHVs
ZS0+cGF0aCgpKSkgeworICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgbG9hZGVkIHRoZSBwbHVn
aW4gYnV0IGluaXRpYWxpemVHVEsKKyAgICAgICAgLy8gbmVlZHMgYSBRTGlicmFyeSBmb3IgcmVz
b2x2aW5nIGd0a19pbml0LgorICAgICAgICBRTGlicmFyeSBmbGFzaFBsdWdpbihzdGF0aWNfY2Fz
dDxRU3RyaW5nPihtX3BsdWdpbk1vZHVsZS0+cGF0aCgpKSk7CisgICAgICAgIFVOSVhQbHVnaW5R
dWlya3M6OmluaXRpYWxpemVHVEsoJmZsYXNoUGx1Z2luKTsKKworICAgICAgICAvLyBDdXJyZW50
bHkgd2UgZG8gbm90IHN1cHBvcnQgd2luZG93ZWQgbW9kZSBhbmQgdHJhbnNwYXJlbmN5LgorICAg
ICAgICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtZXRlcnMtPm5hbWVzLmZpbmQoIndtb2RlIik7
CisgICAgICAgIGlmICh3bW9kZUluZGV4ID09IC0xKSB7CisgICAgICAgICAgICAvLyBEaXNhYmxl
IFhFbWJlZCBtb2RlIGFuZCBmb3JjZSBpdCB0byBvcGFxdWUgbW9kZQorICAgICAgICAgICAgcGFy
YW1ldGVycy0+bmFtZXMuYXBwZW5kKCJ3bW9kZSIpOworICAgICAgICAgICAgcGFyYW1ldGVycy0+
dmFsdWVzLmFwcGVuZCgib3BhcXVlIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBEaXNhYmxlIHRyYW5zcGFyZW5jeQorICAgICAgICAgICAgcGFyYW1ldGVycy0+dmFsdWVzW3dt
b2RlSW5kZXhdID0gIm9wYXF1ZSI7CisgICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wgTmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3dpbi9OZXRzY2FwZVBsdWdpbldpbi5jcHAgYi9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vTmV0c2NhcGVQbHVnaW5XaW4uY3BwCmluZGV4
IGRiMTFkMjcuLjI2NTE3NmYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3dpbi9OZXRzY2FwZVBsdWdpbldpbi5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL05ldHNjYXBlUGx1Z2luV2luLmNwcApAQCAtNTksNiAr
NTksMTAgQEAgSFdORCBOZXRzY2FwZVBsdWdpbjo6Y29udGFpbmluZ1dpbmRvdygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGx1Z2luQ29udHJvbGxlci0+bmF0aXZlUGFyZW50V2luZG93KCk7CiB9CiAK
K3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZShQYXJhbWV0ZXJzKikK
K3sKK30KKwogYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCiB7
CiAgICAgaWYgKCFtX2lzV2luZG93ZWQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71853</attachid>
            <date>2010-10-26 02:14:31 -0700</date>
            <delta_ts>2010-10-26 09:10:29 -0700</delta_ts>
            <desc>build fixed patch</desc>
            <filename>0001-Qt-WK2-Plugin-initialization.patch</filename>
            <type>text/plain</type>
            <size>34838</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">RnJvbSA1NTQ5ZDg4OWE5N2ZjODllOTBhZThjYzZiMjAyZGFhZTI5NmZlYmFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWxhenMgS2VsZW1lbiA8a2JAaW5mLnUtc3plZ2VkLmh1PgpE
YXRlOiBUdWUsIDI2IE9jdCAyMDEwIDEwOjQ0OjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW1F0
XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4MTI3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCldlYkNvcmU6
CgpObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMuCgpGYWN0b3Jpbmcgb3V0IHRo
ZSBRdCBzcGVjaWZpYyBoYWNrcyB0aGF0IG1ha2VzIGZsYXNoIHdvcmtpbmcKYW5kIHRoZSBVTklY
IHNwZWNpZmljIHF1aXJrIGRldGVybWluYXRpb24gYmVjYXVzZSB3ZSBuZWVkIHRvCnVzZSB0aGVt
IGluIFdlYktpdDIuCiogR05VbWFrZWZpbGUuYW06CiogV2ViQ29yZS5wcm86CiogcGx1Z2lucy9Q
bHVnaW5QYWNrYWdlLmNwcDoKKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJr
cyk6CiogcGx1Z2lucy9ucGZ1bmN0aW9ucy5oOgoqIHBsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0
LmNwcDoKKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgoqIHBsdWdpbnMvdW5peC9VTklY
UGx1Z2luUXVpcmtzLmNwcDogQWRkZWQuClRoZSBsb2dpYyBoYWQgYmVlbiBtb3ZlZCBmcm9tIFBs
dWdpblBhY2thZ2UuY3BwIGFuZCBQbHVnaW5QYWNrYWdlUXQuY3BwLgooV2ViQ29yZTo6VU5JWFBs
dWdpblF1aXJrczo6aXNOUFdyYXBwZXIpOgooV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aXNG
bGFzaFBsdWdpbik6CihXZWJDb3JlOjpVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKToK
KFdlYkNvcmU6OlVOSVhQbHVnaW5RdWlya3M6OmRldGVybWluZVF1aXJrcyk6IE1pbm9yIGZpeDoK
dGhlIGRlZmF1bHQgc2NyZWVuIGRlcHRoIG9uIE1hZW1vIHdhcyBub3QgYXBwbGllZCBpbiB0aGUK
Y2FzZSBvZiB0aGUgSmF2YSBwbHVnaW4gYmVjYXVzZSB3ZSB3ZXJlIHJldHVybmluZyBlYXJsaWVy
LgoqIHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmg6IEFkZGVkLgoKV2ViS2l0MjoKCiog
UGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwOgooV2ViS2l0OjpNb2R1bGU6OmxvYWQpOiBVc2UgdGhl
IFJlc29sdmVBbGxTeW1ib2xzSGludCBoaW50CndoZW4gbG9hZGluZyB0aGUgbGlicmFyeSBhcyB3
ZSBkbyBpbiBXZWJDb3JlLgoqIFdlYktpdDIucHJvOgoqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CihXZWJLaXQ6Ok5QTl9HZXRWYWx1ZSk6IEFw
cGx5IHRoZSBQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdApxdWlyayB3aGVuIG5lZWRlZC4K
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgooV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbjo6aW5pdGlhbGl6ZSk6IENhbGwgdGhlIG5ld2x5IGludHJvZHVjZWQK
cGxhdGZvcm1QcmVJbml0aWFsaXplIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nIE5QX0luaXRpYWxp
emUuCiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CihXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luOjpxdWlya3MpOiBBZGRlZCBhIFBsdWdpblF1aXJrU2V0IG1lbWJl
cgphbmQgYSBnZXR0ZXIuIEN1cnJlbnRseSB0aGlzIGlzIG9ubHkgdXNlZCBieSBRdCBidXQgb3Ro
ZXIKcG9ydHMgd291bGQgbGlrZWx5IG5lZWQgaXQgaW4gdGhlIGZ1dHVyZS4KKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgooV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCk6IENhbGwgTlBfSW5pdGlhbGl6ZQppbiB0aGUgVU5J
WCB3YXkgb24gbm9uLU1hYyBVTklYIHBsYXRmb3Jtcy4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaDoKKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OnBhdGgpOiBBZGRlZCBnZXR0ZXIuClVzZWQgaW4gTmV0c2NhcGVQTHVnaW46OnBsYXRmb3Jt
UHJlSW5pdGlhbGl6ZS4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBl
UGx1Z2luTWFjLm1tOgooV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFs
aXplKTogQWRkZWQuCk1ha2VzIHBvc3NpYmxlIGZvciB0aGUgcGxhdGZvcm0gdG8gY2hhbmdlIHRo
ZSBwbHVnaW4gcGFyYW1ldGVycwphbmQgZG8gd2hhdGV2ZXIgaXQgbmVlZHMgdG8gZG8gYmVmb3Jl
IGNhbGxpbmcgTlBfSW5pdGlhbGl6ZS4KQ3VycmVudGx5IG9ubHkgdGhlIFF0IGltcGxlbWVudGF0
aW9uIGlzIG5vbiBlbXB0eS4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2Nh
cGVQbHVnaW5RdC5jcHA6CihXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRp
YWxpemUpOgpTZXQgdGhlIFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0IGJlZm9yZSBjYWxs
aW5nIE5QX0luaXRpYWxpemUgZm9yCm5wd3JhcHBlcnMgYmVjYXVzZSB0aG9zZSBuZWVkIHRoZSB0
b29sa2l0IHZhbHVlIGZyb20gTlBfSW5pdGlhbGl6ZS4KQ2FsbCBndGtfaW5pdCBmb3IgZmxhc2gg
YW5kIGNoYW5nZSB0aGUgcGFyYW1ldGVycyB0byBmb3JiaWQgd2luZG93ZWQKbW9kZSBhbmQgdHJh
c3BhcmVuY3kgdGhhdCB3ZSBkbyBub3Qgc3VwcG9ydC4KKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtUG9zdEluaXRpYWxpemUpOgoqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93
aW4vTmV0c2NhcGVQbHVnaW5XaW4uY3BwOgooV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1QcmVJbml0aWFsaXplKToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL1dlYkNvcmUucHJvICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5QYWNrYWdlLmNwcCAgICAgICAgICAgICAgICAgIHwgICA1MiArLS0tLS0tLQogV2ViQ29y
ZS9wbHVnaW5zL25wZnVuY3Rpb25zLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBX
ZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcCAgICAgICAgICAgICB8ICAgNjAg
KystLS0tLS0tCiBXZWJDb3JlL3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcCAgICAg
ICAgICB8ICAxMzkgKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGx1Z2lucy91bml4L1VO
SVhQbHVnaW5RdWlya3MuaCAgICAgICAgICAgIHwgICA2NCArKysrKysrKysKIFdlYktpdDIvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiArKysrKysKIFdl
YktpdDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJLaXQyL1dlYktpdDIucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDIgKwogLi4uL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwICAgICAg
fCAgICA4ICsKIC4uLi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwIHwgICAyMyArKy0tCiAuLi4vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmggICB8ICAgIDUgKwogLi4uL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwICAgICAgfCAgICA1ICsKIC4uLi9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmggICAgICAgIHwgICAgMiArCiAuLi4vUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0
c2NhcGVQbHVnaW5NYWMubW0gICAgICB8ICAgIDQgKwogLi4uL1BsdWdpbnMvTmV0c2NhcGUvcXQv
TmV0c2NhcGVQbHVnaW5RdC5jcHAgICAgICAgfCAgIDMyICsrKysrLQogLi4uL1BsdWdpbnMvTmV0
c2NhcGUvd2luL05ldHNjYXBlUGx1Z2luV2luLmNwcCAgICAgfCAgICA0ICsKIDE5IGZpbGVzIGNo
YW5nZWQsIDM3MSBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBXZWJDb3JlL3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmgKCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM0ODM2
NDEuLmViY2MwNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAtMjUgIEJhbGF6cyBLZWxlbWVuICA8
a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgTm8g
bmV3IGZ1bmN0aW9uYWxpdHkgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgIEZhY3RvcmluZyBv
dXQgdGhlIFF0IHNwZWNpZmljIGhhY2tzIHRoYXQgbWFrZXMgZmxhc2ggd29ya2luZworICAgICAg
ICBhbmQgdGhlIFVOSVggc3BlY2lmaWMgcXVpcmsgZGV0ZXJtaW5hdGlvbiBiZWNhdXNlIHdlIG5l
ZWQgdG8KKyAgICAgICAgdXNlIHRoZW0gaW4gV2ViS2l0Mi4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBh
Y2thZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVp
cmtzKToKKyAgICAgICAgKiBwbHVnaW5zL25wZnVuY3Rpb25zLmg6CisgICAgICAgICogcGx1Z2lu
cy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2Fn
ZTo6bG9hZCk6CisgICAgICAgICogcGx1Z2lucy91bml4L1VOSVhQbHVnaW5RdWlya3MuY3BwOiBB
ZGRlZC4KKyAgICAgICAgVGhlIGxvZ2ljIGhhZCBiZWVuIG1vdmVkIGZyb20gUGx1Z2luUGFja2Fn
ZS5jcHAgYW5kIFBsdWdpblBhY2thZ2VRdC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpVTklYUGx1
Z2luUXVpcmtzOjppc05QV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpVTklYUGx1Z2luUXVp
cmtzOjppc0ZsYXNoUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlVOSVhQbHVnaW5RdWlya3M6
OmluaXRpYWxpemVHVEspOgorICAgICAgICAoV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6ZGV0
ZXJtaW5lUXVpcmtzKTogTWlub3IgZml4OgorICAgICAgICB0aGUgZGVmYXVsdCBzY3JlZW4gZGVw
dGggb24gTWFlbW8gd2FzIG5vdCBhcHBsaWVkIGluIHRoZQorICAgICAgICBjYXNlIG9mIHRoZSBK
YXZhIHBsdWdpbiBiZWNhdXNlIHdlIHdlcmUgcmV0dXJuaW5nIGVhcmxpZXIuCisgICAgICAgICog
cGx1Z2lucy91bml4L1VOSVhQbHVnaW5RdWlya3MuaDogQWRkZWQuCisKIDIwMTAtMTAtMjYgIFhh
biBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRp
biBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDhjMjA0YWEuLjg2ZGNhOWYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzYzNCw3
ICszNjM0LDkgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9jYWNoZS93ZWJraXQvc291cC1jYWNoZS1wcml2YXRlLmggXAogCVdlYkNvcmUv
cGx1Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAgXAogCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1
Z2luUGFja2FnZUd0ay5jcHAgXAotCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5j
cHAKKwlXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwIFwKKwlXZWJDb3JlL3Bs
dWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmggXAorCVdlYkNvcmUvcGx1Z2lucy91bml4L1VO
SVhQbHVnaW5RdWlya3MuY3BwCiAKIGlmIFRBUkdFVF9YMTEKIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCA5ZmIyZmRkLi5lNTU2ZTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI3ODIsOSArMjc4MiwxMSBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAgICAgICAgICAgICAg
ICAgU09VUkNFUyArPSBcCiAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luQ29u
dGFpbmVyUXQuY3BwIFwKICAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVnaW5QYWNr
YWdlUXQuY3BwIFwKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQu
Y3BwCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBcCisg
ICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcAogICAg
ICAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgICAgICAgICBwbHVnaW5zL3F0
L1BsdWdpbkNvbnRhaW5lclF0LmgKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVn
aW5Db250YWluZXJRdC5oIFwKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy91bml4L1VOSVhQ
bHVnaW5RdWlya3MuaAogICAgICAgICAgICAgICAgIERFRklORVMgKz0gWFBfVU5JWAogICAgICAg
ICAgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNI
RT0xCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFj
a2FnZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXggMmUwMzA4
Yi4uMzJmNjNkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
CisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMzcsNiArMzcsMTAg
QEAKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKKyNpZiBYUF9VTklYCisjaW5jbHVkZSAidW5peC9VTklYUGx1Z2luUXVpcmtzLmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVnaW5QYWNrYWdlOjp+UGx1Z2lu
UGFja2FnZSgpCkBAIC0xODEsNTMgKzE4NSw3IEBAIFBhc3NSZWZQdHI8UGx1Z2luUGFja2FnZT4g
UGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25zdCBTdHJpbmcmIHBhCiAj
aWYgZGVmaW5lZChYUF9VTklYKQogdm9pZCBQbHVnaW5QYWNrYWdlOjpkZXRlcm1pbmVRdWlya3Mo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNK
YXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIC8vIEJlY2F1c2UgYSBzaW5n
bGUgcHJvY2VzcyBjYW5ub3QgY3JlYXRlIG11bHRpcGxlIFZNcywgYW5kIHdlIGNhbm5vdCByZWxp
YWJseSB1bmxvYWQgYQotICAgICAgICAvLyBKYXZhIFZNLCB3ZSBjYW5ub3QgdW5sb2FkIHRoZSBK
YXZhIHBsdWdpbiwgb3Igd2UnbGwgbG9zZSByZWZlcmVuY2UgdG8gb3VyIG9ubHkgVk0KLSAgICAg
ICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrRG9udFVubG9hZFBsdWdpbik7Ci0KLSAgICAgICAg
Ly8gU2V0dGluZyB0aGUgd2luZG93IHJlZ2lvbiB0byBhbiBlbXB0eSByZWdpb24gY2F1c2VzIGJh
ZCBzY3JvbGxpbmcgcmVwYWludCBwcm9ibGVtcwotICAgICAgICAvLyB3aXRoIHRoZSBKYXZhIHBs
dWctaW4uCi0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0RvbnRDbGlwVG9aZXJvUmVj
dFdoZW5TY3JvbGxpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1pbWVU
eXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBmbGFzaFRlblZlcnNpb24oMHgwYTAwMDAwMCk7
Ci0KLSAgICAgICAgaWYgKGNvbXBhcmVGaWxlVmVyc2lvbihmbGFzaFRlblZlcnNpb24pID49IDAp
IHsKLSAgICAgICAgICAgIC8vIEZsYXNoIDEwLjAgYjIxOCBkb2Vzbid0IGxpa2UgaGF2aW5nIGEg
TlVMTCB3aW5kb3cgaGFuZGxlCi0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtE
b250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7Ci0jaWYgUExBVEZPUk0oUVQpCi0gICAg
ICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQpOwotI2Vu
ZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGbGFzaCA5IGFuZCBvbGRlciBy
ZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYgd2UgcmV0dXJuIGEgbW96aWxsYSB1c2VyIGFn
ZW50Ci0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtXYW50c01vemlsbGFVc2Vy
QWdlbnQpOwotICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShRVCkKLSAgICAgICAgLy8gRmxhc2gg
d2lsbCBjcmFzaCBvbiByZXBlYXRlZCBjYWxscyB0byBTZXRXaW5kb3cgaW4gd2luZG93ZWQgbW9k
ZQotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtEb250Q2FsbFNldFdpbmRvd01vcmVU
aGFuT25jZSk7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAvLyA2NC1iaXQgRmxhc2ggZnJl
ZXplcyBpZiByaWdodC1jbGljayBpcyBzZW50IGluIHdpbmRvd2xlc3MgbW9kZQotICAgICAgICBt
X3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7
Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya1JlcXVp
cmVzRGVmYXVsdFNjcmVlbkRlcHRoKTsKLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJr
VGhyb3R0bGVJbnZhbGlkYXRlKTsKLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrVGhy
b3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOwotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2lu
UXVpcmtGbGFzaFVSTE5vdGlmeUJ1Zyk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChRX1dTX01BRU1P
XzUpIHx8IGRlZmluZWQoUV9XU19NQUVNT182KQotICAgIC8vIFBhc3NpbmcgYSAzMi1iaXQgZGVw
dGggcGl4bWFwIHRvIE5QQVBJIHBsdWdpbnMgaXMgdG9vIGluZWZmaWNpZW50LiBJbnN0ZWFkLCBw
YXNzIGEgWCBQaXhtYXAKLSAgICAvLyB0aGF0IGhhcyBzYW1lIGRlcHRoIGFzIHRoZSBzY3JlZW4g
ZGVwdGggc2luY2UgZ3JhcGhpY3Mgb3BlcmF0aW9ucyBhcmUgb3B0aW1pemVkCi0gICAgLy8gZm9y
IHRoaXMgZGVwdGguCi0gICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0
U2NyZWVuRGVwdGgpOwotI2VuZGlmCisgICAgVU5JWFBsdWdpblF1aXJrczo6ZGV0ZXJtaW5lUXVp
cmtzKG1pbWVUeXBlLCBtX21vZHVsZVZlcnNpb24sICZtX3F1aXJrcyk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL25wZnVuY3Rpb25zLmggYi9XZWJDb3JlL3BsdWdp
bnMvbnBmdW5jdGlvbnMuaAppbmRleCAxNzI3NTRiLi5jODMzZjBjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsdWdpbnMvbnBmdW5jdGlvbnMuaAorKysgYi9XZWJDb3JlL3BsdWdpbnMvbnBmdW5jdGlv
bnMuaApAQCAtMjYsNyArMjYsNyBAQAogI2RlZmluZSBOUEZVTkNUSU9OU19ICiAKIAotI2luY2x1
ZGUgIm5wcnVudGltZS5oIgorI2luY2x1ZGUgIm5wcnVudGltZV9pbnRlcm5hbC5oIgogI2luY2x1
ZGUgIm5wYXBpLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2lu
UGFja2FnZVF0LmNwcAppbmRleCBlNzA1OGM3Li5jZjZkYzQwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luUGFja2FnZVF0LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogCisjaW5jbHVkZSAiLi4v
dW5peC9VTklYUGx1Z2luUXVpcmtzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIK
QEAgLTg4LDQ5ICs5MCw2IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6c2V0TUlNRURlc2NyaXB0aW9u
KGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQogICAgIH0KIH0KIAotc3RhdGljIE5QRXJy
b3Igc3RhdGljUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRfTlBOX0dldFZhbHVlKE5QUCBp
bnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQotewotICAgIGlmICh2
YXJpYWJsZSA9PSBOUE5WVG9vbGtpdCkgewotICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyX3Qq
Pih2YWx1ZSkgPSAyOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIE5QTl9HZXRWYWx1ZShpbnN0YW5jZSwgdmFyaWFibGUsIHZhbHVlKTsKLX0KLQot
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZUd0ayhRTGlicmFyeSogbW9kdWxlID0gMCkKLXsKLSAgICAv
LyBFbnN1cmVzIG1pc3NpbmcgR3RrIGluaXRpYWxpemF0aW9uIGluIHNvbWUgdmVyc2lvbnMgb2Yg
QWRvYmUncyBmbGFzaCBwbGF5ZXIKLSAgICAvLyBwbHVnaW4gZG8gbm90IGNhdXNlIGNyYXNoZXMu
IFNlZSBCUiMgNDA1NjcsIDQ0MzI0LCBhbmQgNDQ0MDUgZm9yIGRldGFpbHMuICAKLSAgICBpZiAo
bW9kdWxlKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9wdHIpKGludCosIGNo
YXIqKiopOwotICAgICAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IChndGtfaW5pdF9wdHIpbW9k
dWxlLT5yZXNvbHZlKCJndGtfaW5pdCIpOwotICAgICAgICBpZiAoZ3RrSW5pdCkgewotICAgICAg
ICAgICAgLy8gUHJldmVudCBndGtfaW5pdCgpIGZyb20gcmVwbGFjaW5nIHRoZSBYIGVycm9yIGhh
bmRsZXJzLCBzaW5jZSB0aGUgR3RrCi0gICAgICAgICAgICAvLyBoYW5kbGVycyBhYm9ydCB3aGVu
IHRoZXkgcmVjZWl2ZSBhbiBYIGVycm9yLCB0aHVzIGtpbGxpbmcgdGhlIHZpZXdlci4KLSNpZmRl
ZiBRX1dTX1gxMQotICAgICAgICAgICAgaW50ICgqb2xkX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkq
LCBYRXJyb3JFdmVudCopID0gWFNldEVycm9ySGFuZGxlcigwKTsKLSAgICAgICAgICAgIGludCAo
Km9sZF9pb19lcnJvcl9oYW5kbGVyKShEaXNwbGF5KikgPSBYU2V0SU9FcnJvckhhbmRsZXIoMCk7
Ci0jZW5kaWYKLSAgICAgICAgICAgIGd0a0luaXQoMCwgMCk7Ci0jaWZkZWYgUV9XU19YMTEKLSAg
ICAgICAgICAgIFhTZXRFcnJvckhhbmRsZXIob2xkX2Vycm9yX2hhbmRsZXIpOwotICAgICAgICAg
ICAgWFNldElPRXJyb3JIYW5kbGVyKG9sZF9pb19lcnJvcl9oYW5kbGVyKTsKLSNlbmRpZgotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUxpYnJhcnkgbGlicmFy
eSgibGliZ3RrLXgxMS0yLjAuc28uMCIpOwotICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkgewotICAg
ICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFyKioqKTsK
LSAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IChndGtfaW5pdF9jaGVj
a19wdHIpbGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpOwotICAgICAgICAvLyBOT1RF
OiBXZSdyZSB1c2luZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhp
dCgpIG9uIGZhaWx1cmUuCi0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAo
dm9pZCkgZ3RrSW5pdENoZWNrKDAsIDApOwotICAgIH0KLX0KLQogYm9vbCBQbHVnaW5QYWNrYWdl
Ojpsb2FkKCkKIHsKICAgICBpZiAobV9pc0xvYWRlZCkgewpAQCAtMTYyLDE3ICsxMjEsMTYgQEAg
Ym9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIAogICAgIGluaXRpYWxpemVCcm93c2VyRnVuY3Mo
KTsKIAotICAgIGlmIChtX3BhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKSkgeworICAgIGlmIChV
TklYUGx1Z2luUXVpcmtzOjppc05QV3JhcHBlcihtX3BhdGgpKSB7CiAgICAgICAgIC8vIG5zcGx1
Z2lud3JhcHBlciByZWxpZXMgb24gdGhlIHRvb2xraXQgdmFsdWUgdG8ga25vdyBpZiBnbGliIGlz
IGF2YWlsYWJsZQotICAgICAgICAvLyBJdCBkb2VzIHNvIGluIE5QX0luaXRpYWxpemUgd2l0aCBh
IG51bGwgaW5zdGFuY2UsIHRoZXJlZm9yZSBpdCBpcyBkb25lIHRoaXMgd2F5OgotICAgICAgICBt
X2Jyb3dzZXJGdW5jcy5nZXR2YWx1ZSA9IHN0YXRpY1BsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29s
S2l0X05QTl9HZXRWYWx1ZTsKLSAgICAgICAgLy8gV29ya2Fyb3VuZCBBZG9iZSdzIGZhaWx1cmUg
dG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsgaW4gc29tZSB2ZXJzaW9ucwotICAgICAgICAvLyBv
ZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgotICAgICAgICBpbml0aWFsaXplR3RrKCk7Ci0g
ICAgfSBlbHNlIGlmIChtX3BhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsKKyAgICAgICAg
Ly8gSXQgZG9lcyBzbyBpbiBOUF9Jbml0aWFsaXplIHdpdGggYSBudWxsIGluc3RhbmNlLCB0aGVy
ZWZvcmUgd2Ugc2hvdWxkIHNldAorICAgICAgICAvLyB0aGlzIHF1aXJrIGJlZm9yZSBjYWxsaW5n
IGl0LgorICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQp
OworICAgICAgICBVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKCk7CisgICAgfSBlbHNl
IGlmIChVTklYUGx1Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2luKG1fcGF0aCkpIHsKICAgICAgICAg
Ly8gV29ya2Fyb3VuZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsg
aW4gc29tZSB2ZXJzaW9ucwogICAgICAgICAvLyBvZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2lu
LgotICAgICAgICBpbml0aWFsaXplR3RrKG1fbW9kdWxlKTsKKyAgICAgICAgVU5JWFBsdWdpblF1
aXJrczo6aW5pdGlhbGl6ZUdUSyhtX21vZHVsZSk7CiAgICAgfQogCiAjaWYgZGVmaW5lZChYUF9V
TklYKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5j
cHAgYi9XZWJDb3JlL3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTM3YmMxCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAKQEAgLTAsMCArMSwxMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJVTklYUGx1Z2luUXVpcmtzLmgiCisKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCisjaW5j
bHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiCisjaW5jbHVkZSA8UUxpYnJhcnk+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFBM
QVRGT1JNKFFUKQorYm9vbCBVTklYUGx1Z2luUXVpcmtzOjppc05QV3JhcHBlcihjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgpCit7CisgICAgcmV0dXJuIHBsdWdpblBhdGguY29udGFpbnMoIm5wd3Jh
cHBlci4iKTsKK30KKworYm9vbCBVTklYUGx1Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2luKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICByZXR1cm4gcGx1Z2luUGF0aC5jb250YWlucygi
Zmxhc2hwbGF5ZXIiKTsKK30KKwordm9pZCBVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RL
KFFMaWJyYXJ5KiBwbHVnaW5Nb2R1bGUpCit7CisgICAgLy8gRW5zdXJlcyBtaXNzaW5nIEd0ayBp
bml0aWFsaXphdGlvbiBpbiBzb21lIHZlcnNpb25zIG9mIEFkb2JlJ3MgZmxhc2ggcGxheWVyCisg
ICAgLy8gcGx1Z2luIGRvIG5vdCBjYXVzZSBjcmFzaGVzLiBTZWUgQlIjIDQwNTY3LCA0NDMyNCwg
YW5kIDQ0NDA1IGZvciBkZXRhaWxzLgorICAgIGlmIChwbHVnaW5Nb2R1bGUpIHsKKyAgICAgICAg
dHlwZWRlZiB2b2lkICooKmd0a19pbml0X3B0cikoaW50KiwgY2hhcioqKik7CisgICAgICAgIGd0
a19pbml0X3B0ciBndGtJbml0ID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9wdHI+KHBsdWdp
bk1vZHVsZS0+cmVzb2x2ZSgiZ3RrX2luaXQiKSk7CisgICAgICAgIGlmIChndGtJbml0KSB7Cisg
ICAgICAgICAgICAvLyBQcmV2ZW50IGd0a19pbml0KCkgZnJvbSByZXBsYWNpbmcgdGhlIFggZXJy
b3IgaGFuZGxlcnMsIHNpbmNlIHRoZSBHdGsKKyAgICAgICAgICAgIC8vIGhhbmRsZXJzIGFib3J0
IHdoZW4gdGhleSByZWNlaXZlIGFuIFggZXJyb3IsIHRodXMga2lsbGluZyB0aGUgdmlld2VyLgor
I2lmZGVmIFFfV1NfWDExCisgICAgICAgICAgICBpbnQgKCpvbGRfZXJyb3JfaGFuZGxlcikoRGlz
cGxheSosIFhFcnJvckV2ZW50KikgPSBYU2V0RXJyb3JIYW5kbGVyKDApOworICAgICAgICAgICAg
aW50ICgqb2xkX2lvX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqKSA9IFhTZXRJT0Vycm9ySGFuZGxl
cigwKTsKKyNlbmRpZgorICAgICAgICAgICAgZ3RrSW5pdCgwLCAwKTsKKyNpZmRlZiBRX1dTX1gx
MQorICAgICAgICAgICAgWFNldEVycm9ySGFuZGxlcihvbGRfZXJyb3JfaGFuZGxlcik7CisgICAg
ICAgICAgICBYU2V0SU9FcnJvckhhbmRsZXIob2xkX2lvX2Vycm9yX2hhbmRsZXIpOworI2VuZGlm
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRTGlicmFyeSBs
aWJyYXJ5KCJsaWJndGsteDExLTIuMC5zby4wIik7CisgICAgaWYgKGxpYnJhcnkubG9hZCgpKSB7
CisgICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9jaGVja19wdHIpKGludCosIGNoYXIq
KiopOworICAgICAgICBndGtfaW5pdF9jaGVja19wdHIgZ3RrSW5pdENoZWNrID0gcmVpbnRlcnBy
ZXRfY2FzdDxndGtfaW5pdF9jaGVja19wdHI+KGxpYnJhcnkucmVzb2x2ZSgiZ3RrX2luaXRfY2hl
Y2siKSk7CisgICAgICAgIC8vIE5PVEU6IFdlJ3JlIHVzaW5nIGd0a19pbml0X2NoZWNrKCkgc2lu
Y2UgZ3RrX2luaXQoKSBjYWxscyBleGl0KCkgb24gZmFpbHVyZS4KKyAgICAgICAgaWYgKGd0a0lu
aXRDaGVjaykKKyAgICAgICAgICAgICh2b2lkKSBndGtJbml0Q2hlY2soMCwgMCk7CisgICAgfQor
fQorI2VuZGlmCisKK3ZvaWQgVU5JWFBsdWdpblF1aXJrczo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBtb2R1bGVWZXJzaW9uLCBQ
bHVnaW5RdWlya1NldCogcXVpcmtzKQoreworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0ph
dmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAgICAgICAgLy8gQmVjYXVzZSBhIHNpbmds
ZSBwcm9jZXNzIGNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgVk1zLCBhbmQgd2UgY2Fubm90IHJlbGlh
Ymx5IHVubG9hZCBhCisgICAgICAgIC8vIEphdmEgVk0sIHdlIGNhbm5vdCB1bmxvYWQgdGhlIEph
dmEgcGx1Z2luLCBvciB3ZSdsbCBsb3NlIHJlZmVyZW5jZSB0byBvdXIgb25seSBWTQorICAgICAg
ICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0RvbnRVbmxvYWRQbHVnaW4pOworCisgICAgICAgIC8v
IFNldHRpbmcgdGhlIHdpbmRvdyByZWdpb24gdG8gYW4gZW1wdHkgcmVnaW9uIGNhdXNlcyBiYWQg
c2Nyb2xsaW5nIHJlcGFpbnQgcHJvYmxlbXMKKyAgICAgICAgLy8gd2l0aCB0aGUgSmF2YSBwbHVn
LWluLgorICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0RvbnRDbGlwVG9aZXJvUmVjdFdo
ZW5TY3JvbGxpbmcpOworCisgICAgfSBlbHNlIGlmIChtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24v
eC1zaG9ja3dhdmUtZmxhc2giKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBQbGF0Zm9ybU1vZHVs
ZVZlcnNpb24gZmxhc2hUZW5WZXJzaW9uKDB4MGEwMDAwMDApOworCisgICAgICAgIC8vIFdlIGFy
ZSBhcHBseWluZyBxdWlya3MgZm9yIGJvdGggbW9kdWxlVmVyc2lvbiBpZiB3ZSBkbyBub3Qga25v
dyB0aGUgbW9kdWxlVmVyc2lvbi4KKyAgICAgICAgaWYgKG1vZHVsZVZlcnNpb24gPj0gZmxhc2hU
ZW5WZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uKSB7CisgICAgICAgICAgICAvLyBGbGFzaCAxMC4w
IGIyMTggZG9lc24ndCBsaWtlIGhhdmluZyBhIDAgd2luZG93IGhhbmRsZQorICAgICAgICAgICAg
cXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7
CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1Jl
cXVpcmVzR3RrVG9vbEtpdCk7CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb2R1
bGVWZXJzaW9uIDwgZmxhc2hUZW5WZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uKSB7CisgICAgICAg
ICAgICAvLyBGbGFzaCA5IGFuZCBvbGRlciByZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYg
d2UgcmV0dXJuIGEgbW96aWxsYSB1c2VyIGFnZW50CisgICAgICAgICAgICBxdWlya3MtPmFkZChQ
bHVnaW5RdWlya1dhbnRzTW96aWxsYVVzZXJBZ2VudCk7CisgICAgICAgIH0KKworI2lmIFBMQVRG
T1JNKFFUKQorICAgICAgICAvLyBGbGFzaCB3aWxsIGNyYXNoIG9uIHJlcGVhdGVkIGNhbGxzIHRv
IFNldFdpbmRvdyBpbiB3aW5kb3dlZCBtb2RlCisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1
aXJrRG9udENhbGxTZXRXaW5kb3dNb3JlVGhhbk9uY2UpOworCisjaWYgQ1BVKFg4Nl82NCkKKyAg
ICAgICAgLy8gNjQtYml0IEZsYXNoIGZyZWV6ZXMgaWYgcmlnaHQtY2xpY2sgaXMgc2VudCBpbiB3
aW5kb3dsZXNzIG1vZGUKKyAgICAgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdo
dENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7CisjZW5kaWYKKyNlbmRpZgorCisgICAgICAgIHF1aXJr
cy0+YWRkKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOworICAgICAgICBx
dWlya3MtPmFkZChQbHVnaW5RdWlya1Rocm90dGxlSW52YWxpZGF0ZSk7CisgICAgICAgIHF1aXJr
cy0+YWRkKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOworICAgICAg
ICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0ZsYXNoVVJMTm90aWZ5QnVnKTsKKworICAgIH0KKwor
I2lmIGRlZmluZWQoUV9XU19NQUVNT181KSB8fCBkZWZpbmVkKFFfV1NfTUFFTU9fNikKKyAgICAv
LyBQYXNzaW5nIGEgMzItYml0IGRlcHRoIHBpeG1hcCB0byBOUEFQSSBwbHVnaW5zIGlzIHRvbyBp
bmVmZmljaWVudC4gSW5zdGVhZCwgcGFzcyBhIFggUGl4bWFwCisgICAgLy8gdGhhdCBoYXMgc2Ft
ZSBkZXB0aCBhcyB0aGUgc2NyZWVuIGRlcHRoIHNpbmNlIGdyYXBoaWNzIG9wZXJhdGlvbnMgYXJl
IG9wdGltaXplZAorICAgIC8vIGZvciB0aGlzIGRlcHRoLgorICAgIHF1aXJrcy0+YWRkKFBsdWdp
blF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOworI2VuZGlmCit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy91bml4L1VOSVhQbHVn
aW5RdWlya3MuaCBiL1dlYkNvcmUvcGx1Z2lucy91bml4L1VOSVhQbHVnaW5RdWlya3MuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzUxOTBlCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBl
dGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVU5JWFBsdWdpblF1aXJrc19o
CisjZGVmaW5lIFVOSVhQbHVnaW5RdWlya3NfaAorCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UXRHbG9iYWw+CitRVF9CRUdJ
Tl9OQU1FU1BBQ0UKK2NsYXNzIFFMaWJyYXJ5OworUVRfRU5EX05BTUVTUEFDRQorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGx1Z2luUXVpcmtTZXQ7CisKK2NsYXNzIFVO
SVhQbHVnaW5RdWlya3MgeworcHVibGljOgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0YXRpYyBi
b29sIGlzTlBXcmFwcGVyKGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBzdGF0
aWMgYm9vbCBpc0ZsYXNoUGx1Z2luKGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplR1RLKFFMaWJyYXJ5KiBwbHVnaW5Nb2R1bGUgPSAwKTsK
KyNlbmRpZgorCisgICAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSwgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uIG1vZHVsZVZlcnNpb24sIFBsdWdp
blF1aXJrU2V0KiBxdWlya3MpOworfTsKKworfQorCisjZW5kaWYgLy8gVU5JWFBsdWdpblF1aXJr
c19oCmRpZmYgLS1naXQgYS9XZWJLaXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGQwMDA4ZDIuLmQ0NjVlMjAgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMTAtMjUgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vZHVs
ZTo6bG9hZCk6IFVzZSB0aGUgUmVzb2x2ZUFsbFN5bWJvbHNIaW50IGhpbnQKKyAgICAgICAgd2hl
biBsb2FkaW5nIHRoZSBsaWJyYXJ5IGFzIHdlIGRvIGluIFdlYkNvcmUuCisgICAgICAgICogV2Vi
S2l0Mi5wcm86CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBOX0dldFZhbHVlKTogQXBwbHkg
dGhlIFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0CisgICAgICAgIHF1aXJrIHdoZW4gbmVl
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppbml0aWFsaXplKTogQ2Fs
bCB0aGUgbmV3bHkgaW50cm9kdWNlZAorICAgICAgICBwbGF0Zm9ybVByZUluaXRpYWxpemUgZnVu
Y3Rpb24gYmVmb3JlIGNhbGxpbmcgTlBfSW5pdGlhbGl6ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OnF1aXJrcyk6IEFkZGVkIGEgUGx1Z2luUXVpcmtTZXQgbWVtYmVyCisgICAg
ICAgIGFuZCBhIGdldHRlci4gQ3VycmVudGx5IHRoaXMgaXMgb25seSB1c2VkIGJ5IFF0IGJ1dCBv
dGhlcgorICAgICAgICBwb3J0cyB3b3VsZCBsaWtlbHkgbmVlZCBpdCBpbiB0aGUgZnV0dXJlLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKTog
Q2FsbCBOUF9Jbml0aWFsaXplCisgICAgICAgIGluIHRoZSBVTklYIHdheSBvbiBub24tTWFjIFVO
SVggcGxhdGZvcm1zLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6cGF0aCk6IEFkZGVkIGdldHRlci4KKyAgICAgICAgVXNlZCBpbiBOZXRzY2FwZVBMdWdpbjo6
cGxhdGZvcm1QcmVJbml0aWFsaXplLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOiBBZGRlZC4KKyAgICAgICAgTWFrZXMgcG9z
c2libGUgZm9yIHRoZSBwbGF0Zm9ybSB0byBjaGFuZ2UgdGhlIHBsdWdpbiBwYXJhbWV0ZXJzCisg
ICAgICAgIGFuZCBkbyB3aGF0ZXZlciBpdCBuZWVkcyB0byBkbyBiZWZvcmUgY2FsbGluZyBOUF9J
bml0aWFsaXplLgorICAgICAgICBDdXJyZW50bHkgb25seSB0aGUgUXQgaW1wbGVtZW50YXRpb24g
aXMgbm9uIGVtcHR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9O
ZXRzY2FwZVBsdWdpblF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUHJlSW5pdGlhbGl6ZSk6CisgICAgICAgIFNldCB0aGUgUGx1Z2luUXVpcmtSZXF1aXJl
c0d0a1Rvb2xLaXQgYmVmb3JlIGNhbGxpbmcgTlBfSW5pdGlhbGl6ZSBmb3IKKyAgICAgICAgbnB3
cmFwcGVycyBiZWNhdXNlIHRob3NlIG5lZWQgdGhlIHRvb2xraXQgdmFsdWUgZnJvbSBOUF9Jbml0
aWFsaXplLgorICAgICAgICBDYWxsIGd0a19pbml0IGZvciBmbGFzaCBhbmQgY2hhbmdlIHRoZSBw
YXJhbWV0ZXJzIHRvIGZvcmJpZCB3aW5kb3dlZAorICAgICAgICBtb2RlIGFuZCB0cmFzcGFyZW5j
eSB0aGF0IHdlIGRvIG5vdCBzdXBwb3J0LgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3dpbi9OZXRzY2FwZVBsdWdpbldpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorCiAyMDEwLTEwLTI1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3Bw
IGIvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKaW5kZXggOGE2OGNmNC4uODRiOGZi
MCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKKysrIGIvV2Vi
S2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBib29sIE1vZHVsZTo6bG9hZCgpCiB7CiAgICAgbV9saWIuc2V0RmlsZU5hbWUo
c3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSk7CisgICAgbV9saWIuc2V0TG9hZEhpbnRzKFFM
aWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIHJldHVybiBtX2xpYi5sb2FkKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9XZWJLaXQyL1dlYktpdDIu
cHJvCmluZGV4IGM4ZmJjNDguLjczMDRhNTQgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi5w
cm8KKysrIGIvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjAsNiArMjAsOCBAQCBERVNURElSID0g
JCRXRUJLSVQyX0RFU1RESVIKICAgICBERUZJTkVTICs9IE5ERUJVRwogfQogCitERUZJTkVTICs9
IFhQX1VOSVgKKwogSU5DTFVERVBBVEggPSBcCiAgICAgJCRQV0QvLi4gXAogICAgICQkUFdELy4u
L0phdmFTY3JpcHRDb3JlIFwKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBjNWM3MDViLi5k
Zjc2NzY3IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC00NTUsNiArNDU1LDE0IEBAIHN0
YXRpYyBOUEVycm9yIE5QTl9HZXRWYWx1ZShOUFAgbnBwLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwg
dm9pZCAqdmFsdWUpCiAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgogICAgICAg
ICAgICAqKE5QQm9vbCopdmFsdWUgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKKyNlbGlmIFBM
QVRGT1JNKFFUKQorICAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7CisgICAgICAgICAgICBSZWZQ
dHI8TmV0c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKG5wcCk7
CisKKyAgICAgICAgICAgIGlmIChwbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJr
UmVxdWlyZXNHdGtUb29sS2l0KSkKKyAgICAgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlKSA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogI2Vu
ZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCmluZGV4IDQ3OTk3MjUuLjdkMTYyYzYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM0MCwyMSAr
MzQwLDI0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OmluaXRpYWxpemUoUGx1Z2luQ29udHJvbGxl
ciogcGx1Z2luQ29udHJvbGxlciwgY29uc3QgUGFyYW1lCiAgICAgQVNTRVJUKHBsdWdpbkNvbnRy
b2xsZXIpOwogCiAgICAgbV9wbHVnaW5Db250cm9sbGVyID0gcGx1Z2luQ29udHJvbGxlcjsKLSAg
ICAKKworICAgIEFTU0VSVChwYXJhbWV0ZXJzLm5hbWVzLnNpemUoKSA9PSBwYXJhbWV0ZXJzLnZh
bHVlcy5zaXplKCkpOwogICAgIHVpbnQxNl90IG1vZGUgPSBwYXJhbWV0ZXJzLmxvYWRNYW51YWxs
eSA/IE5QX0ZVTEwgOiBOUF9FTUJFRDsKLSAgICAKICAgICBtX2xvYWRNYW51YWxseSA9IHBhcmFt
ZXRlcnMubG9hZE1hbnVhbGx5OwotICAgIG1faW5OUFBOZXcgPSB0cnVlOwogCi0gICAgQ1N0cmlu
ZyBtaW1lVHlwZUNTdHJpbmcgPSBwYXJhbWV0ZXJzLm1pbWVUeXBlLnV0ZjgoKTsKKyAgICBQYXJh
bWV0ZXJzIGVmZmVjdGl2ZVBhcmFybWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICBwbGF0Zm9ybVBy
ZUluaXRpYWxpemUoJmVmZmVjdGl2ZVBhcmFybWV0ZXJzKTsKKyAgICBBU1NFUlQoZWZmZWN0aXZl
UGFyYXJtZXRlcnMubmFtZXMuc2l6ZSgpID09IGVmZmVjdGl2ZVBhcmFybWV0ZXJzLnZhbHVlcy5z
aXplKCkpOwogCi0gICAgQVNTRVJUKHBhcmFtZXRlcnMubmFtZXMuc2l6ZSgpID09IHBhcmFtZXRl
cnMudmFsdWVzLnNpemUoKSk7CisgICAgbV9pbk5QUE5ldyA9IHRydWU7CisKKyAgICBDU3RyaW5n
IG1pbWVUeXBlQ1N0cmluZyA9IGVmZmVjdGl2ZVBhcmFybWV0ZXJzLm1pbWVUeXBlLnV0ZjgoKTsK
IAogICAgIFZlY3RvcjxDU3RyaW5nPiBwYXJhbU5hbWVzOwogICAgIFZlY3RvcjxDU3RyaW5nPiBw
YXJhbVZhbHVlczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMubmFtZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcGFyYW1OYW1lcy5hcHBlbmQocGFyYW1ldGVycy5uYW1l
c1tpXS51dGY4KCkpOwotICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocGFyYW1ldGVycy52YWx1
ZXNbaV0udXRmOCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVmZmVjdGl2ZVBhcmFy
bWV0ZXJzLm5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKGVm
ZmVjdGl2ZVBhcmFybWV0ZXJzLm5hbWVzW2ldLnV0ZjgoKSk7CisgICAgICAgIHBhcmFtVmFsdWVz
LmFwcGVuZChlZmZlY3RpdmVQYXJhcm1ldGVycy52YWx1ZXNbaV0udXRmOCgpKTsKICAgICB9CiAK
ICAgICAvLyBUaGUgc3RyaW5ncyB0aGF0IHRoZXNlIHBvaW50ZXJzIHBvaW50IHRvIGFyZSBrZXB0
IGFsaXZlIGJ5IHBhcmFtTmFtZXMgYW5kIHBhcmFtVmFsdWVzLgpAQCAtMzgzLDggKzM4Niw4IEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW46OmluaXRpYWxpemUoUGx1Z2luQ29udHJvbGxlciogcGx1Z2lu
Q29udHJvbGxlciwgY29uc3QgUGFyYW1lCiAgICAgfQogCiAgICAgLy8gTG9hZCB0aGUgc3JjIFVS
TCBpZiBuZWVkZWQuCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmxvYWRNYW51YWxseSAmJiAhcGFyYW1l
dGVycy51cmwuaXNFbXB0eSgpICYmIHNob3VsZExvYWRTcmNVUkwoKSkKLSAgICAgICAgbG9hZFVS
TCgiR0VUIiwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFw
KCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CisgICAgaWYgKCFlZmZlY3RpdmVQYXJh
cm1ldGVycy5sb2FkTWFudWFsbHkgJiYgIWVmZmVjdGl2ZVBhcmFybWV0ZXJzLnVybC5pc0VtcHR5
KCkgJiYgc2hvdWxkTG9hZFNyY1VSTCgpKQorICAgICAgICBsb2FkVVJMKCJHRVQiLCBlZmZlY3Rp
dmVQYXJhcm1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFwKCksIFZl
Y3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaAppbmRleCBmODdmYTYyLi4zOTE2NzI1IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSdW5Mb29wLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5R
dWlya1NldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTczLDYgKzc0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBTdHJpbmcm
KTsKICAgICBib29sIGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmlu
ZywgTlBWYXJpYW50KiByZXN1bHQpOwogICAgIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgV2ViQ29yZTo6UGx1Z2luUXVpcmtTZXQgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4g
bV9xdWlya3M7IH0KIAogICAgIC8vIFRoZXNlIHJldHVybiByZXRhaW5lZCBvYmplY3RzLgogICAg
IE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOwpAQCAtMTEwLDYgKzExMiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdG9wQWxsU3RyZWFtcygpOwogICAgIGJvb2wgYWxsb3dQb3B1cHMo
KSBjb25zdDsKIAorICAgIHZvaWQgcGxhdGZvcm1QcmVJbml0aWFsaXplKFBhcmFtZXRlcnMqKTsK
ICAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGVz
dHJveSgpOwogICAgIGJvb2wgcGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKQEAgLTE4Nyw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkTWFudWFs
bHk7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBtX21hbnVhbFN0cmVhbTsKIAor
ICAgIFdlYkNvcmU6OlBsdWdpblF1aXJrU2V0IG1fcXVpcmtzOworCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIE5QRHJhd2luZ01vZGVsIG1fZHJhd2luZ01vZGVsOwogICAgIE5QRXZlbnRNb2RlbCBt
X2V2ZW50TW9kZWw7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggNmMxNGM0ZC4uM2YxMTli
YiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAtMTM1LDkgKzEzNSwxMSBAQCBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICAgICBpZiAoIWluaXRpYWxpemVGdW5jUHRy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAhWFBfVU5JWAogICAgIE5QX0dldEVudHJ5
UG9pbnRzRnVuY1B0ciBnZXRFbnRyeVBvaW50c0Z1bmNQdHIgPSBtX21vZHVsZS0+ZnVuY3Rpb25Q
b2ludGVyPE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0cj4oIk5QX0dldEVudHJ5UG9pbnRzIik7CiAg
ICAgaWYgKCFnZXRFbnRyeVBvaW50c0Z1bmNQdHIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgogCiAgICAgbV9zaHV0ZG93blByb2NQdHIgPSBtX21vZHVsZS0+ZnVuY3Rpb25Qb2ludGVy
PE5QUF9TaHV0ZG93blByb2NQdHI+KCJOUF9TaHV0ZG93biIpOwogICAgIGlmICghbV9zaHV0ZG93
blByb2NQdHIpCkBAIC0xNTUsNiArMTU3LDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
dHJ5TG9hZCgpCiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgaWYgKGdldEVudHJ5UG9pbnRzRnVu
Y1B0cigmbV9wbHVnaW5GdW5jcykgIT0gTlBFUlJfTk9fRVJST1IgfHwgaW5pdGlhbGl6ZUZ1bmNQ
dHIobmV0c2NhcGVCcm93c2VyRnVuY3MoKSkgIT0gTlBFUlJfTk9fRVJST1IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbGlmIFhQX1VOSVgKKyAgICBpZiAoaW5pdGlhbGl6ZUZ1bmNQdHIobmV0
c2NhcGVCcm93c2VyRnVuY3MoKSwgJm1fcGx1Z2luRnVuY3MpICE9IE5QRVJSX05PX0VSUk9SKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmgKaW5kZXggZTQ5NTI0Mi4uNTg2YmQxMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5o
CkBAIC00Myw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdpbkNyZWF0ZWQoKTsKICAg
ICB2b2lkIHBsdWdpbkRlc3Ryb3llZCgpOwogCisgICAgU3RyaW5nIHBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3BsdWdpblBhdGg7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXRzY2FwZVBs
dWdpbk1vZHVsZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogCmRpZmYgLS1naXQgYS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0g
Yi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5N
YWMubW0KaW5kZXggYTNjZmVkMi4uZmExZWYyMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCisrKyBiL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQpA
QCAtODEsNiArODEsMTAgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbjo6c2V0RXZlbnRNb2RlbChO
UEV2ZW50TW9kZWwgZXZlbnRNb2RlbCkKICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiB9CiAK
K3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZShQYXJhbWV0ZXJzKikK
K3sKK30KKwogYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCiB7
CiAgICAgaWYgKG1fZHJhd2luZ01vZGVsID09IHN0YXRpY19jYXN0PE5QRHJhd2luZ01vZGVsPigt
MSkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0
L05ldHNjYXBlUGx1Z2luUXQuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5jcHAKaW5kZXggODllNmM5ZS4uZTVkMzMzNyAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVn
aW5RdC5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0
c2NhcGVQbHVnaW5RdC5jcHAKQEAgLTI4LDE1ICsyOCw0NSBAQAogCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvVU5J
WFBsdWdpblF1aXJrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKFBhcmFtZXRlcnMqIHBhcmFtZXRl
cnMpCit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBkZXRlY3QgdGhlIHZlcnNpb24gb2YgdGhl
IG1vZHVsZS4KKyAgICBVTklYUGx1Z2luUXVpcmtzOjpkZXRlcm1pbmVRdWlya3MocGFyYW1ldGVy
cy0+bWltZVR5cGUsIDAgLyptb2R1bGVWZXJzaW9uKi8sICZtX3F1aXJrcyk7CisKKyAgICAvLyBX
b3JrYXJvdW5kIEFkb2JlJ3MgZmFpbHVyZSB0byBwcm9wZXJseSBpbml0aWFsaXplIEd0aworICAg
IC8vIGluIHNvbWUgdmVyc2lvbnMgb2YgdGhlaXIgZmxhc2ggcGxheWVyIHBsdWdpbi4KKyAgICBp
ZiAoVU5JWFBsdWdpblF1aXJrczo6aXNOUFdyYXBwZXIobV9wbHVnaW5Nb2R1bGUtPnBhdGgoKSkp
IHsKKyAgICAgICAgLy8gbnNwbHVnaW53cmFwcGVyIHJlbGllcyBvbiB0aGUgdG9vbGtpdCB2YWx1
ZSB0byBrbm93IGlmIGdsaWIgaXMgYXZhaWxhYmxlCisgICAgICAgIG1fcXVpcmtzLmFkZChQbHVn
aW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCk7CisgICAgICAgIFdlYkNvcmU6OlVOSVhQbHVnaW5R
dWlya3M6OmluaXRpYWxpemVHVEsoKTsKKyAgICB9IGVsc2UgaWYgKFVOSVhQbHVnaW5RdWlya3M6
OmlzRmxhc2hQbHVnaW4obV9wbHVnaW5Nb2R1bGUtPnBhdGgoKSkpIHsKKyAgICAgICAgLy8gV2Ug
aGF2ZSBhbHJlYWR5IGxvYWRlZCB0aGUgcGx1Z2luIGJ1dCBpbml0aWFsaXplR1RLCisgICAgICAg
IC8vIG5lZWRzIGEgUUxpYnJhcnkgZm9yIHJlc29sdmluZyBndGtfaW5pdC4KKyAgICAgICAgUUxp
YnJhcnkgZmxhc2hQbHVnaW4oc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wbHVnaW5Nb2R1bGUtPnBh
dGgoKSkpOworICAgICAgICBVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKCZmbGFzaFBs
dWdpbik7CisKKyAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvIG5vdCBzdXBwb3J0IHdpbmRvd2Vk
IG1vZGUgYW5kIHRyYW5zcGFyZW5jeS4KKyAgICAgICAgc2l6ZV90IHdtb2RlSW5kZXggPSBwYXJh
bWV0ZXJzLT5uYW1lcy5maW5kKCJ3bW9kZSIpOworICAgICAgICBpZiAod21vZGVJbmRleCA9PSAt
MSkgeworICAgICAgICAgICAgLy8gRGlzYWJsZSBYRW1iZWQgbW9kZSBhbmQgZm9yY2UgaXQgdG8g
b3BhcXVlIG1vZGUKKyAgICAgICAgICAgIHBhcmFtZXRlcnMtPm5hbWVzLmFwcGVuZCgid21vZGUi
KTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMtPnZhbHVlcy5hcHBlbmQoIm9wYXF1ZSIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRGlzYWJsZSB0cmFuc3BhcmVuY3kKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMtPnZhbHVlc1t3bW9kZUluZGV4XSA9ICJvcGFxdWUiOworICAgICAg
ICB9CisgICAgfQorfQorCiBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFs
aXplKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vTmV0c2Nh
cGVQbHVnaW5XaW4uY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2lu
L05ldHNjYXBlUGx1Z2luV2luLmNwcAppbmRleCBkYjExZDI3Li4yNjUxNzZmIDEwMDY0NAotLS0g
YS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vTmV0c2NhcGVQbHVnaW5X
aW4uY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9OZXRz
Y2FwZVBsdWdpbldpbi5jcHAKQEAgLTU5LDYgKzU5LDEwIEBAIEhXTkQgTmV0c2NhcGVQbHVnaW46
OmNvbnRhaW5pbmdXaW5kb3coKSBjb25zdAogICAgIHJldHVybiBtX3BsdWdpbkNvbnRyb2xsZXIt
Pm5hdGl2ZVBhcmVudFdpbmRvdygpOwogfQogCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVByZUluaXRpYWxpemUoUGFyYW1ldGVycyopCit7Cit9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQogewogICAgIGlmICghbV9pc1dpbmRvd2VkKSB7Ci0t
IAoxLjYuNC4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71897</attachid>
            <date>2010-10-26 09:10:38 -0700</date>
            <delta_ts>2010-10-27 14:16:38 -0700</delta_ts>
            <desc>fixed Mac build</desc>
            <filename>bug-48127-20101026181036.patch</filename>
            <type>text/plain</type>
            <size>31563</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjUyN2M0YmQ2MWNjYmU4YmZiY2U1NmNjNTYxMmIwMzZmZWNkNzM5NC4uMDM2MjFmNWZhYTMwMWRi
ZTNiZWE2OWQ2MmMyZjk3YTA4YjgxNzEwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0xMC0yNSAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcK
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgRmFjdG9yaW5nIG91dCB0aGUgUXQgc3BlY2lmaWMgaGFja3MgdGhhdCBtYWtlcyBmbGFzaCB3
b3JraW5nCisgICAgICAgIGFuZCB0aGUgVU5JWCBzcGVjaWZpYyBxdWlyayBkZXRlcm1pbmF0aW9u
IGJlY2F1c2Ugd2UgbmVlZCB0bworICAgICAgICB1c2UgdGhlbSBpbiBXZWJLaXQyLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBs
dWdpbnMvUGx1Z2luUGFja2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdl
OjpkZXRlcm1pbmVRdWlya3MpOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAgICAgICAq
IHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcDogQWRkZWQuCisgICAgICAgIFRoZSBs
b2dpYyBoYWQgYmVlbiBtb3ZlZCBmcm9tIFBsdWdpblBhY2thZ2UuY3BwIGFuZCBQbHVnaW5QYWNr
YWdlUXQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aXNOUFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aXNGbGFzaFBsdWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVOSVhQbHVnaW5RdWlya3M6OmRldGVybWluZVF1aXJrcyk6IE1pbm9y
IGZpeDoKKyAgICAgICAgdGhlIGRlZmF1bHQgc2NyZWVuIGRlcHRoIG9uIE1hZW1vIHdhcyBub3Qg
YXBwbGllZCBpbiB0aGUKKyAgICAgICAgY2FzZSBvZiB0aGUgSmF2YSBwbHVnaW4gYmVjYXVzZSB3
ZSB3ZXJlIHJldHVybmluZyBlYXJsaWVyLgorICAgICAgICAqIHBsdWdpbnMvdW5peC9VTklYUGx1
Z2luUXVpcmtzLmg6IEFkZGVkLgorCiAyMDEwLTEwLTIwICBBbmRyZXkgS29zeWFrb3YgIDxjYXNl
cUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDhjMjA0YWExYWY4MjFjMGI5MjBiNzg5ODc0OTE1NTZhMTI4YmVmZmEuLjg2ZGNh
OWY4ZGU5NzkyN2JjMzYyNzc3MWJlODFmOWEyY2E1ZDVmNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzYzNCw3ICsz
NjM0LDkgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9jYWNoZS93ZWJraXQvc291cC1jYWNoZS1wcml2YXRlLmggXAogCVdlYkNvcmUvcGx1
Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAgXAogCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2lu
UGFja2FnZUd0ay5jcHAgXAotCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAK
KwlXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwIFwKKwlXZWJDb3JlL3BsdWdp
bnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmggXAorCVdlYkNvcmUvcGx1Z2lucy91bml4L1VOSVhQ
bHVnaW5RdWlya3MuY3BwCiAKIGlmIFRBUkdFVF9YMTEKIHdlYmNvcmVndGtfc291cmNlcyArPSBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCA5ZmIyZmRkZDAyY2VlNDYyNzFmMzY3ODk4NDUyM2MyZGFiYWJhYjQxLi5lNTU2ZTliMGVi
NzVjMzkzOTI3MmFmNGIxOWFmMGFmZDg0Zjg1ZDk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI3ODIsOSArMjc4MiwxMSBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAgICAgICAg
ICAgICAgICAgU09VUkNFUyArPSBcCiAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1
Z2luQ29udGFpbmVyUXQuY3BwIFwKICAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVn
aW5QYWNrYWdlUXQuY3BwIFwKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNw
cCBcCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNw
cAogICAgICAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgICAgICAgICBwbHVn
aW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmgKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9x
dC9QbHVnaW5Db250YWluZXJRdC5oIFwKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy91bml4
L1VOSVhQbHVnaW5RdWlya3MuaAogICAgICAgICAgICAgICAgIERFRklORVMgKz0gWFBfVU5JWAog
ICAgICAgICAgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9NRVRBREFU
QV9DQUNIRT0xCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXgg
MmUwMzA4YmM5YjJmMGI2NmEyMjk3N2ViZGVlNTY5YjA5M2ZkZjIxNC4uMzJmNjNkZDg2MzYyNjVh
MTBmNDFjY2Y1MDViMzI5N2UwNzQ0YWY1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblBhY2thZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApA
QCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBYUF9VTklYCisjaW5jbHVkZSAidW5peC9VTklY
UGx1Z2luUXVpcmtzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVnaW5Q
YWNrYWdlOjp+UGx1Z2luUGFja2FnZSgpCkBAIC0xODEsNTMgKzE4NSw3IEBAIFBhc3NSZWZQdHI8
UGx1Z2luUGFja2FnZT4gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25z
dCBTdHJpbmcmIHBhCiAjaWYgZGVmaW5lZChYUF9VTklYKQogdm9pZCBQbHVnaW5QYWNrYWdlOjpk
ZXRlcm1pbmVRdWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIC8v
IEJlY2F1c2UgYSBzaW5nbGUgcHJvY2VzcyBjYW5ub3QgY3JlYXRlIG11bHRpcGxlIFZNcywgYW5k
IHdlIGNhbm5vdCByZWxpYWJseSB1bmxvYWQgYQotICAgICAgICAvLyBKYXZhIFZNLCB3ZSBjYW5u
b3QgdW5sb2FkIHRoZSBKYXZhIHBsdWdpbiwgb3Igd2UnbGwgbG9zZSByZWZlcmVuY2UgdG8gb3Vy
IG9ubHkgVk0KLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrRG9udFVubG9hZFBsdWdp
bik7Ci0KLSAgICAgICAgLy8gU2V0dGluZyB0aGUgd2luZG93IHJlZ2lvbiB0byBhbiBlbXB0eSBy
ZWdpb24gY2F1c2VzIGJhZCBzY3JvbGxpbmcgcmVwYWludCBwcm9ibGVtcwotICAgICAgICAvLyB3
aXRoIHRoZSBKYXZhIHBsdWctaW4uCi0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0Rv
bnRDbGlwVG9aZXJvUmVjdFdoZW5TY3JvbGxpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBmbGFzaFRlblZlcnNp
b24oMHgwYTAwMDAwMCk7Ci0KLSAgICAgICAgaWYgKGNvbXBhcmVGaWxlVmVyc2lvbihmbGFzaFRl
blZlcnNpb24pID49IDApIHsKLSAgICAgICAgICAgIC8vIEZsYXNoIDEwLjAgYjIxOCBkb2Vzbid0
IGxpa2UgaGF2aW5nIGEgTlVMTCB3aW5kb3cgaGFuZGxlCi0gICAgICAgICAgICBtX3F1aXJrcy5h
ZGQoUGx1Z2luUXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7Ci0jaWYgUExB
VEZPUk0oUVQpCi0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0
a1Rvb2xLaXQpOwotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGbGFz
aCA5IGFuZCBvbGRlciByZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYgd2UgcmV0dXJuIGEg
bW96aWxsYSB1c2VyIGFnZW50Ci0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtX
YW50c01vemlsbGFVc2VyQWdlbnQpOwotICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShRVCkKLSAg
ICAgICAgLy8gRmxhc2ggd2lsbCBjcmFzaCBvbiByZXBlYXRlZCBjYWxscyB0byBTZXRXaW5kb3cg
aW4gd2luZG93ZWQgbW9kZQotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtEb250Q2Fs
bFNldFdpbmRvd01vcmVUaGFuT25jZSk7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAvLyA2
NC1iaXQgRmxhc2ggZnJlZXplcyBpZiByaWdodC1jbGljayBpcyBzZW50IGluIHdpbmRvd2xlc3Mg
bW9kZQotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdodENsaWNrSW5X
aW5kb3dsZXNzTW9kZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIG1fcXVpcmtzLmFkZChQ
bHVnaW5RdWlya1JlcXVpcmVzRGVmYXVsdFNjcmVlbkRlcHRoKTsKLSAgICAgICAgbV9xdWlya3Mu
YWRkKFBsdWdpblF1aXJrVGhyb3R0bGVJbnZhbGlkYXRlKTsKLSAgICAgICAgbV9xdWlya3MuYWRk
KFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOwotICAgICAgICBtX3F1
aXJrcy5hZGQoUGx1Z2luUXVpcmtGbGFzaFVSTE5vdGlmeUJ1Zyk7Ci0gICAgfQotCi0jaWYgZGVm
aW5lZChRX1dTX01BRU1PXzUpIHx8IGRlZmluZWQoUV9XU19NQUVNT182KQotICAgIC8vIFBhc3Np
bmcgYSAzMi1iaXQgZGVwdGggcGl4bWFwIHRvIE5QQVBJIHBsdWdpbnMgaXMgdG9vIGluZWZmaWNp
ZW50LiBJbnN0ZWFkLCBwYXNzIGEgWCBQaXhtYXAKLSAgICAvLyB0aGF0IGhhcyBzYW1lIGRlcHRo
IGFzIHRoZSBzY3JlZW4gZGVwdGggc2luY2UgZ3JhcGhpY3Mgb3BlcmF0aW9ucyBhcmUgb3B0aW1p
emVkCi0gICAgLy8gZm9yIHRoaXMgZGVwdGguCi0gICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJr
UmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOwotI2VuZGlmCisgICAgVU5JWFBsdWdpblF1aXJr
czo6ZGV0ZXJtaW5lUXVpcmtzKG1pbWVUeXBlLCBtX21vZHVsZVZlcnNpb24sICZtX3F1aXJrcyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2th
Z2VRdC5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAppbmRleCBl
NzA1OGM3YTIzYjg0ZTZkMTA0OWY5Zjg1NjMwYzRmMTQ3MTEwNDA2Li5jZjZkYzQwMDk2Y2VmNDk1
ODA1NThmODFjMjU2Y2FlYjgzZGViZjFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luUGFja2FnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2Fn
ZVF0LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogCisjaW5jbHVkZSAiLi4vdW5peC9VTklYUGx1
Z2luUXVpcmtzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIm5w
cnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKQEAgLTg4LDQ5ICs5
MCw2IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmlu
ZyYgbWltZURlc2NyaXB0aW9uKQogICAgIH0KIH0KIAotc3RhdGljIE5QRXJyb3Igc3RhdGljUGx1
Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRfTlBOX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQotewotICAgIGlmICh2YXJpYWJsZSA9PSBO
UE5WVG9vbGtpdCkgewotICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAy
OwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5Q
Tl9HZXRWYWx1ZShpbnN0YW5jZSwgdmFyaWFibGUsIHZhbHVlKTsKLX0KLQotc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZUd0ayhRTGlicmFyeSogbW9kdWxlID0gMCkKLXsKLSAgICAvLyBFbnN1cmVzIG1p
c3NpbmcgR3RrIGluaXRpYWxpemF0aW9uIGluIHNvbWUgdmVyc2lvbnMgb2YgQWRvYmUncyBmbGFz
aCBwbGF5ZXIKLSAgICAvLyBwbHVnaW4gZG8gbm90IGNhdXNlIGNyYXNoZXMuIFNlZSBCUiMgNDA1
NjcsIDQ0MzI0LCBhbmQgNDQ0MDUgZm9yIGRldGFpbHMuICAKLSAgICBpZiAobW9kdWxlKSB7Ci0g
ICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9wdHIpKGludCosIGNoYXIqKiopOwotICAg
ICAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IChndGtfaW5pdF9wdHIpbW9kdWxlLT5yZXNvbHZl
KCJndGtfaW5pdCIpOwotICAgICAgICBpZiAoZ3RrSW5pdCkgewotICAgICAgICAgICAgLy8gUHJl
dmVudCBndGtfaW5pdCgpIGZyb20gcmVwbGFjaW5nIHRoZSBYIGVycm9yIGhhbmRsZXJzLCBzaW5j
ZSB0aGUgR3RrCi0gICAgICAgICAgICAvLyBoYW5kbGVycyBhYm9ydCB3aGVuIHRoZXkgcmVjZWl2
ZSBhbiBYIGVycm9yLCB0aHVzIGtpbGxpbmcgdGhlIHZpZXdlci4KLSNpZmRlZiBRX1dTX1gxMQot
ICAgICAgICAgICAgaW50ICgqb2xkX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqLCBYRXJyb3JFdmVu
dCopID0gWFNldEVycm9ySGFuZGxlcigwKTsKLSAgICAgICAgICAgIGludCAoKm9sZF9pb19lcnJv
cl9oYW5kbGVyKShEaXNwbGF5KikgPSBYU2V0SU9FcnJvckhhbmRsZXIoMCk7Ci0jZW5kaWYKLSAg
ICAgICAgICAgIGd0a0luaXQoMCwgMCk7Ci0jaWZkZWYgUV9XU19YMTEKLSAgICAgICAgICAgIFhT
ZXRFcnJvckhhbmRsZXIob2xkX2Vycm9yX2hhbmRsZXIpOwotICAgICAgICAgICAgWFNldElPRXJy
b3JIYW5kbGVyKG9sZF9pb19lcnJvcl9oYW5kbGVyKTsKLSNlbmRpZgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUxpYnJhcnkgbGlicmFyeSgibGliZ3RrLXgx
MS0yLjAuc28uMCIpOwotICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkgewotICAgICAgICB0eXBlZGVm
IHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFyKioqKTsKLSAgICAgICAgZ3Rr
X2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IChndGtfaW5pdF9jaGVja19wdHIpbGlicmFy
eS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpOwotICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2lu
ZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1
cmUuCi0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9pZCkgZ3RrSW5p
dENoZWNrKDAsIDApOwotICAgIH0KLX0KLQogYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIHsK
ICAgICBpZiAobV9pc0xvYWRlZCkgewpAQCAtMTYyLDE3ICsxMjEsMTYgQEAgYm9vbCBQbHVnaW5Q
YWNrYWdlOjpsb2FkKCkKIAogICAgIGluaXRpYWxpemVCcm93c2VyRnVuY3MoKTsKIAotICAgIGlm
IChtX3BhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKSkgeworICAgIGlmIChVTklYUGx1Z2luUXVp
cmtzOjppc05QV3JhcHBlcihtX3BhdGgpKSB7CiAgICAgICAgIC8vIG5zcGx1Z2lud3JhcHBlciBy
ZWxpZXMgb24gdGhlIHRvb2xraXQgdmFsdWUgdG8ga25vdyBpZiBnbGliIGlzIGF2YWlsYWJsZQot
ICAgICAgICAvLyBJdCBkb2VzIHNvIGluIE5QX0luaXRpYWxpemUgd2l0aCBhIG51bGwgaW5zdGFu
Y2UsIHRoZXJlZm9yZSBpdCBpcyBkb25lIHRoaXMgd2F5OgotICAgICAgICBtX2Jyb3dzZXJGdW5j
cy5nZXR2YWx1ZSA9IHN0YXRpY1BsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0X05QTl9HZXRW
YWx1ZTsKLSAgICAgICAgLy8gV29ya2Fyb3VuZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkg
aW5pdGlhbGl6ZSBHdGsgaW4gc29tZSB2ZXJzaW9ucwotICAgICAgICAvLyBvZiB0aGVpciBmbGFz
aCBwbGF5ZXIgcGx1Z2luLgotICAgICAgICBpbml0aWFsaXplR3RrKCk7Ci0gICAgfSBlbHNlIGlm
IChtX3BhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsKKyAgICAgICAgLy8gSXQgZG9lcyBz
byBpbiBOUF9Jbml0aWFsaXplIHdpdGggYSBudWxsIGluc3RhbmNlLCB0aGVyZWZvcmUgd2Ugc2hv
dWxkIHNldAorICAgICAgICAvLyB0aGlzIHF1aXJrIGJlZm9yZSBjYWxsaW5nIGl0LgorICAgICAg
ICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQpOworICAgICAgICBV
TklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKCk7CisgICAgfSBlbHNlIGlmIChVTklYUGx1
Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2luKG1fcGF0aCkpIHsKICAgICAgICAgLy8gV29ya2Fyb3Vu
ZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsgaW4gc29tZSB2ZXJz
aW9ucwogICAgICAgICAvLyBvZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgotICAgICAgICBp
bml0aWFsaXplR3RrKG1fbW9kdWxlKTsKKyAgICAgICAgVU5JWFBsdWdpblF1aXJrczo6aW5pdGlh
bGl6ZUdUSyhtX21vZHVsZSk7CiAgICAgfQogCiAjaWYgZGVmaW5lZChYUF9VTklYKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAgYi9XZWJDb3Jl
L3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWQ1MTk1Nzdi
N2M2NWJhZDFkMmFjMDU3MzY0ZWIxN2UxNDliZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVO
SVhQbHVnaW5RdWlya3MuaCIKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKKyNpbmNsdWRl
ICJucHJ1bnRpbWVfaW50ZXJuYWwuaCIKKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgUExBVEZP
Uk0oUVQpCitib29sIFVOSVhQbHVnaW5RdWlya3M6OmlzTlBXcmFwcGVyKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCkKK3sKKyAgICByZXR1cm4gcGx1Z2luUGF0aC5jb250YWlucygibnB3cmFwcGVy
LiIpOworfQorCitib29sIFVOSVhQbHVnaW5RdWlya3M6OmlzRmxhc2hQbHVnaW4oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoKQoreworICAgIHJldHVybiBwbHVnaW5QYXRoLmNvbnRhaW5zKCJmbGFz
aHBsYXllciIpOworfQorCit2b2lkIFVOSVhQbHVnaW5RdWlya3M6OmluaXRpYWxpemVHVEsoUUxp
YnJhcnkqIHBsdWdpbk1vZHVsZSkKK3sKKyAgICAvLyBFbnN1cmVzIG1pc3NpbmcgR3RrIGluaXRp
YWxpemF0aW9uIGluIHNvbWUgdmVyc2lvbnMgb2YgQWRvYmUncyBmbGFzaCBwbGF5ZXIKKyAgICAv
LyBwbHVnaW4gZG8gbm90IGNhdXNlIGNyYXNoZXMuIFNlZSBCUiMgNDA1NjcsIDQ0MzI0LCBhbmQg
NDQ0MDUgZm9yIGRldGFpbHMuCisgICAgaWYgKHBsdWdpbk1vZHVsZSkgeworICAgICAgICB0eXBl
ZGVmIHZvaWQgKigqZ3RrX2luaXRfcHRyKShpbnQqLCBjaGFyKioqKTsKKyAgICAgICAgZ3RrX2lu
aXRfcHRyIGd0a0luaXQgPSByZWludGVycHJldF9jYXN0PGd0a19pbml0X3B0cj4ocGx1Z2luTW9k
dWxlLT5yZXNvbHZlKCJndGtfaW5pdCIpKTsKKyAgICAgICAgaWYgKGd0a0luaXQpIHsKKyAgICAg
ICAgICAgIC8vIFByZXZlbnQgZ3RrX2luaXQoKSBmcm9tIHJlcGxhY2luZyB0aGUgWCBlcnJvciBo
YW5kbGVycywgc2luY2UgdGhlIEd0aworICAgICAgICAgICAgLy8gaGFuZGxlcnMgYWJvcnQgd2hl
biB0aGV5IHJlY2VpdmUgYW4gWCBlcnJvciwgdGh1cyBraWxsaW5nIHRoZSB2aWV3ZXIuCisjaWZk
ZWYgUV9XU19YMTEKKyAgICAgICAgICAgIGludCAoKm9sZF9lcnJvcl9oYW5kbGVyKShEaXNwbGF5
KiwgWEVycm9yRXZlbnQqKSA9IFhTZXRFcnJvckhhbmRsZXIoMCk7CisgICAgICAgICAgICBpbnQg
KCpvbGRfaW9fZXJyb3JfaGFuZGxlcikoRGlzcGxheSopID0gWFNldElPRXJyb3JIYW5kbGVyKDAp
OworI2VuZGlmCisgICAgICAgICAgICBndGtJbml0KDAsIDApOworI2lmZGVmIFFfV1NfWDExCisg
ICAgICAgICAgICBYU2V0RXJyb3JIYW5kbGVyKG9sZF9lcnJvcl9oYW5kbGVyKTsKKyAgICAgICAg
ICAgIFhTZXRJT0Vycm9ySGFuZGxlcihvbGRfaW9fZXJyb3JfaGFuZGxlcik7CisjZW5kaWYKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFFMaWJyYXJ5IGxpYnJh
cnkoImxpYmd0ay14MTEtMi4wLnNvLjAiKTsKKyAgICBpZiAobGlicmFyeS5sb2FkKCkpIHsKKyAg
ICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0cikoaW50KiwgY2hhcioqKik7
CisgICAgICAgIGd0a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sgPSByZWludGVycHJldF9j
YXN0PGd0a19pbml0X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIp
KTsKKyAgICAgICAgLy8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRfY2hlY2soKSBzaW5jZSBn
dGtfaW5pdCgpIGNhbGxzIGV4aXQoKSBvbiBmYWlsdXJlLgorICAgICAgICBpZiAoZ3RrSW5pdENo
ZWNrKQorICAgICAgICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAwKTsKKyAgICB9Cit9Cisj
ZW5kaWYKKwordm9pZCBVTklYUGx1Z2luUXVpcmtzOjpkZXRlcm1pbmVRdWlya3MoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uIG1vZHVsZVZlcnNpb24sIFBsdWdp
blF1aXJrU2V0KiBxdWlya3MpCit7CisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFw
cGxldE1JTUVUeXBlKG1pbWVUeXBlKSkgeworICAgICAgICAvLyBCZWNhdXNlIGEgc2luZ2xlIHBy
b2Nlc3MgY2Fubm90IGNyZWF0ZSBtdWx0aXBsZSBWTXMsIGFuZCB3ZSBjYW5ub3QgcmVsaWFibHkg
dW5sb2FkIGEKKyAgICAgICAgLy8gSmF2YSBWTSwgd2UgY2Fubm90IHVubG9hZCB0aGUgSmF2YSBw
bHVnaW4sIG9yIHdlJ2xsIGxvc2UgcmVmZXJlbmNlIHRvIG91ciBvbmx5IFZNCisgICAgICAgIHF1
aXJrcy0+YWRkKFBsdWdpblF1aXJrRG9udFVubG9hZFBsdWdpbik7CisKKyAgICAgICAgLy8gU2V0
dGluZyB0aGUgd2luZG93IHJlZ2lvbiB0byBhbiBlbXB0eSByZWdpb24gY2F1c2VzIGJhZCBzY3Jv
bGxpbmcgcmVwYWludCBwcm9ibGVtcworICAgICAgICAvLyB3aXRoIHRoZSBKYXZhIHBsdWctaW4u
CisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrRG9udENsaXBUb1plcm9SZWN0V2hlblNj
cm9sbGluZyk7CisKKyAgICB9IGVsc2UgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXNo
b2Nrd2F2ZS1mbGFzaCIpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IFBsYXRmb3JtTW9kdWxlVmVy
c2lvbiBmbGFzaFRlblZlcnNpb24oMHgwYTAwMDAwMCk7CisKKyAgICAgICAgLy8gV2UgYXJlIGFw
cGx5aW5nIHF1aXJrcyBmb3IgYm90aCBtb2R1bGVWZXJzaW9uIGlmIHdlIGRvIG5vdCBrbm93IHRo
ZSBtb2R1bGVWZXJzaW9uLgorICAgICAgICBpZiAobW9kdWxlVmVyc2lvbiA+PSBmbGFzaFRlblZl
cnNpb24gfHwgIW1vZHVsZVZlcnNpb24pIHsKKyAgICAgICAgICAgIC8vIEZsYXNoIDEwLjAgYjIx
OCBkb2Vzbid0IGxpa2UgaGF2aW5nIGEgMCB3aW5kb3cgaGFuZGxlCisgICAgICAgICAgICBxdWly
a3MtPmFkZChQbHVnaW5RdWlya0RvbnRTZXROdWxsV2luZG93SGFuZGxlT25EZXN0cm95KTsKKyNp
ZiBQTEFURk9STShRVCkKKyAgICAgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrUmVxdWly
ZXNHdGtUb29sS2l0KTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1vZHVsZVZl
cnNpb24gPCBmbGFzaFRlblZlcnNpb24gfHwgIW1vZHVsZVZlcnNpb24pIHsKKyAgICAgICAgICAg
IC8vIEZsYXNoIDkgYW5kIG9sZGVyIHJlcXVlc3RzIHdpbmRvd2xlc3MgcGx1Z2lucyBpZiB3ZSBy
ZXR1cm4gYSBtb3ppbGxhIHVzZXIgYWdlbnQKKyAgICAgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdp
blF1aXJrV2FudHNNb3ppbGxhVXNlckFnZW50KTsKKyAgICAgICAgfQorCisjaWYgUExBVEZPUk0o
UVQpCisgICAgICAgIC8vIEZsYXNoIHdpbGwgY3Jhc2ggb24gcmVwZWF0ZWQgY2FsbHMgdG8gU2V0
V2luZG93IGluIHdpbmRvd2VkIG1vZGUKKyAgICAgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtE
b250Q2FsbFNldFdpbmRvd01vcmVUaGFuT25jZSk7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgICAg
ICAvLyA2NC1iaXQgRmxhc2ggZnJlZXplcyBpZiByaWdodC1jbGljayBpcyBzZW50IGluIHdpbmRv
d2xlc3MgbW9kZQorICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0lnbm9yZVJpZ2h0Q2xp
Y2tJbldpbmRvd2xlc3NNb2RlKTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICAgICAgcXVpcmtzLT5h
ZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRTY3JlZW5EZXB0aCk7CisgICAgICAgIHF1aXJr
cy0+YWRkKFBsdWdpblF1aXJrVGhyb3R0bGVJbnZhbGlkYXRlKTsKKyAgICAgICAgcXVpcmtzLT5h
ZGQoUGx1Z2luUXVpcmtUaHJvdHRsZVdNVXNlclBsdXNPbmVNZXNzYWdlcyk7CisgICAgICAgIHF1
aXJrcy0+YWRkKFBsdWdpblF1aXJrRmxhc2hVUkxOb3RpZnlCdWcpOworCisgICAgfQorCisjaWYg
ZGVmaW5lZChRX1dTX01BRU1PXzUpIHx8IGRlZmluZWQoUV9XU19NQUVNT182KQorICAgIC8vIFBh
c3NpbmcgYSAzMi1iaXQgZGVwdGggcGl4bWFwIHRvIE5QQVBJIHBsdWdpbnMgaXMgdG9vIGluZWZm
aWNpZW50LiBJbnN0ZWFkLCBwYXNzIGEgWCBQaXhtYXAKKyAgICAvLyB0aGF0IGhhcyBzYW1lIGRl
cHRoIGFzIHRoZSBzY3JlZW4gZGVwdGggc2luY2UgZ3JhcGhpY3Mgb3BlcmF0aW9ucyBhcmUgb3B0
aW1pemVkCisgICAgLy8gZm9yIHRoaXMgZGVwdGguCisgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVp
cmtSZXF1aXJlc0RlZmF1bHRTY3JlZW5EZXB0aCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1
aXJrcy5oIGIvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRmYmI5YmJmMTc0NzMyMzc1M2U5NGY0NGY3NTUyNWIyYjc1MjI2ODgKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6
ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVOSVhQbHVnaW5RdWly
a3NfaAorI2RlZmluZSBVTklYUGx1Z2luUXVpcmtzX2gKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZzsKK30KKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFF0R2xvYmFsPgorUVRf
QkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRTGlicmFyeTsKK1FUX0VORF9OQU1FU1BBQ0UKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsdWdpblF1aXJrU2V0OworCitjbGFz
cyBVTklYUGx1Z2luUXVpcmtzIHsKK3B1YmxpYzoKKyNpZiBQTEFURk9STShRVCkKKyAgICBzdGF0
aWMgYm9vbCBpc05QV3JhcHBlcihjb25zdCBXVEY6OlN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAg
c3RhdGljIGJvb2wgaXNGbGFzaFBsdWdpbihjb25zdCBXVEY6OlN0cmluZyYgcGx1Z2luUGF0aCk7
CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSyhRTGlicmFyeSogcGx1Z2luTW9kdWxlID0g
MCk7CisjZW5kaWYKKworICAgIHN0YXRpYyB2b2lkIGRldGVybWluZVF1aXJrcyhjb25zdCBXVEY6
OlN0cmluZyYgbWltZVR5cGUsIFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBtb2R1bGVWZXJzaW9uLCBQ
bHVnaW5RdWlya1NldCogcXVpcmtzKTsKK307CisKK30KKworI2VuZGlmIC8vIFVOSVhQbHVnaW5R
dWlya3NfaApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBiMmE2ZGJmNmY3OWYzNTEzYTgzZDc3ODgwZTA5ZjA2ZmEyYzQ0M2E0Li45ZDQ2NmQ0
ZjQ2Njc0MWI1NDY5YjJhZDQ1MGQ2MmRkMjViYzk0NjVlIDEwMDY0NAotLS0gYS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEwLTEw
LTI1ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdW1dLMl0gUGx1Z2luIGluaXRp
YWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODEyNworCisgICAgICAgICogUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpNb2R1bGU6OmxvYWQpOiBVc2UgdGhlIFJlc29sdmVBbGxTeW1ib2xzSGludCBoaW50
CisgICAgICAgIHdoZW4gbG9hZGluZyB0aGUgbGlicmFyeSBhcyB3ZSBkbyBpbiBXZWJDb3JlLgor
ICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRW
YWx1ZSk6IEFwcGx5IHRoZSBQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdAorICAgICAgICBx
dWlyayB3aGVuIG5lZWRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6aW5p
dGlhbGl6ZSk6IENhbGwgdGhlIG5ld2x5IGludHJvZHVjZWQKKyAgICAgICAgcGxhdGZvcm1QcmVJ
bml0aWFsaXplIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nIE5QX0luaXRpYWxpemUuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpxdWlya3MpOiBBZGRlZCBhIFBsdWdpblF1aXJrU2V0
IG1lbWJlcgorICAgICAgICBhbmQgYSBnZXR0ZXIuIEN1cnJlbnRseSB0aGlzIGlzIG9ubHkgdXNl
ZCBieSBRdCBidXQgb3RoZXIKKyAgICAgICAgcG9ydHMgd291bGQgbGlrZWx5IG5lZWQgaXQgaW4g
dGhlIGZ1dHVyZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6dHJ5TG9hZCk6IENhbGwgTlBfSW5pdGlhbGl6ZQorICAgICAgICBpbiB0aGUgVU5JWCB3YXkg
b24gbm9uLU1hYyBVTklYIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OnBhdGgpOiBBZGRlZCBnZXR0ZXIuCisgICAgICAgIFVzZWQgaW4gTmV0
c2NhcGVQTHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKTogQWRkZWQuCisgICAg
ICAgIE1ha2VzIHBvc3NpYmxlIGZvciB0aGUgcGxhdGZvcm0gdG8gY2hhbmdlIHRoZSBwbHVnaW4g
cGFyYW1ldGVycworICAgICAgICBhbmQgZG8gd2hhdGV2ZXIgaXQgbmVlZHMgdG8gZG8gYmVmb3Jl
IGNhbGxpbmcgTlBfSW5pdGlhbGl6ZS4KKyAgICAgICAgQ3VycmVudGx5IG9ubHkgdGhlIFF0IGlt
cGxlbWVudGF0aW9uIGlzIG5vbiBlbXB0eS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVByZUluaXRpYWxpemUpOgorICAgICAgICBTZXQgdGhlIFBsdWdp
blF1aXJrUmVxdWlyZXNHdGtUb29sS2l0IGJlZm9yZSBjYWxsaW5nIE5QX0luaXRpYWxpemUgZm9y
CisgICAgICAgIG5wd3JhcHBlcnMgYmVjYXVzZSB0aG9zZSBuZWVkIHRoZSB0b29sa2l0IHZhbHVl
IGZyb20gTlBfSW5pdGlhbGl6ZS4KKyAgICAgICAgQ2FsbCBndGtfaW5pdCBmb3IgZmxhc2ggYW5k
IGNoYW5nZSB0aGUgcGFyYW1ldGVycyB0byBmb3JiaWQgd2luZG93ZWQKKyAgICAgICAgbW9kZSBh
bmQgdHJhc3BhcmVuY3kgdGhhdCB3ZSBkbyBub3Qgc3VwcG9ydC4KKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vTmV0c2NhcGVQbHVnaW5XaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFsaXplKToKKwogMjAx
MC0xMC0yNiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktp
dDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIGIvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVR
dC5jcHAKaW5kZXggOGE2OGNmNDZlMzliMTE1MWI1OWRkYzhjNWVkM2E5YTgxYWUyMTgzMi4uODRi
OGZiMDQzYzBjNGJhM2ZhNmI2ZjgwODU4Y2EwMzM4NmRlOTM0YyAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKKysrIGIvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1
bGVRdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBib29sIE1vZHVs
ZTo6bG9hZCgpCiB7CiAgICAgbV9saWIuc2V0RmlsZU5hbWUoc3RhdGljX2Nhc3Q8UVN0cmluZz4o
bV9wYXRoKSk7CisgICAgbV9saWIuc2V0TG9hZEhpbnRzKFFMaWJyYXJ5OjpSZXNvbHZlQWxsU3lt
Ym9sc0hpbnQpOwogICAgIHJldHVybiBtX2xpYi5sb2FkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YktpdDIvV2ViS2l0Mi5wcm8gYi9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDE0MTg1Mjc4Yzli
N2VmNmU2YTcyMTUzNmIyOWU3MzZiMjI2ZDVkM2MuLjkxYWQxYWNhZmFhNjdlMmJkMjY2NTBjYmI5
OGQ1ZmUwMThhM2RhMWEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvV2Vi
S2l0Mi9XZWJLaXQyLnBybwpAQCAtMjAsNiArMjAsOCBAQCBERVNURElSID0gJCRXRUJLSVQyX0RF
U1RESVIKICAgICBERUZJTkVTICs9IE5ERUJVRwogfQogCitERUZJTkVTICs9IFhQX1VOSVgKKwog
SU5DTFVERVBBVEggPSBcCiAgICAgJCRQV0QvLi4gXAogICAgICQkUFdELy4uL0phdmFTY3JpcHRD
b3JlIFwKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBjNWM3MDViNDFhMTk1OWZmNDFmNzBh
NGNhNjQ4NmE0MzBlMWQwOWZhLi5kZjc2NzY3OGJiMDBiODA4NDc0MjEzZmJjMTAwYmU0YjVmZmUz
ZTA5IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC00NTUsNiArNDU1LDE0IEBAIHN0YXRp
YyBOUEVycm9yIE5QTl9HZXRWYWx1ZShOUFAgbnBwLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9p
ZCAqdmFsdWUpCiAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgogICAgICAgICAg
ICAqKE5QQm9vbCopdmFsdWUgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKKyNlbGlmIFBMQVRG
T1JNKFFUKQorICAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7CisgICAgICAgICAgICBSZWZQdHI8
TmV0c2NhcGVQbHVnaW4+IHBsdWdpbiA9IE5ldHNjYXBlUGx1Z2luOjpmcm9tTlBQKG5wcCk7CisK
KyAgICAgICAgICAgIGlmIChwbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrUmVx
dWlyZXNHdGtUb29sS2l0KSkKKyAgICAgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50
MzJfdCo+KHZhbHVlKSA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogI2VuZGlm
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCmluZGV4IDQ3OTk3MjU4ZGJiMWZmMDllMTY0YWEyNDA1OTg3MGMzMWIyOTdkNDguLjdkMTYy
YzY1MmNkNmYwMGM1NzNmMDMxZGM2Zjc1ZjFkMTU1MDYyMjkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM0
MCwyMSArMzQwLDI0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OmluaXRpYWxpemUoUGx1Z2luQ29u
dHJvbGxlciogcGx1Z2luQ29udHJvbGxlciwgY29uc3QgUGFyYW1lCiAgICAgQVNTRVJUKHBsdWdp
bkNvbnRyb2xsZXIpOwogCiAgICAgbV9wbHVnaW5Db250cm9sbGVyID0gcGx1Z2luQ29udHJvbGxl
cjsKLSAgICAKKworICAgIEFTU0VSVChwYXJhbWV0ZXJzLm5hbWVzLnNpemUoKSA9PSBwYXJhbWV0
ZXJzLnZhbHVlcy5zaXplKCkpOwogICAgIHVpbnQxNl90IG1vZGUgPSBwYXJhbWV0ZXJzLmxvYWRN
YW51YWxseSA/IE5QX0ZVTEwgOiBOUF9FTUJFRDsKLSAgICAKICAgICBtX2xvYWRNYW51YWxseSA9
IHBhcmFtZXRlcnMubG9hZE1hbnVhbGx5OwotICAgIG1faW5OUFBOZXcgPSB0cnVlOwogCi0gICAg
Q1N0cmluZyBtaW1lVHlwZUNTdHJpbmcgPSBwYXJhbWV0ZXJzLm1pbWVUeXBlLnV0ZjgoKTsKKyAg
ICBQYXJhbWV0ZXJzIGVmZmVjdGl2ZVBhcmFybWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICBwbGF0
Zm9ybVByZUluaXRpYWxpemUoJmVmZmVjdGl2ZVBhcmFybWV0ZXJzKTsKKyAgICBBU1NFUlQoZWZm
ZWN0aXZlUGFyYXJtZXRlcnMubmFtZXMuc2l6ZSgpID09IGVmZmVjdGl2ZVBhcmFybWV0ZXJzLnZh
bHVlcy5zaXplKCkpOwogCi0gICAgQVNTRVJUKHBhcmFtZXRlcnMubmFtZXMuc2l6ZSgpID09IHBh
cmFtZXRlcnMudmFsdWVzLnNpemUoKSk7CisgICAgbV9pbk5QUE5ldyA9IHRydWU7CisKKyAgICBD
U3RyaW5nIG1pbWVUeXBlQ1N0cmluZyA9IGVmZmVjdGl2ZVBhcmFybWV0ZXJzLm1pbWVUeXBlLnV0
ZjgoKTsKIAogICAgIFZlY3RvcjxDU3RyaW5nPiBwYXJhbU5hbWVzOwogICAgIFZlY3RvcjxDU3Ry
aW5nPiBwYXJhbVZhbHVlczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMu
bmFtZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgcGFyYW1OYW1lcy5hcHBlbmQocGFyYW1ldGVy
cy5uYW1lc1tpXS51dGY4KCkpOwotICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocGFyYW1ldGVy
cy52YWx1ZXNbaV0udXRmOCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVmZmVjdGl2
ZVBhcmFybWV0ZXJzLm5hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHBhcmFtTmFtZXMuYXBw
ZW5kKGVmZmVjdGl2ZVBhcmFybWV0ZXJzLm5hbWVzW2ldLnV0ZjgoKSk7CisgICAgICAgIHBhcmFt
VmFsdWVzLmFwcGVuZChlZmZlY3RpdmVQYXJhcm1ldGVycy52YWx1ZXNbaV0udXRmOCgpKTsKICAg
ICB9CiAKICAgICAvLyBUaGUgc3RyaW5ncyB0aGF0IHRoZXNlIHBvaW50ZXJzIHBvaW50IHRvIGFy
ZSBrZXB0IGFsaXZlIGJ5IHBhcmFtTmFtZXMgYW5kIHBhcmFtVmFsdWVzLgpAQCAtMzgzLDggKzM4
Niw4IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OmluaXRpYWxpemUoUGx1Z2luQ29udHJvbGxlciog
cGx1Z2luQ29udHJvbGxlciwgY29uc3QgUGFyYW1lCiAgICAgfQogCiAgICAgLy8gTG9hZCB0aGUg
c3JjIFVSTCBpZiBuZWVkZWQuCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmxvYWRNYW51YWxseSAmJiAh
cGFyYW1ldGVycy51cmwuaXNFbXB0eSgpICYmIHNob3VsZExvYWRTcmNVUkwoKSkKLSAgICAgICAg
bG9hZFVSTCgiR0VUIiwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVh
ZGVyTWFwKCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CisgICAgaWYgKCFlZmZlY3Rp
dmVQYXJhcm1ldGVycy5sb2FkTWFudWFsbHkgJiYgIWVmZmVjdGl2ZVBhcmFybWV0ZXJzLnVybC5p
c0VtcHR5KCkgJiYgc2hvdWxkTG9hZFNyY1VSTCgpKQorICAgICAgICBsb2FkVVJMKCJHRVQiLCBl
ZmZlY3RpdmVQYXJhcm1ldGVycy51cmwuc3RyaW5nKCksIFN0cmluZygpLCBIVFRQSGVhZGVyTWFw
KCksIFZlY3Rvcjx1aW50OF90PigpLCBmYWxzZSwgMCk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAppbmRleCBmODdmYTYyNDQ1ZjJmNjNjODhiNDdlYWM2YjhlYmMwMDAxOWE4OTFi
Li4zOTE2NzI1NDIyNzNjZTU0OTVjNmQwMWQ3NjkzMzJmYzRiYzNmMDI5IDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBi
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSdW5Mb29wLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5RdWlya1NldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEV4Y2VwdGlv
bihjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJnNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQpOwogICAgIGJvb2wgaXNQcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgV2ViQ29yZTo6UGx1Z2luUXVpcmtTZXQgcXVpcmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9xdWlya3M7IH0KIAogICAgIC8vIFRoZXNlIHJldHVybiByZXRhaW5l
ZCBvYmplY3RzLgogICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOwpAQCAtMTEw
LDYgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wQWxsU3RyZWFtcygpOwogICAgIGJv
b2wgYWxsb3dQb3B1cHMoKSBjb25zdDsKIAorICAgIHZvaWQgcGxhdGZvcm1QcmVJbml0aWFsaXpl
KFBhcmFtZXRlcnMqKTsKICAgICBib29sIHBsYXRmb3JtUG9zdEluaXRpYWxpemUoKTsKICAgICB2
b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogICAgIGJvb2wgcGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTE4Nyw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9sb2FkTWFudWFsbHk7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBtX21h
bnVhbFN0cmVhbTsKIAorICAgIFdlYkNvcmU6OlBsdWdpblF1aXJrU2V0IG1fcXVpcmtzOworCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIE5QRHJhd2luZ01vZGVsIG1fZHJhd2luZ01vZGVsOwogICAg
IE5QRXZlbnRNb2RlbCBtX2V2ZW50TW9kZWw7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXgg
NmMxNGM0ZDkzODdmMThlNGUyOGU5Y2RmNWQ3ZmQ3YzVjMTZkNDQwOS4uM2YxMTliYmVkMzgwMTg2
ZGVjNDBlNzQxYmY5MmU4NTMxZDkwN2YyYyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAt
MTM1LDkgKzEzNSwxMSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICAg
ICBpZiAoIWluaXRpYWxpemVGdW5jUHRyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAh
WFBfVU5JWAogICAgIE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0ciBnZXRFbnRyeVBvaW50c0Z1bmNQ
dHIgPSBtX21vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0cj4o
Ik5QX0dldEVudHJ5UG9pbnRzIik7CiAgICAgaWYgKCFnZXRFbnRyeVBvaW50c0Z1bmNQdHIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogCiAgICAgbV9zaHV0ZG93blByb2NQdHIgPSBt
X21vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9TaHV0ZG93blByb2NQdHI+KCJOUF9TaHV0ZG93
biIpOwogICAgIGlmICghbV9zaHV0ZG93blByb2NQdHIpCkBAIC0xNTUsNiArMTU3LDkgQEAgYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiAjZWxpZiBQTEFURk9STShXSU4pCiAg
ICAgaWYgKGdldEVudHJ5UG9pbnRzRnVuY1B0cigmbV9wbHVnaW5GdW5jcykgIT0gTlBFUlJfTk9f
RVJST1IgfHwgaW5pdGlhbGl6ZUZ1bmNQdHIobmV0c2NhcGVCcm93c2VyRnVuY3MoKSkgIT0gTlBF
UlJfTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFhQX1VOSVgKKyAgICBp
ZiAoaW5pdGlhbGl6ZUZ1bmNQdHIobmV0c2NhcGVCcm93c2VyRnVuY3MoKSwgJm1fcGx1Z2luRnVu
Y3MpICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZTQ5NTI0MjU1Nzk4Mzg1
Y2E3MGM1ZGNiYzA2OGMwYTUxMTAzNzFkYy4uNGZhNDk1YzU0MDI2MjA5NzI5YzJlNDAwMzU0YzZh
MGM3ZmYyYjk1OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVm
aW5lIE5ldHNjYXBlUGx1Z2luTW9kdWxlX2gKIAogI2luY2x1ZGUgIk1vZHVsZS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvbnBmdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9p
bnRlcm5hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHZvaWQgcGx1
Z2luQ3JlYXRlZCgpOwogICAgIHZvaWQgcGx1Z2luRGVzdHJveWVkKCk7CiAKKyAgICBTdHJpbmcg
cGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luUGF0aDsgfQorCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE5ldHNjYXBlUGx1Z2luTW9kdWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRz
Y2FwZVBsdWdpbk1hYy5tbSBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCBhM2NmZWQyNTNlMGZhYzE1NTdjNGU1MmM5ODAx
OTgxOTJhNmQwNDJiLi5mYTFlZjIzYWZkZDE5MDU4MmZlZWJmOTcyNDcyMGFmMzc4Nzc2ODJiIDEw
MDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2Nh
cGVQbHVnaW5NYWMubW0KKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC04MSw2ICs4MSwxMCBAQCBOUEVycm9yIE5ldHNj
YXBlUGx1Z2luOjpzZXRFdmVudE1vZGVsKE5QRXZlbnRNb2RlbCBldmVudE1vZGVsKQogICAgIHJl
dHVybiBOUEVSUl9OT19FUlJPUjsKIH0KIAordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Q
cmVJbml0aWFsaXplKFBhcmFtZXRlcnMqKQoreworfQorCiBib29sIE5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybVBvc3RJbml0aWFsaXplKCkKIHsKICAgICBpZiAobV9kcmF3aW5nTW9kZWwgPT0gc3Rh
dGljX2Nhc3Q8TlBEcmF3aW5nTW9kZWw+KC0xKSkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvcXQvTmV0c2NhcGVQbHVnaW5RdC5jcHAgYi9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcAppbmRl
eCA4OWU2YzllNWNhYWQ2NDc2Y2ZkZmU4ZTM5ZmJkZmFlYjhkOTkzOGFhLi5lNWQzMzM3OTc5ZWQx
YTU0MjA4MTU1NjcwMzk1M2ZjYTM4M2U4NjE0IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcAorKysgYi9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNwcApAQCAt
MjgsMTUgKzI4LDQ1IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9VTklYUGx1Z2luUXVpcmtzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9y
bVByZUluaXRpYWxpemUoUGFyYW1ldGVycyogcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIGRldGVjdCB0aGUgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLgorICAgIFVOSVhQbHVn
aW5RdWlya3M6OmRldGVybWluZVF1aXJrcyhwYXJhbWV0ZXJzLT5taW1lVHlwZSwgMCAvKm1vZHVs
ZVZlcnNpb24qLywgJm1fcXVpcmtzKTsKKworICAgIC8vIFdvcmthcm91bmQgQWRvYmUncyBmYWls
dXJlIHRvIHByb3Blcmx5IGluaXRpYWxpemUgR3RrCisgICAgLy8gaW4gc29tZSB2ZXJzaW9ucyBv
ZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgorICAgIGlmIChVTklYUGx1Z2luUXVpcmtzOjpp
c05QV3JhcHBlcihtX3BsdWdpbk1vZHVsZS0+cGF0aCgpKSkgeworICAgICAgICAvLyBuc3BsdWdp
bndyYXBwZXIgcmVsaWVzIG9uIHRoZSB0b29sa2l0IHZhbHVlIHRvIGtub3cgaWYgZ2xpYiBpcyBh
dmFpbGFibGUKKyAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29s
S2l0KTsKKyAgICAgICAgV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aW5pdGlhbGl6ZUdUSygp
OworICAgIH0gZWxzZSBpZiAoVU5JWFBsdWdpblF1aXJrczo6aXNGbGFzaFBsdWdpbihtX3BsdWdp
bk1vZHVsZS0+cGF0aCgpKSkgeworICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgbG9hZGVkIHRo
ZSBwbHVnaW4gYnV0IGluaXRpYWxpemVHVEsKKyAgICAgICAgLy8gbmVlZHMgYSBRTGlicmFyeSBm
b3IgcmVzb2x2aW5nIGd0a19pbml0LgorICAgICAgICBRTGlicmFyeSBmbGFzaFBsdWdpbihzdGF0
aWNfY2FzdDxRU3RyaW5nPihtX3BsdWdpbk1vZHVsZS0+cGF0aCgpKSk7CisgICAgICAgIFVOSVhQ
bHVnaW5RdWlya3M6OmluaXRpYWxpemVHVEsoJmZsYXNoUGx1Z2luKTsKKworICAgICAgICAvLyBD
dXJyZW50bHkgd2UgZG8gbm90IHN1cHBvcnQgd2luZG93ZWQgbW9kZSBhbmQgdHJhbnNwYXJlbmN5
LgorICAgICAgICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtZXRlcnMtPm5hbWVzLmZpbmQoIndt
b2RlIik7CisgICAgICAgIGlmICh3bW9kZUluZGV4ID09IC0xKSB7CisgICAgICAgICAgICAvLyBE
aXNhYmxlIFhFbWJlZCBtb2RlIGFuZCBmb3JjZSBpdCB0byBvcGFxdWUgbW9kZQorICAgICAgICAg
ICAgcGFyYW1ldGVycy0+bmFtZXMuYXBwZW5kKCJ3bW9kZSIpOworICAgICAgICAgICAgcGFyYW1l
dGVycy0+dmFsdWVzLmFwcGVuZCgib3BhcXVlIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBEaXNhYmxlIHRyYW5zcGFyZW5jeQorICAgICAgICAgICAgcGFyYW1ldGVycy0+dmFs
dWVzW3dtb2RlSW5kZXhdID0gIm9wYXF1ZSI7CisgICAgICAgIH0KKyAgICB9Cit9CisKIGJvb2wg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9OZXRzY2FwZVBsdWdpbldpbi5jcHAgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vTmV0c2NhcGVQbHVnaW5XaW4uY3Bw
CmluZGV4IGRiMTFkMjcyNzE1YmJkODQ1ZDU4NjJlZDJmZTNhMjZhMWU2NzEwMjkuLjI2NTE3NmY0
ZjY4MmNkMzUzNzBlOTk2YTZhNGM2NTM2ODE0MzljNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9OZXRzY2FwZVBsdWdpbldpbi5jcHAKKysrIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL05ldHNjYXBlUGx1Z2luV2lu
LmNwcApAQCAtNTksNiArNTksMTAgQEAgSFdORCBOZXRzY2FwZVBsdWdpbjo6Y29udGFpbmluZ1dp
bmRvdygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGx1Z2luQ29udHJvbGxlci0+bmF0aXZlUGFyZW50
V2luZG93KCk7CiB9CiAKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6
ZShQYXJhbWV0ZXJzKikKK3sKK30KKwogYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0
SW5pdGlhbGl6ZSgpCiB7CiAgICAgaWYgKCFtX2lzV2luZG93ZWQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72084</attachid>
            <date>2010-10-27 14:16:46 -0700</date>
            <delta_ts>2011-02-22 04:30:46 -0800</delta_ts>
            <desc>GTK build fix</desc>
            <filename>bug-48127-20101027231645.patch</filename>
            <type>text/plain</type>
            <size>31574</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjZjNzFkMjM4YzcwZjFiZTRlNTgyMGJhMTM1Y2IwMDM1Zjc0ZTM3YS4uMGEzZDdmNjMzYjY4ODE5
ZjU2Yzc3NWVkZDE1NTc3OWM4ZDk5OGNiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0xMC0yNyAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcK
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgRmFjdG9yaW5nIG91dCB0aGUgUXQgc3BlY2lmaWMgaGFja3MgdGhhdCBtYWtlcyBmbGFzaCB3
b3JraW5nCisgICAgICAgIGFuZCB0aGUgVU5JWCBzcGVjaWZpYyBxdWlyayBkZXRlcm1pbmF0aW9u
IGJlY2F1c2Ugd2UgbmVlZCB0bworICAgICAgICB1c2UgdGhlbSBpbiBXZWJLaXQyLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBs
dWdpbnMvUGx1Z2luUGFja2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdl
OjpkZXRlcm1pbmVRdWlya3MpOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAgICAgICAq
IHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcDogQWRkZWQuCisgICAgICAgIFRoZSBs
b2dpYyBoYWQgYmVlbiBtb3ZlZCBmcm9tIFBsdWdpblBhY2thZ2UuY3BwIGFuZCBQbHVnaW5QYWNr
YWdlUXQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aXNOUFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VU5JWFBsdWdpblF1aXJrczo6aXNGbGFzaFBsdWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpVTklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVOSVhQbHVnaW5RdWlya3M6OmRldGVybWluZVF1aXJrcyk6IE1pbm9y
IGZpeDoKKyAgICAgICAgdGhlIGRlZmF1bHQgc2NyZWVuIGRlcHRoIG9uIE1hZW1vIHdhcyBub3Qg
YXBwbGllZCBpbiB0aGUKKyAgICAgICAgY2FzZSBvZiB0aGUgSmF2YSBwbHVnaW4gYmVjYXVzZSB3
ZSB3ZXJlIHJldHVybmluZyBlYXJsaWVyLgorICAgICAgICAqIHBsdWdpbnMvdW5peC9VTklYUGx1
Z2luUXVpcmtzLmg6IEFkZGVkLgorCiAyMDEwLTEwLTI3ICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVyIHI3MDY5Mi4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGUzZmRmOTRlMTA5YmUxNGQyMWQ0NDU1MTlhNTRjMjEyNTg5NjgzY2YuLjU4Mjky
MTFhZWI2MDcyMmNmNGRkN2IzMDk1NmM4M2EwNDJmNTYwNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzYzNyw3ICsz
NjM3LDkgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9jYWNoZS93ZWJraXQvc291cC1jYWNoZS1wcml2YXRlLmggXAogCVdlYkNvcmUvcGx1
Z2lucy9ndGsvUGx1Z2luRGF0YUd0ay5jcHAgXAogCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2lu
UGFja2FnZUd0ay5jcHAgXAotCVdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAK
KwlXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwIFwKKwlXZWJDb3JlL3BsdWdp
bnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmggXAorCVdlYkNvcmUvcGx1Z2lucy91bml4L1VOSVhQ
bHVnaW5RdWlya3MuY3BwCiAKIGlmIFRBUkdFVF9YMTEKIHdlYmNvcmVndGtfc291cmNlcyArPSBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCBlZTNiOWQ0YTJiYWU3OWYyZjNmZDQ1MmQ0OGM5N2UyYWY5NGE1OWNiLi41ZTJjMmMwYWVl
YmMwYTc1ZjBhMmZkNGI2ZjQ4YTBjYzcyZGFlYWRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI3ODMsOSArMjc4MywxMSBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAgICAgICAg
ICAgICAgICAgU09VUkNFUyArPSBcCiAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1
Z2luQ29udGFpbmVyUXQuY3BwIFwKICAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVn
aW5QYWNrYWdlUXQuY3BwIFwKLSAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNw
cCBcCisgICAgICAgICAgICAgICAgICAgIHBsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNw
cAogICAgICAgICAgICAgICAgIEhFQURFUlMgKz0gXAotICAgICAgICAgICAgICAgICAgICBwbHVn
aW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmgKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy9x
dC9QbHVnaW5Db250YWluZXJRdC5oIFwKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2lucy91bml4
L1VOSVhQbHVnaW5RdWlya3MuaAogICAgICAgICAgICAgICAgIERFRklORVMgKz0gWFBfVU5JWAog
ICAgICAgICAgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9NRVRBREFU
QV9DQUNIRT0xCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXgg
MmUwMzA4YmM5YjJmMGI2NmEyMjk3N2ViZGVlNTY5YjA5M2ZkZjIxNC4uMzJmNjNkZDg2MzYyNjVh
MTBmNDFjY2Y1MDViMzI5N2UwNzQ0YWY1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblBhY2thZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApA
QCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBYUF9VTklYCisjaW5jbHVkZSAidW5peC9VTklY
UGx1Z2luUXVpcmtzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVnaW5Q
YWNrYWdlOjp+UGx1Z2luUGFja2FnZSgpCkBAIC0xODEsNTMgKzE4NSw3IEBAIFBhc3NSZWZQdHI8
UGx1Z2luUGFja2FnZT4gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZUZyb21DYWNoZShjb25z
dCBTdHJpbmcmIHBhCiAjaWYgZGVmaW5lZChYUF9VTklYKQogdm9pZCBQbHVnaW5QYWNrYWdlOjpk
ZXRlcm1pbmVRdWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIC8v
IEJlY2F1c2UgYSBzaW5nbGUgcHJvY2VzcyBjYW5ub3QgY3JlYXRlIG11bHRpcGxlIFZNcywgYW5k
IHdlIGNhbm5vdCByZWxpYWJseSB1bmxvYWQgYQotICAgICAgICAvLyBKYXZhIFZNLCB3ZSBjYW5u
b3QgdW5sb2FkIHRoZSBKYXZhIHBsdWdpbiwgb3Igd2UnbGwgbG9zZSByZWZlcmVuY2UgdG8gb3Vy
IG9ubHkgVk0KLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrRG9udFVubG9hZFBsdWdp
bik7Ci0KLSAgICAgICAgLy8gU2V0dGluZyB0aGUgd2luZG93IHJlZ2lvbiB0byBhbiBlbXB0eSBy
ZWdpb24gY2F1c2VzIGJhZCBzY3JvbGxpbmcgcmVwYWludCBwcm9ibGVtcwotICAgICAgICAvLyB3
aXRoIHRoZSBKYXZhIHBsdWctaW4uCi0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0Rv
bnRDbGlwVG9aZXJvUmVjdFdoZW5TY3JvbGxpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBmbGFzaFRlblZlcnNp
b24oMHgwYTAwMDAwMCk7Ci0KLSAgICAgICAgaWYgKGNvbXBhcmVGaWxlVmVyc2lvbihmbGFzaFRl
blZlcnNpb24pID49IDApIHsKLSAgICAgICAgICAgIC8vIEZsYXNoIDEwLjAgYjIxOCBkb2Vzbid0
IGxpa2UgaGF2aW5nIGEgTlVMTCB3aW5kb3cgaGFuZGxlCi0gICAgICAgICAgICBtX3F1aXJrcy5h
ZGQoUGx1Z2luUXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7Ci0jaWYgUExB
VEZPUk0oUVQpCi0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0
a1Rvb2xLaXQpOwotI2VuZGlmCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGbGFz
aCA5IGFuZCBvbGRlciByZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYgd2UgcmV0dXJuIGEg
bW96aWxsYSB1c2VyIGFnZW50Ci0gICAgICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtX
YW50c01vemlsbGFVc2VyQWdlbnQpOwotICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShRVCkKLSAg
ICAgICAgLy8gRmxhc2ggd2lsbCBjcmFzaCBvbiByZXBlYXRlZCBjYWxscyB0byBTZXRXaW5kb3cg
aW4gd2luZG93ZWQgbW9kZQotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtEb250Q2Fs
bFNldFdpbmRvd01vcmVUaGFuT25jZSk7Ci0KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICAvLyA2
NC1iaXQgRmxhc2ggZnJlZXplcyBpZiByaWdodC1jbGljayBpcyBzZW50IGluIHdpbmRvd2xlc3Mg
bW9kZQotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdodENsaWNrSW5X
aW5kb3dsZXNzTW9kZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgICAgIG1fcXVpcmtzLmFkZChQ
bHVnaW5RdWlya1JlcXVpcmVzRGVmYXVsdFNjcmVlbkRlcHRoKTsKLSAgICAgICAgbV9xdWlya3Mu
YWRkKFBsdWdpblF1aXJrVGhyb3R0bGVJbnZhbGlkYXRlKTsKLSAgICAgICAgbV9xdWlya3MuYWRk
KFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOwotICAgICAgICBtX3F1
aXJrcy5hZGQoUGx1Z2luUXVpcmtGbGFzaFVSTE5vdGlmeUJ1Zyk7Ci0gICAgfQotCi0jaWYgZGVm
aW5lZChRX1dTX01BRU1PXzUpIHx8IGRlZmluZWQoUV9XU19NQUVNT182KQotICAgIC8vIFBhc3Np
bmcgYSAzMi1iaXQgZGVwdGggcGl4bWFwIHRvIE5QQVBJIHBsdWdpbnMgaXMgdG9vIGluZWZmaWNp
ZW50LiBJbnN0ZWFkLCBwYXNzIGEgWCBQaXhtYXAKLSAgICAvLyB0aGF0IGhhcyBzYW1lIGRlcHRo
IGFzIHRoZSBzY3JlZW4gZGVwdGggc2luY2UgZ3JhcGhpY3Mgb3BlcmF0aW9ucyBhcmUgb3B0aW1p
emVkCi0gICAgLy8gZm9yIHRoaXMgZGVwdGguCi0gICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJr
UmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOwotI2VuZGlmCisgICAgVU5JWFBsdWdpblF1aXJr
czo6ZGV0ZXJtaW5lUXVpcmtzKG1pbWVUeXBlLCBtX21vZHVsZVZlcnNpb24sICZtX3F1aXJrcyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2th
Z2VRdC5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAppbmRleCBl
NzA1OGM3YTIzYjg0ZTZkMTA0OWY5Zjg1NjMwYzRmMTQ3MTEwNDA2Li5jZjZkYzQwMDk2Y2VmNDk1
ODA1NThmODFjMjU2Y2FlYjgzZGViZjFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvcXQv
UGx1Z2luUGFja2FnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2Fn
ZVF0LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogCisjaW5jbHVkZSAiLi4vdW5peC9VTklYUGx1
Z2luUXVpcmtzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIm5w
cnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKQEAgLTg4LDQ5ICs5
MCw2IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmlu
ZyYgbWltZURlc2NyaXB0aW9uKQogICAgIH0KIH0KIAotc3RhdGljIE5QRXJyb3Igc3RhdGljUGx1
Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRfTlBOX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQotewotICAgIGlmICh2YXJpYWJsZSA9PSBO
UE5WVG9vbGtpdCkgewotICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyX3QqPih2YWx1ZSkgPSAy
OwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5Q
Tl9HZXRWYWx1ZShpbnN0YW5jZSwgdmFyaWFibGUsIHZhbHVlKTsKLX0KLQotc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZUd0ayhRTGlicmFyeSogbW9kdWxlID0gMCkKLXsKLSAgICAvLyBFbnN1cmVzIG1p
c3NpbmcgR3RrIGluaXRpYWxpemF0aW9uIGluIHNvbWUgdmVyc2lvbnMgb2YgQWRvYmUncyBmbGFz
aCBwbGF5ZXIKLSAgICAvLyBwbHVnaW4gZG8gbm90IGNhdXNlIGNyYXNoZXMuIFNlZSBCUiMgNDA1
NjcsIDQ0MzI0LCBhbmQgNDQ0MDUgZm9yIGRldGFpbHMuICAKLSAgICBpZiAobW9kdWxlKSB7Ci0g
ICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9wdHIpKGludCosIGNoYXIqKiopOwotICAg
ICAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IChndGtfaW5pdF9wdHIpbW9kdWxlLT5yZXNvbHZl
KCJndGtfaW5pdCIpOwotICAgICAgICBpZiAoZ3RrSW5pdCkgewotICAgICAgICAgICAgLy8gUHJl
dmVudCBndGtfaW5pdCgpIGZyb20gcmVwbGFjaW5nIHRoZSBYIGVycm9yIGhhbmRsZXJzLCBzaW5j
ZSB0aGUgR3RrCi0gICAgICAgICAgICAvLyBoYW5kbGVycyBhYm9ydCB3aGVuIHRoZXkgcmVjZWl2
ZSBhbiBYIGVycm9yLCB0aHVzIGtpbGxpbmcgdGhlIHZpZXdlci4KLSNpZmRlZiBRX1dTX1gxMQot
ICAgICAgICAgICAgaW50ICgqb2xkX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqLCBYRXJyb3JFdmVu
dCopID0gWFNldEVycm9ySGFuZGxlcigwKTsKLSAgICAgICAgICAgIGludCAoKm9sZF9pb19lcnJv
cl9oYW5kbGVyKShEaXNwbGF5KikgPSBYU2V0SU9FcnJvckhhbmRsZXIoMCk7Ci0jZW5kaWYKLSAg
ICAgICAgICAgIGd0a0luaXQoMCwgMCk7Ci0jaWZkZWYgUV9XU19YMTEKLSAgICAgICAgICAgIFhT
ZXRFcnJvckhhbmRsZXIob2xkX2Vycm9yX2hhbmRsZXIpOwotICAgICAgICAgICAgWFNldElPRXJy
b3JIYW5kbGVyKG9sZF9pb19lcnJvcl9oYW5kbGVyKTsKLSNlbmRpZgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUxpYnJhcnkgbGlicmFyeSgibGliZ3RrLXgx
MS0yLjAuc28uMCIpOwotICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkgewotICAgICAgICB0eXBlZGVm
IHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFyKioqKTsKLSAgICAgICAgZ3Rr
X2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IChndGtfaW5pdF9jaGVja19wdHIpbGlicmFy
eS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpOwotICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2lu
ZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1
cmUuCi0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9pZCkgZ3RrSW5p
dENoZWNrKDAsIDApOwotICAgIH0KLX0KLQogYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIHsK
ICAgICBpZiAobV9pc0xvYWRlZCkgewpAQCAtMTYyLDE3ICsxMjEsMTYgQEAgYm9vbCBQbHVnaW5Q
YWNrYWdlOjpsb2FkKCkKIAogICAgIGluaXRpYWxpemVCcm93c2VyRnVuY3MoKTsKIAotICAgIGlm
IChtX3BhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKSkgeworICAgIGlmIChVTklYUGx1Z2luUXVp
cmtzOjppc05QV3JhcHBlcihtX3BhdGgpKSB7CiAgICAgICAgIC8vIG5zcGx1Z2lud3JhcHBlciBy
ZWxpZXMgb24gdGhlIHRvb2xraXQgdmFsdWUgdG8ga25vdyBpZiBnbGliIGlzIGF2YWlsYWJsZQot
ICAgICAgICAvLyBJdCBkb2VzIHNvIGluIE5QX0luaXRpYWxpemUgd2l0aCBhIG51bGwgaW5zdGFu
Y2UsIHRoZXJlZm9yZSBpdCBpcyBkb25lIHRoaXMgd2F5OgotICAgICAgICBtX2Jyb3dzZXJGdW5j
cy5nZXR2YWx1ZSA9IHN0YXRpY1BsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0X05QTl9HZXRW
YWx1ZTsKLSAgICAgICAgLy8gV29ya2Fyb3VuZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkg
aW5pdGlhbGl6ZSBHdGsgaW4gc29tZSB2ZXJzaW9ucwotICAgICAgICAvLyBvZiB0aGVpciBmbGFz
aCBwbGF5ZXIgcGx1Z2luLgotICAgICAgICBpbml0aWFsaXplR3RrKCk7Ci0gICAgfSBlbHNlIGlm
IChtX3BhdGguY29udGFpbnMoImZsYXNocGxheWVyIikpIHsKKyAgICAgICAgLy8gSXQgZG9lcyBz
byBpbiBOUF9Jbml0aWFsaXplIHdpdGggYSBudWxsIGluc3RhbmNlLCB0aGVyZWZvcmUgd2Ugc2hv
dWxkIHNldAorICAgICAgICAvLyB0aGlzIHF1aXJrIGJlZm9yZSBjYWxsaW5nIGl0LgorICAgICAg
ICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQpOworICAgICAgICBV
TklYUGx1Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKCk7CisgICAgfSBlbHNlIGlmIChVTklYUGx1
Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2luKG1fcGF0aCkpIHsKICAgICAgICAgLy8gV29ya2Fyb3Vu
ZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsgaW4gc29tZSB2ZXJz
aW9ucwogICAgICAgICAvLyBvZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgotICAgICAgICBp
bml0aWFsaXplR3RrKG1fbW9kdWxlKTsKKyAgICAgICAgVU5JWFBsdWdpblF1aXJrczo6aW5pdGlh
bGl6ZUdUSyhtX21vZHVsZSk7CiAgICAgfQogCiAjaWYgZGVmaW5lZChYUF9VTklYKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAgYi9XZWJDb3Jl
L3BsdWdpbnMvdW5peC9VTklYUGx1Z2luUXVpcmtzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTIyZDU5ZTMz
MWQ0MDYzNzM4NmQ0YWY5NzUzZWM1N2FkN2Q3OGM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbHVnaW5zL3VuaXgvVU5JWFBsdWdpblF1aXJrcy5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVO
SVhQbHVnaW5RdWlya3MuaCIKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiUGx1Z2luUXVpcmtTZXQuaCIKKyNpbmNsdWRl
ICJucHJ1bnRpbWVfaW50ZXJuYWwuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFMaWJyYXJ5PgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmIFBMQVRGT1JNKFFUKQorYm9vbCBVTklYUGx1Z2luUXVpcmtz
Ojppc05QV3JhcHBlcihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCit7CisgICAgcmV0dXJuIHBs
dWdpblBhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKTsKK30KKworYm9vbCBVTklYUGx1Z2luUXVp
cmtzOjppc0ZsYXNoUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKK3sKKyAgICByZXR1
cm4gcGx1Z2luUGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKTsKK30KKwordm9pZCBVTklYUGx1
Z2luUXVpcmtzOjppbml0aWFsaXplR1RLKFFMaWJyYXJ5KiBwbHVnaW5Nb2R1bGUpCit7CisgICAg
Ly8gRW5zdXJlcyBtaXNzaW5nIEd0ayBpbml0aWFsaXphdGlvbiBpbiBzb21lIHZlcnNpb25zIG9m
IEFkb2JlJ3MgZmxhc2ggcGxheWVyCisgICAgLy8gcGx1Z2luIGRvIG5vdCBjYXVzZSBjcmFzaGVz
LiBTZWUgQlIjIDQwNTY3LCA0NDMyNCwgYW5kIDQ0NDA1IGZvciBkZXRhaWxzLgorICAgIGlmIChw
bHVnaW5Nb2R1bGUpIHsKKyAgICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X3B0cikoaW50
KiwgY2hhcioqKik7CisgICAgICAgIGd0a19pbml0X3B0ciBndGtJbml0ID0gcmVpbnRlcnByZXRf
Y2FzdDxndGtfaW5pdF9wdHI+KHBsdWdpbk1vZHVsZS0+cmVzb2x2ZSgiZ3RrX2luaXQiKSk7Cisg
ICAgICAgIGlmIChndGtJbml0KSB7CisgICAgICAgICAgICAvLyBQcmV2ZW50IGd0a19pbml0KCkg
ZnJvbSByZXBsYWNpbmcgdGhlIFggZXJyb3IgaGFuZGxlcnMsIHNpbmNlIHRoZSBHdGsKKyAgICAg
ICAgICAgIC8vIGhhbmRsZXJzIGFib3J0IHdoZW4gdGhleSByZWNlaXZlIGFuIFggZXJyb3IsIHRo
dXMga2lsbGluZyB0aGUgdmlld2VyLgorI2lmZGVmIFFfV1NfWDExCisgICAgICAgICAgICBpbnQg
KCpvbGRfZXJyb3JfaGFuZGxlcikoRGlzcGxheSosIFhFcnJvckV2ZW50KikgPSBYU2V0RXJyb3JI
YW5kbGVyKDApOworICAgICAgICAgICAgaW50ICgqb2xkX2lvX2Vycm9yX2hhbmRsZXIpKERpc3Bs
YXkqKSA9IFhTZXRJT0Vycm9ySGFuZGxlcigwKTsKKyNlbmRpZgorICAgICAgICAgICAgZ3RrSW5p
dCgwLCAwKTsKKyNpZmRlZiBRX1dTX1gxMQorICAgICAgICAgICAgWFNldEVycm9ySGFuZGxlcihv
bGRfZXJyb3JfaGFuZGxlcik7CisgICAgICAgICAgICBYU2V0SU9FcnJvckhhbmRsZXIob2xkX2lv
X2Vycm9yX2hhbmRsZXIpOworI2VuZGlmCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBRTGlicmFyeSBsaWJyYXJ5KCJsaWJndGsteDExLTIuMC5zby4wIik7Cisg
ICAgaWYgKGxpYnJhcnkubG9hZCgpKSB7CisgICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5p
dF9jaGVja19wdHIpKGludCosIGNoYXIqKiopOworICAgICAgICBndGtfaW5pdF9jaGVja19wdHIg
Z3RrSW5pdENoZWNrID0gcmVpbnRlcnByZXRfY2FzdDxndGtfaW5pdF9jaGVja19wdHI+KGxpYnJh
cnkucmVzb2x2ZSgiZ3RrX2luaXRfY2hlY2siKSk7CisgICAgICAgIC8vIE5PVEU6IFdlJ3JlIHVz
aW5nIGd0a19pbml0X2NoZWNrKCkgc2luY2UgZ3RrX2luaXQoKSBjYWxscyBleGl0KCkgb24gZmFp
bHVyZS4KKyAgICAgICAgaWYgKGd0a0luaXRDaGVjaykKKyAgICAgICAgICAgICh2b2lkKSBndGtJ
bml0Q2hlY2soMCwgMCk7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgVU5JWFBsdWdpblF1aXJr
czo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsYXRmb3JtTW9kdWxl
VmVyc2lvbiBtb2R1bGVWZXJzaW9uLCBQbHVnaW5RdWlya1NldCogcXVpcmtzKQoreworICAgIGlm
IChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpIHsKKyAg
ICAgICAgLy8gQmVjYXVzZSBhIHNpbmdsZSBwcm9jZXNzIGNhbm5vdCBjcmVhdGUgbXVsdGlwbGUg
Vk1zLCBhbmQgd2UgY2Fubm90IHJlbGlhYmx5IHVubG9hZCBhCisgICAgICAgIC8vIEphdmEgVk0s
IHdlIGNhbm5vdCB1bmxvYWQgdGhlIEphdmEgcGx1Z2luLCBvciB3ZSdsbCBsb3NlIHJlZmVyZW5j
ZSB0byBvdXIgb25seSBWTQorICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0RvbnRVbmxv
YWRQbHVnaW4pOworCisgICAgICAgIC8vIFNldHRpbmcgdGhlIHdpbmRvdyByZWdpb24gdG8gYW4g
ZW1wdHkgcmVnaW9uIGNhdXNlcyBiYWQgc2Nyb2xsaW5nIHJlcGFpbnQgcHJvYmxlbXMKKyAgICAg
ICAgLy8gd2l0aCB0aGUgSmF2YSBwbHVnLWluLgorICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5R
dWlya0RvbnRDbGlwVG9aZXJvUmVjdFdoZW5TY3JvbGxpbmcpOworCisgICAgfSBlbHNlIGlmICht
aW1lVHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKSB7CisgICAgICAgIHN0
YXRpYyBjb25zdCBQbGF0Zm9ybU1vZHVsZVZlcnNpb24gZmxhc2hUZW5WZXJzaW9uKDB4MGEwMDAw
MDApOworCisgICAgICAgIC8vIFdlIGFyZSBhcHBseWluZyBxdWlya3MgZm9yIGJvdGggbW9kdWxl
VmVyc2lvbiBpZiB3ZSBkbyBub3Qga25vdyB0aGUgbW9kdWxlVmVyc2lvbi4KKyAgICAgICAgaWYg
KG1vZHVsZVZlcnNpb24gPj0gZmxhc2hUZW5WZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uKSB7Cisg
ICAgICAgICAgICAvLyBGbGFzaCAxMC4wIGIyMTggZG9lc24ndCBsaWtlIGhhdmluZyBhIDAgd2lu
ZG93IGhhbmRsZQorICAgICAgICAgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtEb250U2V0TnVs
bFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgICAgICBx
dWlya3MtPmFkZChQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCk7CisjZW5kaWYKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChtb2R1bGVWZXJzaW9uIDwgZmxhc2hUZW5WZXJzaW9uIHx8ICFt
b2R1bGVWZXJzaW9uKSB7CisgICAgICAgICAgICAvLyBGbGFzaCA5IGFuZCBvbGRlciByZXF1ZXN0
cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYgd2UgcmV0dXJuIGEgbW96aWxsYSB1c2VyIGFnZW50Cisg
ICAgICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1dhbnRzTW96aWxsYVVzZXJBZ2VudCk7
CisgICAgICAgIH0KKworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAvLyBGbGFzaCB3aWxsIGNy
YXNoIG9uIHJlcGVhdGVkIGNhbGxzIHRvIFNldFdpbmRvdyBpbiB3aW5kb3dlZCBtb2RlCisgICAg
ICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrRG9udENhbGxTZXRXaW5kb3dNb3JlVGhhbk9uY2Up
OworCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgLy8gNjQtYml0IEZsYXNoIGZyZWV6ZXMgaWYg
cmlnaHQtY2xpY2sgaXMgc2VudCBpbiB3aW5kb3dsZXNzIG1vZGUKKyAgICAgICAgcXVpcmtzLT5h
ZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNzTW9kZSk7CisjZW5kaWYK
KyNlbmRpZgorCisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0
U2NyZWVuRGVwdGgpOworICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1Rocm90dGxlSW52
YWxpZGF0ZSk7CisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQ
bHVzT25lTWVzc2FnZXMpOworICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya0ZsYXNoVVJM
Tm90aWZ5QnVnKTsKKworICAgIH0KKworI2lmIGRlZmluZWQoUV9XU19NQUVNT181KSB8fCBkZWZp
bmVkKFFfV1NfTUFFTU9fNikKKyAgICAvLyBQYXNzaW5nIGEgMzItYml0IGRlcHRoIHBpeG1hcCB0
byBOUEFQSSBwbHVnaW5zIGlzIHRvbyBpbmVmZmljaWVudC4gSW5zdGVhZCwgcGFzcyBhIFggUGl4
bWFwCisgICAgLy8gdGhhdCBoYXMgc2FtZSBkZXB0aCBhcyB0aGUgc2NyZWVuIGRlcHRoIHNpbmNl
IGdyYXBoaWNzIG9wZXJhdGlvbnMgYXJlIG9wdGltaXplZAorICAgIC8vIGZvciB0aGlzIGRlcHRo
LgorICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrUmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgp
OworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGx1Z2lucy91bml4L1VOSVhQbHVnaW5RdWlya3MuaCBiL1dlYkNvcmUvcGx1Z2lucy91bml4
L1VOSVhQbHVnaW5RdWlya3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmJiOWJiZjE3NDczMjM3NTNlOTRmNDRm
NzU1MjViMmI3NTIyNjg4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbHVnaW5zL3VuaXgv
VU5JWFBsdWdpblF1aXJrcy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBVTklYUGx1Z2luUXVpcmtzX2gKKyNkZWZpbmUgVU5JWFBsdWdpblF1aXJr
c19oCisKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKKyNpZiBQTEFURk9STShR
VCkKKyNpbmNsdWRlIDxRdEdsb2JhbD4KK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUUxpYnJh
cnk7CitRVF9FTkRfTkFNRVNQQUNFCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBQbHVnaW5RdWlya1NldDsKKworY2xhc3MgVU5JWFBsdWdpblF1aXJrcyB7CitwdWJsaWM6
CisjaWYgUExBVEZPUk0oUVQpCisgICAgc3RhdGljIGJvb2wgaXNOUFdyYXBwZXIoY29uc3QgV1RG
OjpTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyBib29sIGlzRmxhc2hQbHVnaW4oY29u
c3QgV1RGOjpTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVH
VEsoUUxpYnJhcnkqIHBsdWdpbk1vZHVsZSA9IDApOworI2VuZGlmCisKKyAgICBzdGF0aWMgdm9p
ZCBkZXRlcm1pbmVRdWlya3MoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBQbGF0Zm9ybU1v
ZHVsZVZlcnNpb24gbW9kdWxlVmVyc2lvbiwgUGx1Z2luUXVpcmtTZXQqIHF1aXJrcyk7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBVTklYUGx1Z2luUXVpcmtzX2gKZGlmZiAtLWdpdCBhL1dlYktpdDIv
Q2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2MwMjliMjMxZDEwOTQwYTQ3YTg0
NzE1Y2U0YmIzYTI1NmU5ZTQzOS4uMWQ1ZWNhNjcxMGJmMmU2NWRhYmUwN2IzMTFiMjJjNWJiMGE3
Zjg2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0xMC0yNyAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcKKworICAgICAgICAqIFBsYXRmb3Jt
L3F0L01vZHVsZVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKTogVXNlIHRo
ZSBSZXNvbHZlQWxsU3ltYm9sc0hpbnQgaGludAorICAgICAgICB3aGVuIGxvYWRpbmcgdGhlIGxp
YnJhcnkgYXMgd2UgZG8gaW4gV2ViQ29yZS4KKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOiBBcHBseSB0aGUgUGx1Z2luUXVpcmtS
ZXF1aXJlc0d0a1Rvb2xLaXQKKyAgICAgICAgcXVpcmsgd2hlbiBuZWVkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmluaXRpYWxpemUpOiBDYWxsIHRoZSBuZXdseSBpbnRy
b2R1Y2VkCisgICAgICAgIHBsYXRmb3JtUHJlSW5pdGlhbGl6ZSBmdW5jdGlvbiBiZWZvcmUgY2Fs
bGluZyBOUF9Jbml0aWFsaXplLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cXVp
cmtzKTogQWRkZWQgYSBQbHVnaW5RdWlya1NldCBtZW1iZXIKKyAgICAgICAgYW5kIGEgZ2V0dGVy
LiBDdXJyZW50bHkgdGhpcyBpcyBvbmx5IHVzZWQgYnkgUXQgYnV0IG90aGVyCisgICAgICAgIHBv
cnRzIHdvdWxkIGxpa2VseSBuZWVkIGl0IGluIHRoZSBmdXR1cmUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOiBDYWxsIE5QX0luaXRpYWxp
emUKKyAgICAgICAgaW4gdGhlIFVOSVggd2F5IG9uIG5vbi1NYWMgVU5JWCBwbGF0Zm9ybXMuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwYXRoKTogQWRkZWQg
Z2V0dGVyLgorICAgICAgICBVc2VkIGluIE5ldHNjYXBlUEx1Z2luOjpwbGF0Zm9ybVByZUluaXRp
YWxpemUuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2Fw
ZVBsdWdpbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3Jt
UHJlSW5pdGlhbGl6ZSk6IEFkZGVkLgorICAgICAgICBNYWtlcyBwb3NzaWJsZSBmb3IgdGhlIHBs
YXRmb3JtIHRvIGNoYW5nZSB0aGUgcGx1Z2luIHBhcmFtZXRlcnMKKyAgICAgICAgYW5kIGRvIHdo
YXRldmVyIGl0IG5lZWRzIHRvIGRvIGJlZm9yZSBjYWxsaW5nIE5QX0luaXRpYWxpemUuCisgICAg
ICAgIEN1cnJlbnRseSBvbmx5IHRoZSBRdCBpbXBsZW1lbnRhdGlvbiBpcyBub24gZW1wdHkuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0L05ldHNjYXBlUGx1Z2luUXQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QcmVJbml0aWFs
aXplKToKKyAgICAgICAgU2V0IHRoZSBQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCBiZWZv
cmUgY2FsbGluZyBOUF9Jbml0aWFsaXplIGZvcgorICAgICAgICBucHdyYXBwZXJzIGJlY2F1c2Ug
dGhvc2UgbmVlZCB0aGUgdG9vbGtpdCB2YWx1ZSBmcm9tIE5QX0luaXRpYWxpemUuCisgICAgICAg
IENhbGwgZ3RrX2luaXQgZm9yIGZsYXNoIGFuZCBjaGFuZ2UgdGhlIHBhcmFtZXRlcnMgdG8gZm9y
YmlkIHdpbmRvd2VkCisgICAgICAgIG1vZGUgYW5kIHRyYXNwYXJlbmN5IHRoYXQgd2UgZG8gbm90
IHN1cHBvcnQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJ
bml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL05l
dHNjYXBlUGx1Z2luV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUHJlSW5pdGlhbGl6ZSk6CisKIDIwMTAtMTAtMjcgIEplc3NpZSBCZXJsaW4gIDxqYmVy
bGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAgYi9XZWJLaXQyL1BsYXRmb3Jt
L3F0L01vZHVsZVF0LmNwcAppbmRleCA4YTY4Y2Y0NmUzOWIxMTUxYjU5ZGRjOGM1ZWQzYTlhODFh
ZTIxODMyLi44NGI4ZmIwNDNjMGM0YmEzZmE2YjZmODA4NThjYTAzMzg2ZGU5MzRjIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcAorKysgYi9XZWJLaXQyL1BsYXRm
b3JtL3F0L01vZHVsZVF0LmNwcApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKICAgICBtX2xpYi5zZXRGaWxlTmFtZShzdGF0aWNfY2Fz
dDxRU3RyaW5nPihtX3BhdGgpKTsKKyAgICBtX2xpYi5zZXRMb2FkSGludHMoUUxpYnJhcnk6OlJl
c29sdmVBbGxTeW1ib2xzSGludCk7CiAgICAgcmV0dXJuIG1fbGliLmxvYWQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1dlYktpdDIvV2ViS2l0Mi5wcm8KaW5kZXgg
MjQ1MDU3ZGM2YmQ2OWRjM2NiNmFiYzBlOWM1MjY3YzUxYmJhOTQ4NS4uNTRhMmU5YzI0MmVmODI0
NzY2OGJhZTRhNzU1NjY0ZTQxYTM3MzY3OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJLaXQyLnBy
bworKysgYi9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yMCw2ICsyMCw4IEBAIERFU1RESVIgPSAk
JFdFQktJVDJfREVTVERJUgogICAgIERFRklORVMgKz0gTkRFQlVHCiB9CiAKK0RFRklORVMgKz0g
WFBfVU5JWAorCiBJTkNMVURFUEFUSCA9IFwKICAgICAkJFBXRC8uLiBcCiAgICAgJCRQV0QvLi4v
SmF2YVNjcmlwdENvcmUgXApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IGM1YzcwNWI0MWEx
OTU5ZmY0MWY3MGE0Y2E2NDg2YTQzMGUxZDA5ZmEuLmRmNzY3Njc4YmIwMGI4MDg0NzQyMTNmYmMx
MDBiZTRiNWZmZTNlMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTQ1NSw2ICs0NTUs
MTQgQEAgc3RhdGljIE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkICp2YWx1ZSkKICAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6
CiAgICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwor
I2VsaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGNhc2UgTlBOVlRvb2xraXQ6IHsKKyAgICAgICAg
ICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21O
UFAobnBwKTsKKworICAgICAgICAgICAgaWYgKHBsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1
Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXQpKQorICAgICAgICAgICAgICAgICpyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4odmFsdWUpID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKaW5kZXggMzkxMDc0Mzk4ZmRlZjZlOTdkNGI1MTdjZTg5YmY3OWQxYTA2
ZDBiNi4uMGI4MzVhOTAwMTIzYTE5ZjQ5MWQ3NDc5M2I0ODY2MWNmZWQwMzA2ZCAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcApAQCAtMzU0LDIxICszNTQsMjQgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6aW5pdGlhbGl6
ZShQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyLCBjb25zdCBQYXJhbWUKICAgICBB
U1NFUlQocGx1Z2luQ29udHJvbGxlcik7CiAKICAgICBtX3BsdWdpbkNvbnRyb2xsZXIgPSBwbHVn
aW5Db250cm9sbGVyOwotICAgIAorCisgICAgQVNTRVJUKHBhcmFtZXRlcnMubmFtZXMuc2l6ZSgp
ID09IHBhcmFtZXRlcnMudmFsdWVzLnNpemUoKSk7CiAgICAgdWludDE2X3QgbW9kZSA9IHBhcmFt
ZXRlcnMubG9hZE1hbnVhbGx5ID8gTlBfRlVMTCA6IE5QX0VNQkVEOwotICAgIAogICAgIG1fbG9h
ZE1hbnVhbGx5ID0gcGFyYW1ldGVycy5sb2FkTWFudWFsbHk7Ci0gICAgbV9pbk5QUE5ldyA9IHRy
dWU7CiAKLSAgICBDU3RyaW5nIG1pbWVUeXBlQ1N0cmluZyA9IHBhcmFtZXRlcnMubWltZVR5cGUu
dXRmOCgpOworICAgIFBhcmFtZXRlcnMgZWZmZWN0aXZlUGFyYXJtZXRlcnMgPSBwYXJhbWV0ZXJz
OworICAgIHBsYXRmb3JtUHJlSW5pdGlhbGl6ZSgmZWZmZWN0aXZlUGFyYXJtZXRlcnMpOworICAg
IEFTU0VSVChlZmZlY3RpdmVQYXJhcm1ldGVycy5uYW1lcy5zaXplKCkgPT0gZWZmZWN0aXZlUGFy
YXJtZXRlcnMudmFsdWVzLnNpemUoKSk7CiAKLSAgICBBU1NFUlQocGFyYW1ldGVycy5uYW1lcy5z
aXplKCkgPT0gcGFyYW1ldGVycy52YWx1ZXMuc2l6ZSgpKTsKKyAgICBtX2luTlBQTmV3ID0gdHJ1
ZTsKKworICAgIENTdHJpbmcgbWltZVR5cGVDU3RyaW5nID0gZWZmZWN0aXZlUGFyYXJtZXRlcnMu
bWltZVR5cGUudXRmOCgpOwogCiAgICAgVmVjdG9yPENTdHJpbmc+IHBhcmFtTmFtZXM7CiAgICAg
VmVjdG9yPENTdHJpbmc+IHBhcmFtVmFsdWVzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGFyYW1ldGVycy5uYW1lcy5zaXplKCk7ICsraSkgewotICAgICAgICBwYXJhbU5hbWVzLmFwcGVu
ZChwYXJhbWV0ZXJzLm5hbWVzW2ldLnV0ZjgoKSk7Ci0gICAgICAgIHBhcmFtVmFsdWVzLmFwcGVu
ZChwYXJhbWV0ZXJzLnZhbHVlc1tpXS51dGY4KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZWZmZWN0aXZlUGFyYXJtZXRlcnMubmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcGFy
YW1OYW1lcy5hcHBlbmQoZWZmZWN0aXZlUGFyYXJtZXRlcnMubmFtZXNbaV0udXRmOCgpKTsKKyAg
ICAgICAgcGFyYW1WYWx1ZXMuYXBwZW5kKGVmZmVjdGl2ZVBhcmFybWV0ZXJzLnZhbHVlc1tpXS51
dGY4KCkpOwogICAgIH0KIAogICAgIC8vIFRoZSBzdHJpbmdzIHRoYXQgdGhlc2UgcG9pbnRlcnMg
cG9pbnQgdG8gYXJlIGtlcHQgYWxpdmUgYnkgcGFyYW1OYW1lcyBhbmQgcGFyYW1WYWx1ZXMuCkBA
IC0zOTcsOCArNDAwLDggQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6aW5pdGlhbGl6ZShQbHVnaW5D
b250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyLCBjb25zdCBQYXJhbWUKICAgICB9CiAKICAgICAv
LyBMb2FkIHRoZSBzcmMgVVJMIGlmIG5lZWRlZC4KLSAgICBpZiAoIXBhcmFtZXRlcnMubG9hZE1h
bnVhbGx5ICYmICFwYXJhbWV0ZXJzLnVybC5pc0VtcHR5KCkgJiYgc2hvdWxkTG9hZFNyY1VSTCgp
KQotICAgICAgICBsb2FkVVJMKCJHRVQiLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgU3RyaW5n
KCksIEhUVFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlLCAwKTsKKyAgICBp
ZiAoIWVmZmVjdGl2ZVBhcmFybWV0ZXJzLmxvYWRNYW51YWxseSAmJiAhZWZmZWN0aXZlUGFyYXJt
ZXRlcnMudXJsLmlzRW1wdHkoKSAmJiBzaG91bGRMb2FkU3JjVVJMKCkpCisgICAgICAgIGxvYWRV
UkwoIkdFVCIsIGVmZmVjdGl2ZVBhcmFybWV0ZXJzLnVybC5zdHJpbmcoKSwgU3RyaW5nKCksIEhU
VFBIZWFkZXJNYXAoKSwgVmVjdG9yPHVpbnQ4X3Q+KCksIGZhbHNlLCAwKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGZkYTUzNTA1YjU4OTg4ODBiMmU1MzUyZmRmOGRm
MTU5MmEzMWI3NzcuLjVlYTU3NmU2ODk0ZDQ3OWYwZTk2YjE4MGNjZDQ5ODMyMWNjYWExYjggMTAw
NjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblF1aXJrU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNzMsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
c2V0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgZXZhbHVhdGUoTlBPYmplY3Qq
LCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7CiAgICAgYm9v
bCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBXZWJDb3JlOjpQbHVnaW5RdWlya1Nl
dCBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3F1aXJrczsgfQogCiAgICAgLy8gVGhlc2UgcmV0
dXJuIHJldGFpbmVkIG9iamVjdHMuCiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0
KCk7CkBAIC0xMTAsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BBbGxTdHJlYW1z
KCk7CiAgICAgYm9vbCBhbGxvd1BvcHVwcygpIGNvbnN0OwogCisgICAgdm9pZCBwbGF0Zm9ybVBy
ZUluaXRpYWxpemUoUGFyYW1ldGVycyopOwogICAgIGJvb2wgcGxhdGZvcm1Qb3N0SW5pdGlhbGl6
ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAgICAgYm9vbCBwbGF0Zm9ybUludmFs
aWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpAQCAtMTg3LDYgKzE5MCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2xvYWRNYW51YWxseTsKICAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5T
dHJlYW0+IG1fbWFudWFsU3RyZWFtOwogCisgICAgV2ViQ29yZTo6UGx1Z2luUXVpcmtTZXQgbV9x
dWlya3M7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlBEcmF3aW5nTW9kZWwgbV9kcmF3aW5n
TW9kZWw7CiAgICAgTlBFdmVudE1vZGVsIG1fZXZlbnRNb2RlbDsKZGlmZiAtLWdpdCBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBi
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcAppbmRleCA2YzE0YzRkOTM4N2YxOGU0ZTI4ZTljZGY1ZDdmZDdjNWMxNmQ0NDA5Li4zZjEx
OWJiZWQzODAxODZkZWM0MGU3NDFiZjkyZTg1MzFkOTA3ZjJjIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysr
IGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwCkBAIC0xMzUsOSArMTM1LDExIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRy
eUxvYWQoKQogICAgIGlmICghaW5pdGlhbGl6ZUZ1bmNQdHIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorI2lmICFYUF9VTklYCiAgICAgTlBfR2V0RW50cnlQb2ludHNGdW5jUHRyIGdldEVudHJ5
UG9pbnRzRnVuY1B0ciA9IG1fbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8TlBfR2V0RW50cnlQb2lu
dHNGdW5jUHRyPigiTlBfR2V0RW50cnlQb2ludHMiKTsKICAgICBpZiAoIWdldEVudHJ5UG9pbnRz
RnVuY1B0cikKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAKICAgICBtX3NodXRkb3du
UHJvY1B0ciA9IG1fbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8TlBQX1NodXRkb3duUHJvY1B0cj4o
Ik5QX1NodXRkb3duIik7CiAgICAgaWYgKCFtX3NodXRkb3duUHJvY1B0cikKQEAgLTE1NSw2ICsx
NTcsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICNlbGlmIFBMQVRG
T1JNKFdJTikKICAgICBpZiAoZ2V0RW50cnlQb2ludHNGdW5jUHRyKCZtX3BsdWdpbkZ1bmNzKSAh
PSBOUEVSUl9OT19FUlJPUiB8fCBpbml0aWFsaXplRnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5j
cygpKSAhPSBOUEVSUl9OT19FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgWFBf
VU5JWAorICAgIGlmIChpbml0aWFsaXplRnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5jcygpLCAm
bV9wbHVnaW5GdW5jcykgIT0gTlBFUlJfTk9fRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGIvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAppbmRleCBlNDk1
MjQyNTU3OTgzODVjYTcwYzVkY2JjMDY4YzBhNTExMDM3MWRjLi40ZmE0OTVjNTQwMjYyMDk3Mjlj
MmU0MDAzNTRjNmEwYzdmZjJiOTU4IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCisrKyBiL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKQEAgLTI3LDcgKzI3
LDcgQEAKICNkZWZpbmUgTmV0c2NhcGVQbHVnaW5Nb2R1bGVfaAogCiAjaW5jbHVkZSAiTW9kdWxl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9ucGZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
bnBydW50aW1lX2ludGVybmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwbHVnaW5DcmVhdGVkKCk7CiAgICAgdm9pZCBwbHVnaW5EZXN0cm95ZWQoKTsKIAor
ICAgIFN0cmluZyBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5QYXRoOyB9CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVnaW5Nb2R1bGUoY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCmluZGV4IDBkMThmZWU2MThiM2Q1OGI4
NjNhOWMzMDg5ZDc5YWU1ZGUwOTU4MTguLjNkNzJkMTk2YWZmOWMxZmQxYTZmOTA1OTc0N2Y1NGEz
NmI1ODI0YTggMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KQEAgLTgxLDYgKzgxLDEwIEBAIE5Q
RXJyb3IgTmV0c2NhcGVQbHVnaW46OnNldEV2ZW50TW9kZWwoTlBFdmVudE1vZGVsIGV2ZW50TW9k
ZWwpCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCit2b2lkIE5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybVByZUluaXRpYWxpemUoUGFyYW1ldGVycyopCit7Cit9CisKIGJvb2wgTmV0c2Nh
cGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemUoKQogewogICAgIGlmIChtX2RyYXdpbmdN
b2RlbCA9PSBzdGF0aWNfY2FzdDxOUERyYXdpbmdNb2RlbD4oLTEpKSB7CmRpZmYgLS1naXQgYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9xdC9OZXRzY2FwZVBsdWdpblF0LmNw
cCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0L05ldHNjYXBlUGx1Z2lu
UXQuY3BwCmluZGV4IDg5ZTZjOWU1Y2FhZDY0NzZjZmRmZThlMzlmYmRmYWViOGQ5OTM4YWEuLmU1
ZDMzMzc5NzllZDFhNTQyMDgxNTU2NzAzOTUzZmNhMzgzZTg2MTQgMTAwNjQ0Ci0tLSBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0L05ldHNjYXBlUGx1Z2luUXQuY3BwCisr
KyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0L05ldHNjYXBlUGx1Z2lu
UXQuY3BwCkBAIC0yOCwxNSArMjgsNDUgQEAKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VOSVhQbHVnaW5RdWly
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3ZvaWQgTmV0c2NhcGVQbHVn
aW46OnBsYXRmb3JtUHJlSW5pdGlhbGl6ZShQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQoreworICAg
IC8vIEZJWE1FOiB3ZSBzaG91bGQgZGV0ZWN0IHRoZSB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUuCisg
ICAgVU5JWFBsdWdpblF1aXJrczo6ZGV0ZXJtaW5lUXVpcmtzKHBhcmFtZXRlcnMtPm1pbWVUeXBl
LCAwIC8qbW9kdWxlVmVyc2lvbiovLCAmbV9xdWlya3MpOworCisgICAgLy8gV29ya2Fyb3VuZCBB
ZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsKKyAgICAvLyBpbiBzb21l
IHZlcnNpb25zIG9mIHRoZWlyIGZsYXNoIHBsYXllciBwbHVnaW4uCisgICAgaWYgKFVOSVhQbHVn
aW5RdWlya3M6OmlzTlBXcmFwcGVyKG1fcGx1Z2luTW9kdWxlLT5wYXRoKCkpKSB7CisgICAgICAg
IC8vIG5zcGx1Z2lud3JhcHBlciByZWxpZXMgb24gdGhlIHRvb2xraXQgdmFsdWUgdG8ga25vdyBp
ZiBnbGliIGlzIGF2YWlsYWJsZQorICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1
aXJlc0d0a1Rvb2xLaXQpOworICAgICAgICBXZWJDb3JlOjpVTklYUGx1Z2luUXVpcmtzOjppbml0
aWFsaXplR1RLKCk7CisgICAgfSBlbHNlIGlmIChVTklYUGx1Z2luUXVpcmtzOjppc0ZsYXNoUGx1
Z2luKG1fcGx1Z2luTW9kdWxlLT5wYXRoKCkpKSB7CisgICAgICAgIC8vIFdlIGhhdmUgYWxyZWFk
eSBsb2FkZWQgdGhlIHBsdWdpbiBidXQgaW5pdGlhbGl6ZUdUSworICAgICAgICAvLyBuZWVkcyBh
IFFMaWJyYXJ5IGZvciByZXNvbHZpbmcgZ3RrX2luaXQuCisgICAgICAgIFFMaWJyYXJ5IGZsYXNo
UGx1Z2luKHN0YXRpY19jYXN0PFFTdHJpbmc+KG1fcGx1Z2luTW9kdWxlLT5wYXRoKCkpKTsKKyAg
ICAgICAgVU5JWFBsdWdpblF1aXJrczo6aW5pdGlhbGl6ZUdUSygmZmxhc2hQbHVnaW4pOworCisg
ICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkbyBub3Qgc3VwcG9ydCB3aW5kb3dlZCBtb2RlIGFuZCB0
cmFuc3BhcmVuY3kuCisgICAgICAgIHNpemVfdCB3bW9kZUluZGV4ID0gcGFyYW1ldGVycy0+bmFt
ZXMuZmluZCgid21vZGUiKTsKKyAgICAgICAgaWYgKHdtb2RlSW5kZXggPT0gLTEpIHsKKyAgICAg
ICAgICAgIC8vIERpc2FibGUgWEVtYmVkIG1vZGUgYW5kIGZvcmNlIGl0IHRvIG9wYXF1ZSBtb2Rl
CisgICAgICAgICAgICBwYXJhbWV0ZXJzLT5uYW1lcy5hcHBlbmQoIndtb2RlIik7CisgICAgICAg
ICAgICBwYXJhbWV0ZXJzLT52YWx1ZXMuYXBwZW5kKCJvcGFxdWUiKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIERpc2FibGUgdHJhbnNwYXJlbmN5CisgICAgICAgICAgICBwYXJh
bWV0ZXJzLT52YWx1ZXNbd21vZGVJbmRleF0gPSAib3BhcXVlIjsKKyAgICAgICAgfQorICAgIH0K
K30KKwogYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZSgpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL05ldHNjYXBlUGx1Z2luV2lu
LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3dpbi9OZXRzY2FwZVBs
dWdpbldpbi5jcHAKaW5kZXggZGIxMWQyNzI3MTViYmQ4NDVkNTg2MmVkMmZlM2EyNmExZTY3MTAy
OS4uMjY1MTc2ZjRmNjgyY2QzNTM3MGU5OTZhNmE0YzY1MzY4MTQzOWM2NiAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvd2luL05ldHNjYXBlUGx1Z2luV2lu
LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS93aW4vTmV0c2Nh
cGVQbHVnaW5XaW4uY3BwCkBAIC01OSw2ICs1OSwxMCBAQCBIV05EIE5ldHNjYXBlUGx1Z2luOjpj
b250YWluaW5nV2luZG93KCkgY29uc3QKICAgICByZXR1cm4gbV9wbHVnaW5Db250cm9sbGVyLT5u
YXRpdmVQYXJlbnRXaW5kb3coKTsKIH0KIAordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Q
cmVJbml0aWFsaXplKFBhcmFtZXRlcnMqKQoreworfQorCiBib29sIE5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybVBvc3RJbml0aWFsaXplKCkKIHsKICAgICBpZiAoIW1faXNXaW5kb3dlZCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83298</attachid>
            <date>2011-02-22 04:30:52 -0800</date>
            <delta_ts>2011-02-24 09:08:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48127-20110222123051.patch</filename>
            <type>text/plain</type>
            <size>18450</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkyMjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5M2Y3NjE5NzVmODBlM2Ey
MGYwNmJhYTZhZDNmMjZmZjBjZDQ5NGM5Li45ODhlN2VmYjYwMTBjMWIyNjQzZWI1NDhjNzQzMGZj
YmE5ZTgzMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDItMjIgIEJhbGF6
cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisK
KyAgICAgICAgUGFydCBJLgorICAgICAgICBGYWN0b3Jpbmcgb3V0IHRoZSBRdCBzcGVjaWZpYyBo
YWNrcyB0aGF0IG1ha2VzIGZsYXNoIHdvcmtpbmcKKyAgICAgICAgYW5kIHRoZSBYMTEgc3BlY2lm
aWMgcXVpcmsgZGV0ZXJtaW5hdGlvbiB0byBtYWtlIHRoZW0gYXZhaWxhYmxlCisgICAgICAgIGZv
ciBXZWJLaXQyLgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFsaXR5IHNvIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5QYWNrYWdlOjpkZXRlcm1pbmVRdWlya3MpOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1
Z2luUGFja2FnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQp
OgorICAgICAgICAqIHBsdWdpbnMveDExL1gxMVBsdWdpblF1aXJrcy5jcHA6IEFkZGVkLgorICAg
ICAgICBUaGUgbG9naWMgaGFkIGJlZW4gbW92ZWQgZnJvbSBQbHVnaW5QYWNrYWdlLmNwcCBhbmQg
UGx1Z2luUGFja2FnZVF0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlgxMVBsdWdpblF1aXJrczo6
aXNOUFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6WDExUGx1Z2luUXVpcmtzOjppc0ZsYXNo
UGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlgxMVBsdWdpblF1aXJrczo6aW5pdGlhbGl6ZUdU
Syk6CisgICAgICAgIChXZWJDb3JlOjpYMTFQbHVnaW5RdWlya3M6OmRldGVybWluZVF1aXJrcyk6
IE1pbm9yIGZpeDoKKyAgICAgICAgdGhlIGRlZmF1bHQgc2NyZWVuIGRlcHRoIG9uIE1hZW1vIHdh
cyBub3QgYXBwbGllZCBpbiB0aGUKKyAgICAgICAgY2FzZSBvZiB0aGUgSmF2YSBwbHVnaW4gYmVj
YXVzZSB3ZSB3ZXJlIHJldHVybmluZyBlYXJsaWVyLgorICAgICAgICAqIHBsdWdpbnMveDExL1gx
MVBsdWdpblF1aXJrcy5oOiBBZGRlZC4KKwogMjAxMS0wMi0yMiAgU3RldmUgTGFjZXkgIDxzamxA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggYTNmYTM1MDI1ZmU2ZTAzNTRmNjI2YzhmMDc2Njc5YTA2NWUxZWU2
NC4uYTMzOGExNGQyOWQ3MmE2NGM5NGFiMTgxZjc4MTkzZWExNzJkYmQxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KQEAgLTM4MjIsNyArMzgyMiw5IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5EYXRhR3RrLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luUGFja2FnZUd0ay5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCisJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luVmlld0d0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsdWdpbnMveDExL1gxMVBs
dWdpblF1aXJrcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3gxMS9YMTFQbHVnaW5RdWly
a3MuY3BwCiAKIGlmIFRBUkdFVF9YMTEKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IDYzOWI0MTZlOWEwYjZlYzIxZTUzN2M0Mzg2M2Q3ZGI4ODBmY2ZiZDguLmJmYjBk
N2Y5YmQ1YzM5OTAwYjliMDQwNWNhZGM5ZGYxODFlZGYyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0y
ODA1LDkgKzI4MDUsMTEgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJ
Tl9BUEk9MSkgewogICAgICAgICAgICAgICAgIFNPVVJDRVMgKz0gXAogICAgICAgICAgICAgICAg
ICAgICBwbHVnaW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmNwcCBcCiAgICAgICAgICAgICAgICAg
ICAgIHBsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcCBcCi0gICAgICAgICAgICAgICAgICAg
IHBsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorICAgICAgICAgICAgICAgICAgICBwbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHAgXAorICAgICAgICAgICAgICAgICAgICBwbHVnaW5zL3gxMS9Y
MTFQbHVnaW5RdWlya3MuY3BwCiAgICAgICAgICAgICAgICAgSEVBREVSUyArPSBcCi0gICAgICAg
ICAgICAgICAgICAgIHBsdWdpbnMvcXQvUGx1Z2luQ29udGFpbmVyUXQuaAorICAgICAgICAgICAg
ICAgICAgICBwbHVnaW5zL3F0L1BsdWdpbkNvbnRhaW5lclF0LmggXAorICAgICAgICAgICAgICAg
ICAgICBwbHVnaW5zL3gxMS9YMTFQbHVnaW5RdWlya3MuaAogICAgICAgICAgICAgICAgIERFRklO
RVMgKz0gWFBfVU5JWAogICAgICAgICAgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9NRVRBREFUQV9DQUNIRT0xCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAppbmRleCAxMDE0OWJmNmIyNzM4OTllMjIyNDUyMjNkMDlk
MWZlMTJmOGE4OGIzLi4yMDEzZTY5ZjY4MjBkYzI3ZWRkZmY4ZjM2MDc1MjYzZWVmODk1NWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKQEAgLTM3LDYgKzM3LDEw
IEBACiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCisjaWYgWFBfVU5JWAorI2luY2x1ZGUgIngxMS9YMTFQbHVnaW5RdWlya3MuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsdWdpblBhY2thZ2U6On5QbHVnaW5Q
YWNrYWdlKCkKQEAgLTE4MSw1MyArMTg1LDcgQEAgUGFzc1JlZlB0cjxQbHVnaW5QYWNrYWdlPiBQ
bHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlRnJvbUNhY2hlKGNvbnN0IFN0cmluZyYgcGEKICNp
ZiBkZWZpbmVkKFhQX1VOSVgpCiB2b2lkIFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJrcyhj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0ph
dmFBcHBsZXRNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgLy8gQmVjYXVzZSBhIHNpbmds
ZSBwcm9jZXNzIGNhbm5vdCBjcmVhdGUgbXVsdGlwbGUgVk1zLCBhbmQgd2UgY2Fubm90IHJlbGlh
Ymx5IHVubG9hZCBhCi0gICAgICAgIC8vIEphdmEgVk0sIHdlIGNhbm5vdCB1bmxvYWQgdGhlIEph
dmEgcGx1Z2luLCBvciB3ZSdsbCBsb3NlIHJlZmVyZW5jZSB0byBvdXIgb25seSBWTQotICAgICAg
ICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtEb250VW5sb2FkUGx1Z2luKTsKLQotICAgICAgICAv
LyBTZXR0aW5nIHRoZSB3aW5kb3cgcmVnaW9uIHRvIGFuIGVtcHR5IHJlZ2lvbiBjYXVzZXMgYmFk
IHNjcm9sbGluZyByZXBhaW50IHByb2JsZW1zCi0gICAgICAgIC8vIHdpdGggdGhlIEphdmEgcGx1
Zy1pbi4KLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrRG9udENsaXBUb1plcm9SZWN0
V2hlblNjcm9sbGluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobWltZVR5
cGUgPT0gImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgewotICAgICAgICBzdGF0aWMg
Y29uc3QgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uIGZsYXNoVGVuVmVyc2lvbigweDBhMDAwMDAwKTsK
LQotICAgICAgICBpZiAoY29tcGFyZUZpbGVWZXJzaW9uKGZsYXNoVGVuVmVyc2lvbikgPj0gMCkg
ewotICAgICAgICAgICAgLy8gRmxhc2ggMTAuMCBiMjE4IGRvZXNuJ3QgbGlrZSBoYXZpbmcgYSBO
VUxMIHdpbmRvdyBoYW5kbGUKLSAgICAgICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0Rv
bnRTZXROdWxsV2luZG93SGFuZGxlT25EZXN0cm95KTsKLSNpZiBQTEFURk9STShRVCkKLSAgICAg
ICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCk7Ci0jZW5k
aWYKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZsYXNoIDkgYW5kIG9sZGVyIHJl
cXVlc3RzIHdpbmRvd2xlc3MgcGx1Z2lucyBpZiB3ZSByZXR1cm4gYSBtb3ppbGxhIHVzZXIgYWdl
bnQKLSAgICAgICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya1dhbnRzTW96aWxsYVVzZXJB
Z2VudCk7Ci0gICAgICAgIH0KLQotI2lmIFBMQVRGT1JNKFFUKQotICAgICAgICAvLyBGbGFzaCB3
aWxsIGNyYXNoIG9uIHJlcGVhdGVkIGNhbGxzIHRvIFNldFdpbmRvdyBpbiB3aW5kb3dlZCBtb2Rl
Ci0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0RvbnRDYWxsU2V0V2luZG93TW9yZVRo
YW5PbmNlKTsKLQotI2lmIENQVShYODZfNjQpCi0gICAgICAgIC8vIDY0LWJpdCBGbGFzaCBmcmVl
emVzIGlmIHJpZ2h0LWNsaWNrIGlzIHNlbnQgaW4gd2luZG93bGVzcyBtb2RlCi0gICAgICAgIG1f
cXVpcmtzLmFkZChQbHVnaW5RdWlya0lnbm9yZVJpZ2h0Q2xpY2tJbldpbmRvd2xlc3NNb2RlKTsK
LSNlbmRpZgotI2VuZGlmCi0KLSAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJrUmVxdWly
ZXNEZWZhdWx0U2NyZWVuRGVwdGgpOwotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtU
aHJvdHRsZUludmFsaWRhdGUpOwotICAgICAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtUaHJv
dHRsZVdNVXNlclBsdXNPbmVNZXNzYWdlcyk7Ci0gICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5R
dWlya0ZsYXNoVVJMTm90aWZ5QnVnKTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKFFfV1NfTUFFTU9f
NSkgfHwgZGVmaW5lZChRX1dTX01BRU1PXzYpCi0gICAgLy8gUGFzc2luZyBhIDMyLWJpdCBkZXB0
aCBwaXhtYXAgdG8gTlBBUEkgcGx1Z2lucyBpcyB0b28gaW5lZmZpY2llbnQuIEluc3RlYWQsIHBh
c3MgYSBYIFBpeG1hcAotICAgIC8vIHRoYXQgaGFzIHNhbWUgZGVwdGggYXMgdGhlIHNjcmVlbiBk
ZXB0aCBzaW5jZSBncmFwaGljcyBvcGVyYXRpb25zIGFyZSBvcHRpbWl6ZWQKLSAgICAvLyBmb3Ig
dGhpcyBkZXB0aC4KLSAgICBtX3F1aXJrcy5hZGQoUGx1Z2luUXVpcmtSZXF1aXJlc0RlZmF1bHRT
Y3JlZW5EZXB0aCk7Ci0jZW5kaWYKKyAgICBYMTFQbHVnaW5RdWlya3M6OmRldGVybWluZVF1aXJr
cyhtaW1lVHlwZSwgbV9tb2R1bGVWZXJzaW9uLCAmbV9xdWlya3MpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luUGFja2FnZVF0LmNwcAppbmRleCBjZTA3
ZmFmMDUyNDIxOTQ2MmY5MWVlMDU5YjRkYmM4NGJiNjI3OTQ0Li4zODc0ZTlhYTIxZGMwY2U3NWJk
MDhlZGRmMjI3ZDA3ZGFhNDQ3MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L3F0L1BsdWdpblBhY2thZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9Q
bHVnaW5QYWNrYWdlUXQuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAKKyNpbmNsdWRlICIuLi94
MTEvWDExUGx1Z2luUXVpcmtzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKQEAg
LTg4LDQ5ICs5MCw2IEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNv
bnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQogICAgIH0KIH0KIAotc3RhdGljIE5QRXJyb3Ig
c3RhdGljUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRfTlBOX0dldFZhbHVlKE5QUCBpbnN0
YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQotewotICAgIGlmICh2YXJp
YWJsZSA9PSBOUE5WVG9vbGtpdCkgewotICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyX3QqPih2
YWx1ZSkgPSAyOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0gICAg
cmV0dXJuIE5QTl9HZXRWYWx1ZShpbnN0YW5jZSwgdmFyaWFibGUsIHZhbHVlKTsKLX0KLQotc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZUd0ayhRTGlicmFyeSogbW9kdWxlID0gMCkKLXsKLSAgICAvLyBF
bnN1cmVzIG1pc3NpbmcgR3RrIGluaXRpYWxpemF0aW9uIGluIHNvbWUgdmVyc2lvbnMgb2YgQWRv
YmUncyBmbGFzaCBwbGF5ZXIKLSAgICAvLyBwbHVnaW4gZG8gbm90IGNhdXNlIGNyYXNoZXMuIFNl
ZSBCUiMgNDA1NjcsIDQ0MzI0LCBhbmQgNDQ0MDUgZm9yIGRldGFpbHMuICAKLSAgICBpZiAobW9k
dWxlKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9wdHIpKGludCosIGNoYXIq
KiopOwotICAgICAgICBndGtfaW5pdF9wdHIgZ3RrSW5pdCA9IChndGtfaW5pdF9wdHIpbW9kdWxl
LT5yZXNvbHZlKCJndGtfaW5pdCIpOwotICAgICAgICBpZiAoZ3RrSW5pdCkgewotICAgICAgICAg
ICAgLy8gUHJldmVudCBndGtfaW5pdCgpIGZyb20gcmVwbGFjaW5nIHRoZSBYIGVycm9yIGhhbmRs
ZXJzLCBzaW5jZSB0aGUgR3RrCi0gICAgICAgICAgICAvLyBoYW5kbGVycyBhYm9ydCB3aGVuIHRo
ZXkgcmVjZWl2ZSBhbiBYIGVycm9yLCB0aHVzIGtpbGxpbmcgdGhlIHZpZXdlci4KLSNpZmRlZiBR
X1dTX1gxMQotICAgICAgICAgICAgaW50ICgqb2xkX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqLCBY
RXJyb3JFdmVudCopID0gWFNldEVycm9ySGFuZGxlcigwKTsKLSAgICAgICAgICAgIGludCAoKm9s
ZF9pb19lcnJvcl9oYW5kbGVyKShEaXNwbGF5KikgPSBYU2V0SU9FcnJvckhhbmRsZXIoMCk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgIGd0a0luaXQoMCwgMCk7Ci0jaWZkZWYgUV9XU19YMTEKLSAgICAg
ICAgICAgIFhTZXRFcnJvckhhbmRsZXIob2xkX2Vycm9yX2hhbmRsZXIpOwotICAgICAgICAgICAg
WFNldElPRXJyb3JIYW5kbGVyKG9sZF9pb19lcnJvcl9oYW5kbGVyKTsKLSNlbmRpZgotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUUxpYnJhcnkgbGlicmFyeSgi
bGliZ3RrLXgxMS0yLjAuc28uMCIpOwotICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkgewotICAgICAg
ICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFyKioqKTsKLSAg
ICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IChndGtfaW5pdF9jaGVja19w
dHIpbGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpOwotICAgICAgICAvLyBOT1RFOiBX
ZSdyZSB1c2luZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgp
IG9uIGZhaWx1cmUuCi0gICAgICAgIGlmIChndGtJbml0Q2hlY2spCi0gICAgICAgICAgICAodm9p
ZCkgZ3RrSW5pdENoZWNrKDAsIDApOwotICAgIH0KLX0KLQogYm9vbCBQbHVnaW5QYWNrYWdlOjps
b2FkKCkKIHsKICAgICBpZiAobV9pc0xvYWRlZCkgewpAQCAtMTYyLDE3ICsxMjEsMTYgQEAgYm9v
bCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKIAogICAgIGluaXRpYWxpemVCcm93c2VyRnVuY3MoKTsK
IAotICAgIGlmIChtX3BhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKSkgeworICAgIGlmIChYMTFQ
bHVnaW5RdWlya3M6OmlzTlBXcmFwcGVyKG1fcGF0aCkpIHsKICAgICAgICAgLy8gbnNwbHVnaW53
cmFwcGVyIHJlbGllcyBvbiB0aGUgdG9vbGtpdCB2YWx1ZSB0byBrbm93IGlmIGdsaWIgaXMgYXZh
aWxhYmxlCi0gICAgICAgIC8vIEl0IGRvZXMgc28gaW4gTlBfSW5pdGlhbGl6ZSB3aXRoIGEgbnVs
bCBpbnN0YW5jZSwgdGhlcmVmb3JlIGl0IGlzIGRvbmUgdGhpcyB3YXk6Ci0gICAgICAgIG1fYnJv
d3NlckZ1bmNzLmdldHZhbHVlID0gc3RhdGljUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRf
TlBOX0dldFZhbHVlOwotICAgICAgICAvLyBXb3JrYXJvdW5kIEFkb2JlJ3MgZmFpbHVyZSB0byBw
cm9wZXJseSBpbml0aWFsaXplIEd0ayBpbiBzb21lIHZlcnNpb25zCi0gICAgICAgIC8vIG9mIHRo
ZWlyIGZsYXNoIHBsYXllciBwbHVnaW4uCi0gICAgICAgIGluaXRpYWxpemVHdGsoKTsKLSAgICB9
IGVsc2UgaWYgKG1fcGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkgeworICAgICAgICAvLyBJ
dCBkb2VzIHNvIGluIE5QX0luaXRpYWxpemUgd2l0aCBhIG51bGwgaW5zdGFuY2UsIHRoZXJlZm9y
ZSB3ZSBzaG91bGQgc2V0CisgICAgICAgIC8vIHRoaXMgcXVpcmsgYmVmb3JlIGNhbGxpbmcgaXQu
CisgICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCk7Cisg
ICAgICAgIFgxMVBsdWdpblF1aXJrczo6aW5pdGlhbGl6ZUdUSygpOworICAgIH0gZWxzZSBpZiAo
WDExUGx1Z2luUXVpcmtzOjppc0ZsYXNoUGx1Z2luKG1fcGF0aCkpIHsKICAgICAgICAgLy8gV29y
a2Fyb3VuZCBBZG9iZSdzIGZhaWx1cmUgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBHdGsgaW4gc29t
ZSB2ZXJzaW9ucwogICAgICAgICAvLyBvZiB0aGVpciBmbGFzaCBwbGF5ZXIgcGx1Z2luLgotICAg
ICAgICBpbml0aWFsaXplR3RrKG1fbW9kdWxlKTsKKyAgICAgICAgWDExUGx1Z2luUXVpcmtzOjpp
bml0aWFsaXplR1RLKG1fbW9kdWxlKTsKICAgICB9CiAKICNpZiBkZWZpbmVkKFhQX1VOSVgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3gxMS9YMTFQbHVnaW5RdWlya3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy94MTEvWDExUGx1Z2luUXVpcmtzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40Mjc5ZDA2NGUzNmM4YThiNmMyYTJiNmVlZTcxMmUyNzlkY2YxOTdkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy94MTEvWDExUGx1Z2luUXVpcmtzLmNwcApA
QCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJz
aXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiWDExUGx1Z2luUXVpcmtzLmgiCisKKyNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlBsdWdpblF1
aXJrU2V0LmgiCisjaW5jbHVkZSAibnBydW50aW1lX2ludGVybmFsLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRTGlicmFy
eT4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShRVCkKK2Jv
b2wgWDExUGx1Z2luUXVpcmtzOjppc05QV3JhcHBlcihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
Cit7CisgICAgcmV0dXJuIHBsdWdpblBhdGguY29udGFpbnMoIm5wd3JhcHBlci4iKTsKK30KKwor
Ym9vbCBYMTFQbHVnaW5RdWlya3M6OmlzRmxhc2hQbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoKQoreworICAgIHJldHVybiBwbHVnaW5QYXRoLmNvbnRhaW5zKCJmbGFzaHBsYXllciIpOwor
fQorCit2b2lkIFgxMVBsdWdpblF1aXJrczo6aW5pdGlhbGl6ZUdUSyhRTGlicmFyeSogcGx1Z2lu
TW9kdWxlKQoreworICAgIC8vIEVuc3VyZXMgbWlzc2luZyBHdGsgaW5pdGlhbGl6YXRpb24gaW4g
c29tZSB2ZXJzaW9ucyBvZiBBZG9iZSdzIGZsYXNoIHBsYXllcgorICAgIC8vIHBsdWdpbiBkbyBu
b3QgY2F1c2UgY3Jhc2hlcy4gU2VlIEJSIyA0MDU2NywgNDQzMjQsIGFuZCA0NDQwNSBmb3IgZGV0
YWlscy4KKyAgICBpZiAocGx1Z2luTW9kdWxlKSB7CisgICAgICAgIHR5cGVkZWYgdm9pZCAqKCpn
dGtfaW5pdF9wdHIpKGludCosIGNoYXIqKiopOworICAgICAgICBndGtfaW5pdF9wdHIgZ3RrSW5p
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfcHRyPihwbHVnaW5Nb2R1bGUtPnJlc29sdmUo
Imd0a19pbml0IikpOworICAgICAgICBpZiAoZ3RrSW5pdCkgeworICAgICAgICAgICAgLy8gUHJl
dmVudCBndGtfaW5pdCgpIGZyb20gcmVwbGFjaW5nIHRoZSBYIGVycm9yIGhhbmRsZXJzLCBzaW5j
ZSB0aGUgR3RrCisgICAgICAgICAgICAvLyBoYW5kbGVycyBhYm9ydCB3aGVuIHRoZXkgcmVjZWl2
ZSBhbiBYIGVycm9yLCB0aHVzIGtpbGxpbmcgdGhlIHZpZXdlci4KKyNpZmRlZiBRX1dTX1gxMQor
ICAgICAgICAgICAgaW50ICgqb2xkX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqLCBYRXJyb3JFdmVu
dCopID0gWFNldEVycm9ySGFuZGxlcigwKTsKKyAgICAgICAgICAgIGludCAoKm9sZF9pb19lcnJv
cl9oYW5kbGVyKShEaXNwbGF5KikgPSBYU2V0SU9FcnJvckhhbmRsZXIoMCk7CisjZW5kaWYKKyAg
ICAgICAgICAgIGd0a0luaXQoMCwgMCk7CisjaWZkZWYgUV9XU19YMTEKKyAgICAgICAgICAgIFhT
ZXRFcnJvckhhbmRsZXIob2xkX2Vycm9yX2hhbmRsZXIpOworICAgICAgICAgICAgWFNldElPRXJy
b3JIYW5kbGVyKG9sZF9pb19lcnJvcl9oYW5kbGVyKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgUUxpYnJhcnkgbGlicmFyeSgibGliZ3RrLXgx
MS0yLjAuc28uMCIpOworICAgIGlmIChsaWJyYXJ5LmxvYWQoKSkgeworICAgICAgICB0eXBlZGVm
IHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShpbnQqLCBjaGFyKioqKTsKKyAgICAgICAgZ3Rr
X2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRf
Y2hlY2tfcHRyPihsaWJyYXJ5LnJlc29sdmUoImd0a19pbml0X2NoZWNrIikpOworICAgICAgICAv
LyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2Fs
bHMgZXhpdCgpIG9uIGZhaWx1cmUuCisgICAgICAgIGlmIChndGtJbml0Q2hlY2spCisgICAgICAg
ICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDApOworICAgIH0KK30KKyNlbmRpZgorCit2b2lk
IFgxMVBsdWdpblF1aXJrczo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFBsYXRmb3JtTW9kdWxlVmVyc2lvbiBtb2R1bGVWZXJzaW9uLCBQbHVnaW5RdWlya1NldCogcXVp
cmtzKQoreworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZSht
aW1lVHlwZSkpIHsKKyAgICAgICAgLy8gQmVjYXVzZSBhIHNpbmdsZSBwcm9jZXNzIGNhbm5vdCBj
cmVhdGUgbXVsdGlwbGUgVk1zLCBhbmQgd2UgY2Fubm90IHJlbGlhYmx5IHVubG9hZCBhCisgICAg
ICAgIC8vIEphdmEgVk0sIHdlIGNhbm5vdCB1bmxvYWQgdGhlIEphdmEgcGx1Z2luLCBvciB3ZSds
bCBsb3NlIHJlZmVyZW5jZSB0byBvdXIgb25seSBWTQorICAgICAgICBxdWlya3MtPmFkZChQbHVn
aW5RdWlya0RvbnRVbmxvYWRQbHVnaW4pOworCisgICAgICAgIC8vIFNldHRpbmcgdGhlIHdpbmRv
dyByZWdpb24gdG8gYW4gZW1wdHkgcmVnaW9uIGNhdXNlcyBiYWQgc2Nyb2xsaW5nIHJlcGFpbnQg
cHJvYmxlbXMKKyAgICAgICAgLy8gd2l0aCB0aGUgSmF2YSBwbHVnLWluLgorICAgICAgICBxdWly
a3MtPmFkZChQbHVnaW5RdWlya0RvbnRDbGlwVG9aZXJvUmVjdFdoZW5TY3JvbGxpbmcpOworCisg
ICAgfSBlbHNlIGlmIChtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi
KSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBQbGF0Zm9ybU1vZHVsZVZlcnNpb24gZmxhc2hUZW5W
ZXJzaW9uKDB4MGEwMDAwMDApOworCisgICAgICAgIC8vIFdlIGFyZSBhcHBseWluZyBxdWlya3Mg
Zm9yIGJvdGggbW9kdWxlVmVyc2lvbiBpZiB3ZSBkbyBub3Qga25vdyB0aGUgbW9kdWxlVmVyc2lv
bi4KKyAgICAgICAgaWYgKG1vZHVsZVZlcnNpb24gPj0gZmxhc2hUZW5WZXJzaW9uIHx8ICFtb2R1
bGVWZXJzaW9uKSB7CisgICAgICAgICAgICAvLyBGbGFzaCAxMC4wIGIyMTggZG9lc24ndCBsaWtl
IGhhdmluZyBhIDAgd2luZG93IGhhbmRsZQorICAgICAgICAgICAgcXVpcmtzLT5hZGQoUGx1Z2lu
UXVpcmtEb250U2V0TnVsbFdpbmRvd0hhbmRsZU9uRGVzdHJveSk7CisjaWYgUExBVEZPUk0oUVQp
CisgICAgICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCk7
CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb2R1bGVWZXJzaW9uIDwgZmxhc2hU
ZW5WZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uKSB7CisgICAgICAgICAgICAvLyBGbGFzaCA5IGFu
ZCBvbGRlciByZXF1ZXN0cyB3aW5kb3dsZXNzIHBsdWdpbnMgaWYgd2UgcmV0dXJuIGEgbW96aWxs
YSB1c2VyIGFnZW50CisgICAgICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1dhbnRzTW96
aWxsYVVzZXJBZ2VudCk7CisgICAgICAgIH0KKworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAv
LyBGbGFzaCB3aWxsIGNyYXNoIG9uIHJlcGVhdGVkIGNhbGxzIHRvIFNldFdpbmRvdyBpbiB3aW5k
b3dlZCBtb2RlCisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJrRG9udENhbGxTZXRXaW5k
b3dNb3JlVGhhbk9uY2UpOworCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgLy8gNjQtYml0IEZs
YXNoIGZyZWV6ZXMgaWYgcmlnaHQtY2xpY2sgaXMgc2VudCBpbiB3aW5kb3dsZXNzIG1vZGUKKyAg
ICAgICAgcXVpcmtzLT5hZGQoUGx1Z2luUXVpcmtJZ25vcmVSaWdodENsaWNrSW5XaW5kb3dsZXNz
TW9kZSk7CisjZW5kaWYKKyNlbmRpZgorCisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJr
UmVxdWlyZXNEZWZhdWx0U2NyZWVuRGVwdGgpOworICAgICAgICBxdWlya3MtPmFkZChQbHVnaW5R
dWlya1Rocm90dGxlSW52YWxpZGF0ZSk7CisgICAgICAgIHF1aXJrcy0+YWRkKFBsdWdpblF1aXJr
VGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpOworICAgICAgICBxdWlya3MtPmFkZChQbHVn
aW5RdWlya0ZsYXNoVVJMTm90aWZ5QnVnKTsKKyAgICB9CisKKyNpZiBkZWZpbmVkKFFfV1NfTUFF
TU9fNSkgfHwgZGVmaW5lZChRX1dTX01BRU1PXzYpCisgICAgLy8gUGFzc2luZyBhIDMyLWJpdCBk
ZXB0aCBwaXhtYXAgdG8gTlBBUEkgcGx1Z2lucyBpcyB0b28gaW5lZmZpY2llbnQuIEluc3RlYWQs
IHBhc3MgYSBYIFBpeG1hcAorICAgIC8vIHRoYXQgaGFzIHNhbWUgZGVwdGggYXMgdGhlIHNjcmVl
biBkZXB0aCBzaW5jZSBncmFwaGljcyBvcGVyYXRpb25zIGFyZSBvcHRpbWl6ZWQKKyAgICAvLyBm
b3IgdGhpcyBkZXB0aC4KKyAgICBxdWlya3MtPmFkZChQbHVnaW5RdWlya1JlcXVpcmVzRGVmYXVs
dFNjcmVlbkRlcHRoKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3gxMS9YMTFQbHVnaW5RdWlya3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMveDExL1gxMVBsdWdpblF1aXJrcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlk
OTUwZGNmOWJkYjMzNzExOTllMmVkMTczNWUxY2I0ZDZjNmQyYmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3gxMS9YMTFQbHVnaW5RdWlya3MuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3pl
Z2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgWDExUGx1Z2luUXVpcmtz
X2gKKyNkZWZpbmUgWDExUGx1Z2luUXVpcmtzX2gKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0
cmluZzsKK30KKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFF0R2xvYmFsPgorUVRfQkVH
SU5fTkFNRVNQQUNFCitjbGFzcyBRTGlicmFyeTsKK1FUX0VORF9OQU1FU1BBQ0UKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsdWdpblF1aXJrU2V0OworCitjbGFzcyBY
MTFQbHVnaW5RdWlya3MgeworcHVibGljOgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0YXRpYyBi
b29sIGlzTlBXcmFwcGVyKGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBzdGF0
aWMgYm9vbCBpc0ZsYXNoUGx1Z2luKGNvbnN0IFdURjo6U3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplR1RLKFFMaWJyYXJ5KiBwbHVnaW5Nb2R1bGUgPSAwKTsK
KyNlbmRpZgorCisgICAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSwgUGxhdGZvcm1Nb2R1bGVWZXJzaW9uLCBQbHVnaW5RdWlya1NldCopOwor
fTsKKworfQorCisjZW5kaWYgLy8gWDExUGx1Z2luUXVpcmtzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83667</attachid>
            <date>2011-02-24 09:08:31 -0800</date>
            <delta_ts>2011-02-25 04:24:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48127-20110224170829.patch</filename>
            <type>text/plain</type>
            <size>11596</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk1NDgKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA1NTQzYjMxOTJiZTQ4MmMxMmRhNGZlOGMzZDYwN2ZiM2Q0OWI4NjJhLi4zYTY0
Mzc0MDVjYzNmZDU3NmNlMWFjMDhjOTdkZDcxZWJjMTZkNjQ2IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAg
ICAgICAgKiBTb3VyY2UvV2ViS2l0LnByaTogTGlmdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgWFBf
VU5JWCBtYWNybworICAgICAgICBmcm9tIFdlYkNvcmUucHJpIHRvIFdlYktpdC5wcmkgdG8gYXBw
bHkgaXQgdG8gV2ViS2l0MiBhcyB3ZWxsLgorCiAyMDExLTAyLTI0ICBDaHJpc3RpYW4gRHl3YW4g
IDxjaHJpc3RpYW5AbGFuZWRvLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YWU1Y2U2YzIyNTcyOTNmNjFkZWI1ZDE4MWY3YzUxZGQ5
YjkzNDYxLi43NjIyMDk2YjNiMzJmNTM2Zjg1YjliZDk0MDQ5NzhkMzFlMmQxOTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgTm8gZnVuY3Rp
b24gY2hhbmdlIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUucHJpOiBMaWZ0
IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBYUF9VTklYIG1hY3JvCisgICAgICAgIGZyb20gV2ViQ29y
ZS5wcmkgdG8gV2ViS2l0LnByaSB0byBhcHBseSBpdCB0byBXZWJLaXQyIGFzIHdlbGwuCisKIDIw
MTEtMDItMjQgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDZiODU2YjUwMTZjNzRm
MDM2MWZjZTY2YTU4MmQxMjkzMDM0NDM0M2IuLjI3MTA3ZGZhMTJlYmM1N2Q2OWU1ZDA1NjQwY2M3
NjIxNTY1ZjgxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0yMTAsNyArMjEwLDYgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MSkgewogICAgICAgICAgICAgY29u
dGFpbnMoREVGSU5FUywgUV9XU19NQUVNT182KSB7CiAgICAgICAgICAgICAgICAgREVGSU5FUyAr
PSBNT1pfUExBVEZPUk1fTUFFTU89NgogICAgICAgICAgICAgfQotICAgICAgICAgICAgREVGSU5F
UyArPSBYUF9VTklYCiAgICAgICAgICAgICBERUZJTkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fTUVUQURBVEFfQ0FDSEU9MQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC5wcmkgYi9Tb3VyY2UvV2ViS2l0LnByaQppbmRleCA4OTJkYTE4MDcxMTkzYzgyYmRh
YmQ2MmUzMzEwNDc0YjJmNmZjZDVlLi41YTliYzk3OTU3OTZmNDg0Y2Q5ZWNiNjNlNDkzYjFjMDY5
YmI2YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0
LnByaQpAQCAtMTQzLDMgKzE0Myw2IEBAIENPTkZJRyhxdF9taW5pbWFsKSB7CiB9CiAKIGNvbnRh
aW5zKERFRklORVMsIFFUX05PX1VJVE9PTFMpOiBDT05GSUcgLT0gdWl0b29scworCisjIE5lZWRl
ZCBieSBucGFwaS5oLgordW5peDohbWFjOiFzeW1iaWFuOiBERUZJTkVTICs9IFhQX1VOSVgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA4OWU2MmM0ZTg0YmY5MTIzZWFkN2M1MjE5ZWY3OWYwNzZjMTU1ZTY4Li5iZTRi
OTg2YTBlZWY2Njk4NTBlMWM3ODk1ZDhmMzdmNTYxN2Y1NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF1b
V0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUgd2F5IG9m
IGluaXRpYWxpemluZyB0aGUgcGx1Z2luIGZvciBYMTEuCisgICAgICAgIEFkZCBhIHdheSB0byBh
cHBseSB0aGUgcXVpcmtzIHRoYXQgYXJlIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgdGhlIGZsYXNo
IHBsdWdpbiB0byBub3QgY3Jhc2guCisKKyAgICAgICAgKiBQbGF0Zm9ybS9xdC9Nb2R1bGVRdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6IFVzZSB0aGUgUmVzb2x2ZUFsbFN5
bWJvbHMgaGludAorICAgICAgICBhcyB3ZSBkbyBpbiBXZWJDb3JlLgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOiBDYWxsIGFwcGx5UXVpcmtzQmVm
b3JlTG9hZAorICAgICAgICBpZiBQTFVHSU5fQVJDSElURUNUVVJFIGlzIFgxMS4KKyAgICAgICAg
KiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplR1RLKTogVGhlIHNhbWUgaGFjayB0aGF0IHdl
IGRvIGluIFdlYkNvcmUuCisgICAgICAgIENhbGwgZ3RrX2luaXQgYmVjYXVzZSBmbGFzaCBkb24n
dCBkbyBpdCBmb3IgaXRzZWxmLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6YXBwbHlRdWlya3NCZWZvcmVMb2FkKTogQWRkZWQgZm9yIFgxMS4KKyAgICAgICAgRG8gdGhl
IGhhY2tzIHRoYXQgd2UgbmVlZCB0byBkbyBiZWZvcmUgY2FsbGluZyBOUF9Jbml0aWFsaXplIG9u
IHRoZQorICAgICAgICBmbGFzaCBwbHVnaW4gdG8gc2F2ZSBpdCBmb3JtIGNyYXNoaW5nLgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oOiBBZGRlZCBSZXF1aXJlc0dUS1Rv
b2xLaXQgcXVpcmsgZm9yIFF0LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1
ZSk6IEhhbmRsZSB0aGUgUmVxdWlyZXNHVEtUb29sS2l0IHF1aXJrIG9uIFF0LgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cXVpcmtzKTogQWRkZWQgZ2V0dGVyIGZvciB0aGUgUGx1
Z2luTW9kdWxlJ3MKKyAgICAgICAgcXVpcmtzIHRvIGJlIGF2YWlsYWJsZSBpbiBOUE5fR2V0VmFs
dWUuCisgICAgICAgICogY29uZmlnLmg6IERlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFIG1hY3Jv
cy4KKwogMjAxMS0wMi0yNCAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0
L01vZHVsZVF0LmNwcAppbmRleCBkZTgzNjkxYzZhZTFkZmYzMWY1NjQzMTFjYTE2N2MwMjlkMThm
NDBlLi45ODgxNWEyYzIzZjc2ZTljZGZhZGJiYTY3N2JhNWJlYzY4M2U3NGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogYm9vbCBNb2R1bGU6OmxvYWQoKQogewogICAgIG1fbGliLnNldEZpbGVOYW1l
KHN0YXRpY19jYXN0PFFTdHJpbmc+KG1fcGF0aCkpOworICAgIG1fbGliLnNldExvYWRIaW50cyhR
TGlicmFyeTo6UmVzb2x2ZUFsbFN5bWJvbHNIaW50KTsKICAgICByZXR1cm4gbV9saWIubG9hZCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggOWQwNzQ0ODg2ZDdhMzNi
MjFiNThiY2U0ZjA1ZGMzMzVlZThiNWE2NC4uNzYwMDIwMmFjNmEwZTg0NjE3M2QwM2U1ODNjOTk2
NjNiOWUxNjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAtMjEwLDYgKzIx
MCwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpsb2FkKCkKIAogYm9vbCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7CisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
CisgICAgYXBwbHlRdWlya3NCZWZvcmVMb2FkKCk7CisjZW5kaWYKKwogICAgIG1fbW9kdWxlID0g
YWRvcHRQdHIobmV3IE1vZHVsZShtX3BsdWdpblBhdGgpKTsKICAgICBpZiAoIW1fbW9kdWxlLT5s
b2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxOCw5ICsyMjIsMTEgQEAgYm9vbCBO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiAgICAgaWYgKCFpbml0aWFsaXplRnVuY1B0
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgIVBMVUdJTl9BUkNISVRFQ1RVUkUoWDEx
KQogICAgIE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0ciBnZXRFbnRyeVBvaW50c0Z1bmNQdHIgPSBt
X21vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0cj4oIk5QX0dl
dEVudHJ5UG9pbnRzIik7CiAgICAgaWYgKCFnZXRFbnRyeVBvaW50c0Z1bmNQdHIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogCiAgICAgbV9zaHV0ZG93blByb2NQdHIgPSBtX21vZHVs
ZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9TaHV0ZG93blByb2NQdHI+KCJOUF9TaHV0ZG93biIpOwog
ICAgIGlmICghbV9zaHV0ZG93blByb2NQdHIpCkBAIC0yMzIsMTIgKzIzOCwxNSBAQCBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICAgICAvLyBPbiBNYWMsIE5QX0luaXRpYWxp
emUgbXVzdCBiZSBjYWxsZWQgZmlyc3QsIHRoZW4gTlBfR2V0RW50cnlQb2ludHMuIE9uIFdpbmRv
d3MsIHRoZSBvcmRlciBpcwogICAgIC8vIHJldmVyc2VkLiBGYWlsaW5nIHRvIGZvbGxvdyB0aGlz
IG9yZGVyIHJlc3VsdHMgaW4gY3Jhc2hlcyAoZS5nLiwgaW4gU2lsdmVybGlnaHQgb24gTWFjIGFu
ZAogICAgIC8vIGluIEZsYXNoIGFuZCBRdWlja1RpbWUgb24gV2luZG93cykuCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoTUFDKQogICAgIGlmIChpbml0aWFsaXpl
RnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5jcygpKSAhPSBOUEVSUl9OT19FUlJPUiB8fCBnZXRF
bnRyeVBvaW50c0Z1bmNQdHIoJm1fcGx1Z2luRnVuY3MpICE9IE5QRVJSX05PX0VSUk9SKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZWxpZiBQTEFURk9STShXSU4pCisjZWxpZiBQTFVHSU5fQVJD
SElURUNUVVJFKFdJTikKICAgICBpZiAoZ2V0RW50cnlQb2ludHNGdW5jUHRyKCZtX3BsdWdpbkZ1
bmNzKSAhPSBOUEVSUl9OT19FUlJPUiB8fCBpbml0aWFsaXplRnVuY1B0cihuZXRzY2FwZUJyb3dz
ZXJGdW5jcygpKSAhPSBOUEVSUl9OT19FUlJPUikKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vs
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgaWYgKGluaXRpYWxpemVGdW5jUHRyKG5l
dHNjYXBlQnJvd3NlckZ1bmNzKCksICZtX3BsdWdpbkZ1bmNzKSAhPSBOUEVSUl9OT19FUlJPUikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IDI0YjllNDBjYjc5ZGIzNDAyZTM0NWRlNDBhNTcwZmI5
Mzk0MWZhMDMuLjRmN2UxZGExZDQ0ZGFmMjczMWRhMGUzNmEwOGViNWRhNDhkMTY3NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBOZXRzY2FwZVBsdWdpbk1vZHVsZShjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgpOwogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAgdm9pZCBhcHBseVF1
aXJrc0JlZm9yZUxvYWQoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkZXRlcm1pbmVRdWlya3MoKTsK
IAogICAgIHZvaWQgaW5jcmVtZW50TG9hZENvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luTW9kdWxlWDExLmNwcAppbmRleCBhNjUxZDNiYjEzMmQxMjQ4YzNhZGE4NjY0NDg3OTA3
ZGYyMGNlZjYzLi4xYmM4MzE1YTU5NWI3ZTJiMDIwYWRhNjI4Y2JhMGIwY2NlZjg1MjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKQEAgLTI5LDYgKzI5LDEw
IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdl
LmgiCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02NSw2ICs2
OSwyOCBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luSW5mb1N0bwogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGF0aWMgdm9pZCBpbml0aWFsaXplR1RLKCkKK3sKKyAgICBRTGlicmFyeSBsaWJyYXJ5KCJsaWJn
dGsteDExLTIuMC5zby4wIik7CisgICAgaWYgKGxpYnJhcnkubG9hZCgpKSB7CisgICAgICAgIHR5
cGVkZWYgdm9pZCAqKCpndGtfaW5pdF9jaGVja19wdHIpKGludCosIGNoYXIqKiopOworICAgICAg
ICBndGtfaW5pdF9jaGVja19wdHIgZ3RrSW5pdENoZWNrID0gcmVpbnRlcnByZXRfY2FzdDxndGtf
aW5pdF9jaGVja19wdHI+KGxpYnJhcnkucmVzb2x2ZSgiZ3RrX2luaXRfY2hlY2siKSk7CisgICAg
ICAgIC8vIE5PVEU6IFdlJ3JlIHVzaW5nIGd0a19pbml0X2NoZWNrKCkgc2luY2UgZ3RrX2luaXQo
KSBjYWxscyBleGl0KCkgb24gZmFpbHVyZS4KKyAgICAgICAgaWYgKGd0a0luaXRDaGVjaykKKyAg
ICAgICAgICAgICh2b2lkKSBndGtJbml0Q2hlY2soMCwgMCk7CisgICAgfQorfQorCit2b2lkIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVF1aXJrc0JlZm9yZUxvYWQoKQoreworI2lmIFBMQVRG
T1JNKFFUKQorICAgIGlmIChtX3BsdWdpblBhdGguY29udGFpbnMoIm5wd3JhcHBlciIpIHx8IG1f
cGx1Z2luUGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkgeworICAgICAgICBpbml0aWFsaXpl
R1RLKCk7CisgICAgICAgIG1fcGx1Z2luUXVpcmtzLmFkZChQbHVnaW5RdWlya3M6OlJlcXVpcmVz
R1RLVG9vbEtpdCk7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OmRldGVybWluZVF1aXJrcygpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9QbHVnaW5RdWlya3MuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL1BsdWdpblF1aXJrcy5oCmluZGV4IDY4ZDg5NGEwNmQwMDM0YjBiOGMwNTAwOTM5Mzc2MDFk
OGJmNGMxNTYuLmRmNTUyMWQ1ZmZkOGE3MGJiNWE3Y2FlMzFiYmFjYWJkMjFkNWY2YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oCkBAIC0zOCw2ICsz
OCw4IEBAIHB1YmxpYzoKICAgICAgICAgUHJvZ25hbWVTaG91bGRCZVdlYktpdFBsdWdpbkhvc3Qs
CiAgICAgICAgIC8vIFN1cHBvcnRzIHJlY2VpdmluZyBhIHBhaW50IGV2ZW50LCBldmVuIHdoZW4g
dXNpbmcgQ29yZUFuaW1hdGlvbiByZW5kZXJpbmcuCiAgICAgICAgIFN1cHBvcnRzU25hcHNob3R0
aW5nLAorI2VsaWYgUExBVEZPUk0oUVQpCisgICAgICAgIFJlcXVpcmVzR1RLVG9vbEtpdCwKICNl
bmRpZgogICAgICAgICBOdW1QbHVnaW5RdWlya3MKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggOWE1MjhkMDg5MWM2MGFiYzdlMjM2ZTQ2OWZlMjkwNDAy
Y2FlZmZmMi4uYzUwMjQ3M2ExZTU0ODc4ZGJkNDY1MDhmYjNiOGMyYzcwNGIwYzllMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
QnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC00ODMsNiArNDgzLDEzIEBAIHN0
YXRpYyBOUEVycm9yIE5QTl9HZXRWYWx1ZShOUFAgbnBwLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwg
dm9pZCAqdmFsdWUpCiAgICAgICAgY2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgogICAgICAg
ICAgICAqKE5QQm9vbCopdmFsdWUgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKKyNlbGlmIFBM
QVRGT1JNKFFUKQorICAgICAgIGNhc2UgTlBOVlRvb2xraXQ6IHsKKyAgICAgICAgICAgIFJlZlB0
cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsK
KyAgICAgICAgICAgIGlmIChwbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6
UmVxdWlyZXNHVEtUb29sS2l0KSkKKyAgICAgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHZhbHVlKSA9IDI7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICB9
CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUxNjgyM2NjZTY3NWRkYzk5NzFlZjlhNjhjOTI4
ODBiZWI5NzJkYjUuLmU4NjVkOTNjZjc3NzhlMDJlODM3N2ZlMWExY2NlYTJhZWNlOGM5NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBIV05E
IGNvbnRhaW5pbmdXaW5kb3coKSBjb25zdDsKICNlbmRpZgogCisgICAgUGx1Z2luUXVpcmtzIHF1
aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3MoKTsgfQor
CiAgICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IE5QUmVjdCopOwogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiB1c2VyQWdlbnQoTlBQKTsKICAgICB2b2lkIGxvYWRVUkwoY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCAwZGVkOTFh
ZDQyZTJmNmI3YWYwNDlmODlmZWUyZTI1MzdmYTBjYzBlLi4yYmZiNjEyMjgxNTlmNDAxZWYzNjNm
MTI5NTM1Mzk2NGU4ZWE0ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtMTM2LDMgKzEzNiwxMiBAQCBzdGF0aWMg
Y29uc3QgdHlwZSYgbmFtZSgpIFwKIAogI2VuZGlmIC8qIGRlZmluZWQoV0lOMzIpIHx8IGRlZmlu
ZWQoX1dJTjMyKSAqLwogCisjaWYgUExBVEZPUk0oTUFDKSB8fCAoT1MoTUFDX09TX1gpICYmIFBM
QVRGT1JNKFFUKSkKKyNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9NQUMgMQorI2VsaWYgUExB
VEZPUk0oV0lOKSB8fCAoT1MoV0lOKSAmJiBQTEFURk9STShRVCkpCisjZGVmaW5lIFBMVUdJTl9B
UkNISVRFQ1RVUkVfV0lOIDEKKyNlbGlmIChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRX1dTX1gx
MSkpIHx8IChQTEFURk9STShHVEspICYmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pKQorI2RlZmlu
ZSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMSAxCisjZW5kaWYKKworI2RlZmluZSBQTFVHSU5fQVJD
SElURUNUVVJFKEFSQ0gpIGRlZmluZWQoUExVR0lOX0FSQ0hJVEVDVFVSRV8jI0FSQ0gpICYmIFBM
VUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNICg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83794</attachid>
            <date>2011-02-25 04:24:14 -0800</date>
            <delta_ts>2011-02-25 06:39:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48127-20110225122412.patch</filename>
            <type>text/plain</type>
            <size>11594</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk2NjUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBmM2I1N2UzNzA3ZGZiNTkwZDNmYTU4ZWVkOGVhMTBmMjUzNGY2Y2FmLi4zNDI5
YjIwNmNlNmU1YTFiOTQ3ZDBiMGU2OThhYWU5NGVhMzljYTc4IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAg
ICAgICAgKiBTb3VyY2UvV2ViS2l0LnByaTogTGlmdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgWFBf
VU5JWCBtYWNybworICAgICAgICBmcm9tIFdlYkNvcmUucHJpIHRvIFdlYktpdC5wcmkgdG8gYXBw
bHkgaXQgdG8gV2ViS2l0MiBhcyB3ZWxsLgorCiAyMDExLTAyLTI0ICBBbGVqYW5kcm8gRy4gQ2Fz
dHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IE1hcnRp
biBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZDI2MjI4MmFjZWZmNTZhZjA1ZWY4Nzg0MDg2NWVm
MGMwNzE2YzM4Li4wZWU0NWUzYzNlNDkxNzAwOWViOTA4NzkyZDUyYWQxYTY2ZGY1YjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBLZWxlbWVuICA8a2Jh
bGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgTm8gZnVu
Y3Rpb24gY2hhbmdlIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUucHJpOiBM
aWZ0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBYUF9VTklYIG1hY3JvCisgICAgICAgIGZyb20gV2Vi
Q29yZS5wcmkgdG8gV2ViS2l0LnByaSB0byBhcHBseSBpdCB0byBXZWJLaXQyIGFzIHdlbGwuCisK
IDIwMTEtMDItMjUgIFJlbmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDZiODU2YjUwMTZj
NzRmMDM2MWZjZTY2YTU4MmQxMjkzMDM0NDM0M2IuLjI3MTA3ZGZhMTJlYmM1N2Q2OWU1ZDA1NjQw
Y2M3NjIxNTY1ZjgxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0yMTAsNyArMjEwLDYgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MSkgewogICAgICAgICAgICAg
Y29udGFpbnMoREVGSU5FUywgUV9XU19NQUVNT182KSB7CiAgICAgICAgICAgICAgICAgREVGSU5F
UyArPSBNT1pfUExBVEZPUk1fTUFFTU89NgogICAgICAgICAgICAgfQotICAgICAgICAgICAgREVG
SU5FUyArPSBYUF9VTklYCiAgICAgICAgICAgICBERUZJTkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9Q
TFVHSU5fTUVUQURBVEFfQ0FDSEU9MQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC5wcmkgYi9Tb3VyY2UvV2ViS2l0LnByaQppbmRleCA4OTJkYTE4MDcxMTkzYzgy
YmRhYmQ2MmUzMzEwNDc0YjJmNmZjZDVlLi41YTliYzk3OTU3OTZmNDg0Y2Q5ZWNiNjNlNDkzYjFj
MDY5YmI2YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0LnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0LnByaQpAQCAtMTQzLDMgKzE0Myw2IEBAIENPTkZJRyhxdF9taW5pbWFsKSB7CiB9CiAKIGNv
bnRhaW5zKERFRklORVMsIFFUX05PX1VJVE9PTFMpOiBDT05GSUcgLT0gdWl0b29scworCisjIE5l
ZWRlZCBieSBucGFwaS5oLgordW5peDohbWFjOiFzeW1iaWFuOiBERUZJTkVTICs9IFhQX1VOSVgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjcyOTRkZTU2M2QyODc3OGFmNDg2MDc1MTNkZGMxZGQwZjA3ZDY1Li5h
ZGNlMmI5NDA2ZGIyNzhmZjYzY2IyMzhiZDFmZTc2NjZhMmI1ZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUgd2F5
IG9mIGluaXRpYWxpemluZyB0aGUgcGx1Z2luIGZvciBYMTEuCisgICAgICAgIEFkZCBhIHdheSB0
byBhcHBseSB0aGUgcXVpcmtzIHRoYXQgYXJlIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgdGhlIGZs
YXNoIHBsdWdpbiB0byBub3QgY3Jhc2guCisKKyAgICAgICAgKiBQbGF0Zm9ybS9xdC9Nb2R1bGVR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6IFVzZSB0aGUgUmVzb2x2ZUFs
bFN5bWJvbHMgaGludAorICAgICAgICBhcyB3ZSBkbyBpbiBXZWJDb3JlLgorICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOiBDYWxsIGFwcGx5UXVpcmtz
QmVmb3JlTG9hZAorICAgICAgICBpZiBQTFVHSU5fQVJDSElURUNUVVJFIGlzIFgxMS4KKyAgICAg
ICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplR1RLKTogVGhlIHNhbWUgaGFjayB0aGF0
IHdlIGRvIGluIFdlYkNvcmUuCisgICAgICAgIENhbGwgZ3RrX2luaXQgYmVjYXVzZSBmbGFzaCBk
b24ndCBkbyBpdCBmb3IgaXRzZWxmLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6YXBwbHlRdWlya3NCZWZvcmVMb2FkKTogQWRkZWQgZm9yIFgxMS4KKyAgICAgICAgRG8g
dGhlIGhhY2tzIHRoYXQgd2UgbmVlZCB0byBkbyBiZWZvcmUgY2FsbGluZyBOUF9Jbml0aWFsaXpl
IG9uIHRoZQorICAgICAgICBmbGFzaCBwbHVnaW4gdG8gc2F2ZSBpdCBmb3JtIGNyYXNoaW5nLgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oOiBBZGRlZCBSZXF1aXJlc0dU
S1Rvb2xLaXQgcXVpcmsgZm9yIFF0LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRW
YWx1ZSk6IEhhbmRsZSB0aGUgUmVxdWlyZXNHVEtUb29sS2l0IHF1aXJrIG9uIFF0LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cXVpcmtzKTogQWRkZWQgZ2V0dGVyIGZvciB0aGUg
UGx1Z2luTW9kdWxlJ3MKKyAgICAgICAgcXVpcmtzIHRvIGJlIGF2YWlsYWJsZSBpbiBOUE5fR2V0
VmFsdWUuCisgICAgICAgICogY29uZmlnLmg6IERlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFIG1h
Y3Jvcy4KKwogMjAxMS0wMi0yNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUXQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQvTW9k
dWxlUXQuY3BwCmluZGV4IGRlODM2OTFjNmFlMWRmZjMxZjU2NDMxMWNhMTY3YzAyOWQxOGY0MGUu
Ljk4ODE1YTJjMjNmNzZlOWNkZmFkYmJhNjc3YmE1YmVjNjgzZTc0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBib29sIE1vZHVsZTo6bG9hZCgpCiB7CiAgICAgbV9saWIuc2V0RmlsZU5hbWUoc3Rh
dGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSk7CisgICAgbV9saWIuc2V0TG9hZEhpbnRzKFFMaWJy
YXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIHJldHVybiBtX2xpYi5sb2FkKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCA5ZDA3NDQ4ODZkN2EzM2IyMWI1
OGJjZTRmMDVkYzMzNWVlOGI1YTY0Li43NjAwMjAyYWM2YTBlODQ2MTczZDAzZTU4M2M5OTY2M2I5
ZTE2MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMTAsNiArMjEwLDEw
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAg
ICBhcHBseVF1aXJrc0JlZm9yZUxvYWQoKTsKKyNlbmRpZgorCiAgICAgbV9tb2R1bGUgPSBhZG9w
dFB0cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE4LDkgKzIyMiwxMSBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICAgICBpZiAoIWluaXRpYWxpemVGdW5jUHRyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAhUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAg
ICAgTlBfR2V0RW50cnlQb2ludHNGdW5jUHRyIGdldEVudHJ5UG9pbnRzRnVuY1B0ciA9IG1fbW9k
dWxlLT5mdW5jdGlvblBvaW50ZXI8TlBfR2V0RW50cnlQb2ludHNGdW5jUHRyPigiTlBfR2V0RW50
cnlQb2ludHMiKTsKICAgICBpZiAoIWdldEVudHJ5UG9pbnRzRnVuY1B0cikKICAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAKICAgICBtX3NodXRkb3duUHJvY1B0ciA9IG1fbW9kdWxlLT5m
dW5jdGlvblBvaW50ZXI8TlBQX1NodXRkb3duUHJvY1B0cj4oIk5QX1NodXRkb3duIik7CiAgICAg
aWYgKCFtX3NodXRkb3duUHJvY1B0cikKQEAgLTIzMiwxMiArMjM4LDE1IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQogICAgIC8vIE9uIE1hYywgTlBfSW5pdGlhbGl6ZSBt
dXN0IGJlIGNhbGxlZCBmaXJzdCwgdGhlbiBOUF9HZXRFbnRyeVBvaW50cy4gT24gV2luZG93cywg
dGhlIG9yZGVyIGlzCiAgICAgLy8gcmV2ZXJzZWQuIEZhaWxpbmcgdG8gZm9sbG93IHRoaXMgb3Jk
ZXIgcmVzdWx0cyBpbiBjcmFzaGVzIChlLmcuLCBpbiBTaWx2ZXJsaWdodCBvbiBNYWMgYW5kCiAg
ICAgLy8gaW4gRmxhc2ggYW5kIFF1aWNrVGltZSBvbiBXaW5kb3dzKS4KLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgaWYgKGluaXRpYWxpemVGdW5j
UHRyKG5ldHNjYXBlQnJvd3NlckZ1bmNzKCkpICE9IE5QRVJSX05PX0VSUk9SIHx8IGdldEVudHJ5
UG9pbnRzRnVuY1B0cigmbV9wbHVnaW5GdW5jcykgIT0gTlBFUlJfTk9fRVJST1IpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSNlbGlmIFBMQVRGT1JNKFdJTikKKyNlbGlmIFBMVUdJTl9BUkNISVRF
Q1RVUkUoV0lOKQogICAgIGlmIChnZXRFbnRyeVBvaW50c0Z1bmNQdHIoJm1fcGx1Z2luRnVuY3Mp
ICE9IE5QRVJSX05PX0VSUk9SIHx8IGluaXRpYWxpemVGdW5jUHRyKG5ldHNjYXBlQnJvd3NlckZ1
bmNzKCkpICE9IE5QRVJSX05PX0VSUk9SKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBpZiAoaW5pdGlhbGl6ZUZ1bmNQdHIobmV0c2Nh
cGVCcm93c2VyRnVuY3MoKSwgJm1fcGx1Z2luRnVuY3MpICE9IE5QRVJSX05PX0VSUk9SKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmgKaW5kZXggMjRiOWU0MGNiNzlkYjM0MDJlMzQ1ZGU0MGE1NzBmYjkzOTQx
ZmEwMy4uNGY3ZTFkYTFkNDRkYWYyNzMxZGEwZTM2YTA4ZWI1ZGE0OGQxNjc0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE5ldHNjYXBlUGx1Z2luTW9kdWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCk7CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICB2b2lkIGFwcGx5UXVpcmtz
QmVmb3JlTG9hZCgpOworI2VuZGlmCisKICAgICB2b2lkIGRldGVybWluZVF1aXJrcygpOwogCiAg
ICAgdm9pZCBpbmNyZW1lbnRMb2FkQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5Nb2R1bGVYMTEuY3BwCmluZGV4IGE2NTFkM2JiMTMyZDEyNDhjM2FkYTg2NjQ0ODc5MDdkZjIw
Y2VmNjMuLjFiYzgzMTVhNTk1YjdlMmIwMjBhZGE2MjhjYmEwYjBjY2VmODUyN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpbk1vZHVsZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApAQCAtMjksNiArMjksMTAgQEAK
ICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIK
IAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFMaWJyYXJ5PgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY1LDYgKzY5LDI4
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5JbmZvU3RvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyB2b2lkIGluaXRpYWxpemVHVEsoKQoreworICAgIFFMaWJyYXJ5IGxpYnJhcnkoImxpYmd0ay14
MTEtMi4wLnNvLjAiKTsKKyAgICBpZiAobGlicmFyeS5sb2FkKCkpIHsKKyAgICAgICAgdHlwZWRl
ZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0cikoaW50KiwgY2hhcioqKik7CisgICAgICAgIGd0
a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sgPSByZWludGVycHJldF9jYXN0PGd0a19pbml0
X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpKTsKKyAgICAgICAg
Ly8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRfY2hlY2soKSBzaW5jZSBndGtfaW5pdCgpIGNh
bGxzIGV4aXQoKSBvbiBmYWlsdXJlLgorICAgICAgICBpZiAoZ3RrSW5pdENoZWNrKQorICAgICAg
ICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OmFwcGx5UXVpcmtzQmVmb3JlTG9hZCgpCit7CisjaWYgUExBVEZPUk0o
UVQpCisgICAgaWYgKG1fcGx1Z2luUGF0aC5jb250YWlucygibnB3cmFwcGVyIikgfHwgbV9wbHVn
aW5QYXRoLmNvbnRhaW5zKCJmbGFzaHBsYXllciIpKSB7CisgICAgICAgIGluaXRpYWxpemVHVEso
KTsKKyAgICAgICAgbV9wbHVnaW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6UmVxdWlyZXNHVEtU
b29sS2l0KTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
ZGV0ZXJtaW5lUXVpcmtzKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
UGx1Z2luUXVpcmtzLmgKaW5kZXggNjhkODk0YTA2ZDAwMzRiMGI4YzA1MDA5MzkzNzYwMWQ4YmY0
YzE1Ni4uZGY1NTIxZDVmZmQ4YTcwYmI1YTdjYWUzMWJiYWNhYmQyMWQ1ZjZiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUXVpcmtzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUXVpcmtzLmgKQEAgLTM4LDYgKzM4LDgg
QEAgcHVibGljOgogICAgICAgICBQcm9nbmFtZVNob3VsZEJlV2ViS2l0UGx1Z2luSG9zdCwKICAg
ICAgICAgLy8gU3VwcG9ydHMgcmVjZWl2aW5nIGEgcGFpbnQgZXZlbnQsIGV2ZW4gd2hlbiB1c2lu
ZyBDb3JlQW5pbWF0aW9uIHJlbmRlcmluZy4KICAgICAgICAgU3VwcG9ydHNTbmFwc2hvdHRpbmcs
CisjZWxpZiBQTEFURk9STShRVCkKKyAgICAgICAgUmVxdWlyZXNHVEtUb29sS2l0LAogI2VuZGlm
CiAgICAgICAgIE51bVBsdWdpblF1aXJrcwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcAppbmRleCA5YTUyOGQwODkxYzYwYWJjN2UyMzZlNDY5ZmUyOTA0MDJjYWVm
ZmYyLi5jNTAyNDczYTFlNTQ4NzhkYmQ0NjUwOGZiM2I4YzJjNzA0YjBjOWUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTQ4Myw2ICs0ODMsMTMgQEAgc3RhdGlj
IE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
ICp2YWx1ZSkKICAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CiAgICAgICAgICAg
ICooTlBCb29sKil2YWx1ZSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOworI2VsaWYgUExBVEZP
Uk0oUVQpCisgICAgICAgY2FzZSBOUE5WVG9vbGtpdDogeworICAgICAgICAgICAgUmVmUHRyPE5l
dHNjYXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOworICAg
ICAgICAgICAgaWYgKHBsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1
aXJlc0dUS1Rvb2xLaXQpKQorICAgICAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4odmFsdWUpID0gMjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgIH0KICNl
bmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKaW5kZXggZTE2ODIzY2NlNjc1ZGRjOTk3MWVmOWE2OGM5Mjg4MGJl
Yjk3MmRiNS4uZTg2NWQ5M2NmNzc3OGUwMmU4Mzc3ZmUxYTFjY2VhMmFlY2U4Yzk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIEhXTkQgY29u
dGFpbmluZ1dpbmRvdygpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBQbHVnaW5RdWlya3MgcXVpcmtz
KCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CisKICAg
ICB2b2lkIGludmFsaWRhdGUoY29uc3QgTlBSZWN0Kik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVzZXJBZ2VudChOUFApOwogICAgIHZvaWQgbG9hZFVSTChjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBXZWJD
b3JlOjpIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCmluZGV4IDBkZWQ5MWFkNDJl
MmY2YjdhZjA0OWY4OWZlZTJlMjUzN2ZhMGNjMGUuLmJhNzgzZjFmNDI5OWRmZmRhOTQ0ZDM2ZmMz
OWQxN2ZmNTdjM2I1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCkBAIC0xMzYsMyArMTM2LDEyIEBAIHN0YXRpYyBjb25z
dCB0eXBlJiBuYW1lKCkgXAogCiAjZW5kaWYgLyogZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChf
V0lOMzIpICovCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IChPUyhNQUNfT1NfWCkgJiYgUExBVEZP
Uk0oUVQpKQorI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAxCisjZWxpZiBQTEFURk9S
TShXSU4pIHx8IChPUyhXSU4pICYmIFBMQVRGT1JNKFFUKSkKKyNkZWZpbmUgUExVR0lOX0FSQ0hJ
VEVDVFVSRV9XSU4gMQorI2VsaWYgKFBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFfV1NfWDExKSkg
fHwgKFBMQVRGT1JNKEdUSykgJiYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikpCisjZGVmaW5lIFBM
VUdJTl9BUkNISVRFQ1RVUkVfWDExIDEKKyNlbmRpZgorCisjZGVmaW5lIFBMVUdJTl9BUkNISVRF
Q1RVUkUoQVJDSCkgKGRlZmluZWQoUExVR0lOX0FSQ0hJVEVDVFVSRV8jI0FSQ0gpICYmIFBMVUdJ
Tl9BUkNISVRFQ1RVUkVfIyNBUkNIKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83803</attachid>
            <date>2011-02-25 06:39:51 -0800</date>
            <delta_ts>2011-02-28 09:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48127-20110225143950.patch</filename>
            <type>text/plain</type>
            <size>11652</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk2NjUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBmM2I1N2UzNzA3ZGZiNTkwZDNmYTU4ZWVkOGVhMTBmMjUzNGY2Y2FmLi4zNDI5
YjIwNmNlNmU1YTFiOTQ3ZDBiMGU2OThhYWU5NGVhMzljYTc4IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAg
ICAgICAgKiBTb3VyY2UvV2ViS2l0LnByaTogTGlmdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgWFBf
VU5JWCBtYWNybworICAgICAgICBmcm9tIFdlYkNvcmUucHJpIHRvIFdlYktpdC5wcmkgdG8gYXBw
bHkgaXQgdG8gV2ViS2l0MiBhcyB3ZWxsLgorCiAyMDExLTAyLTI0ICBBbGVqYW5kcm8gRy4gQ2Fz
dHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IE1hcnRp
biBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZDI2MjI4MmFjZWZmNTZhZjA1ZWY4Nzg0MDg2NWVm
MGMwNzE2YzM4Li4wZWU0NWUzYzNlNDkxNzAwOWViOTA4NzkyZDUyYWQxYTY2ZGY1YjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBLZWxlbWVuICA8a2Jh
bGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgTm8gZnVu
Y3Rpb24gY2hhbmdlIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUucHJpOiBM
aWZ0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBYUF9VTklYIG1hY3JvCisgICAgICAgIGZyb20gV2Vi
Q29yZS5wcmkgdG8gV2ViS2l0LnByaSB0byBhcHBseSBpdCB0byBXZWJLaXQyIGFzIHdlbGwuCisK
IDIwMTEtMDItMjUgIFJlbmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDZiODU2YjUwMTZj
NzRmMDM2MWZjZTY2YTU4MmQxMjkzMDM0NDM0M2IuLjI3MTA3ZGZhMTJlYmM1N2Q2OWU1ZDA1NjQw
Y2M3NjIxNTY1ZjgxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0yMTAsNyArMjEwLDYgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MSkgewogICAgICAgICAgICAg
Y29udGFpbnMoREVGSU5FUywgUV9XU19NQUVNT182KSB7CiAgICAgICAgICAgICAgICAgREVGSU5F
UyArPSBNT1pfUExBVEZPUk1fTUFFTU89NgogICAgICAgICAgICAgfQotICAgICAgICAgICAgREVG
SU5FUyArPSBYUF9VTklYCiAgICAgICAgICAgICBERUZJTkVTICs9IEVOQUJMRV9ORVRTQ0FQRV9Q
TFVHSU5fTUVUQURBVEFfQ0FDSEU9MQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC5wcmkgYi9Tb3VyY2UvV2ViS2l0LnByaQppbmRleCA4OTJkYTE4MDcxMTkzYzgy
YmRhYmQ2MmUzMzEwNDc0YjJmNmZjZDVlLi41YTliYzk3OTU3OTZmNDg0Y2Q5ZWNiNjNlNDkzYjFj
MDY5YmI2YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0LnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0LnByaQpAQCAtMTQzLDMgKzE0Myw2IEBAIENPTkZJRyhxdF9taW5pbWFsKSB7CiB9CiAKIGNv
bnRhaW5zKERFRklORVMsIFFUX05PX1VJVE9PTFMpOiBDT05GSUcgLT0gdWl0b29scworCisjIE5l
ZWRlZCBieSBucGFwaS5oLgordW5peDohbWFjOiFzeW1iaWFuOiBERUZJTkVTICs9IFhQX1VOSVgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjcyOTRkZTU2M2QyODc3OGFmNDg2MDc1MTNkZGMxZGQwZjA3ZDY1Li5h
ZGNlMmI5NDA2ZGIyNzhmZjYzY2IyMzhiZDFmZTc2NjZhMmI1ZTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTEtMDItMjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUgd2F5
IG9mIGluaXRpYWxpemluZyB0aGUgcGx1Z2luIGZvciBYMTEuCisgICAgICAgIEFkZCBhIHdheSB0
byBhcHBseSB0aGUgcXVpcmtzIHRoYXQgYXJlIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgdGhlIGZs
YXNoIHBsdWdpbiB0byBub3QgY3Jhc2guCisKKyAgICAgICAgKiBQbGF0Zm9ybS9xdC9Nb2R1bGVR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6IFVzZSB0aGUgUmVzb2x2ZUFs
bFN5bWJvbHMgaGludAorICAgICAgICBhcyB3ZSBkbyBpbiBXZWJDb3JlLgorICAgICAgICAqIFNo
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOiBDYWxsIGFwcGx5UXVpcmtz
QmVmb3JlTG9hZAorICAgICAgICBpZiBQTFVHSU5fQVJDSElURUNUVVJFIGlzIFgxMS4KKyAgICAg
ICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplR1RLKTogVGhlIHNhbWUgaGFjayB0aGF0
IHdlIGRvIGluIFdlYkNvcmUuCisgICAgICAgIENhbGwgZ3RrX2luaXQgYmVjYXVzZSBmbGFzaCBk
b24ndCBkbyBpdCBmb3IgaXRzZWxmLgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6YXBwbHlRdWlya3NCZWZvcmVMb2FkKTogQWRkZWQgZm9yIFgxMS4KKyAgICAgICAgRG8g
dGhlIGhhY2tzIHRoYXQgd2UgbmVlZCB0byBkbyBiZWZvcmUgY2FsbGluZyBOUF9Jbml0aWFsaXpl
IG9uIHRoZQorICAgICAgICBmbGFzaCBwbHVnaW4gdG8gc2F2ZSBpdCBmb3JtIGNyYXNoaW5nLgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oOiBBZGRlZCBSZXF1aXJlc0dU
S1Rvb2xLaXQgcXVpcmsgZm9yIFF0LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRW
YWx1ZSk6IEhhbmRsZSB0aGUgUmVxdWlyZXNHVEtUb29sS2l0IHF1aXJrIG9uIFF0LgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cXVpcmtzKTogQWRkZWQgZ2V0dGVyIGZvciB0aGUg
UGx1Z2luTW9kdWxlJ3MKKyAgICAgICAgcXVpcmtzIHRvIGJlIGF2YWlsYWJsZSBpbiBOUE5fR2V0
VmFsdWUuCisgICAgICAgICogY29uZmlnLmg6IERlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFIG1h
Y3Jvcy4KKwogMjAxMS0wMi0yNCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUXQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQvTW9k
dWxlUXQuY3BwCmluZGV4IGRlODM2OTFjNmFlMWRmZjMxZjU2NDMxMWNhMTY3YzAyOWQxOGY0MGUu
Ljk4ODE1YTJjMjNmNzZlOWNkZmFkYmJhNjc3YmE1YmVjNjgzZTc0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBib29sIE1vZHVsZTo6bG9hZCgpCiB7CiAgICAgbV9saWIuc2V0RmlsZU5hbWUoc3Rh
dGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSk7CisgICAgbV9saWIuc2V0TG9hZEhpbnRzKFFMaWJy
YXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIHJldHVybiBtX2xpYi5sb2FkKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCA5ZDA3NDQ4ODZkN2EzM2IyMWI1
OGJjZTRmMDVkYzMzNWVlOGI1YTY0Li43NjAwMjAyYWM2YTBlODQ2MTczZDAzZTU4M2M5OTY2M2I5
ZTE2MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMTAsNiArMjEwLDEw
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAg
ICBhcHBseVF1aXJrc0JlZm9yZUxvYWQoKTsKKyNlbmRpZgorCiAgICAgbV9tb2R1bGUgPSBhZG9w
dFB0cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE4LDkgKzIyMiwxMSBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICAgICBpZiAoIWluaXRpYWxpemVGdW5jUHRyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAhUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCiAg
ICAgTlBfR2V0RW50cnlQb2ludHNGdW5jUHRyIGdldEVudHJ5UG9pbnRzRnVuY1B0ciA9IG1fbW9k
dWxlLT5mdW5jdGlvblBvaW50ZXI8TlBfR2V0RW50cnlQb2ludHNGdW5jUHRyPigiTlBfR2V0RW50
cnlQb2ludHMiKTsKICAgICBpZiAoIWdldEVudHJ5UG9pbnRzRnVuY1B0cikKICAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAKICAgICBtX3NodXRkb3duUHJvY1B0ciA9IG1fbW9kdWxlLT5m
dW5jdGlvblBvaW50ZXI8TlBQX1NodXRkb3duUHJvY1B0cj4oIk5QX1NodXRkb3duIik7CiAgICAg
aWYgKCFtX3NodXRkb3duUHJvY1B0cikKQEAgLTIzMiwxMiArMjM4LDE1IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQogICAgIC8vIE9uIE1hYywgTlBfSW5pdGlhbGl6ZSBt
dXN0IGJlIGNhbGxlZCBmaXJzdCwgdGhlbiBOUF9HZXRFbnRyeVBvaW50cy4gT24gV2luZG93cywg
dGhlIG9yZGVyIGlzCiAgICAgLy8gcmV2ZXJzZWQuIEZhaWxpbmcgdG8gZm9sbG93IHRoaXMgb3Jk
ZXIgcmVzdWx0cyBpbiBjcmFzaGVzIChlLmcuLCBpbiBTaWx2ZXJsaWdodCBvbiBNYWMgYW5kCiAg
ICAgLy8gaW4gRmxhc2ggYW5kIFF1aWNrVGltZSBvbiBXaW5kb3dzKS4KLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgaWYgKGluaXRpYWxpemVGdW5j
UHRyKG5ldHNjYXBlQnJvd3NlckZ1bmNzKCkpICE9IE5QRVJSX05PX0VSUk9SIHx8IGdldEVudHJ5
UG9pbnRzRnVuY1B0cigmbV9wbHVnaW5GdW5jcykgIT0gTlBFUlJfTk9fRVJST1IpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSNlbGlmIFBMQVRGT1JNKFdJTikKKyNlbGlmIFBMVUdJTl9BUkNISVRF
Q1RVUkUoV0lOKQogICAgIGlmIChnZXRFbnRyeVBvaW50c0Z1bmNQdHIoJm1fcGx1Z2luRnVuY3Mp
ICE9IE5QRVJSX05PX0VSUk9SIHx8IGluaXRpYWxpemVGdW5jUHRyKG5ldHNjYXBlQnJvd3NlckZ1
bmNzKCkpICE9IE5QRVJSX05PX0VSUk9SKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICBpZiAoaW5pdGlhbGl6ZUZ1bmNQdHIobmV0c2Nh
cGVCcm93c2VyRnVuY3MoKSwgJm1fcGx1Z2luRnVuY3MpICE9IE5QRVJSX05PX0VSUk9SKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmgKaW5kZXggMjRiOWU0MGNiNzlkYjM0MDJlMzQ1ZGU0MGE1NzBmYjkzOTQx
ZmEwMy4uNGY3ZTFkYTFkNDRkYWYyNzMxZGEwZTM2YTA4ZWI1ZGE0OGQxNjc0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbk1vZHVsZS5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE5ldHNjYXBlUGx1Z2luTW9kdWxlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCk7CiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICB2b2lkIGFwcGx5UXVpcmtz
QmVmb3JlTG9hZCgpOworI2VuZGlmCisKICAgICB2b2lkIGRldGVybWluZVF1aXJrcygpOwogCiAg
ICAgdm9pZCBpbmNyZW1lbnRMb2FkQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5Nb2R1bGVYMTEuY3BwCmluZGV4IGE2NTFkM2JiMTMyZDEyNDhjM2FkYTg2NjQ0ODc5MDdkZjIw
Y2VmNjMuLjFiYzgzMTVhNTk1YjdlMmIwMjBhZGE2MjhjYmEwYjBjY2VmODUyN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpbk1vZHVsZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcApAQCAtMjksNiArMjksMTAgQEAK
ICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIK
IAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFMaWJyYXJ5PgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY1LDYgKzY5LDI4
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5JbmZvU3RvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyB2b2lkIGluaXRpYWxpemVHVEsoKQoreworICAgIFFMaWJyYXJ5IGxpYnJhcnkoImxpYmd0ay14
MTEtMi4wLnNvLjAiKTsKKyAgICBpZiAobGlicmFyeS5sb2FkKCkpIHsKKyAgICAgICAgdHlwZWRl
ZiB2b2lkICooKmd0a19pbml0X2NoZWNrX3B0cikoaW50KiwgY2hhcioqKik7CisgICAgICAgIGd0
a19pbml0X2NoZWNrX3B0ciBndGtJbml0Q2hlY2sgPSByZWludGVycHJldF9jYXN0PGd0a19pbml0
X2NoZWNrX3B0cj4obGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpKTsKKyAgICAgICAg
Ly8gTk9URTogV2UncmUgdXNpbmcgZ3RrX2luaXRfY2hlY2soKSBzaW5jZSBndGtfaW5pdCgpIGNh
bGxzIGV4aXQoKSBvbiBmYWlsdXJlLgorICAgICAgICBpZiAoZ3RrSW5pdENoZWNrKQorICAgICAg
ICAgICAgKHZvaWQpIGd0a0luaXRDaGVjaygwLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OmFwcGx5UXVpcmtzQmVmb3JlTG9hZCgpCit7CisjaWYgUExBVEZPUk0o
UVQpCisgICAgaWYgKG1fcGx1Z2luUGF0aC5jb250YWlucygibnB3cmFwcGVyIikgfHwgbV9wbHVn
aW5QYXRoLmNvbnRhaW5zKCJmbGFzaHBsYXllciIpKSB7CisgICAgICAgIGluaXRpYWxpemVHVEso
KTsKKyAgICAgICAgbV9wbHVnaW5RdWlya3MuYWRkKFBsdWdpblF1aXJrczo6UmVxdWlyZXNHVEtU
b29sS2l0KTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
ZGV0ZXJtaW5lUXVpcmtzKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL1BsdWdpblF1aXJrcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
UGx1Z2luUXVpcmtzLmgKaW5kZXggNjhkODk0YTA2ZDAwMzRiMGI4YzA1MDA5MzkzNzYwMWQ4YmY0
YzE1Ni4uZGY1NTIxZDVmZmQ4YTcwYmI1YTdjYWUzMWJiYWNhYmQyMWQ1ZjZiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUXVpcmtzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUXVpcmtzLmgKQEAgLTM4LDYgKzM4LDgg
QEAgcHVibGljOgogICAgICAgICBQcm9nbmFtZVNob3VsZEJlV2ViS2l0UGx1Z2luSG9zdCwKICAg
ICAgICAgLy8gU3VwcG9ydHMgcmVjZWl2aW5nIGEgcGFpbnQgZXZlbnQsIGV2ZW4gd2hlbiB1c2lu
ZyBDb3JlQW5pbWF0aW9uIHJlbmRlcmluZy4KICAgICAgICAgU3VwcG9ydHNTbmFwc2hvdHRpbmcs
CisjZWxpZiBQTEFURk9STShRVCkKKyAgICAgICAgUmVxdWlyZXNHVEtUb29sS2l0LAogI2VuZGlm
CiAgICAgICAgIE51bVBsdWdpblF1aXJrcwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcAppbmRleCA5YTUyOGQwODkxYzYwYWJjN2UyMzZlNDY5ZmUyOTA0MDJjYWVm
ZmYyLi42Y2ViMTMzNzEzNWM5ZDA0Y2EwNTU4YTE4NDE2N2JjNDZiMzQ4ODZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTQ4Myw2ICs0ODMsMTYgQEAgc3RhdGlj
IE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
ICp2YWx1ZSkKICAgICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CiAgICAgICAgICAg
ICooTlBCb29sKil2YWx1ZSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOworI2VsaWYgUExBVEZP
Uk0oUVQpCisgICAgICAgY2FzZSBOUE5WVG9vbGtpdDogeworICAgICAgICAgICAgUmVmUHRyPE5l
dHNjYXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHApOworICAg
ICAgICAgICAgaWYgKHBsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1
aXJlc0dUS1Rvb2xLaXQpKSB7CisgICAgICAgICAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPih2YWx1ZSkgPSAyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUxNjgyM2NjZTY3NWRkYzk5NzFlZjlhNjhjOTI4ODBi
ZWI5NzJkYjUuLmU4NjVkOTNjZjc3NzhlMDJlODM3N2ZlMWExY2NlYTJhZWNlOGM5NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBIV05EIGNv
bnRhaW5pbmdXaW5kb3coKSBjb25zdDsKICNlbmRpZgogCisgICAgUGx1Z2luUXVpcmtzIHF1aXJr
cygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3MoKTsgfQorCiAg
ICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IE5QUmVjdCopOwogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiB1c2VyQWdlbnQoTlBQKTsKICAgICB2b2lkIGxvYWRVUkwoY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCAwZGVkOTFhZDQy
ZTJmNmI3YWYwNDlmODlmZWUyZTI1MzdmYTBjYzBlLi5iYTc4M2YxZjQyOTlkZmZkYTk0NGQzNmZj
MzlkMTdmZjU3YzNiNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtMTM2LDMgKzEzNiwxMiBAQCBzdGF0aWMgY29u
c3QgdHlwZSYgbmFtZSgpIFwKIAogI2VuZGlmIC8qIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQo
X1dJTjMyKSAqLwogCisjaWYgUExBVEZPUk0oTUFDKSB8fCAoT1MoTUFDX09TX1gpICYmIFBMQVRG
T1JNKFFUKSkKKyNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9NQUMgMQorI2VsaWYgUExBVEZP
Uk0oV0lOKSB8fCAoT1MoV0lOKSAmJiBQTEFURk9STShRVCkpCisjZGVmaW5lIFBMVUdJTl9BUkNI
SVRFQ1RVUkVfV0lOIDEKKyNlbGlmIChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRX1dTX1gxMSkp
IHx8IChQTEFURk9STShHVEspICYmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pKQorI2RlZmluZSBQ
TFVHSU5fQVJDSElURUNUVVJFX1gxMSAxCisjZW5kaWYKKworI2RlZmluZSBQTFVHSU5fQVJDSElU
RUNUVVJFKEFSQ0gpIChkZWZpbmVkKFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKSAmJiBQTFVH
SU5fQVJDSElURUNUVVJFXyMjQVJDSCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84074</attachid>
            <date>2011-02-28 09:37:33 -0800</date>
            <delta_ts>2011-02-28 15:56:18 -0800</delta_ts>
            <desc>Patch - partI</desc>
            <filename>bug-48127-20110228173731.patch</filename>
            <type>text/plain</type>
            <size>5481</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk4NjkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBhOTdhMjJlZjVmNTFlZDkyMThlOGYwODMzYWE3ZjU1NmY0MmU4NTdhLi4zZTIw
ZDlkZjJjMDQ5YjUwNjAxN2E3ZjFlMzUyYWJhZWE3MTI4ZDA4IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMjggIEJhbGF6cyBL
ZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bV0syXSBQbHVnaW4gaW5pdGlhbGl6YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTI3CisKKyAg
ICAgICAgKiBTb3VyY2UvV2ViS2l0LnByaTogTGlmdCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgWFBf
VU5JWCBtYWNybworICAgICAgICBmcm9tIFdlYkNvcmUucHJpIHRvIFdlYktpdC5wcmkgdG8gYXBw
bHkgaXQgdG8gV2ViS2l0MiBhcyB3ZWxsLgorCiAyMDExLTAyLTI4ICBLcmlzdGlhbiBBbWxpZSAg
PGtyaXN0aWFuLmFtbGllQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3NmM2OWMxZTVjMDA2NmE1NmZiZWI0M2IwODU4MDc3ZDIz
NzYxNWEuLmVmY2EzN2U1MWRhMTM2ZGFiNGEzYWY0NDRkNzI1MWIwYTBhZDVhN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yOCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcKKworICAgICAgICBObyBmdW5jdGlv
biBjaGFuZ2Ugc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5wcmk6IExpZnQg
dGhlIGRlZmluaXRpb24gb2YgdGhlIFhQX1VOSVggbWFjcm8KKyAgICAgICAgZnJvbSBXZWJDb3Jl
LnByaSB0byBXZWJLaXQucHJpIHRvIGFwcGx5IGl0IHRvIFdlYktpdDIgYXMgd2VsbC4KKwogMjAx
MS0wMi0yOCAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggNmI4NTZiNTAxNmM3NGYw
MzYxZmNlNjZhNTgyZDEyOTMwMzQ0MzQzYi4uMjcxMDdkZmExMmViYzU3ZDY5ZTVkMDU2NDBjYzc2
MjE1NjVmODExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTIxMCw3ICsyMTAsNiBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7CiAgICAgICAgICAgICBjb250
YWlucyhERUZJTkVTLCBRX1dTX01BRU1PXzYpIHsKICAgICAgICAgICAgICAgICBERUZJTkVTICs9
IE1PWl9QTEFURk9STV9NQUVNTz02CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBERUZJTkVT
ICs9IFhQX1VOSVgKICAgICAgICAgICAgIERFRklORVMgKz0gRU5BQkxFX05FVFNDQVBFX1BMVUdJ
Tl9NRVRBREFUQV9DQUNIRT0xCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0LnByaSBiL1NvdXJjZS9XZWJLaXQucHJpCmluZGV4IGI2MmViYTAxMjE4YWIxZDI5Zjg3
MzhkMDBhN2VmYmFhNzY3ZDExODMuLjExZDkzMzM2ZjJkNjcyMDg1MDU0ZDNlZmRjZDM2Yzg2MDEx
YTc2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQu
cHJpCkBAIC0xNDYsMyArMTQ2LDYgQEAgQ09ORklHKHF0X21pbmltYWwpIHsKIH0KIAogY29udGFp
bnMoREVGSU5FUywgUVRfTk9fVUlUT09MUyk6IENPTkZJRyAtPSB1aXRvb2xzCisKKyMgTmVlZGVk
IGJ5IG5wYXBpLmguCit1bml4OiFtYWM6IXN5bWJpYW46IERFRklORVMgKz0gWFBfVU5JWApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDFjMzUxMGZkZGVjMGM4ODY3Y2IyNmM3MzBjOWZhM2ViYjhmZmE0ZTEuLjYzYWU0
YmVkNmVhMjNlZTJiZWQwZDVkYTk2NzlmYjYwY2FiYTU0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMS0wMi0yOCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XVtX
SzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcKKworICAgICAgICBTcGVjaWFsaXplIHRoZSB3YXkgb2Yg
aW5pdGlhbGl6aW5nIHRoZSBwbHVnaW4gZm9yIFgxMS4KKyAgICAgICAgSW50cm9kdWNlIFBMVUdJ
Tl9BUkNISVRFQ1RVUkUgbWFjcm9zIHRvIGFsbG93IGNvZGUgc2hhcmluZworICAgICAgICBhY3Jv
c3MgcGxhdGZvcm1zLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6dHJ5TG9hZCk6CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTEtMDItMjggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIE9uZSBtb3JlIHJlbmFtZSBhcyBhIGZv
bGxvd3VwIHRvIHI3OTg2OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IDlkMDc0
NDg4NmQ3YTMzYjIxYjU4YmNlNGYwNWRjMzM1ZWU4YjVhNjQuLmU1NzRlMTgyNzI0NDM1Njg1ZDFk
MDM4MWNmOTlhZjhjNTUxMjM1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAg
LTIxOCw5ICsyMTgsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiAg
ICAgaWYgKCFpbml0aWFsaXplRnVuY1B0cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYg
IVBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQogICAgIE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0ciBn
ZXRFbnRyeVBvaW50c0Z1bmNQdHIgPSBtX21vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QX0dldEVu
dHJ5UG9pbnRzRnVuY1B0cj4oIk5QX0dldEVudHJ5UG9pbnRzIik7CiAgICAgaWYgKCFnZXRFbnRy
eVBvaW50c0Z1bmNQdHIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogCiAgICAgbV9z
aHV0ZG93blByb2NQdHIgPSBtX21vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPE5QUF9TaHV0ZG93blBy
b2NQdHI+KCJOUF9TaHV0ZG93biIpOwogICAgIGlmICghbV9zaHV0ZG93blByb2NQdHIpCkBAIC0y
MzIsMTIgKzIzNCwxNSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKICAg
ICAvLyBPbiBNYWMsIE5QX0luaXRpYWxpemUgbXVzdCBiZSBjYWxsZWQgZmlyc3QsIHRoZW4gTlBf
R2V0RW50cnlQb2ludHMuIE9uIFdpbmRvd3MsIHRoZSBvcmRlciBpcwogICAgIC8vIHJldmVyc2Vk
LiBGYWlsaW5nIHRvIGZvbGxvdyB0aGlzIG9yZGVyIHJlc3VsdHMgaW4gY3Jhc2hlcyAoZS5nLiwg
aW4gU2lsdmVybGlnaHQgb24gTWFjIGFuZAogICAgIC8vIGluIEZsYXNoIGFuZCBRdWlja1RpbWUg
b24gV2luZG93cykuCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUo
TUFDKQogICAgIGlmIChpbml0aWFsaXplRnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5jcygpKSAh
PSBOUEVSUl9OT19FUlJPUiB8fCBnZXRFbnRyeVBvaW50c0Z1bmNQdHIoJm1fcGx1Z2luRnVuY3Mp
ICE9IE5QRVJSX05PX0VSUk9SKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxpZiBQTEFURk9S
TShXSU4pCisjZWxpZiBQTFVHSU5fQVJDSElURUNUVVJFKFdJTikKICAgICBpZiAoZ2V0RW50cnlQ
b2ludHNGdW5jUHRyKCZtX3BsdWdpbkZ1bmNzKSAhPSBOUEVSUl9OT19FUlJPUiB8fCBpbml0aWFs
aXplRnVuY1B0cihuZXRzY2FwZUJyb3dzZXJGdW5jcygpKSAhPSBOUEVSUl9OT19FUlJPUikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisgICAg
aWYgKGluaXRpYWxpemVGdW5jUHRyKG5ldHNjYXBlQnJvd3NlckZ1bmNzKCksICZtX3BsdWdpbkZ1
bmNzKSAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oIGIv
U291cmNlL1dlYktpdDIvY29uZmlnLmgKaW5kZXggMGRlZDkxYWQ0MmUyZjZiN2FmMDQ5Zjg5ZmVl
MmUyNTM3ZmEwY2MwZS4uMWVkMjBmNmVjZTdlMDFhYzBkYWRmNzk2ZTk1OTc2ZDM1ZjNiMDkzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvY29uZmlnLmgKKysrIGIvU291cmNlL1dlYktpdDIv
Y29uZmlnLmgKQEAgLTEzNiwzICsxMzYsMTIgQEAgc3RhdGljIGNvbnN0IHR5cGUmIG5hbWUoKSBc
CiAKICNlbmRpZiAvKiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgKi8KIAorI2lm
IFBMQVRGT1JNKE1BQykgfHwgKE9TKE1BQ19PU19YKSAmJiBQTEFURk9STShRVCkpCisjZGVmaW5l
IFBMVUdJTl9BUkNISVRFQ1RVUkVfTUFDIDEKKyNlbGlmIFBMQVRGT1JNKFdJTikgfHwgKE9TKFdJ
TikgJiYgUExBVEZPUk0oUVQpKQorI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1dJTiAxCisj
ZWxpZiAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUV9XU19YMTEpKSB8fCAoUExBVEZPUk0oR1RL
KSAmJiBPUyhVTklYKSAmJiAhT1MoTUFDX09TX1gpKQorI2RlZmluZSBQTFVHSU5fQVJDSElURUNU
VVJFX1gxMSAxCisjZW5kaWYKKworI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFKEFSQ0gpIChk
ZWZpbmVkKFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKSAmJiBQTFVHSU5fQVJDSElURUNUVVJF
XyMjQVJDSCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84079</attachid>
            <date>2011-02-28 10:24:27 -0800</date>
            <delta_ts>2011-02-28 15:56:24 -0800</delta_ts>
            <desc>Patch - partII</desc>
            <filename>bug-48127-20110228182426.patch</filename>
            <type>text/plain</type>
            <size>7867</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk4NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2M2FlNGJlZDZlYTIzZWUy
YmVkMGQ1ZGE5Njc5ZmI2MGNhYmE1NDdhLi5kN2ZlM2Q1NDA5M2QwYzVhZmUyNmFhOTZmODM1NGY2
OWVhOWM4Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMzYgQEAKICAgICAgICAgW1F0XVtXSzJd
IFBsdWdpbiBpbml0aWFsaXphdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDgxMjcKIAorICAgICAgICBBcHBseSB0aGUgcXVpcmtzIHRoYXQgYXJl
IG5lY2Vzc2FyeSBmb3IgdGhlIGZsYXNoIHBsdWdpbgorICAgICAgICB0byBub3QgY3Jhc2ggb24g
WDExLgorCisgICAgICAgICogUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNb2R1bGU6OmxvYWQpOiBVc2UgdGhlIFJlc29sdmVBbGxTeW1ib2xzIGhpbnQgYXMgd2Ug
ZG8gaW4gV2ViQ29yZS4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxl
Ojp0cnlMb2FkKTogQ2FsbCBhcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQKKyAgICAgICAgaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRSBpcyBYMTEuCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bml0aWFsaXplR1RLKTogIFRoZSBzYW1lIGhhY2sgdGhhdCB3ZSBkbyBpbiBXZWJDb3JlLgorICAg
ICAgICBDYWxsIGd0a19pbml0IGJlY2F1c2UgZmxhc2ggZG9uJ3QgZG8gaXQgZm9yIGl0c2VsZi4K
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmFwcGx5WDExUXVpcmtzQmVm
b3JlTG9hZCk6IEFkZGVkIGZvciBYMTEuCisgICAgICAgIERvIHRoZSBoYWNrcyB0aGF0IHdlIG5l
ZWQgdG8gZG8gYmVmb3JlIGNhbGxpbmcgTlBfSW5pdGlhbGl6ZSBvbiB0aGUKKyAgICAgICAgZmxh
c2ggcGx1Z2luIHRvIHNhdmUgaXQgZm9ybSBjcmFzaGluZy4KKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9QbHVnaW5RdWlya3MuaDogVXNlIFBMVUdJTl9BUkNISVRFQ1RVUkUgbWFjcm9zLgorICAg
ICAgICBBZGRlZCBSZXF1aXJlc0dUS1Rvb2xLaXQgcXVpcmsgZm9yIFgxMS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOiBIYW5kbGUgdGhlIFJlcXVpcmVzR1RLVG9vbEtp
dCBxdWlyayBvbiBYMTEuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpxdWlya3Mp
OiBBZGRlZCBnZXR0ZXIgZm9yIHRoZSBQbHVnaW5Nb2R1bGUncworICAgICAgICBxdWlya3MgdG8g
YmUgYXZhaWxhYmxlIGluIE5QTl9HZXRWYWx1ZS4KKworMjAxMS0wMi0yOCAgQmFsYXpzIEtlbGVt
ZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcKKwogICAgICAg
ICBTcGVjaWFsaXplIHRoZSB3YXkgb2YgaW5pdGlhbGl6aW5nIHRoZSBwbHVnaW4gZm9yIFgxMS4K
ICAgICAgICAgSW50cm9kdWNlIFBMVUdJTl9BUkNISVRFQ1RVUkUgbWFjcm9zIHRvIGFsbG93IGNv
ZGUgc2hhcmluZwogICAgICAgICBhY3Jvc3MgcGxhdGZvcm1zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vcXQvTW9kdWxlUXQuY3BwCmluZGV4IGRlODM2OTFjNmFlMWRmZjMxZjU2NDMxMWNhMTY3YzAy
OWQxOGY0MGUuLjk4ODE1YTJjMjNmNzZlOWNkZmFkYmJhNjc3YmE1YmVjNjgzZTc0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBib29sIE1vZHVsZTo6bG9hZCgpCiB7CiAgICAgbV9saWIuc2V0Rmls
ZU5hbWUoc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSk7CisgICAgbV9saWIuc2V0TG9hZEhp
bnRzKFFMaWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIHJldHVybiBtX2xpYi5s
b2FkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlNTc0ZTE4Mjcy
NDQzNTY4NWQxZDAzODFjZjk5YWY4YzU1MTIzNWI1Li5lN2RkYjYzMGVkOTU4MzEyNWQyNDk1ZDdm
NWJkZDA3YzMwMTU3OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMTAs
NiArMjEwLDEwIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJF
KFgxMSkKKyAgICBhcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQoKTsKKyNlbmRpZgorCiAgICAgbV9t
b2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9t
b2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9k
dWxlLmgKaW5kZXggMjRiOWU0MGNiNzlkYjM0MDJlMzQ1ZGU0MGE1NzBmYjkzOTQxZmEwMy4uYWVl
MjZiYjI5YWVlYzhiODM2ZmM3YjQyYjUzN2NkZWNjM2VmNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5oCkBAIC02NCw2ICs2NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1p
bmVRdWlya3MoKTsKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHZvaWQgYXBw
bHlYMTFRdWlya3NCZWZvcmVMb2FkKCk7CisjZW5kaWYKKwogICAgIHZvaWQgaW5jcmVtZW50TG9h
ZENvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRMb2FkQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
TW9kdWxlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKaW5kZXggYTY1MWQzYmIxMzJkMTI0OGMzYWRh
ODY2NDQ4NzkwN2RmMjBjZWY2My4uYjVlM2FhZGI1NTUxM2E0ZThjMTFmMDU5NTk4ZmZlNWIyMWI0
ZWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCkBAIC0y
OSwxMCArMjksMzggQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBs
dWdpblBhY2thZ2UuaCIKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFMaWJyYXJ5Pgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorI2lmIFBMQVRGT1JNKFFUKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSygpCit7CisgICAg
UUxpYnJhcnkgbGlicmFyeSgibGliZ3RrLXgxMS0yLjAuc28uMCIpOworICAgIGlmIChsaWJyYXJ5
LmxvYWQoKSkgeworICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShp
bnQqLCBjaGFyKioqKTsKKyAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJlc29sdmUoImd0
a19pbml0X2NoZWNrIikpOworICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9j
aGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUuCisgICAgICAg
IGlmIChndGtJbml0Q2hlY2spCisgICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDAp
OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVgx
MVF1aXJrc0JlZm9yZUxvYWQoKQoreworI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmIChtX3BsdWdp
blBhdGguY29udGFpbnMoIm5wd3JhcHBlciIpIHx8IG1fcGx1Z2luUGF0aC5jb250YWlucygiZmxh
c2hwbGF5ZXIiKSkgeworICAgICAgICBpbml0aWFsaXplR1RLKCk7CisgICAgICAgIG1fcGx1Z2lu
UXVpcmtzLmFkZChQbHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7CisgICAgfQorI2Vu
ZGlmCit9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5JbmZvU3RvcmU6OlBsdWdpbiYgcGx1Z2luKQogewog
ICAgIC8vIFdlIGFyZSBsb2FkaW5nIHRoZSBwbHVnaW4gaGVyZSBzaW5jZSBpdCBkb2VzIG5vdCBz
ZWVtIHRvIGJlIGEgc3RhbmRhcmRpemVkIHdheSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUXVpcmtzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9QbHVnaW5RdWlya3MuaAppbmRleCA2OGQ4OTRhMDZkMDAzNGIwYjhjMDUwMDkzOTM3
NjAxZDhiZjRjMTU2Li40ZDZhZTY3Y2MyNzhlY2ZlNzY0MmZjNzMzNTY2ODhmOTQ0ZmI1NjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5RdWlya3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5RdWlya3MuaApAQCAtMzIs
MTIgKzMyLDE0IEBAIGNsYXNzIFBsdWdpblF1aXJrcyB7CiBwdWJsaWM6CiAgICAgZW51bSBQbHVn
aW5RdWlyayB7CiAgICAgICAgIC8vIE1hYyBzcGVjaWZpYyBxdWlya3M6Ci0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoTUFDKQogICAgICAgICAvLyBUaGUgcGx1Zy1p
biB3YW50cyB0aGUgY2FsbCB0byBnZXRwcm9nYW1lKCkgdG8gcmV0dXJuICJXZWJLaXRQbHVnaW5I
b3N0Ii4KICAgICAgICAgLy8gQWRvYmUgRmxhc2ggV2lsbCBub3QgaGFuZGxlIGtleSBkb3duIGV2
ZW50cyBvdGhlcndpc2UuCiAgICAgICAgIFByb2duYW1lU2hvdWxkQmVXZWJLaXRQbHVnaW5Ib3N0
LAogICAgICAgICAvLyBTdXBwb3J0cyByZWNlaXZpbmcgYSBwYWludCBldmVudCwgZXZlbiB3aGVu
IHVzaW5nIENvcmVBbmltYXRpb24gcmVuZGVyaW5nLgogICAgICAgICBTdXBwb3J0c1NuYXBzaG90
dGluZywKKyNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICAgICBSZXF1aXJlc0dU
S1Rvb2xLaXQsCiAjZW5kaWYKICAgICAgICAgTnVtUGx1Z2luUXVpcmtzCiAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDlhNTI4ZDA4OTFjNjBhYmM3ZTIz
NmU0NjlmZTI5MDQwMmNhZWZmZjIuLjRjYTY4Mjc1YTBlMmUzNjdhOTRhZmY3MDlmNTcxYWRiNTA5
ZmIzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDgzLDYg
KzQ4MywxNiBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93
bGVzczoKICAgICAgICAgICAgKihOUEJvb2wqKXZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgYnJl
YWs7CisjZWxpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICAgICBjYXNlIE5QTlZUb29s
a2l0OiB7CisgICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2Nh
cGVQbHVnaW46OmZyb21OUFAobnBwKTsKKyAgICAgICAgICAgaWYgKHBsdWdpbi0+cXVpcmtzKCku
Y29udGFpbnMoUGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpKSB7CisgICAgICAgICAg
ICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IDI7CisgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgfQorCisgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5F
UklDX0VSUk9SOworICAgICAgIH0KICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggZTE2ODIzY2Nl
Njc1ZGRjOTk3MWVmOWE2OGM5Mjg4MGJlYjk3MmRiNS4uZTg2NWQ5M2NmNzc3OGUwMmU4Mzc3ZmUx
YTFjY2VhMmFlY2U4Yzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTcwLDYgKzcwLDgg
QEAgcHVibGljOgogICAgIEhXTkQgY29udGFpbmluZ1dpbmRvdygpIGNvbnN0OwogI2VuZGlmCiAK
KyAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5Nb2R1bGUt
PnBsdWdpblF1aXJrcygpOyB9CisKICAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgTlBSZWN0Kik7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJBZ2VudChOUFApOwogICAgIHZvaWQgbG9hZFVS
TChjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMs
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84140</attachid>
            <date>2011-02-28 15:56:30 -0800</date>
            <delta_ts>2011-03-01 09:47:21 -0800</delta_ts>
            <desc>Patch - part II v2</desc>
            <filename>bug-48127-20110228235629.patch</filename>
            <type>text/plain</type>
            <size>8167</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk4NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2M2FlNGJlZDZlYTIzZWUy
YmVkMGQ1ZGE5Njc5ZmI2MGNhYmE1NDdhLi5kN2ZlM2Q1NDA5M2QwYzVhZmUyNmFhOTZmODM1NGY2
OWVhOWM4Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMzYgQEAKICAgICAgICAgW1F0XVtXSzJd
IFBsdWdpbiBpbml0aWFsaXphdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDgxMjcKIAorICAgICAgICBBcHBseSB0aGUgcXVpcmtzIHRoYXQgYXJl
IG5lY2Vzc2FyeSBmb3IgdGhlIGZsYXNoIHBsdWdpbgorICAgICAgICB0byBub3QgY3Jhc2ggb24g
WDExLgorCisgICAgICAgICogUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNb2R1bGU6OmxvYWQpOiBVc2UgdGhlIFJlc29sdmVBbGxTeW1ib2xzIGhpbnQgYXMgd2Ug
ZG8gaW4gV2ViQ29yZS4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxl
Ojp0cnlMb2FkKTogQ2FsbCBhcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQKKyAgICAgICAgaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRSBpcyBYMTEuCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bml0aWFsaXplR1RLKTogIFRoZSBzYW1lIGhhY2sgdGhhdCB3ZSBkbyBpbiBXZWJDb3JlLgorICAg
ICAgICBDYWxsIGd0a19pbml0IGJlY2F1c2UgZmxhc2ggZG9uJ3QgZG8gaXQgZm9yIGl0c2VsZi4K
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmFwcGx5WDExUXVpcmtzQmVm
b3JlTG9hZCk6IEFkZGVkIGZvciBYMTEuCisgICAgICAgIERvIHRoZSBoYWNrcyB0aGF0IHdlIG5l
ZWQgdG8gZG8gYmVmb3JlIGNhbGxpbmcgTlBfSW5pdGlhbGl6ZSBvbiB0aGUKKyAgICAgICAgZmxh
c2ggcGx1Z2luIHRvIHNhdmUgaXQgZm9ybSBjcmFzaGluZy4KKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9QbHVnaW5RdWlya3MuaDogVXNlIFBMVUdJTl9BUkNISVRFQ1RVUkUgbWFjcm9zLgorICAg
ICAgICBBZGRlZCBSZXF1aXJlc0dUS1Rvb2xLaXQgcXVpcmsgZm9yIFgxMS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOiBIYW5kbGUgdGhlIFJlcXVpcmVzR1RLVG9vbEtp
dCBxdWlyayBvbiBYMTEuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpxdWlya3Mp
OiBBZGRlZCBnZXR0ZXIgZm9yIHRoZSBQbHVnaW5Nb2R1bGUncworICAgICAgICBxdWlya3MgdG8g
YmUgYXZhaWxhYmxlIGluIE5QTl9HZXRWYWx1ZS4KKworMjAxMS0wMi0yOCAgQmFsYXpzIEtlbGVt
ZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XVtXSzJdIFBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgxMjcKKwogICAgICAg
ICBTcGVjaWFsaXplIHRoZSB3YXkgb2YgaW5pdGlhbGl6aW5nIHRoZSBwbHVnaW4gZm9yIFgxMS4K
ICAgICAgICAgSW50cm9kdWNlIFBMVUdJTl9BUkNISVRFQ1RVUkUgbWFjcm9zIHRvIGFsbG93IGNv
ZGUgc2hhcmluZwogICAgICAgICBhY3Jvc3MgcGxhdGZvcm1zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vcXQvTW9kdWxlUXQuY3BwCmluZGV4IGRlODM2OTFjNmFlMWRmZjMxZjU2NDMxMWNhMTY3YzAy
OWQxOGY0MGUuLjk4ODE1YTJjMjNmNzZlOWNkZmFkYmJhNjc3YmE1YmVjNjgzZTc0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0L01vZHVsZVF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBib29sIE1vZHVsZTo6bG9hZCgpCiB7CiAgICAgbV9saWIuc2V0Rmls
ZU5hbWUoc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSk7CisgICAgbV9saWIuc2V0TG9hZEhp
bnRzKFFMaWJyYXJ5OjpSZXNvbHZlQWxsU3ltYm9sc0hpbnQpOwogICAgIHJldHVybiBtX2xpYi5s
b2FkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCBlNTc0ZTE4Mjcy
NDQzNTY4NWQxZDAzODFjZjk5YWY4YzU1MTIzNWI1Li5lN2RkYjYzMGVkOTU4MzEyNWQyNDk1ZDdm
NWJkZDA3YzMwMTU3OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMTAs
NiArMjEwLDEwIEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmxvYWQoKQogCiBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJF
KFgxMSkKKyAgICBhcHBseVgxMVF1aXJrc0JlZm9yZUxvYWQoKTsKKyNlbmRpZgorCiAgICAgbV9t
b2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxlKG1fcGx1Z2luUGF0aCkpOwogICAgIGlmICghbV9t
b2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9k
dWxlLmgKaW5kZXggMjRiOWU0MGNiNzlkYjM0MDJlMzQ1ZGU0MGE1NzBmYjkzOTQxZmEwMy4uYWVl
MjZiYjI5YWVlYzhiODM2ZmM3YjQyYjUzN2NkZWNjM2VmNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5oCkBAIC02NCw2ICs2NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1p
bmVRdWlya3MoKTsKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgIHZvaWQgYXBw
bHlYMTFRdWlya3NCZWZvcmVMb2FkKCk7CisjZW5kaWYKKwogICAgIHZvaWQgaW5jcmVtZW50TG9h
ZENvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRMb2FkQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
TW9kdWxlWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKaW5kZXggYTY1MWQzYmIxMzJkMTI0OGMzYWRh
ODY2NDQ4NzkwN2RmMjBjZWY2My4uYjVlM2FhZGI1NTUxM2E0ZThjMTFmMDU5NTk4ZmZlNWIyMWI0
ZWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCkBAIC0y
OSwxMCArMjksMzggQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBs
dWdpblBhY2thZ2UuaCIKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFMaWJyYXJ5Pgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorI2lmIFBMQVRGT1JNKFFUKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUdUSygpCit7CisgICAg
UUxpYnJhcnkgbGlicmFyeSgibGliZ3RrLXgxMS0yLjAuc28uMCIpOworICAgIGlmIChsaWJyYXJ5
LmxvYWQoKSkgeworICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShp
bnQqLCBjaGFyKioqKTsKKyAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3RrX2luaXRfY2hlY2tfcHRyPihsaWJyYXJ5LnJlc29sdmUoImd0
a19pbml0X2NoZWNrIikpOworICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9j
aGVjaygpIHNpbmNlIGd0a19pbml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUuCisgICAgICAg
IGlmIChndGtJbml0Q2hlY2spCisgICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDAp
OworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjphcHBseVgx
MVF1aXJrc0JlZm9yZUxvYWQoKQoreworI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmIChtX3BsdWdp
blBhdGguY29udGFpbnMoIm5wd3JhcHBlciIpIHx8IG1fcGx1Z2luUGF0aC5jb250YWlucygiZmxh
c2hwbGF5ZXIiKSkgeworICAgICAgICBpbml0aWFsaXplR1RLKCk7CisgICAgICAgIG1fcGx1Z2lu
UXVpcmtzLmFkZChQbHVnaW5RdWlya3M6OlJlcXVpcmVzR1RLVG9vbEtpdCk7CisgICAgfQorI2Vu
ZGlmCit9CisKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5JbmZvU3RvcmU6OlBsdWdpbiYgcGx1Z2luKQogewog
ICAgIC8vIFdlIGFyZSBsb2FkaW5nIHRoZSBwbHVnaW4gaGVyZSBzaW5jZSBpdCBkb2VzIG5vdCBz
ZWVtIHRvIGJlIGEgc3RhbmRhcmRpemVkIHdheSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUXVpcmtzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9QbHVnaW5RdWlya3MuaAppbmRleCA2OGQ4OTRhMDZkMDAzNGIwYjhjMDUwMDkzOTM3
NjAxZDhiZjRjMTU2Li45ZjhjMWM0NzZmZDgyZGFhM2U5ZjRkNWI0ZmU5NDVmZWJlOTU3ZDNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5RdWlya3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5RdWlya3MuaApAQCAtMzIs
MTIgKzMyLDE3IEBAIGNsYXNzIFBsdWdpblF1aXJrcyB7CiBwdWJsaWM6CiAgICAgZW51bSBQbHVn
aW5RdWlyayB7CiAgICAgICAgIC8vIE1hYyBzcGVjaWZpYyBxdWlya3M6Ci0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoTUFDKQogICAgICAgICAvLyBUaGUgcGx1Zy1p
biB3YW50cyB0aGUgY2FsbCB0byBnZXRwcm9nYW1lKCkgdG8gcmV0dXJuICJXZWJLaXRQbHVnaW5I
b3N0Ii4KICAgICAgICAgLy8gQWRvYmUgRmxhc2ggV2lsbCBub3QgaGFuZGxlIGtleSBkb3duIGV2
ZW50cyBvdGhlcndpc2UuCiAgICAgICAgIFByb2duYW1lU2hvdWxkQmVXZWJLaXRQbHVnaW5Ib3N0
LAogICAgICAgICAvLyBTdXBwb3J0cyByZWNlaXZpbmcgYSBwYWludCBldmVudCwgZXZlbiB3aGVu
IHVzaW5nIENvcmVBbmltYXRpb24gcmVuZGVyaW5nLgogICAgICAgICBTdXBwb3J0c1NuYXBzaG90
dGluZywKKyNlbGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorICAgICAgICAvLyBGbGFzaCBh
bmQgbnB3cmFwcGVyIGFzayB0aGUgYnJvd3NlciBhYm91dCB3aGljaCBHVEsgdmVyc2lvbiBkb2Vz
IGl0IHVzZQorICAgICAgICAvLyBhbmQgcmVmdXNlIHRvIGxvYWQgYW5kIHdvcmsgaWYgaXQgaXMg
bm90IEdUSyAyIHNvIHdlIG5lZWQgdG8gZmFrZSBpdCBpbgorICAgICAgICAvLyBOUE5fR2V0VmFs
dWUgZXZlbiB3aGVuIGl0IGlzIGEgbGllLgorICAgICAgICBSZXF1aXJlc0dUS1Rvb2xLaXQsCiAj
ZW5kaWYKICAgICAgICAgTnVtUGx1Z2luUXVpcmtzCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDlhNTI4ZDA4OTFjNjBhYmM3ZTIzNmU0NjlmZTI5MDQw
MmNhZWZmZjIuLjY3OWRlNmYwYzlkOTJiMDZlZDBkZGI0OTU1ZmQxMTkwZTFhZDA1NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDgzLDYgKzQ4MywxOCBAQCBz
dGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQgKnZhbHVlKQogICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVzczoKICAgICAg
ICAgICAgKihOUEJvb2wqKXZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CisjZWxpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyAgICAgICBjYXNlIE5QTlZUb29sa2l0OiB7CisgICAg
ICAgICAgIGNvbnN0IHVpbnQzMl90IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNpb24gPSAyOworCisg
ICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46
OmZyb21OUFAobnBwKTsKKyAgICAgICAgICAgaWYgKHBsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMo
UGx1Z2luUXVpcmtzOjpSZXF1aXJlc0dUS1Rvb2xLaXQpKSB7CisgICAgICAgICAgICAgICAqcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHZhbHVlKSA9IGV4cGVjdGVkR1RLVG9vbEtpdFZlcnNp
b247CisgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgfQorCisgICAgICAgICAgIHJl
dHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgIH0KICNlbmRpZgogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgK
aW5kZXggZTE2ODIzY2NlNjc1ZGRjOTk3MWVmOWE2OGM5Mjg4MGJlYjk3MmRiNS4uZTg2NWQ5M2Nm
Nzc3OGUwMmU4Mzc3ZmUxYTFjY2VhMmFlY2U4Yzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgK
QEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAgIEhXTkQgY29udGFpbmluZ1dpbmRvdygpIGNv
bnN0OwogI2VuZGlmCiAKKyAgICBQbHVnaW5RdWlya3MgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4g
bV9wbHVnaW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpOyB9CisKICAgICB2b2lkIGludmFsaWRhdGUo
Y29uc3QgTlBSZWN0Kik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJBZ2VudChOUFApOwog
ICAgIHZvaWQgbG9hZFVSTChjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFw
JiBoZWFkZXJGaWVsZHMsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>