<?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>91844</bug_id>
          
          <creation_ts>2012-07-20 02:44:17 -0700</creation_ts>
          <short_desc>[WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port</short_desc>
          <delta_ts>2012-10-18 17:14:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89719</dependson>
    
    <dependson>96513</dependson>
          <blocked>96881</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mariusz Grzegorczyk">mariusz.g</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kbalazs</cc>
    
    <cc>ky0.choi</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mrobinson</cc>
    
    <cc>naginenis</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674386</commentid>
    <comment_count>0</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-07-20 02:44:17 -0700</bug_when>
    <thetext>Adding windowless plugin, and plugin process implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674411</commentid>
    <comment_count>1</comment_count>
      <attachid>153463</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-07-20 03:18:28 -0700</bug_when>
    <thetext>Created attachment 153463
Patch implementing windowless plugin and plugin process for webkit2 efl&apos;s port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674413</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 03:21:39 -0700</bug_when>
    <thetext>Attachment 153463 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebKit2/UIProcess/Plugins/efl/PluginProcessProxyEfl.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:52:  &quot;PlatformContextCairo.h&quot; already included at Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:40  [build/include] [4]
Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:53:  &quot;RefPtrCairo.h&quot; already included at Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:41  [build/include] [4]
Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:54:  &quot;cairo/cairo-xlib.h&quot; already included at Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:42  [build/include] [4]
Total errors found: 4 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674429</commentid>
    <comment_count>3</comment_count>
      <attachid>153463</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-20 03:46:14 -0700</bug_when>
    <thetext>Comment on attachment 153463
Patch implementing windowless plugin and plugin process for webkit2 efl&apos;s port

Attachment 153463 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13312188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674552</commentid>
    <comment_count>4</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-07-20 07:27:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 153463 [details])
&gt; Attachment 153463 [details] did not pass efl-ews (efl):
&gt; Output: http://queues.webkit.org/results/13312188

I think that these errors are false positives. Situation looks like:

#if port(X)
#include A,B,C
#elsif port(Y)
#include A,B

check-webkit-style reports duplication of includes in different excluding macros. What do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674554</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-20 07:31:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 153463 [details] [details])
&gt; &gt; Attachment 153463 [details] [details] did not pass efl-ews (efl):
&gt; &gt; Output: http://queues.webkit.org/results/13312188
&gt; 
&gt; I think that these errors are false positives. Situation looks like:
&gt; 
&gt; #if port(X)
&gt; #include A,B,C
&gt; #elsif port(Y)
&gt; #include A,B
&gt; 
&gt; check-webkit-style reports duplication of includes in different excluding macros. What do you think about it?

You should probably use something like

#if PORT(X) || PORT(Y)
 #include A
 #include B
#endif

if PORT(X)
 #include C
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674642</commentid>
    <comment_count>6</comment_count>
      <attachid>153525</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-07-20 09:33:08 -0700</bug_when>
    <thetext>Created attachment 153525
Fixed webkit style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674729</commentid>
    <comment_count>7</comment_count>
      <attachid>153525</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-20 10:57:03 -0700</bug_when>
    <thetext>Comment on attachment 153525
Fixed webkit style

Attachment 153525 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13303396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674769</commentid>
    <comment_count>8</comment_count>
      <attachid>153525</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-20 11:14:27 -0700</bug_when>
    <thetext>Comment on attachment 153525
Fixed webkit style

Attachment 153525 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13308330</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675457</commentid>
    <comment_count>9</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-07-22 22:53:55 -0700</bug_when>
    <thetext>How about change PluginProcess_NAME to PluginProcess_EXECUTABLE_NAME? I will add the definition of PluginProcess/WebProcess executable name to pass the name of process to the ProcessExecutablePathEfl.

CMakeList.txt:535
SET(WebProcess_EXECUTABLE_NAME WebProcess)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676289</commentid>
    <comment_count>10</comment_count>
      <attachid>153525</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 18:40:47 -0700</bug_when>
    <thetext>Comment on attachment 153525
Fixed webkit style

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

Could you check how many test cases can be covered by this patch ?

&gt; Source/WebKit2/efl/PluginMainEfl.cpp:4
&gt; + * Copyright (C) 2012 Samsung Electronics

Missing &apos;All rights reserved.&quot;

&gt; Tools/Scripts/webkitperl/FeatureList.pm:306
&gt; +      define =&gt; &quot;ENABLE_NETSCAPE_PLUGIN_API&quot;, default =&gt; 1, value =&gt; \$netscapePluginAPISupport },

Can we enable this feature for all ports? I don&apos;t think yet. So, I think we have to use isEfl() instead of 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676416</commentid>
    <comment_count>11</comment_count>
      <attachid>153525</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-23 23:09:42 -0700</bug_when>
    <thetext>Comment on attachment 153525
Fixed webkit style

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

&gt;&gt; Tools/Scripts/webkitperl/FeatureList.pm:306
&gt;&gt; +      define =&gt; &quot;ENABLE_NETSCAPE_PLUGIN_API&quot;, default =&gt; 1, value =&gt; \$netscapePluginAPISupport },
&gt; 
&gt; Can we enable this feature for all ports? I don&apos;t think yet. So, I think we have to use isEfl() instead of 1.

Given that the previous value was &quot;!isEfl()&quot;, I think using &quot;1&quot; now is correct. The EFL port was the only one not supporting this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697740</commentid>
    <comment_count>12</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-16 17:54:31 -0700</bug_when>
    <thetext>Could you update patch for green bot ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697806</commentid>
    <comment_count>13</comment_count>
      <attachid>153525</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 19:00:38 -0700</bug_when>
    <thetext>Comment on attachment 153525
Fixed webkit style

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

&gt;&gt;&gt; Tools/Scripts/webkitperl/FeatureList.pm:306
&gt;&gt;&gt; +      define =&gt; &quot;ENABLE_NETSCAPE_PLUGIN_API&quot;, default =&gt; 1, value =&gt; \$netscapePluginAPISupport },
&gt;&gt; 
&gt;&gt; Can we enable this feature for all ports? I don&apos;t think yet. So, I think we have to use isEfl() instead of 1.
&gt; 
&gt; Given that the previous value was &quot;!isEfl()&quot;, I think using &quot;1&quot; now is correct. The EFL port was the only one not supporting this feature.

Yes, right. There was misunderstanding. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701697</commentid>
    <comment_count>14</comment_count>
      <attachid>159885</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-08-22 02:10:39 -0700</bug_when>
    <thetext>Created attachment 159885
Rebased, and applied KwangYong Choi&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701711</commentid>
    <comment_count>15</comment_count>
      <attachid>159885</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-22 02:44:42 -0700</bug_when>
    <thetext>Comment on attachment 159885
Rebased, and applied KwangYong Choi&apos;s comments

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

&gt; Source/WebKit2/PlatformEfl.cmake:92
&gt; +    UIProcess/Plugins/efl/PluginProcessProxyEfl.cpp

It would be good if you add a new line. Because cmake prefers to distinguish different path by a new line.

&gt; Source/WebKit2/PlatformEfl.cmake:106
&gt; +    WebProcess/Plugins/Netscape/efl/PluginProxyEfl.cpp

ditto.

&gt; Source/WebKit2/PlatformEfl.cmake:236
&gt; +        &quot;${WEBKIT2_DIR}/PluginProcess/efl&quot;

Generally, specific include path is placed above path defined by macro as below,

&quot;${WEBKIT2_DIR}/PluginProcess/efl&quot;
${WEBKIT2_DIR}

&gt; Source/WebKit2/PluginProcess/efl/PluginControllerProxyEfl.cpp:31
&gt; +#if ENABLE(PLUGIN_PROCESS)

Please add a new line.

&gt; Source/WebKit2/PluginProcess/efl/PluginControllerProxyEfl.cpp:33
&gt; +

This is unneeded line.

&gt; Source/WebKit2/PluginProcess/efl/PluginProcessMainEfl.cpp:30
&gt; +

Don&apos;t you need to use ENABLE(PLUGIN_PROCESS) ?

&gt; Source/WebKit2/PluginProcess/efl/PluginProcessMainEfl.cpp:80
&gt; +

This is unneeded line.

&gt; Source/WebKit2/UIProcess/Plugins/efl/PluginProcessProxyEfl.cpp:61
&gt; +

If you need to use glib function, I think you need to use #if ENABLE(GLIB_SUPPORT) macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701992</commentid>
    <comment_count>16</comment_count>
      <attachid>159885</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-08-22 09:13:05 -0700</bug_when>
    <thetext>Comment on attachment 159885
Rebased, and applied KwangYong Choi&apos;s comments

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

Are you sure you need all those entities hold copyright over all those files? Some files being added have 3 or 4 lines of code at most.

&gt; ChangeLog:8
&gt; +        Turn on Netscape Plugin API by default.

So plugins are working fine on both WK1 and WK2?

&gt;&gt; Source/WebKit2/UIProcess/Plugins/efl/PluginProcessProxyEfl.cpp:61
&gt;&gt; +
&gt; 
&gt; If you need to use glib function, I think you need to use #if ENABLE(GLIB_SUPPORT) macro.

Alternatively, you can just use ecore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702765</commentid>
    <comment_count>17</comment_count>
      <attachid>159885</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-23 00:27:49 -0700</bug_when>
    <thetext>Comment on attachment 159885
Rebased, and applied KwangYong Choi&apos;s comments

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

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:107
&gt;      return XDefaultScreen(NetscapePlugin::x11HostDisplay());
&gt;  #elif PLATFORM(GTK)
&gt;      return gdk_screen_get_number(gdk_screen_get_default());
&gt; +#elif PLATFORM(EFL)
&gt; +    return ecore_x_screen_index_get(ecore_x_default_screen_get());
&gt;  #else

I wonder why we have this #ifdef mess here when all we need is to use X11 functions. It sounds like to me that the current PLATFORM(QT) code path could be generalized to work with Gtk and EFL and all that remains in #ifdefs is the function to provide the Display*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702766</commentid>
    <comment_count>18</comment_count>
      <attachid>159885</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-23 00:28:34 -0700</bug_when>
    <thetext>Comment on attachment 159885
Rebased, and applied KwangYong Choi&apos;s comments

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

&gt;&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:107
&gt;&gt;  #else
&gt; 
&gt; I wonder why we have this #ifdef mess here when all we need is to use X11 functions. It sounds like to me that the current PLATFORM(QT) code path could be generalized to work with Gtk and EFL and all that remains in #ifdefs is the function to provide the Display*.

(this comment is not meant to be directed against your work/patch, but just a general observation :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703542</commentid>
    <comment_count>19</comment_count>
      <attachid>159885</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-08-23 16:53:32 -0700</bug_when>
    <thetext>Comment on attachment 159885
Rebased, and applied KwangYong Choi&apos;s comments

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

&gt; Source/WebKit2/PluginProcess/efl/PluginProcessMainEfl.cpp:77
&gt; +    JSC::initializeThreading();
&gt; +    WTF::initializeMainThread();

I think that ScriptController::initializeThreading looks better.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:50
&gt; +#if PLATFORM(GTK) || (PLATFORM(EFL) &amp;&amp; USE(CAIRO))

I think that USE(CAIRO) looks enough but we should check win-cairo port.

&gt; Source/cmake/OptionsEfl.cmake:125
&gt; +IF (ENABLE_WEBKIT2)
&gt; +    SET(ENABLE_PLUGIN_PROCESS 1)
&gt; +ENDIF ()

Is it working although we disabled ENABLE_ECORE_X or can not find ecore-x ?

&gt; Tools/Scripts/webkitperl/FeatureList.pm:325
&gt; -      define =&gt; &quot;ENABLE_NETSCAPE_PLUGIN_API&quot;, default =&gt; !isEfl(), value =&gt; \$netscapePluginAPISupport },
&gt; +      define =&gt; &quot;ENABLE_NETSCAPE_PLUGIN_API&quot;, default =&gt; 1, value =&gt; \$netscapePluginAPISupport },

If possible, can we separate this ?

It&apos;s because ENABLE_NETSCAPE_PLUGIN_API is not only for plugin process
and I hope that it is enabled as soon as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714332</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-07 02:59:24 -0700</bug_when>
    <thetext>Any update on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718319</commentid>
    <comment_count>21</comment_count>
      <attachid>163620</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-12 07:08:29 -0700</bug_when>
    <thetext>Created attachment 163620
Rebased, applied comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718328</commentid>
    <comment_count>22</comment_count>
      <attachid>163620</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-12 07:22:50 -0700</bug_when>
    <thetext>Comment on attachment 163620
Rebased, applied comments

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

&gt; Source/WebCore/PlatformEfl.cmake:16
&gt; +  &quot;${WEBKIT_DIR}/efl/WebCoreSupport&quot;

I want not to add WebKit dependency.

I will create bug to fix this issue.

&gt; Source/WebKit2/PlatformEfl.cmake:258
&gt; +    SET(PluginProcess_LIBRARIES
&gt; +         ${WebKit2_LIBRARY_NAME}
&gt; +    )

I need to test. but I think that we need javascript core and webcore for shared core build.

&gt; Source/WebKit2/PluginProcess/efl/PluginProcessMainEfl.cpp:76
&gt; +    if (!ecore_x_init(0))
&gt; +        return 1;

I want #ifdef HAVE_ECORE_X

&gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:86
&gt; +void WebPageProxy::createPluginContainer(uint64_t&amp; windowID)

we can remove variable name until we implement.

&gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:91
&gt; +void WebPageProxy::windowedPluginGeometryDidChange(const WebCore::IntRect&amp; frameRect, const WebCore::IntRect&amp; clipRect, uint64_t windowID)

ditto.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:50
&gt; +#if PLATFORM(GTK) || (PLATFORM(EFL) &amp;&amp; USE(CAIRO))

#if USE(CAIRO) &amp;&amp; !PLATFORM(WIN_CAIRO)

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:93
&gt; +    return static_cast&lt;Display*&gt;(ecore_x_display_get());

macro is needed.

&gt; Source/cmake/OptionsEfl.cmake:118
&gt; +IF (ENABLE_WEBKIT2)
&gt; +    SET(ENABLE_PLUGIN_PROCESS 1)
&gt; +ENDIF ()

Should we set PLUGIN_PROCESS as a default for WEBKIT2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718452</commentid>
    <comment_count>23</comment_count>
      <attachid>163648</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-12 09:27:49 -0700</bug_when>
    <thetext>Created attachment 163648
Rebased, applied comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718459</commentid>
    <comment_count>24</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-12 09:30:35 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 163620 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163620&amp;action=review

&gt; &gt; Source/cmake/OptionsEfl.cmake:118
&gt; &gt; +IF (ENABLE_WEBKIT2)
&gt; &gt; +    SET(ENABLE_PLUGIN_PROCESS 1)
&gt; &gt; +ENDIF ()
&gt; 
&gt; Should we set PLUGIN_PROCESS as a default for WEBKIT2?

Yes, because there is bug: &quot;[GTK][WK2] Build break when trying to build webkit2 without plugin process&quot; which I reported to gtk: https://bugs.webkit.org/show_bug.cgi?id=89451</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718555</commentid>
    <comment_count>25</comment_count>
      <attachid>163648</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-12 11:50:39 -0700</bug_when>
    <thetext>Comment on attachment 163648
Rebased, applied comments

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

&gt; Source/WebKit2/PluginProcess/efl/PluginProcessMainEfl.cpp:66
&gt; +int PluginProcessMainEfl(int argc, char* argv[])

This file as well is a 99% copy of PluginProcessMainGtk.cpp, with just the gtk_init() replaced with eine_init() and ecore_x_init(). Wouldn&apos;t it be better to share one file and have an #ifdef for the toolkit init in there instead of duplicating the entire file? Then you can also get rid of PluginMainEfl.cpp.

&gt; Source/WebKit2/UIProcess/Plugins/efl/PluginProcessProxyEfl.cpp:86
&gt; +    CString binaryPath = fileSystemRepresentation(executablePathOfPluginProcess());
&gt; +    CString pluginPathCString = fileSystemRepresentation(pluginPath);
&gt; +    char* argv[4];
&gt; +    argv[0] = const_cast&lt;char*&gt;(binaryPath.data());
&gt; +    argv[1] = const_cast&lt;char*&gt;(&quot;-scanPlugin&quot;);
&gt; +    argv[2] = const_cast&lt;char*&gt;(pluginPathCString.data());
&gt; +    argv[3] = 0;
&gt; +
&gt; +    int status;
&gt; +    char* stdOut;
&gt; +
&gt; +    if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &amp;stdOut, 0, &amp;status, 0))
&gt; +        return false;
&gt; +
&gt; +    if (!WIFEXITED(status) || WEXITSTATUS(status) != EXIT_SUCCESS)
&gt; +        return false;
&gt; +
&gt; +    const unsigned kNumLinesExpected = 3;
&gt; +    String lines[kNumLinesExpected];
&gt; +    unsigned lineIndex = 0;
&gt; +    const UChar* current = reinterpret_cast&lt;const UChar*&gt;(stdOut);
&gt; +    while (lineIndex &lt; kNumLinesExpected) {
&gt; +        const UChar* start = current;
&gt; +        while (*current++ != UChar(&apos;\n&apos;)) { }
&gt; +        lines[lineIndex++] = String(start, current - start - 1);
&gt; +    }
&gt; +
&gt; +    if (stdOut)
&gt; +        free(stdOut);
&gt; +
&gt; +    result.name.swap(lines[0]);
&gt; +    result.description.swap(lines[1]);
&gt; +    result.mimeDescription.swap(lines[2]);
&gt; +
&gt; +    return !result.mimeDescription.isEmpty();

This function along with the rest of the file is a 99% copy of PluginProcessProxyGtk.cpp, which btw is (C) Igalia. Is there any way that you can modify your build system to simply compile their version if you have GLIB_SUPPORT enabled and omit this file altogether when it just duplicates the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719207</commentid>
    <comment_count>26</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-13 01:25:40 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 163648 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163648&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/efl/PluginProcessMainEfl.cpp:66
&gt; &gt; +int PluginProcessMainEfl(int argc, char* argv[])
&gt; 
&gt; This file as well is a 99% copy of PluginProcessMainGtk.cpp, with just the gtk_init() replaced with eine_init() and ecore_x_init(). Wouldn&apos;t it be better to share one file and have an #ifdef for the toolkit init in there instead of duplicating the entire file? Then you can also get rid of PluginMainEfl.cpp.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/efl/PluginProcessProxyEfl.cpp:86
&gt; &gt; +    CString binaryPath = fileSystemRepresentation(executablePathOfPluginProcess());
&gt; &gt; +    CString pluginPathCString = fileSystemRepresentation(pluginPath);
&gt; &gt; +    char* argv[4];
&gt; &gt; +    argv[0] = const_cast&lt;char*&gt;(binaryPath.data());
&gt; &gt; +    argv[1] = const_cast&lt;char*&gt;(&quot;-scanPlugin&quot;);
&gt; &gt; +    argv[2] = const_cast&lt;char*&gt;(pluginPathCString.data());
&gt; &gt; +    argv[3] = 0;
&gt; &gt; +
&gt; &gt; +    int status;
&gt; &gt; +    char* stdOut;
&gt; &gt; +
&gt; &gt; +    if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &amp;stdOut, 0, &amp;status, 0))
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    if (!WIFEXITED(status) || WEXITSTATUS(status) != EXIT_SUCCESS)
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    const unsigned kNumLinesExpected = 3;
&gt; &gt; +    String lines[kNumLinesExpected];
&gt; &gt; +    unsigned lineIndex = 0;
&gt; &gt; +    const UChar* current = reinterpret_cast&lt;const UChar*&gt;(stdOut);
&gt; &gt; +    while (lineIndex &lt; kNumLinesExpected) {
&gt; &gt; +        const UChar* start = current;
&gt; &gt; +        while (*current++ != UChar(&apos;\n&apos;)) { }
&gt; &gt; +        lines[lineIndex++] = String(start, current - start - 1);
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    if (stdOut)
&gt; &gt; +        free(stdOut);
&gt; &gt; +
&gt; &gt; +    result.name.swap(lines[0]);
&gt; &gt; +    result.description.swap(lines[1]);
&gt; &gt; +    result.mimeDescription.swap(lines[2]);
&gt; &gt; +
&gt; &gt; +    return !result.mimeDescription.isEmpty();
&gt; 
&gt; This function along with the rest of the file is a 99% copy of PluginProcessProxyGtk.cpp, which btw is (C) Igalia. Is there any way that you can modify your build system to simply compile their version if you have GLIB_SUPPORT enabled and omit this file altogether when it just duplicates the code?

I thought about removing glib in the future, replacing it by some ecore functions, but sharing code is also reasonable. I&apos;m wondering about name of common directory: sometimes it is unix, and sometimes x11. Both of them seems not exactly proper because efl have/will have windows, wayland support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719221</commentid>
    <comment_count>27</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-13 01:32:23 -0700</bug_when>
    <thetext>(In reply to comment #26)
[...]
&gt; I thought about removing glib in the future, replacing it by some ecore functions, but sharing code is also reasonable. I&apos;m wondering about name of common directory: sometimes it is unix, and sometimes x11. Both of them seems not exactly proper because efl have/will have windows, wayland support.

I&apos;d say it depends on the code. If the code is window system specific, then it should be x11. If the code is not window system specific, then unix is probably a better name.

When you build the ELF port on Windows, I think you&apos;re more likely to end up with a PluginControllerProxyWin.cpp instead of *Efl.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719577</commentid>
    <comment_count>28</comment_count>
      <attachid>163889</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-13 09:18:39 -0700</bug_when>
    <thetext>Created attachment 163889
Merged common files with gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720635</commentid>
    <comment_count>29</comment_count>
      <attachid>163889</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-09-14 05:40:30 -0700</bug_when>
    <thetext>Comment on attachment 163889
Merged common files with gtk

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

&gt; ChangeLog:3
&gt; +        [EFL][WK2] Plugin process implementation

New introduced approach makes this title out of data. What about: &quot;[WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port&quot; ?

&gt; Source/WebKit2/ChangeLog:12
&gt; +        * PlatformEfl.cmake: Added files needed by plugin process.

Please keep the same tense in the ChangeLog file. Your are using Added, Adds, Add. You can choose the most suitable for you.

&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:52
&gt; +#if PLATFORM(GTK)

This code seems duplicated for both port. Please consider common code:
1) gchar can be dropped here, char type is enough to save that message
2) Error message that is passed to g_warning and EINA_LOG_CRIT can be saved somewhere as it almost the same for both ports. If there is no any API to get program name what about using g_get_progname() in EFL with GLIB_SUPPORT macro.
3) Depend on port call g_warning(message) or  EINA_LOG_CRIT(message)

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:64
&gt; +#if PLATFORM(GTK)

This code might be merged too. Please consider
1) gint -&gt; int
2) GOwnPtr -&gt; WTF:OwnPtr
After that we will have shared code.

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:84
&gt; +#if PLATFORM(GTK)

Won&apos;t be necessary if you apply above suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720663</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-14 06:14:31 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 163889 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163889&amp;action=review
&gt; 
&gt; &gt; ChangeLog:3
&gt; &gt; +        [EFL][WK2] Plugin process implementation
&gt; 
&gt; New introduced approach makes this title out of data. What about: &quot;[WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port&quot; ?
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:12
&gt; &gt; +        * PlatformEfl.cmake: Added files needed by plugin process.
&gt; 
&gt; Please keep the same tense in the ChangeLog file. Your are using Added, Adds, Add. You can choose the most suitable for you.
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:52
&gt; &gt; +#if PLATFORM(GTK)
&gt; 
&gt; This code seems duplicated for both port. Please consider common code:
&gt; 1) gchar can be dropped here, char type is enough to save that message
&gt; 2) Error message that is passed to g_warning and EINA_LOG_CRIT can be saved somewhere as it almost the same for both ports. If there is no any API to get program name what about using g_get_progname() in EFL with GLIB_SUPPORT macro.
&gt; 3) Depend on port call g_warning(message) or  EINA_LOG_CRIT(message)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:64
&gt; &gt; +#if PLATFORM(GTK)
&gt; 
&gt; This code might be merged too. Please consider
&gt; 1) gint -&gt; int
&gt; 2) GOwnPtr -&gt; WTF:OwnPtr
&gt; After that we will have shared code.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:84
&gt; &gt; +#if PLATFORM(GTK)
&gt; 
&gt; Won&apos;t be necessary if you apply above suggestion.

I agree with Grzegorz, you should really avoid as much as possible the #if PLATFORM() in the generic *Unix file. While it does not look too ugly now that only 2 ports are using it, it will get a lot worse when other ports start to use it. We should keep this code generic (Posix + WTF). Optimally, there should be no port specific code in there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721575</commentid>
    <comment_count>31</comment_count>
      <attachid>163889</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-16 04:56:17 -0700</bug_when>
    <thetext>Comment on attachment 163889
Merged common files with gtk

Can we unskip any test with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721786</commentid>
    <comment_count>32</comment_count>
      <attachid>164363</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-17 03:24:10 -0700</bug_when>
    <thetext>Created attachment 164363
Applied Grzegorz&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721790</commentid>
    <comment_count>33</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-17 03:34:56 -0700</bug_when>
    <thetext>I think This is the way to go. CC&apos;ing Martin, could you take a look this patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721820</commentid>
    <comment_count>34</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-09-17 05:25:31 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=164363&amp;action=review

Thanks for the changes. LGTM!
Carlos, could you express your opinion about it?

&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:50
&gt; +static char* progname = 0;

How about &apos;programName&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721837</commentid>
    <comment_count>35</comment_count>
      <attachid>164363</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-17 05:52:25 -0700</bug_when>
    <thetext>Comment on attachment 164363
Applied Grzegorz&apos;s comments

I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721857</commentid>
    <comment_count>36</comment_count>
      <attachid>164363</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-17 06:25:37 -0700</bug_when>
    <thetext>Comment on attachment 164363
Applied Grzegorz&apos;s comments

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

&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:61
&gt; +#if PLATFORM(GTK)
&gt; +    g_warning(
&gt; +#elif PLATFORM(EFL)
&gt; +    EINA_LOG_CRIT(
&gt; +#endif

This doesn&apos;t seem very scalable... what if Qt decided to use this code? Maybe abstract this in Platform.h?

&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:77
&gt; +    bool scanPlugin = !strcmp(argv[1], &quot;-scanPlugin&quot;);

why not two -s? --scan-plugins

&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:87
&gt; +#if PLATFORM(GTK)
&gt; +    gtk_init(&amp;argc, &amp;argv);
&gt; +#elif PLATFORM(EFL)
&gt; +    if (!eina_init())
&gt; +        return 1;
&gt; +#ifdef HAVE_ECORE_X
&gt; +    if (!ecore_x_init(0))
&gt; +#endif

I guess you rather what a platformInitialize() method for so

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:66
&gt; +    int status;
&gt; +    char* stdOut;
&gt; +
&gt; +    if (!g_spawn_sync(0, argv, 0, G_SPAWN_STDERR_TO_DEV_NULL, 0, 0, &amp;stdOut, 0, &amp;status, 0))
&gt; +        return false;
&gt; +

This looks so much more like a PluginProcessProxyGlib than a UNIX one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724305</commentid>
    <comment_count>37</comment_count>
      <attachid>164865</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 02:21:13 -0700</bug_when>
    <thetext>Created attachment 164865
Applied comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724307</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 02:24:43 -0700</bug_when>
    <thetext>Attachment 164865 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:81:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724308</commentid>
    <comment_count>39</comment_count>
      <attachid>164363</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 02:26:53 -0700</bug_when>
    <thetext>Comment on attachment 164363
Applied Grzegorz&apos;s comments

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

&gt;&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:61
&gt;&gt; +#endif
&gt; 
&gt; This doesn&apos;t seem very scalable... what if Qt decided to use this code? Maybe abstract this in Platform.h?

Changed to webkit&apos;s log

&gt;&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:77
&gt;&gt; +    bool scanPlugin = !strcmp(argv[1], &quot;-scanPlugin&quot;);
&gt; 
&gt; why not two -s? --scan-plugins

Qt and Gtk are using &quot;-scanPlugin&quot; so I think it can be left as is to avoid changes on their ports.

&gt;&gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:87
&gt;&gt; +#endif
&gt; 
&gt; I guess you rather what a platformInitialize() method for so

platformInitialize is done later in &quot;WebKit::PluginProcess::shared().initialize(socket, RunLoop::main());&quot; line. Here gtk needs arguments from command line, and efl needs ecore x init before platformInitialize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724311</commentid>
    <comment_count>40</comment_count>
      <attachid>164867</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 02:28:23 -0700</bug_when>
    <thetext>Created attachment 164867
Fixes webkit style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724313</commentid>
    <comment_count>41</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 02:31:03 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164363&amp;action=review
&gt; 
&gt; Thanks for the changes. LGTM!
&gt; Carlos, could you express your opinion about it?
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:50
&gt; &gt; +static char* progname = 0;
&gt; 
&gt; How about &apos;programName&apos;?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724318</commentid>
    <comment_count>42</comment_count>
      <attachid>164867</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-20 02:38:30 -0700</bug_when>
    <thetext>Comment on attachment 164867
Fixes webkit style

See Comment #35.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724364</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-20 03:31:32 -0700</bug_when>
    <thetext>Attachment 164867 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:81:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724414</commentid>
    <comment_count>44</comment_count>
      <attachid>164889</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 04:41:50 -0700</bug_when>
    <thetext>Created attachment 164889
Fixes webkit style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724425</commentid>
    <comment_count>45</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 04:54:54 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 164363 [details])
&gt; I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.

PluginProcessMainUnix seems to be more &quot;unix&quot; than &quot;x11&quot; because X11 support adds only error handling.
Sometimes it&apos;s hard to point the best solution: port, backend, operating system.
What&apos;s your suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724439</commentid>
    <comment_count>46</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-20 05:11:04 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #35)
&gt; &gt; (From update of attachment 164363 [details] [details])
&gt; &gt; I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.
&gt; 
&gt; PluginProcessMainUnix seems to be more &quot;unix&quot; than &quot;x11&quot; because X11 support adds only error handling.
&gt; Sometimes it&apos;s hard to point the best solution: port, backend, operating system.
&gt; What&apos;s your suggestion?

My suggestion is to keep separate files instead of a &quot;common&quot; file full of #ifdefs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724454</commentid>
    <comment_count>47</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 05:53:31 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; &gt; (In reply to comment #35)
&gt; &gt; &gt; (From update of attachment 164363 [details] [details] [details])
&gt; &gt; &gt; I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.
&gt; &gt; 
&gt; &gt; PluginProcessMainUnix seems to be more &quot;unix&quot; than &quot;x11&quot; because X11 support adds only error handling.
&gt; &gt; Sometimes it&apos;s hard to point the best solution: port, backend, operating system.
&gt; &gt; What&apos;s your suggestion?
&gt; 
&gt; My suggestion is to keep separate files instead of a &quot;common&quot; file full of #ifdefs

A lot of proposed changes have common source. I think PluginControllerProxyUnix.cpp, and PluginProcessUnix.cpp can be EFL and Gtk as before because of platform initialize, and destroy, but others may stay as is. Do you agree with it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724456</commentid>
    <comment_count>48</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-20 05:57:55 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #46)
&gt; &gt; (In reply to comment #45)
&gt; &gt; &gt; (In reply to comment #35)
&gt; &gt; &gt; &gt; (From update of attachment 164363 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.
&gt; &gt; &gt; 
&gt; &gt; &gt; PluginProcessMainUnix seems to be more &quot;unix&quot; than &quot;x11&quot; because X11 support adds only error handling.
&gt; &gt; &gt; Sometimes it&apos;s hard to point the best solution: port, backend, operating system.
&gt; &gt; &gt; What&apos;s your suggestion?
&gt; &gt; 
&gt; &gt; My suggestion is to keep separate files instead of a &quot;common&quot; file full of #ifdefs
&gt; 
&gt; A lot of proposed changes have common source. I think PluginControllerProxyUnix.cpp, and PluginProcessUnix.cpp can be EFL and Gtk as before because of platform initialize, and destroy, but others may stay as is. Do you agree with it?

They have a common source because they are unimplemented not because they are supposed to have a common implementation for unix platform. The code is also the same as the Qt files, if we are going to share the unimplemented files, we should include the Qt files as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724504</commentid>
    <comment_count>49</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-20 07:38:08 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; (In reply to comment #47)
&gt; &gt; (In reply to comment #46)
&gt; &gt; &gt; (In reply to comment #45)
&gt; &gt; &gt; &gt; (In reply to comment #35)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 164363 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; PluginProcessMainUnix seems to be more &quot;unix&quot; than &quot;x11&quot; because X11 support adds only error handling.
&gt; &gt; &gt; &gt; Sometimes it&apos;s hard to point the best solution: port, backend, operating system.
&gt; &gt; &gt; &gt; What&apos;s your suggestion?
&gt; &gt; &gt; 
&gt; &gt; &gt; My suggestion is to keep separate files instead of a &quot;common&quot; file full of #ifdefs
&gt; &gt; 
&gt; &gt; A lot of proposed changes have common source. I think PluginControllerProxyUnix.cpp, and PluginProcessUnix.cpp can be EFL and Gtk as before because of platform initialize, and destroy, but others may stay as is. Do you agree with it?
&gt; 
&gt; They have a common source because they are unimplemented not because they are supposed to have a common implementation for unix platform. 
&gt; The code is also the same as the Qt files, if we are going to share the unimplemented files, we should include the Qt files as well.

Because of:
1. Possible differences in unsupported functions
2. No good suffix for common files
3. For Unix suffix Qt source should be merged which implies a lot of macros
I think that finally previous solution will be better.

Simon, do you agree with that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724674</commentid>
    <comment_count>50</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-20 11:11:40 -0700</bug_when>
    <thetext>This patch does not build in debug mode. Please always test debug builds.

/home/chris/unencrypted/WebKit/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp: In function ‘int webkitXError(Display*, XErrorEvent*)’:
/home/chris/unencrypted/WebKit/Source/WebKit2/PluginProcess/unix/PluginProcessMainUnix.cpp:57:2: error: ‘LOG_CHANNEL_PREFIXPlugins’ was not declared in this scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724686</commentid>
    <comment_count>51</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-20 11:19:38 -0700</bug_when>
    <thetext>Please check if tests can be unskipped with this patch.

It seems at least the following tests can be unskipped:
  fast/replaced/no-focus-ring-embed.html
  fast/replaced/no-focus-ring-object.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725091</commentid>
    <comment_count>52</comment_count>
    <who name="KwangYong Choi">ky0.choi</who>
    <bug_when>2012-09-20 19:31:43 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Please check if tests can be unskipped with this patch.
&gt; 
&gt; It seems at least the following tests can be unskipped:
&gt;   fast/replaced/no-focus-ring-embed.html
&gt;   fast/replaced/no-focus-ring-object.html

There are lots of tests for plugins. At least, plugins/ and http/tests/plugins/.

How about rebaseline after this patch is landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726572</commentid>
    <comment_count>53</comment_count>
      <attachid>164889</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-24 05:30:28 -0700</bug_when>
    <thetext>Comment on attachment 164889
Fixes webkit style

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

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:106
&gt; +#elif PLATFORM(EFL) &amp;&amp; defined(HAVE_ECORE_X)
&gt; +    return ecore_x_screen_index_get(ecore_x_default_screen_get());

I still think that this kind of stuff can easily be simplified to use Xlib functions (see PLATFORM(QT) code path), given a platform-specific way of getting the X display. But that can be done in a separate patch if you&apos;d like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726646</commentid>
    <comment_count>54</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-24 07:37:30 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #48)
&gt; &gt; (In reply to comment #47)
&gt; &gt; &gt; (In reply to comment #46)
&gt; &gt; &gt; &gt; (In reply to comment #45)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #35)
&gt; &gt; &gt; &gt; &gt; &gt; (From update of attachment 164363 [details] [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; &gt; I&apos;m not sure about some of the files, the implementation is the same because it&apos;s currently unimplemented, not because the implementation is expected to be common to all ports in a unix platform. PluginProcess/unix/PluginProcessMainUnix.cpp should probably be X11 instead of Unix, but it requires a lot of #ifdefs so I&apos;m not sure whether it would be better to keep separate files without #ifdefs. Note also that Qt port could also share code common to unix platform, like in Platform/CoreIPC/unix/ConnectionUnix.cpp, but it seems to me that most of the files shared here are not for platform specific code, but for port specific code.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; PluginProcessMainUnix seems to be more &quot;unix&quot; than &quot;x11&quot; because X11 support adds only error handling.
&gt; &gt; &gt; &gt; &gt; Sometimes it&apos;s hard to point the best solution: port, backend, operating system.
&gt; &gt; &gt; &gt; &gt; What&apos;s your suggestion?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; My suggestion is to keep separate files instead of a &quot;common&quot; file full of #ifdefs
&gt; &gt; &gt; 
&gt; &gt; &gt; A lot of proposed changes have common source. I think PluginControllerProxyUnix.cpp, and PluginProcessUnix.cpp can be EFL and Gtk as before because of platform initialize, and destroy, but others may stay as is. Do you agree with it?
&gt; &gt; 
&gt; &gt; They have a common source because they are unimplemented not because they are supposed to have a common implementation for unix platform. 
&gt; &gt; The code is also the same as the Qt files, if we are going to share the unimplemented files, we should include the Qt files as well.
&gt; 
&gt; Because of:
&gt; 1. Possible differences in unsupported functions
&gt; 2. No good suffix for common files
&gt; 3. For Unix suffix Qt source should be merged which implies a lot of macros
&gt; I think that finally previous solution will be better.
&gt; 
&gt; Simon, do you agree with that?

I agree that there is not much value in calling a file with only notImplemented() files FooUnix.cpp, but splitting it up in *Efl and *Gtk.cpp doesn&apos;t make much sense to me neither. There could be a NotImplemented.cpp file like in WebCore, but you really have to ask yourself: What is the code going to look like in the future?

This is in a nutshell about implementing an X11 specific &quot;standard&quot;, which for all means and purposes is tied to Unixy platforms.

For files like Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp I really don&apos;t see a point in having the code duplicated between Efl and Gtk. (I won&apos;t r+ that, but maybe somebody else will)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726648</commentid>
    <comment_count>55</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-24 07:38:18 -0700</bug_when>
    <thetext>(In reply to comment #54)
[...]
&gt; For files like Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp I really don&apos;t see a point in having the code duplicated between Efl and Gtk. (I won&apos;t r+ that, but maybe somebody else will)

(To clarify: I won&apos;t r+ a patch that duplicates perfectly shareable code, but maybe somebody else will do :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730351</commentid>
    <comment_count>56</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-09-28 01:28:39 -0700</bug_when>
    <thetext>The latest patch (with sharable code) has got r+. IMHO we should make a final decision in which form the patch will be landed.

Carlos, would you like to have the separate files/implementation for:
 - PluginProcessUnix.cpp
 - PluginControllerProxyUnix.cpp
for the port specific files qt/gtk/efl etc? In this case all of them will look mostly the same and have unimplemented all methods.

In my opinion this patch makes sense. If some has knowledge how those unimplemented methods should look like or knows whether they are depend on the port specific API/features/files now would be a good time to speak up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730357</commentid>
    <comment_count>57</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-28 01:40:39 -0700</bug_when>
    <thetext>(In reply to comment #56)
&gt; The latest patch (with sharable code) has got r+. IMHO we should make a final decision in which form the patch will be landed.
&gt; 
&gt; Carlos, would you like to have the separate files/implementation for:
&gt;  - PluginProcessUnix.cpp
&gt;  - PluginControllerProxyUnix.cpp
&gt; for the port specific files qt/gtk/efl etc? In this case all of them will look mostly the same and have unimplemented all methods.
&gt; 
&gt; In my opinion this patch makes sense. If some has knowledge how those unimplemented methods should look like or knows whether they are depend on the port specific API/features/files now would be a good time to speak up!

We can just share the &quot;code&quot; of those not implemented files, and in case a port needs to add code in the future that is not specific to unix or that would require too many #ifdefs we can split the files again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730370</commentid>
    <comment_count>58</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-09-28 02:03:26 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (In reply to comment #56)
&gt; &gt; The latest patch (with sharable code) has got r+. IMHO we should make a final decision in which form the patch will be landed.
&gt; &gt; 
&gt; &gt; Carlos, would you like to have the separate files/implementation for:
&gt; &gt;  - PluginProcessUnix.cpp
&gt; &gt;  - PluginControllerProxyUnix.cpp
&gt; &gt; for the port specific files qt/gtk/efl etc? In this case all of them will look mostly the same and have unimplemented all methods.
&gt; &gt; 
&gt; &gt; In my opinion this patch makes sense. If some has knowledge how those unimplemented methods should look like or knows whether they are depend on the port specific API/features/files now would be a good time to speak up!
&gt; 
&gt; We can just share the &quot;code&quot; of those not implemented files, and in case a port needs to add code in the future that is not specific to unix or that would require too many #ifdefs we can split the files again.

Thanks for your opinion Carlos.
Mariusz, please fix the build on the debug build and finally land this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730559</commentid>
    <comment_count>59</comment_count>
      <attachid>166229</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-28 06:00:49 -0700</bug_when>
    <thetext>Created attachment 166229
Rebased, fixed LOG error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730568</commentid>
    <comment_count>60</comment_count>
      <attachid>166232</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-28 06:07:25 -0700</bug_when>
    <thetext>Created attachment 166232
Rebased, fixed LOG error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730607</commentid>
    <comment_count>61</comment_count>
      <attachid>166232</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-28 06:46:30 -0700</bug_when>
    <thetext>Comment on attachment 166232
Rebased, fixed LOG error

Attachment 166232 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14056393</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730619</commentid>
    <comment_count>62</comment_count>
      <attachid>166232</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-09-28 06:58:26 -0700</bug_when>
    <thetext>Comment on attachment 166232
Rebased, fixed LOG error

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

&gt; ChangeLog:8
&gt; +        Turn on Netscape Plugin API by default.

by default for WebKit2-Efl.

&gt; Source/WebKit2/PlatformEfl.cmake:12
&gt; +    PluginProcess/unix/PluginProcessMainUnix.cpp

Please keep alphabetical order.

&gt; Source/WebKit2/UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:62
&gt; +    char* stdOut;

Please initialize it to 0 to be sure that free() won&apos;t be called for non allocated memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730627</commentid>
    <comment_count>63</comment_count>
      <attachid>166244</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-09-28 07:12:37 -0700</bug_when>
    <thetext>Created attachment 166244
Fixed merge error, and applied Grzegorz&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731153</commentid>
    <comment_count>64</comment_count>
      <attachid>166244</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 23:30:53 -0700</bug_when>
    <thetext>Comment on attachment 166244
Fixed merge error, and applied Grzegorz&apos;s comments

Clearing flags on attachment: 166244

Committed r129972: &lt;http://trac.webkit.org/changeset/129972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731154</commentid>
    <comment_count>65</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 23:31:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732688</commentid>
    <comment_count>66</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-10-02 09:05:11 -0700</bug_when>
    <thetext>(In reply to comment #64)
&gt; (From update of attachment 166244 [details])
&gt; Clearing flags on attachment: 166244
&gt; 
&gt; Committed r129972: &lt;http://trac.webkit.org/changeset/129972&gt;

Hi,

This change has broken the EFL build if one passes --no-netscape-plugin-api to build-webkit. Can you take a look at this, Mariusz?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733531</commentid>
    <comment_count>67</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-03 03:30:37 -0700</bug_when>
    <thetext>(In reply to comment #66)
&gt; (In reply to comment #64)
&gt; &gt; (From update of attachment 166244 [details] [details])
&gt; &gt; Clearing flags on attachment: 166244
&gt; &gt; 
&gt; &gt; Committed r129972: &lt;http://trac.webkit.org/changeset/129972&gt;
&gt; 
&gt; Hi,
&gt; 
&gt; This change has broken the EFL build if one passes --no-netscape-plugin-api to build-webkit. Can you take a look at this, Mariusz?

I&apos;ve made initial investigation and it seems that when PLUGIN_PROCESS is on and NETSCAPE_PLUGIN_API is off it causes a lot of buildbreaks. On some ports like Gtk both macros are on and there is no way to disable them from build-webkit script. 
In webkit1 there was only netscape plugin api macro which means all functionality is on/off. But in webkit2 it is more confusing, e.g. createPlugin function in WebPage.cpp:

#if ENABLE(PLUGIN_PROCESS)
    return PluginProxy::create(pluginPath);
#elif ENABLE(NETSCAPE_PLUGIN_API)
    NetscapePlugin::setSetExceptionFunction(NPRuntimeObjectMap::setGlobalException);
    return NetscapePlugin::create(NetscapePluginModule::getOrCreate(pluginPath));
#else
    return 0;
#endif

Later when plugin process is initialized in PluginControllerProxy.cpp:
m_plugin = NetscapePlugin::create(PluginProcess::shared().netscapePluginModule());
NetscapePlugin::create is invoked which is in macro NETSCAPE_PLUGIN_API

I&apos;m wondering if plugin process should be created at all when NETSCAPE_PLUGIN_API is off. also getting plugin path in WebPage::createPlugin seems to be useless when plugins are off.
I think it will be good to make new bug on bugzilla for this combination of macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734403</commentid>
    <comment_count>68</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-03 23:44:56 -0700</bug_when>
    <thetext>I get the following warning when running unit tests and 1 test is failing:
21/37 Test #21: test_webkit2_api_FrameMIMETypePNG ...................................***Failed   10.31 sec
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from WebKit2
[ RUN      ] WebKit2.FrameMIMETypePNG

(process:28299): GLib-WARNING **: In call to g_spawn_sync(), exit status of a child process was requested but SIGCHLD action was set to SIG_IGN and ECHILD was received by waitpid(), so exit status can&apos;t be returned. This is a bug in the program calling g_spawn_sync(); either don&apos;t request the exit status, or don&apos;t set the SIGCHLD action.
1   0x43644f
2   0x2af7189c6cb0
3   0x2af7185b4e71 WebKit::PluginProcessProxy::scanPlugin(WTF::String const&amp;, WebKit::RawPluginMetaData&amp;)
4   0x2af718585f78 WebKit::NetscapePluginModule::getPluginInfo(WTF::String const&amp;, WebKit::PluginModuleInfo&amp;)
5   0x2af7185b3883 WebKit::PluginInfoStore::getPluginInfo(WTF::String const&amp;, WebKit::PluginModuleInfo&amp;)
6   0x2af718495fb7 WebKit::PluginInfoStore::loadPlugin(WTF::Vector&lt;WebKit::PluginModuleInfo, 0ul&gt;&amp;, WTF::String const&amp;)
7   0x2af718495eec WebKit::PluginInfoStore::loadPluginsIfNecessary()
8   0x2af71849602d WebKit::PluginInfoStore::plugins()
9   0x2af7184718a9 WebKit::WebProcessProxy::handleGetPlugins(unsigned long, bool)
10  0x2af71847dd77 WTF::FunctionWrapper&lt;void (WebKit::WebProcessProxy::*)(unsigned long, bool)&gt;::operator()(WebKit::WebProcessProxy*, unsigned long, bool)
11  0x2af71847dbb0 WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebKit::WebProcessProxy::*)(unsigned long, bool)&gt;, void (WebKit::WebProcessProxy*, unsigned long, bool)&gt;::operator()()
12  0x465214 WTF::Function&lt;void ()&gt;::operator()() const
13  0x2af71857b74e WorkQueue::performWork()
14  0x2af71857bdcc WorkQueue::workQueueThread(WorkQueue*)
15  0x2af71d68e419
16  0x4374a9
17  0x2af7189bee9a
18  0x2af719d44dbd clone
LEAK: 1 WebPageProxy
LEAK: 1 WebContext

It looks related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745760</commentid>
    <comment_count>69</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-10-18 17:10:42 -0700</bug_when>
    <thetext>&gt; But in webkit2 it is more confusing, e.g. createPlugin function in WebPage.cpp:
&gt; #if ENABLE(PLUGIN_PROCESS)
&gt;     return PluginProxy::create(pluginPath);
&gt; #elif ENABLE(NETSCAPE_PLUGIN_API)
&gt;     NetscapePlugin::setSetExceptionFunction(NPRuntimeObjectMap::setGlobalException);

AFAIK the distinction is that there could be different kinds of plugins - and Netscape plugins would be one of the kind of plugins. Perhaps the build flag for build-webkit should be called &quot;no-plugins&quot;, but the build flags in the source files seems to be properly named.

&gt; I&apos;m wondering if plugin process should be created at all when NETSCAPE_PLUGIN_API is off. 

For EFL and (and probably GTK) ports I would agree.

&gt; I think it will be good to make new bug on bugzilla for this combination of macros.

See bug 99757.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153463</attachid>
            <date>2012-07-20 03:18:28 -0700</date>
            <delta_ts>2012-07-20 09:33:08 -0700</delta_ts>
            <desc>Patch implementing windowless plugin and plugin process for webkit2 efl&apos;s port</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>29386</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMjVhMDU5Li5kNDUxNDE3
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDctMTkgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNj
YXBlIFBsdWdpbiBBUEkgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTA3LTE5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgTUhUTUwgc3VwcG9ydCBieSBk
ZWZhdWx0IGF0IGJ1aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNTI5NzIyLi4xNWI3NmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDctMTkgIE1hcml1c3ogR3J6ZWdvcmN6eWsg
IDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJv
Y2VzcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgd2luZG93bGVzcyBwbHVnaW4gYW5kIGZ1bmN0aW9ucyBuZWVk
ZWQgdG8gbGF1bmNoIFBsdWdpblByb2Nlc3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkZWQgZmlsZXMgbmVlZGVkIGJ5IHBsdWdpbiBwcm9jZXNzLgorICAgICAgICAqIFBsdWdp
blByb2Nlc3MvZWZsL1BsdWdpbkNvbnRyb2xsZXJQcm94eUVmbC5jcHA6IEFkZGVkLiBNYWRlIHN0
dWJzIGZvciBQbHVnaW5Db250cm9sbGVyUHJveHkgbWV0aG9kcy4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybURl
c3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3Jt
R2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvZWZsL1BsdWdpblBy
b2Nlc3NFZmwuY3BwOiBBZGRlZC4gTWFkZSBzdHViIGZvciBwbGF0Zm9ybUluaXRpYWxpemUgbWV0
aG9kLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Q
cm9jZXNzTWFpbkVmbC5jcHA6IEFkZGVkLiBYMTEgZXJyb3IgaGFuZGxlciwgYW5kIG1haW4gcGx1
Z2luIHByb2Nlc3MgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
Ojp3ZWJraXRlZmxYRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkVm
bCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc01haW5FZmwuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2Vm
bC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwOiBBZGRlZC4gU2Nhbm5pbmcgcGx1Z2luIGluIHNl
cGFyYXRlIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDogU3R1YnMgYWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2Vm
bC9QbHVnaW5Qcm94eUVmbC5jcHA6IEFkZGVkLiBTdHVicyBhZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5jcHA6IFBsdWdpbidzIHdpbmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJL
aXQ6OmdldFBsdWdpbkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAg
ICAgICAoV2ViS2l0OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93
SUQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAg
ICogY29uZmlnLmg6CisgICAgICAgICogZWZsL1BsdWdpbk1haW5FZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKG1haW4pOgorCiAyMDEyLTA3LTE5ICBab2x0YW4gTnl1bCAgPHpvbHRhbi5ueXVsQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFVzaW5nIGRpZmZlcmVudCBjYWNoZSBkaXJl
Y3RvcnkgZm9yIGVhY2ggV1RSIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NjEwNThjOS4uYTQ1NWNkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNiw4ICsx
NiwxNCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9BUEkvYy9j
YWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250
cm9sbGVyUHJveHlFZmwuY3BwCisgICAgUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0Vm
bC5jcHAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAKKwog
ICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsuY3BwCiAKKyAgICBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisKICAg
ICBTaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcAogICAgIFNoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIApAQCAtNjcsNiArNzMsNyBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVu
Y2hlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1RocmVhZExhdW5jaGVyRWZs
LmNwcAogCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQcm94eUVmbC5j
cHAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAK
ICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKQEAg
LTgwLDYgKzg3LDkgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAorICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlFZmwuY3BwCisgICAgV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKwogICAgIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkNvbnRleHRNZW51Q2xpZW50RWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAK
ICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCkBAIC0x
OTAsNiArMjAwLDMxIEBAIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5B
VElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7CiAKIEFERF9ERUZJTklUSU9O
UygiLURMSUJFWEVDRElSPVwiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vJHtFWEVDX0lOU1RBTExf
RElSfVwiIikKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVGSU5JVElP
TlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJvY2Vzc19O
QU1FIGJpbi9QbHVnaW5Qcm9jZXNzKQorICAgIExJU1QgKEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lO
Q0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXRUJLSVQyX0RJUn0KKyAgICAgICAgIiR7V0VC
S0lUMl9ESVJ9L1BsdWdpblByb2Nlc3MvZWZsIgorICAgICkKKworICAgIElOQ0xVREVfRElSRUNU
T1JJRVMoJHtQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorCisgICAgTElTVCAo
QVBQRU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUworICAgICAgICAke1dFQktJVDJfRElSfS9lZmwv
UGx1Z2luTWFpbkVmbC5jcHAKKyAgICApCisKKyAgICBTRVQoUGx1Z2luUHJvY2Vzc19MSUJSQVJJ
RVMKKyAgICAgICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VY
RUNVVEFCTEUoJHtQbHVnaW5Qcm9jZXNzX05BTUV9ICR7UGx1Z2luUHJvY2Vzc19TT1VSQ0VTfSkK
KyAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtQbHVnaW5Qcm9jZXNzX05BTUV9ICR7UGx1Z2lu
UHJvY2Vzc19MSUJSQVJJRVN9KQorICAgIFNFVF9UQVJHRVRfUFJPUEVSVElFUygke1BsdWdpblBy
b2Nlc3NfTkFNRX0gUFJPUEVSVElFUyBSVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0Vf
QklOQVJZX0RJUn0iKQorICAgIElOU1RBTEwoVEFSR0VUUyAke1BsdWdpblByb2Nlc3NfTkFNRX0g
REVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxMX0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExV
R0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVz
dC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpbkNvbnRyb2xsZXJQcm94eUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9sbGVyUHJv
eHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYTI0OTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5D
b250cm9sbGVyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisjaW5jbHVkZSAiTmV0c2NhcGVQ
bHVnaW4uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFu
Z2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzRWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTk2YjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFp
bkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNz
TWFpbkVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1Zjc5NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdp
blByb2Nlc3NNYWluRWZsLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbkVm
bC5oIgorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEVjb3JlLmg+Cisj
aW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNl
bmRpZgorCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgZGVmaW5lZChYUF9VTklYKQorc3Rh
dGljIGludCB3ZWJraXRlZmxYRXJyb3IoRGlzcGxheSogeGRpc3BsYXksIFhFcnJvckV2ZW50KiBl
cnJvcikKK3sKKyAgICBjaGFyIGVycm9yTWVzc2FnZVs2NF07CisgICAgWEdldEVycm9yVGV4dCh4
ZGlzcGxheSwgZXJyb3ItPmVycm9yX2NvZGUsIGVycm9yTWVzc2FnZSwgNjMpOworICAgIEVJTkFf
TE9HX0NSSVQoIlRoZSBwcm9ncmFtIHJlY2VpdmVkIGFuIFggV2luZG93IFN5c3RlbSBlcnJvci5c
biIKKyAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBidWcgaW4gYSBicm93
c2VyIHBsdWdpbi5cbiIKKyAgICAgICAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIKKyAg
ICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0
X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCisgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSwK
KyAgICAgICAgICAgICAgZXJyb3ItPnNlcmlhbCwgZXJyb3ItPmVycm9yX2NvZGUsCisgICAgICAg
ICAgICAgIGVycm9yLT5yZXF1ZXN0X2NvZGUsIGVycm9yLT5taW5vcl9jb2RlKTsKKyAgICByZXR1
cm4gMDsKK30KKyNlbmRpZgorCitpbnQgUGx1Z2luUHJvY2Vzc01haW5FZmwoaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0gMyk7CisgICAg
Ym9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4iKTsKKyAgICBB
U1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdpbikpOworCisgICAgaWYg
KCFlaW5hX2luaXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoIWVjb3JlX3hfaW5p
dCgwKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoc2NhblBsdWdp
bikgeworCisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFyZ3ZbMl0pOworCisgICAgICAgIGlm
ICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAg
ICAgICByZXR1cm4gMTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSdW5Mb29w
Ojppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworI2lmIGRlZmluZWQoWFBfVU5JWCkKKyAgICBY
U2V0RXJyb3JIYW5kbGVyKHdlYmtpdGVmbFhFcnJvcik7CisjZW5kaWYKKworICAgIGludCBzb2Nr
ZXQgPSBhdG9pKGFyZ3ZbMV0pOworCisgICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBSdW5Mb29wOjpydW4o
KTsKKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NNYWluRWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVm
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNWM2YWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNz
TWFpbkVmbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBsdWdpblByb2Nlc3NNYWluRWZsX2gKKyNkZWZpbmUgUGx1Z2luUHJvY2Vzc01haW5F
ZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3Bs
dXMKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciog
YXJndltdKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9IC8vIGV4dGVybiAiQyIKKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBsdWdp
blByb2Nlc3NNYWluRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRjNjlmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3Bw
CkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlByb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1
Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIENTdHJp
bmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aE9m
UGx1Z2luUHJvY2VzcygpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07CisgICAg
YXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBhcmd2
WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlszXSA9
IDA7CisKKyAgICBpbnQgc3RhdHVzOworICAgIGNoYXIqIHN0ZE91dDsKKworICAgIGlmICghZ19z
cGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAm
c3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VDQ0VT
UykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVz
RXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07CisgICAg
dW5zaWduZWQgbGluZUluZGV4ID0gMDsKKyAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQpOworICAgIHdoaWxlIChsaW5lSW5kZXgg
PCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJy
ZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAg
ICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0g
MSk7CisgICAgfQorCisgICAgaWYgKHN0ZE91dCkKKyAgICAgICAgZnJlZShzdGRPdXQpOworCisg
ICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3
YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7
CisKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVzY3JpcHRpb24uaXNFbXB0eSgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApp
bmRleCBlMWVkYTEwLi45ODIxYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04Myw0ICs4MywxNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGhlbWVQYXRoKHRoZW1lUGF0aCksIG1fcGFn
ZUlELCAwKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1
aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwg
dWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdpblByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNzQxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdpblByb3h5
RWZsLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IGRhMjQ3OGQuLjM2
ZDJhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC00Niw2
ICs0NiwxMyBAQAogI2VuZGlmCiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0d0a1ZlcnNpb25pbmcuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29y
ZV9YLmg+CisjaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
CisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWlyby9jYWlyby14bGliLmg+
CisjZW5kaWYgLy8gVVNFKENBSVJPKQogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtODQsNiArOTEsOCBAQCBzdGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAg
ICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwgd2UnbGwgKHByb2JhYmx5PykgaGF2ZSB0
aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1iYXNlZAogICAgIC8vIHBsdWdpbnMsIHNv
IHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2FudCB0byBhZGQgb3RoZXIgaW1wbGVtZW50
YXRpb25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0dXJuIEdES19ESVNQTEFZX1hESVNQTEFZKGdka19k
aXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTk1LDYgKzEwNCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHgx
MVNjcmVlbigpCiAgICAgcmV0dXJuIFhEZWZhdWx0U2NyZWVuKE5ldHNjYXBlUGx1Z2luOjp4MTFI
b3N0RGlzcGxheSgpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3NjcmVl
bl9nZXRfbnVtYmVyKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgcmV0dXJuIGVjb3JlX3hfc2NyZWVuX2luZGV4X2dldChlY29yZV94X2RlZmF1bHRf
c2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEwNiw2ICsx
MTcsOCBAQCBzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKQogICAgIHJldHVybiBYRGVm
YXVsdERlcHRoKE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCB4MTFTY3JlZW4oKSk7
CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdk
a19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQo
TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5f
Z2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE3LDYgKzEzMCw4IEBA
IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKQogICAgIHJldHVybiBY
RGVmYXVsdFJvb3RXaW5kb3coTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBHREtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyAgICByZXR1cm4gZWNvcmVfeF93aW5kb3dfcm9vdF9maXJzdF9nZXQoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE0NCw2ICsxNTksOCBAQCBEaXNwbGF5
KiBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKQogICAgIHJldHVybiBkZWRpY2F0ZWRE
aXNwbGF5OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBHREtfRElTUExBWV9YRElT
UExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAj
ZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0zNTcsNyArMzc0LDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnQKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoUVBvaW50KGV4cG9zZWRSZWN0
LngoKSwgZXhwb3NlZFJlY3QueSgpKSwgcWltYWdlRnJvbVhJbWFnZSh4SW1hZ2UpLCBleHBvc2Vk
UmVjdCk7CiAKICAgICBYRGVzdHJveUltYWdlKHhJbWFnZSk7Ci0jZWxpZiBQTEFURk9STShHVEsp
CisjZWxpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2RyYXdhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvY29u
ZmlnLmgKaW5kZXggNGJiMWY4ZC4uY2Q0YTY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Y29uZmlnLmgKKysrIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGF0aWMgY29uc3QgdHlwZSYgbmFtZSgpIFwKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVS
RV9NQUMgMQogI2VsaWYgUExBVEZPUk0oV0lOKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJF
X1dJTiAxCi0jZWxpZiBQTEFURk9STShHVEspICYmIChPUyhVTklYKSAmJiAhT1MoTUFDX09TX1gp
KQorI2VsaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkgJiYgKE9TKFVOSVgpICYm
ICFPUyhNQUNfT1NfWCkpCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfWDExIDEKICNlbHNl
CiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQT1JURUQgMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvZWZsL1BsdWdpbk1haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvZWZs
L1BsdWdpbk1haW5FZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEw
ZTdiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvUGx1Z2luTWFpbkVm
bC5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzTWFpbkVmbC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5FZmwoYXJnYywg
YXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDBhMzk1MzQuLmYzMGM5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlCkBAIC04Myw3ICs4Myw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9HTElCX1NVUFBPUlQgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiBPTikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJTERFUiBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEgT04pCi1XRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBP
RkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExV
R0lOX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRX
T1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFH
RV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSIE9OKQpAQCAtMTUzLDMgKzE1Myw3IEBAIElG
IChFTkFCTEVfV0VCR0wpCiBFTkRJRiAoKQogCiBTRVQoQ1BBQ0tfU09VUkNFX0dFTkVSQVRPUiBU
QloyKQorCitJRiAoRU5BQkxFX1dFQktJVDIpCisgICAgU0VUKEVOQUJMRV9QTFVHSU5fUFJPQ0VT
UyAxKQorRU5ESUYgKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBlZjBiMTRjLi45YTk5NzYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMTkgIE1hcml1
c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1b
V0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNjYXBlIFBsdWdpbiBBUEkgb3B0
aW9uIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG06CisKIDIwMTItMDctMTkgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdIEVuYWJsZSBNSFRNTCBzdXBwb3J0IGJ5IGRlZmF1bHQg
YXQgYnVpbGQgdGltZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4
IGY3MjZiNWUuLjMxNjYyZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KQEAgLTMwMyw3ICszMDMsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkbXV0
YXRpb25PYnNlcnZlcnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0c2NhcGUtcGx1
Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQgPT4g
IWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCisgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2YWx1
ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5l
dHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZh
bHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>
<flag name="commit-queue"
          id="162422"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153525</attachid>
            <date>2012-07-20 09:33:08 -0700</date>
            <delta_ts>2012-08-22 02:10:39 -0700</delta_ts>
            <desc>Fixed webkit style</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>29657</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMjVhMDU5Li5kNDUxNDE3
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDctMTkgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNj
YXBlIFBsdWdpbiBBUEkgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTA3LTE5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgTUhUTUwgc3VwcG9ydCBieSBk
ZWZhdWx0IGF0IGJ1aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNTI5NzIyLi4xNWI3NmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDctMTkgIE1hcml1c3ogR3J6ZWdvcmN6eWsg
IDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJv
Y2VzcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgd2luZG93bGVzcyBwbHVnaW4gYW5kIGZ1bmN0aW9ucyBuZWVk
ZWQgdG8gbGF1bmNoIFBsdWdpblByb2Nlc3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkZWQgZmlsZXMgbmVlZGVkIGJ5IHBsdWdpbiBwcm9jZXNzLgorICAgICAgICAqIFBsdWdp
blByb2Nlc3MvZWZsL1BsdWdpbkNvbnRyb2xsZXJQcm94eUVmbC5jcHA6IEFkZGVkLiBNYWRlIHN0
dWJzIGZvciBQbHVnaW5Db250cm9sbGVyUHJveHkgbWV0aG9kcy4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybURl
c3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3Jt
R2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvZWZsL1BsdWdpblBy
b2Nlc3NFZmwuY3BwOiBBZGRlZC4gTWFkZSBzdHViIGZvciBwbGF0Zm9ybUluaXRpYWxpemUgbWV0
aG9kLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Q
cm9jZXNzTWFpbkVmbC5jcHA6IEFkZGVkLiBYMTEgZXJyb3IgaGFuZGxlciwgYW5kIG1haW4gcGx1
Z2luIHByb2Nlc3MgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
Ojp3ZWJraXRlZmxYRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbkVm
bCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc01haW5FZmwuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2Vm
bC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwOiBBZGRlZC4gU2Nhbm5pbmcgcGx1Z2luIGluIHNl
cGFyYXRlIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDogU3R1YnMgYWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9t
ZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2Vm
bC9QbHVnaW5Qcm94eUVmbC5jcHA6IEFkZGVkLiBTdHVicyBhZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5jcHA6IFBsdWdpbidzIHdpbmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJL
aXQ6OmdldFBsdWdpbkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAg
ICAgICAoV2ViS2l0OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93
SUQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAg
ICogY29uZmlnLmg6CisgICAgICAgICogZWZsL1BsdWdpbk1haW5FZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKG1haW4pOgorCiAyMDEyLTA3LTE5ICBab2x0YW4gTnl1bCAgPHpvbHRhbi5ueXVsQGlu
dGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFVzaW5nIGRpZmZlcmVudCBjYWNoZSBkaXJl
Y3RvcnkgZm9yIGVhY2ggV1RSIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NjEwNThjOS4uYTQ1NWNkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNiw4ICsx
NiwxNCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9BUEkvYy9j
YWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250
cm9sbGVyUHJveHlFZmwuY3BwCisgICAgUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0Vm
bC5jcHAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAKKwog
ICAgIFNoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsuY3BwCiAKKyAgICBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisKICAg
ICBTaGFyZWQvY2Fpcm8vTGF5ZXJUcmVlQ29udGV4dENhaXJvLmNwcAogICAgIFNoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIApAQCAtNjcsNiArNzMsNyBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVu
Y2hlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1RocmVhZExhdW5jaGVyRWZs
LmNwcAogCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQcm94eUVmbC5j
cHAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAK
ICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKQEAg
LTgwLDYgKzg3LDkgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL2VmbC9JbmplY3RlZEJ1bmRsZUVmbC5jcHAKIAorICAgIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlFZmwuY3BwCisgICAgV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKwogICAgIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkNvbnRleHRNZW51Q2xpZW50RWZsLmNwcAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAK
ICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCkBAIC0x
OTAsNiArMjAwLDMxIEBAIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5B
VElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7CiAKIEFERF9ERUZJTklUSU9O
UygiLURMSUJFWEVDRElSPVwiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vJHtFWEVDX0lOU1RBTExf
RElSfVwiIikKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVGSU5JVElP
TlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJvY2Vzc19O
QU1FIGJpbi9QbHVnaW5Qcm9jZXNzKQorICAgIExJU1QgKEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lO
Q0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXRUJLSVQyX0RJUn0KKyAgICAgICAgIiR7V0VC
S0lUMl9ESVJ9L1BsdWdpblByb2Nlc3MvZWZsIgorICAgICkKKworICAgIElOQ0xVREVfRElSRUNU
T1JJRVMoJHtQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorCisgICAgTElTVCAo
QVBQRU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUworICAgICAgICAke1dFQktJVDJfRElSfS9lZmwv
UGx1Z2luTWFpbkVmbC5jcHAKKyAgICApCisKKyAgICBTRVQoUGx1Z2luUHJvY2Vzc19MSUJSQVJJ
RVMKKyAgICAgICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VY
RUNVVEFCTEUoJHtQbHVnaW5Qcm9jZXNzX05BTUV9ICR7UGx1Z2luUHJvY2Vzc19TT1VSQ0VTfSkK
KyAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtQbHVnaW5Qcm9jZXNzX05BTUV9ICR7UGx1Z2lu
UHJvY2Vzc19MSUJSQVJJRVN9KQorICAgIFNFVF9UQVJHRVRfUFJPUEVSVElFUygke1BsdWdpblBy
b2Nlc3NfTkFNRX0gUFJPUEVSVElFUyBSVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0Vf
QklOQVJZX0RJUn0iKQorICAgIElOU1RBTEwoVEFSR0VUUyAke1BsdWdpblByb2Nlc3NfTkFNRX0g
REVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxMX0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExV
R0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVz
dC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpbkNvbnRyb2xsZXJQcm94eUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9sbGVyUHJv
eHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYTI0OTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5D
b250cm9sbGVyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisjaW5jbHVkZSAiTmV0c2NhcGVQ
bHVnaW4uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFu
Z2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzRWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTk2YjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFp
bkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNz
TWFpbkVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1Zjc5NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdp
blByb2Nlc3NNYWluRWZsLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbkVm
bC5oIgorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEVjb3JlLmg+Cisj
aW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNl
bmRpZgorCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgZGVmaW5lZChYUF9VTklYKQorc3Rh
dGljIGludCB3ZWJraXRlZmxYRXJyb3IoRGlzcGxheSogeGRpc3BsYXksIFhFcnJvckV2ZW50KiBl
cnJvcikKK3sKKyAgICBjaGFyIGVycm9yTWVzc2FnZVs2NF07CisgICAgWEdldEVycm9yVGV4dCh4
ZGlzcGxheSwgZXJyb3ItPmVycm9yX2NvZGUsIGVycm9yTWVzc2FnZSwgNjMpOworICAgIEVJTkFf
TE9HX0NSSVQoIlRoZSBwcm9ncmFtIHJlY2VpdmVkIGFuIFggV2luZG93IFN5c3RlbSBlcnJvci5c
biIKKyAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBidWcgaW4gYSBicm93
c2VyIHBsdWdpbi5cbiIKKyAgICAgICAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIKKyAg
ICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0
X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCisgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSwK
KyAgICAgICAgICAgICAgZXJyb3ItPnNlcmlhbCwgZXJyb3ItPmVycm9yX2NvZGUsCisgICAgICAg
ICAgICAgIGVycm9yLT5yZXF1ZXN0X2NvZGUsIGVycm9yLT5taW5vcl9jb2RlKTsKKyAgICByZXR1
cm4gMDsKK30KKyNlbmRpZgorCitpbnQgUGx1Z2luUHJvY2Vzc01haW5FZmwoaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0gMyk7CisgICAg
Ym9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4iKTsKKyAgICBB
U1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdpbikpOworCisgICAgaWYg
KCFlaW5hX2luaXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoIWVjb3JlX3hfaW5p
dCgwKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAgICBpZiAoc2NhblBsdWdp
bikgeworCisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFyZ3ZbMl0pOworCisgICAgICAgIGlm
ICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkpCisgICAgICAg
ICAgICByZXR1cm4gMTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSdW5Mb29w
Ojppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworI2lmIGRlZmluZWQoWFBfVU5JWCkKKyAgICBY
U2V0RXJyb3JIYW5kbGVyKHdlYmtpdGVmbFhFcnJvcik7CisjZW5kaWYKKworICAgIGludCBzb2Nr
ZXQgPSBhdG9pKGFyZ3ZbMV0pOworCisgICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFyZWQo
KS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBSdW5Mb29wOjpydW4o
KTsKKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NNYWluRWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVm
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNWM2YWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNz
TWFpbkVmbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBsdWdpblByb2Nlc3NNYWluRWZsX2gKKyNkZWZpbmUgUGx1Z2luUHJvY2Vzc01haW5F
ZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3Bs
dXMKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkVmbChpbnQgYXJnYywgY2hhciog
YXJndltdKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9IC8vIGV4dGVybiAiQyIKKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBsdWdp
blByb2Nlc3NNYWluRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQcm94eUVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAwOTUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3Bw
CkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlByb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1
Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworICAgIENTdHJp
bmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aE9m
UGx1Z2luUHJvY2VzcygpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07CisgICAg
YXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBhcmd2
WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlszXSA9
IDA7CisKKyAgICBpbnQgc3RhdHVzOworICAgIGNoYXIqIHN0ZE91dDsKKworICAgIGlmICghZ19z
cGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAm
c3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VDQ0VT
UykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVz
RXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07CisgICAg
dW5zaWduZWQgbGluZUluZGV4ID0gMDsKKyAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQpOworICAgIHdoaWxlIChsaW5lSW5kZXgg
PCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJy
ZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAg
ICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0g
MSk7CisgICAgfQorCisgICAgaWYgKHN0ZE91dCkKKyAgICAgICAgZnJlZShzdGRPdXQpOworCisg
ICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3
YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7
CisKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVzY3JpcHRpb24uaXNFbXB0eSgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApp
bmRleCBlMWVkYTEwLi45ODIxYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04Myw0ICs4MywxNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGhlbWVQYXRoKHRoZW1lUGF0aCksIG1fcGFn
ZUlELCAwKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1
aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwg
dWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdpblByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNzQxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdpblByb3h5
RWZsLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IGRhMjQ3OGQuLmRj
Mzg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0zNywx
NSArMzcsMjAgQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxXZWJDb3JlL1F0WDExSW1h
Z2VDb252ZXJzaW9uLmg+CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgPGNhaXJv
L2NhaXJvLXhsaWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaWZuZGVmIEdUS19BUElfVkVS
U0lPTl8yCiAjaW5jbHVkZSA8Z3RrL2d0a3guaD4KICNlbmRpZgogI2luY2x1ZGUgPGdkay9nZGt4
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CisjZWxpZiBQTEFURk9STShF
RkwpCisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspIHx8
IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvL2NhaXJv
LXhsaWIuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg0LDYgKzg5
LDggQEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXkoKQogICAgIC8vIFNpbmNlIHdl
J3JlIGEgZ2RrL2d0ayBhcHAsIHdlJ2xsIChwcm9iYWJseT8pIGhhdmUgdGhlIHNhbWUgWCBjb25u
ZWN0aW9uIGFzIGFueSBnZGstYmFzZWQKICAgICAvLyBwbHVnaW5zLCBzbyB3ZSBjYW4gcmV0dXJu
IHRoYXQuIFdlIG1pZ2h0IHdhbnQgdG8gYWRkIG90aGVyIGltcGxlbWVudGF0aW9ucyBoZXJlIGxh
dGVyLgogICAgIHJldHVybiBHREtfRElTUExBWV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVm
YXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlz
cGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2Vu
ZGlmCkBAIC05NSw2ICsxMDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCB4MTFTY3JlZW4oKQogICAg
IHJldHVybiBYRGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSk7
CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka19zY3JlZW5fZ2V0X251bWJlcihn
ZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHJldHVy
biBlY29yZV94X3NjcmVlbl9pbmRleF9nZXQoZWNvcmVfeF9kZWZhdWx0X3NjcmVlbl9nZXQoKSk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xMDYsNiArMTE1LDggQEAgc3RhdGlj
IGlubGluZSBpbnQgZGlzcGxheURlcHRoKCkKICAgICByZXR1cm4gWERlZmF1bHREZXB0aChOZXRz
Y2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSwgeDExU2NyZWVuKCkpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHJldHVybiBnZGtfdmlzdWFsX2dldF9kZXB0aChnZGtfc2NyZWVuX2dldF9z
eXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSkpOworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0KE5ldHNjYXBlUGx1Z2lu
Ojp4MTFIb3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNl
CiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTExNyw2ICsxMjgsOCBAQCBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkKICAgICByZXR1cm4gWERlZmF1bHRSb290V2lu
ZG93KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpKTsKICNlbGlmIFBMQVRGT1JNKEdU
SykKICAgICByZXR1cm4gR0RLX1JPT1RfV0lORE9XKCk7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgcmV0dXJuIGVjb3JlX3hfd2luZG93X3Jvb3RfZmlyc3RfZ2V0KCk7CiAjZWxzZQogICAgIHJl
dHVybiAwOwogI2VuZGlmCkBAIC0xNDQsNiArMTU3LDggQEAgRGlzcGxheSogTmV0c2NhcGVQbHVn
aW46OngxMUhvc3REaXNwbGF5KCkKICAgICByZXR1cm4gZGVkaWNhdGVkRGlzcGxheTsKICNlbGlm
IFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3Bs
YXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERpc3BsYXkqPihlY29yZV94X2Rpc3BsYXlfZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1
cm4gMDsKICNlbmRpZgpAQCAtMzU3LDcgKzM3Miw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
CiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludChleHBvc2VkUmVjdC54KCksIGV4cG9zZWRS
ZWN0LnkoKSksIHFpbWFnZUZyb21YSW1hZ2UoeEltYWdlKSwgZXhwb3NlZFJlY3QpOwogCiAgICAg
WERlc3Ryb3lJbWFnZSh4SW1hZ2UpOwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgUExBVEZP
Uk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBVU0UoQ0FJUk8pKQogICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFj
ZV9jcmVhdGUobV9wbHVnaW5EaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kcmF3
YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2Fs
bGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pLT52aXN1YWwsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCmluZGV4IDRi
YjFmOGQuLmNkNGE2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGNvbnN0
IHR5cGUmIG5hbWUoKSBcCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfTUFDIDEKICNlbGlm
IFBMQVRGT1JNKFdJTikKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9XSU4gMQotI2VsaWYg
UExBVEZPUk0oR1RLKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19YKSkKKyNlbGlmIChQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpICYmIChPUyhVTklYKSAmJiAhT1MoTUFDX09TX1gp
KQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMSAxCiAjZWxzZQogI2RlZmluZSBQTFVH
SU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEIDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L2VmbC9QbHVnaW5NYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL2VmbC9QbHVnaW5NYWluRWZs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGU3YjVmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvZWZsL1BsdWdpbk1haW5FZmwuY3BwCkBAIC0wLDAg
KzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc01haW5FZmwuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAg
IHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluRWZsKGFyZ2MsIGFyZ3YpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQppbmRleCAwYTM5NTM0Li5mMzBjOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQpAQCAtODMsNyArODMsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfR0xJQl9TVVBQT1JUIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1IgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTEVHQUNZX1dFQktJVF9CTE9CX0JVSUxERVIgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQotV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQorV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19JTkZPIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVHSVNURVJf
UFJPVE9DT0xfSEFORExFUiBPTikKQEAgLTE1MywzICsxNTMsNyBAQCBJRiAoRU5BQkxFX1dFQkdM
KQogRU5ESUYgKCkKIAogU0VUKENQQUNLX1NPVVJDRV9HRU5FUkFUT1IgVEJaMikKKworSUYgKEVO
QUJMRV9XRUJLSVQyKQorICAgIFNFVChFTkFCTEVfUExVR0lOX1BST0NFU1MgMSkKK0VORElGICgp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWYw
YjE0Yy4uOWE5OTc2MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3LTE5ICBNYXJpdXN6IEdyemVnb3Jjenlr
ICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gUGx1Z2luIHBy
b2Nlc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIG9wdGlvbiBieSBkZWZhdWx0
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEy
LTA3LTE5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBFbmFibGUgTUhUTUwgc3VwcG9ydCBieSBkZWZhdWx0IGF0IGJ1aWxkIHRpbWUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBmNzI2YjVlLi4zMTY2
MmQ5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMDMsNyAr
MzAzLDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTVVUQVRJ
T05fT0JTRVJWRVJTIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJG11dGF0aW9uT2JzZXJ2ZXJz
U3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5ldHNjYXBlLXBsdWdpbi1hcGkiLCBkZXNj
ID0+ICJUb2dnbGUgTmV0c2NhcGUgUGx1Z2luIEFQSSBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1
ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRuZXRzY2Fw
ZVBsdWdpbkFQSVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJuZXR3b3JrLWluZm8iLCBk
ZXNjID0+ICJUb2dnbGUgTmV0d29yayBJbmZvIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfTkVUV09SS19JTkZPIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHdv
cmtJbmZvU3VwcG9ydCB9LAo=
</data>
<flag name="commit-queue"
          id="162517"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159885</attachid>
            <date>2012-08-22 02:10:39 -0700</date>
            <delta_ts>2012-09-12 07:08:29 -0700</delta_ts>
            <desc>Rebased, and applied KwangYong Choi&apos;s comments</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>30097</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiYWJmM2NmLi5jYjA2MmY5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDgtMjEgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNj
YXBlIFBsdWdpbiBBUEkgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTA4LTIwICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRW5hYmxlIFhIUiBSZXNwb25zZSBCTE9C
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMWVkNDFhMy4uN2IzZTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5
IEBACisyMDEyLTA4LTIxICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gUGx1Z2luIHByb2Nlc3MgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHdpbmRvd2xlc3MgcGx1Z2luIGFuZCBmdW5jdGlvbnMgbmVlZGVkIHRvIGxhdW5jaCBQbHVnaW5Q
cm9jZXNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVkIGZpbGVzIG5lZWRl
ZCBieSBwbHVnaW4gcHJvY2Vzcy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5D
b250cm9sbGVyUHJveHlFZmwuY3BwOiBBZGRlZC4gTWFkZSBzdHVicyBmb3IgUGx1Z2luQ29udHJv
bGxlclByb3h5IG1ldGhvZHMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzRWZsLmNwcDogQWRkZWQu
IE1hZGUgc3R1YiBmb3IgcGxhdGZvcm1Jbml0aWFsaXplIG1ldGhvZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc01haW5FZmwuY3BwOiBB
ZGRlZC4gWDExIGVycm9yIGhhbmRsZXIsIGFuZCBtYWluIHBsdWdpbiBwcm9jZXNzIGZ1bmN0aW9u
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6d2Via2l0ZWZsWEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5FZmwpOgorICAgICAgICAqIFBsdWdp
blByb2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NNYWluRWZsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9lZmwvUGx1Z2luUHJvY2Vzc1Byb3h5
RWZsLmNwcDogQWRkZWQuIFNjYW5uaW5nIHBsdWdpbiBpbiBzZXBhcmF0ZSBwcm9jZXNzLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0
Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHA6IFN0dWJzIGFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlFZmwuY3Bw
OiBBZGRlZC4gU3R1YnMgYWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOiBQbHVnaW4ncyB3aW5k
b3dsZXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpnZXRQbHVnaW5EaXNwbGF5
KToKKyAgICAgICAgKFdlYktpdDo6eDExU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGxh
eURlcHRoKToKKyAgICAgICAgKFdlYktpdDo6cm9vdFdpbmRvd0lEKToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAg
ICAqIGVmbC9QbHVnaW5NYWluRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChtYWluKToKKwogMjAx
Mi0wOC0yMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIG5ld2VyIFF0IDU6IFFUICs9IHFtbHRlc3Qg
ZG9lcyBub3QgaW1wbHkgUVQgKz0gdGVzdGxpYiBhbnltb3JlLCBidXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggZDRiMDhmOC4uODNjYmEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKQEAgLTE1LDYgKzE1LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBs
YXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVn
aW5Db250cm9sbGVyUHJveHlFZmwuY3BwCisgICAgUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJv
Y2Vzc0VmbC5jcHAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5j
cHAKKwogICAgIFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFy
ZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcApAQCAtMzEsNiArMzUsOCBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5jcHAKICAgICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcAogCisgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9k
dWxlWDExLmNwcAorCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAg
ICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTgzLDYg
Kzg5LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvTGF1
bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKIAorICAgIFVJUHJvY2Vzcy9QbHVnaW5z
L2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAv
V2ViQ29va2llTWFuYWdlclNvdXAuY3BwCkBAIC05Niw2ICsxMDMsOSBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVj
dGVkQnVuZGxlRWZsLmNwcAogCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2VmbC9Q
bHVnaW5Qcm94eUVmbC5jcHAKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luWDExLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwv
V2ViQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKQEAgLTIxNyw2ICsyMjcsMzEgQEAgU0VUIChFV2ViS2l0
Ml9IRUFERVJTCiBJTlNUQUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwv
ZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtF
V2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05B
TUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VT
UykKKyAgICBBRERfREVGSU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAg
IFNFVCAoUGx1Z2luUHJvY2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBM
SVNUIChBUFBFTkQgUGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICR7
V0VCS0lUMl9ESVJ9CisgICAgICAgICIke1dFQktJVDJfRElSfS9QbHVnaW5Qcm9jZXNzL2VmbCIK
KyAgICApCisKKyAgICBJTkNMVURFX0RJUkVDVE9SSUVTKCR7UGx1Z2luUHJvY2Vzc19JTkNMVURF
X0RJUkVDVE9SSUVTfSkKKworICAgIExJU1QgKEFQUEVORCBQbHVnaW5Qcm9jZXNzX1NPVVJDRVMK
KyAgICAgICAgJHtXRUJLSVQyX0RJUn0vZWZsL1BsdWdpbk1haW5FZmwuY3BwCisgICAgKQorCisg
ICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisgICAgICAgICAke1dlYktpdDJfTElCUkFS
WV9OQU1FfQorICAgICkKKworICAgIEFERF9FWEVDVVRBQkxFKCR7UGx1Z2luUHJvY2Vzc19FWEVD
VVRBQkxFX05BTUV9ICR7UGx1Z2luUHJvY2Vzc19TT1VSQ0VTfSkKKyAgICBUQVJHRVRfTElOS19M
SUJSQVJJRVMoJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNz
X0xJQlJBUklFU30pCisgICAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKCR7UGx1Z2luUHJvY2Vzc19F
WEVDVVRBQkxFX05BTUV9IFBST1BFUlRJRVMgUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke0NN
QUtFX0JJTkFSWV9ESVJ9IikKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQbHVnaW5Qcm9jZXNzX0VY
RUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxMX0RJUn0iKQorRU5ESUYg
KCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJE
UEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpbkNvbnRy
b2xsZXJQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVn
aW5Db250cm9sbGVyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjBkYTI0OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL2VmbC9QbHVnaW5Db250cm9sbGVyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1
Z2luQ29udHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisjaW5j
bHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3Jt
R2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0Vm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzRWZs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTk2YjJhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vz
c0VmbC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCisKKyNpZiBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3Qg
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9Q
bHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2Vm
bC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMGI1Zjc5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NNYWluRWZsLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzTWFpbkVmbC5oIgorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorI2luY2x1
ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVu
TG9vcC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisjaW5jbHVkZSA8
WDExL1hsaWIuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWYgZGVmaW5l
ZChYUF9VTklYKQorc3RhdGljIGludCB3ZWJraXRlZmxYRXJyb3IoRGlzcGxheSogeGRpc3BsYXks
IFhFcnJvckV2ZW50KiBlcnJvcikKK3sKKyAgICBjaGFyIGVycm9yTWVzc2FnZVs2NF07CisgICAg
WEdldEVycm9yVGV4dCh4ZGlzcGxheSwgZXJyb3ItPmVycm9yX2NvZGUsIGVycm9yTWVzc2FnZSwg
NjMpOworICAgIEVJTkFfTE9HX0NSSVQoIlRoZSBwcm9ncmFtIHJlY2VpdmVkIGFuIFggV2luZG93
IFN5c3RlbSBlcnJvci5cbiIKKyAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMg
YSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKKyAgICAgICAgICAgICAgIlRoZSBlcnJvciB3
YXMgJyVzJy5cbiIKKyAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3Jf
Y29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCisgICAgICAgICAgICAg
IGVycm9yTWVzc2FnZSwKKyAgICAgICAgICAgICAgZXJyb3ItPnNlcmlhbCwgZXJyb3ItPmVycm9y
X2NvZGUsCisgICAgICAgICAgICAgIGVycm9yLT5yZXF1ZXN0X2NvZGUsIGVycm9yLT5taW5vcl9j
b2RlKTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitpbnQgUGx1Z2luUHJvY2Vzc01haW5F
ZmwoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFy
Z2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5Q
bHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdp
bikpOworCisgICAgaWYgKCFlaW5hX2luaXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBp
ZiAoIWVjb3JlX3hfaW5pdCgwKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisKKyAg
ICBpZiAoc2NhblBsdWdpbikgeworCisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFyZ3ZbMl0p
OworCisgICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2lu
UGF0aCkpCisgICAgICAgICAgICByZXR1cm4gMTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworI2lmIGRlZmluZWQo
WFBfVU5JWCkKKyAgICBYU2V0RXJyb3JIYW5kbGVyKHdlYmtpdGVmbFhFcnJvcik7CisjZW5kaWYK
KworICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOworCisgICAgV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKKyAg
ICBSdW5Mb29wOjpydW4oKTsKKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdp
blByb2Nlc3NNYWluRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVn
aW5Qcm9jZXNzTWFpbkVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFh
NWM2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2Vm
bC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMg
Q29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFBsdWdpblByb2Nlc3NNYWluRWZsX2gKKyNkZWZpbmUgUGx1
Z2luUHJvY2Vzc01haW5FZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYgLy8gX19jcGx1c3BsdXMKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkVmbChp
bnQgYXJnYywgY2hhciogYXJndltdKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9IC8vIGV4dGVy
biAiQyIKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQcm94eUVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAwOTUzNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2VmbC9QbHVnaW5Qcm9j
ZXNzUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1
ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxnbGli
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Q
cm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5Q
bHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0
KQoreworICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihl
eGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhD
U3RyaW5nID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIq
IGFyZ3ZbNF07CisgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0
YSgpKTsKKyAgICBhcmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7Cisg
ICAgYXJndlsyXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7
CisgICAgYXJndlszXSA9IDA7CisKKyAgICBpbnQgc3RhdHVzOworICAgIGNoYXIqIHN0ZE91dDsK
KworICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RF
Vl9OVUxMLCAwLCAwLCAmc3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMp
ICE9IEVYSVRfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5z
aWduZWQga051bUxpbmVzRXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNF
eHBlY3RlZF07CisgICAgdW5zaWduZWQgbGluZUluZGV4ID0gMDsKKyAgICBjb25zdCBVQ2hhciog
Y3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQpOworICAgIHdo
aWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBVQ2hh
ciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcign
XG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3Vy
cmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgaWYgKHN0ZE91dCkKKyAgICAgICAgZnJl
ZShzdGRPdXQpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7CisgICAgcmVzdWx0
LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24u
c3dhcChsaW5lc1syXSk7CisKKyAgICByZXR1cm4gIXJlc3VsdC5taW1lRGVzY3JpcHRpb24uaXNF
bXB0eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFn
ZVByb3h5RWZsLmNwcAppbmRleCBlMWVkYTEwLi45ODIxYmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04Myw0ICs4MywxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRo
KQogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGhlbWVQYXRoKHRo
ZW1lUGF0aCksIG1fcGFnZUlELCAwKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBs
dWdpbkNvbnRhaW5lcih1aW50NjRfdCYgd2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdpblByb3h5RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlF
ZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNzQxZDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
ZWZsL1BsdWdpblByb3h5RWZsLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCisK
KyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFBsdWdpblByb3h5OjpuZWVk
c0JhY2tpbmdTdG9yZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmlu
ZGV4IGRhMjQ3OGQuLmRjMzg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwCkBAIC0zNywxNSArMzcsMjAgQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxX
ZWJDb3JlL1F0WDExSW1hZ2VDb252ZXJzaW9uLmg+CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgot
I2luY2x1ZGUgPGNhaXJvL2NhaXJvLXhsaWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaWZu
ZGVmIEdUS19BUElfVkVSU0lPTl8yCiAjaW5jbHVkZSA8Z3RrL2d0a3guaD4KICNlbmRpZgogI2lu
Y2x1ZGUgPGdkay9nZGt4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+Cisj
ZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2VuZGlmCisKKyNpZiBQ
TEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCisjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1
ZGUgPGNhaXJvL2NhaXJvLXhsaWIuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTg0LDYgKzg5LDggQEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXkoKQog
ICAgIC8vIFNpbmNlIHdlJ3JlIGEgZ2RrL2d0ayBhcHAsIHdlJ2xsIChwcm9iYWJseT8pIGhhdmUg
dGhlIHNhbWUgWCBjb25uZWN0aW9uIGFzIGFueSBnZGstYmFzZWQKICAgICAvLyBwbHVnaW5zLCBz
byB3ZSBjYW4gcmV0dXJuIHRoYXQuIFdlIG1pZ2h0IHdhbnQgdG8gYWRkIG90aGVyIGltcGxlbWVu
dGF0aW9ucyBoZXJlIGxhdGVyLgogICAgIHJldHVybiBHREtfRElTUExBWV9YRElTUExBWShnZGtf
ZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAg
IHJldHVybiAwOwogI2VuZGlmCkBAIC05NSw2ICsxMDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCB4
MTFTY3JlZW4oKQogICAgIHJldHVybiBYRGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdpbjo6eDEx
SG9zdERpc3BsYXkoKSk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka19zY3Jl
ZW5fZ2V0X251bWJlcihnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIHJldHVybiBlY29yZV94X3NjcmVlbl9pbmRleF9nZXQoZWNvcmVfeF9kZWZhdWx0
X3NjcmVlbl9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xMDYsNiAr
MTE1LDggQEAgc3RhdGljIGlubGluZSBpbnQgZGlzcGxheURlcHRoKCkKICAgICByZXR1cm4gWERl
ZmF1bHREZXB0aChOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSwgeDExU2NyZWVuKCkp
OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBnZGtfdmlzdWFsX2dldF9kZXB0aChn
ZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSkpOwor
I2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0
KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVu
X2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTExNyw2ICsxMjgsOCBA
QCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkKICAgICByZXR1cm4g
WERlZmF1bHRSb290V2luZG93KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpKTsKICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX1JPT1RfV0lORE9XKCk7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgcmV0dXJuIGVjb3JlX3hfd2luZG93X3Jvb3RfZmlyc3RfZ2V0KCk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNDQsNiArMTU3LDggQEAgRGlzcGxh
eSogTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkKICAgICByZXR1cm4gZGVkaWNhdGVk
RGlzcGxheTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX0RJU1BMQVlfWERJ
U1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERpc3BsYXkqPihlY29yZV94X2Rpc3BsYXlfZ2V0KCkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMzU3LDcgKzM3Miw3IEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkaXJ0CiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludChleHBvc2VkUmVj
dC54KCksIGV4cG9zZWRSZWN0LnkoKSksIHFpbWFnZUZyb21YSW1hZ2UoeEltYWdlKSwgZXhwb3Nl
ZFJlY3QpOwogCiAgICAgWERlc3Ryb3lJbWFnZSh4SW1hZ2UpOwotI2VsaWYgUExBVEZPUk0oR1RL
KQorI2VsaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBVU0UoQ0FJUk8pKQog
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNh
aXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9wbHVnaW5EaXNwbGF5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9kcmF3YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pLT52aXN1YWws
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL2Nv
bmZpZy5oCmluZGV4IDRiYjFmOGQuLmNkNGE2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L2NvbmZpZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCkBAIC0xMDYsNyArMTA2LDcg
QEAgc3RhdGljIGNvbnN0IHR5cGUmIG5hbWUoKSBcCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RV
UkVfTUFDIDEKICNlbGlmIFBMQVRGT1JNKFdJTikKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVS
RV9XSU4gMQotI2VsaWYgUExBVEZPUk0oR1RLKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19Y
KSkKKyNlbGlmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpICYmIChPUyhVTklYKSAm
JiAhT1MoTUFDX09TX1gpKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMSAxCiAjZWxz
ZQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1VOU1VQUE9SVEVEIDEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL2VmbC9QbHVnaW5NYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL2Vm
bC9QbHVnaW5NYWluRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
MGU3YjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvZWZsL1BsdWdpbk1haW5F
ZmwuY3BwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEw
IE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc01haW5FZmwuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluRWZsKGFyZ2Ms
IGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAyM2U3NjliLi4wYjkwNzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQpAQCAtNzksNyArNzksNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX1dFQktJVF9CTE9CX0JVSUxERVIgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTElOS19QUkVGRVRDSCBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01JQ1JPREFUQSBPTikKLVdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIE9G
RikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdP
UktfSU5GTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QQUdF
X1ZJU0lCSUxJVFlfQVBJIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIgT04pCkBAIC0xMjAsNiArMTIwLDEwIEBAIFNF
VChXVEZfVVNFX0hBUkZCVVpaX05HIDEpCiBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0ZSRUVU
WVBFPTEpCiBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0hBUkZCVVpaX05HPTEpCiAKK0lGIChF
TkFCTEVfV0VCS0lUMikKKyAgICBTRVQoRU5BQkxFX1BMVUdJTl9QUk9DRVNTIDEpCitFTkRJRiAo
KQorCiBJRiAoTk9UIEVOQUJMRV9TVkcpCiAgIFNFVChFTkFCTEVfU1ZHX0ZPTlRTIDApCiBFTkRJ
RiAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGEzY2IwNWIuLjM4YjFlNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0yMSAgTWFyaXVzeiBHcnplZ29y
Y3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFBsdWdp
biBwcm9jZXNzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFR1cm4gb24gTmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRpb24gYnkgZGVm
YXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwog
MjAxMi0wOC0yMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIG5ld2VyIFF0IDU6IFRoZSBtZWFuaW5n
IG9mIHByaXZhdGVfaW5jbHVkZXMgY2hhbmdlZCB0byBiZSBmdWxseQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IDRlZDMxNGUuLjg2NGM0MGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTMyMiw3ICszMjIsNyBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMiLCBk
ZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkbXV0YXRpb25PYnNlcnZlcnNTdXBwb3J0IH0sCiAKICAg
ICB7IG9wdGlvbiA9PiAibmV0c2NhcGUtcGx1Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRz
Y2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NB
UEVfUExVR0lOX0FQSSIsIGRlZmF1bHQgPT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQ
bHVnaW5BUElTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5ldHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBO
ZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lO
Rk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163620</attachid>
            <date>2012-09-12 07:08:29 -0700</date>
            <delta_ts>2012-09-12 09:27:49 -0700</delta_ts>
            <desc>Rebased, applied comments</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>31167</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyYjdiYzhlLi5mYmJkMTUz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMDcgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNj
YXBlIFBsdWdpbiBBUEkgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTA5LTA2ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gUmVtb3ZlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBm
b3IgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgR3RrIHBvcnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA1MWM2MmI2Li5hZDNiNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDktMDcgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViQ29yZVN1cHBv
cnQgdG8gV2ViQ29yZSdzIGluY2x1ZGUgZGlyZWN0b3JpZXMuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZToKKwogMjAxMi0wOS0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JOiByZW1vdmUgRGF0YVJlZiBp
bnN0cnVtZW50YXRpb24gZnJvbSB0aGUgY29yZSBOTUkgY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggYjlhZjk4ZS4uYjkwMzViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTEzLDYgKzEzLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS90ZXh0L2VmbCIKICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMvZWZsIgor
ICAiJHtXRUJLSVRfRElSfS9lZmwvV2ViQ29yZVN1cHBvcnQiCiApCiAKIExJU1QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFjN2E1MmUuLjY1ODI2MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OSBAQAorMjAxMi0wOS0wNyAgTWFyaXVzeiBHcnplZ29yY3p5ayAgPG1hcml1
c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFBsdWdpbiBwcm9jZXNzIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCB3aW5kb3dsZXNzIHBsdWdpbiBhbmQgZnVuY3Rpb25zIG5lZWRlZCB0byBs
YXVuY2ggUGx1Z2luUHJvY2Vzcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGRl
ZCBmaWxlcyBuZWVkZWQgYnkgcGx1Z2luIHByb2Nlc3MuCisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9lZmwvUGx1Z2luQ29udHJvbGxlclByb3h5RWZsLmNwcDogQWRkZWQuIE1hZGUgc3R1YnMgZm9y
IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBtZXRob2RzLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJveSk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRy
eURpZENoYW5nZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0Vm
bC5jcHA6IEFkZGVkLiBNYWRlIHN0dWIgZm9yIHBsYXRmb3JtSW5pdGlhbGl6ZSBtZXRob2QuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemUpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NN
YWluRWZsLmNwcDogQWRkZWQuIFgxMSBlcnJvciBoYW5kbGVyLCBhbmQgbWFpbiBwbHVnaW4gcHJv
Y2VzcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtp
dGVmbFhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluRWZsKToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdp
blByb2Nlc3NQcm94eUVmbC5jcHA6IEFkZGVkLiBTY2FubmluZyBwbHVnaW4gaW4gc2VwYXJhdGUg
cHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOiBTdHVicyBhZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjcmVhdGVQbHVnaW5Db250YWluZXIpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlk
Q2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdp
blByb3h5RWZsLmNwcDogQWRkZWQuIFN0dWJzIGFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om5lZWRzQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDog
UGx1Z2luJ3Mgd2luZG93bGVzcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6Z2V0
UGx1Z2luRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OngxMVNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OmRpc3BsYXlEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OnJvb3RXaW5kb3dJRCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KToKKyAgICAgICAgKiBjb25m
aWcuaDoKKyAgICAgICAgKiBlZmwvUGx1Z2luTWFpbkVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
bWFpbik6CisKIDIwMTItMDktMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55
YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl0gQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUxv
YWRlckNsaWVudD4gYW5kIEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+
IGFyZSBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggYjQ5MjQ3Zi4uOTM5YTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE1LDYg
KzE1LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJ
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0
YWNobWVudFVuaXguY3BwCiAKKyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9sbGVy
UHJveHlFZmwuY3BwCisgICAgUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAK
KyAgICBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAKKwogICAgIFNo
YXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3Rr
L1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcApAQCAtMzMsNiArMzcsOCBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5j
cHAKICAgICBTaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAg
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAor
CiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAgICAgVUlQcm9jZXNz
L0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTg4LDYgKzk0LDggQEAgTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1By
b2Nlc3NMYXVuY2hlckVmbC5jcHAKIAorICAgIFVJUHJvY2Vzcy9QbHVnaW5zL2VmbC9QbHVnaW5Q
cm9jZXNzUHJveHlFZmwuY3BwCisKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbklu
Zm9TdG9yZVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVN
YW5hZ2VyU291cC5jcHAKQEAgLTk4LDYgKzEwNiwxMCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxl
RWZsLmNwcAogCisgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2VmbC9QbHVnaW5Qcm94
eUVmbC5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5YMTEuY3BwCisKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJDb250
ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9X
ZWJFZGl0b3JDbGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwv
V2ViRXJyb3JzRWZsLmNwcApAQCAtMjI3LDYgKzIzOSwyOSBAQCBTRVQgKEVXZWJLaXQyX0hFQURF
UlMKIElOU1RBTEwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0
Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQogSU5TVEFMTChGSUxFUyAke0VXZWJLaXQy
X0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0tJHtQ
Uk9KRUNUX1ZFUlNJT05fTUFKT1J9KQogCitJRiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTKQorICAg
IEFERF9ERUZJTklUSU9OUygtREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xKQorCisgICAgU0VUIChQ
bHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRSBQbHVnaW5Qcm9jZXNzKQorICAgIExJU1QgKEFQ
UEVORCBQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1BsdWdpblByb2Nlc3MvZWZsIgorICAgICkKKworICAgIElOQ0xVREVfRElSRUNUT1JJ
RVMoJHtQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorCisgICAgTElTVCAoQVBQ
RU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUworICAgICAgICAke1dFQktJVDJfRElSfS9lZmwvUGx1
Z2luTWFpbkVmbC5jcHAKKyAgICApCisKKyAgICBTRVQoUGx1Z2luUHJvY2Vzc19MSUJSQVJJRVMK
KyAgICAgICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNV
VEFCTEUoJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NP
VVJDRVN9KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VU
QUJMRV9OQU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdF
VFMgJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19J
TlNUQUxMX0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVE
RV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdL
MlVuaXRUZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvZWZsL1BsdWdpbkNvbnRyb2xsZXJQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9sbGVyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZTQwMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9sbGVyUHJveHlFZmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3Jt
RGVzdHJveSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L2VmbC9QbHVnaW5Qcm9jZXNzRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lYTk2YjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzLmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzTWFpbkVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZDg1MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NNYWluRWZsLmNwcApA
QCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbkVmbC5oIgorCisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX1gu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorCisjaWYgZGVmaW5lZChYUF9VTklYKQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjZW5k
aWYKKworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIGRlZmluZWQoWFBfVU5JWCkKK3N0YXRp
YyBpbnQgd2Via2l0ZWZsWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBYRXJyb3JFdmVudCogZXJy
b3IpCit7CisgICAgY2hhciBlcnJvck1lc3NhZ2VbNjRdOworICAgIFhHZXRFcnJvclRleHQoeGRp
c3BsYXksIGVycm9yLT5lcnJvcl9jb2RlLCBlcnJvck1lc3NhZ2UsIDYzKTsKKyAgICBFSU5BX0xP
R19DUklUKCJUaGUgcHJvZ3JhbSByZWNlaXZlZCBhbiBYIFdpbmRvdyBTeXN0ZW0gZXJyb3IuXG4i
CisgICAgICAgICAgICAgICJUaGlzIHByb2JhYmx5IHJlZmxlY3RzIGEgYnVnIGluIGEgYnJvd3Nl
ciBwbHVnaW4uXG4iCisgICAgICAgICAgICAgICJUaGUgZXJyb3Igd2FzICclcycuXG4iCisgICAg
ICAgICAgICAgICIgIChEZXRhaWxzOiBzZXJpYWwgJWxkIGVycm9yX2NvZGUgJWQgcmVxdWVzdF9j
b2RlICVkIG1pbm9yX2NvZGUgJWQpXG4iLAorICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UsCisg
ICAgICAgICAgICAgIGVycm9yLT5zZXJpYWwsIGVycm9yLT5lcnJvcl9jb2RlLAorICAgICAgICAg
ICAgICBlcnJvci0+cmVxdWVzdF9jb2RlLCBlcnJvci0+bWlub3JfY29kZSk7CisgICAgcmV0dXJu
IDA7Cit9CisjZW5kaWYKKworaW50IFBsdWdpblByb2Nlc3NNYWluRWZsKGludCBhcmdjLCBjaGFy
KiBhcmd2W10pCit7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOworICAgIGJv
b2wgc2NhblBsdWdpbiA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7CisgICAgQVNT
RVJUKGFyZ2MgPT0gMiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKKworICAgIGlmICgh
ZWluYV9pbml0KCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFlY29yZV94X2luaXQo
MCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOworCisgICAgaWYgKHNjYW5QbHVnaW4pIHsKKyAgICAgICAgU3RyaW5nIHBs
dWdpblBhdGgoYXJndlsyXSk7CisKKyAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKKyAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgp
OworCisjaWYgZGVmaW5lZChYUF9VTklYKQorICAgIFhTZXRFcnJvckhhbmRsZXIod2Via2l0ZWZs
WEVycm9yKTsKKyNlbmRpZgorCisgICAgaW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7CisKKyAg
ICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5M
b29wOjptYWluKCkpOworICAgIFJ1bkxvb3A6OnJ1bigpOworCisgICAgcmV0dXJuIDA7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJv
Y2Vzc01haW5FZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpblBy
b2Nlc3NNYWluRWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE1YzZh
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1Bs
dWdpblByb2Nlc3NNYWluRWZsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5FZmxfaAorI2RlZmluZSBQbHVnaW5Q
cm9jZXNzTWFpbkVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCitXS19FWFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluRWZsKGludCBh
cmdjLCBjaGFyKiBhcmd2W10pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30gLy8gZXh0ZXJuICJD
IgorI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUGx1Z2luUHJvY2Vzc01haW5FZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQcm94eUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9lZmwvUGx1Z2luUHJvY2Vzc1Byb3h5RWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJmYjQxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZWZsL1BsdWdpblByb2Nlc3NQ
cm94eUVmbC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBO
b2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisK
KyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAi
UHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nl
c3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdp
bihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQpCit7
CisjaWYgRU5BQkxFKEdMSUJfU1VQUE9SVCkKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7Cisg
ICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
bHVnaW5QYXRoKTsKKyAgICBjaGFyKiBhcmd2WzRdOworICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0
PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7CisgICAgYXJndlsxXSA9IGNvbnN0X2Nhc3Q8Y2hh
cio+KCItc2NhblBsdWdpbiIpOworICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihwbHVn
aW5QYXRoQ1N0cmluZy5kYXRhKCkpOworICAgIGFyZ3ZbM10gPSAwOworCisgICAgaW50IHN0YXR1
czsKKyAgICBjaGFyKiBzdGRPdXQ7CisKKyAgICBpZiAoIWdfc3Bhd25fc3luYygwLCBhcmd2LCAw
LCBHX1NQQVdOX1NUREVSUl9UT19ERVZfTlVMTCwgMCwgMCwgJnN0ZE91dCwgMCwgJnN0YXR1cywg
MCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghV0lGRVhJVEVEKHN0YXR1cykg
fHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5lc0V4cGVjdGVkID0gMzsKKyAgICBT
dHJpbmcgbGluZXNba051bUxpbmVzRXhwZWN0ZWRdOworICAgIHVuc2lnbmVkIGxpbmVJbmRleCA9
IDA7CisgICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVD
aGFyKj4oc3RkT3V0KTsKKyAgICB3aGlsZSAobGluZUluZGV4IDwga051bUxpbmVzRXhwZWN0ZWQp
IHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3VycmVudDsKKyAgICAgICAgd2hpbGUg
KCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQorICAgICAgICBsaW5lc1tsaW5lSW5kZXgr
K10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAtIDEpOworICAgIH0KKworICAgIGlm
IChzdGRPdXQpCisgICAgICAgIGZyZWUoc3RkT3V0KTsKKworICAgIHJlc3VsdC5uYW1lLnN3YXAo
bGluZXNbMF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKKyAgICBy
ZXN1bHQubWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNbMl0pOworCisgICAgcmV0dXJuICFyZXN1
bHQubWltZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCmluZGV4IDk0ZGM0NGIuLjlmZGExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTgzLDQgKzgzLDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgp
CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVtZVBhdGgodGhl
bWVQYXRoKSwgbV9wYWdlSUQsIDApOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKHVpbnQ2NF90JiB3aW5kb3dJRCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9lZmwvUGx1Z2luUHJveHlFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2VmbC9QbHVnaW5Qcm94eUVm
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3NDFkOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9l
ZmwvUGx1Z2luUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKKwor
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgUGx1Z2luUHJveHk6Om5lZWRz
QmFja2luZ1N0b3JlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5k
ZXggZGEyNDc4ZC4uZGMzODQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5jcHAKQEAgLTM3LDE1ICszNywyMCBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFdl
YkNvcmUvUXRYMTFJbWFnZUNvbnZlcnNpb24uaD4KICNlbGlmIFBMQVRGT1JNKEdUSykKLSNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0j
aW5jbHVkZSA8Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKICNpbmNsdWRlIDxndGsvZ3RreC5oPgogI2VuZGlmCiAjaW5j
bHVkZSA8Z2RrL2dka3guaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KKyNl
bGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVk
ZSA8Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtODQsNiArODksOCBAQCBzdGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAg
ICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwgd2UnbGwgKHByb2JhYmx5PykgaGF2ZSB0
aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1iYXNlZAogICAgIC8vIHBsdWdpbnMsIHNv
IHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2FudCB0byBhZGQgb3RoZXIgaW1wbGVtZW50
YXRpb25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0dXJuIEdES19ESVNQTEFZX1hESVNQTEFZKGdka19k
aXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTk1LDYgKzEwMiw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHgx
MVNjcmVlbigpCiAgICAgcmV0dXJuIFhEZWZhdWx0U2NyZWVuKE5ldHNjYXBlUGx1Z2luOjp4MTFI
b3N0RGlzcGxheSgpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3NjcmVl
bl9nZXRfbnVtYmVyKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgcmV0dXJuIGVjb3JlX3hfc2NyZWVuX2luZGV4X2dldChlY29yZV94X2RlZmF1bHRf
c2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEwNiw2ICsx
MTUsOCBAQCBzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKQogICAgIHJldHVybiBYRGVm
YXVsdERlcHRoKE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCB4MTFTY3JlZW4oKSk7
CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdk
a19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQo
TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5f
Z2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE3LDYgKzEyOCw4IEBA
IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKQogICAgIHJldHVybiBY
RGVmYXVsdFJvb3RXaW5kb3coTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBHREtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyAgICByZXR1cm4gZWNvcmVfeF93aW5kb3dfcm9vdF9maXJzdF9nZXQoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE0NCw2ICsxNTcsOCBAQCBEaXNwbGF5
KiBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKQogICAgIHJldHVybiBkZWRpY2F0ZWRE
aXNwbGF5OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBHREtfRElTUExBWV9YRElT
UExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAj
ZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0zNTcsNyArMzcyLDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnQKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoUVBvaW50KGV4cG9zZWRSZWN0
LngoKSwgZXhwb3NlZFJlY3QueSgpKSwgcWltYWdlRnJvbVhJbWFnZSh4SW1hZ2UpLCBleHBvc2Vk
UmVjdCk7CiAKICAgICBYRGVzdHJveUltYWdlKHhJbWFnZSk7Ci0jZWxpZiBQTEFURk9STShHVEsp
CisjZWxpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fp
cm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2RyYXdhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvY29u
ZmlnLmgKaW5kZXggNGJiMWY4ZC4uY2Q0YTY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Y29uZmlnLmgKKysrIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKQEAgLTEwNiw3ICsxMDYsNyBA
QCBzdGF0aWMgY29uc3QgdHlwZSYgbmFtZSgpIFwKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVS
RV9NQUMgMQogI2VsaWYgUExBVEZPUk0oV0lOKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJF
X1dJTiAxCi0jZWxpZiBQTEFURk9STShHVEspICYmIChPUyhVTklYKSAmJiAhT1MoTUFDX09TX1gp
KQorI2VsaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkgJiYgKE9TKFVOSVgpICYm
ICFPUyhNQUNfT1NfWCkpCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfWDExIDEKICNlbHNl
CiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfVU5TVVBQT1JURUQgMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvZWZsL1BsdWdpbk1haW5FZmwuY3BwIGIvU291cmNlL1dlYktpdDIvZWZs
L1BsdWdpbk1haW5FZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEw
ZTdiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvUGx1Z2luTWFpbkVm
bC5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzTWFpbkVmbC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5FZmwoYXJnYywg
YXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDYyZmQ0ODIuLjM2NWY0YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlCkBAIC03Myw3ICs3Myw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9NRURJQV9DQVBUVVJFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX01FTU9SWV9TQU1QTEVSIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX01JQ1JPREFUQSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUyBPTikKLVdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIE9GRikK
K1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5f
QVBJIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFdPUktf
SU5GTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QQUdFX1ZJ
U0lCSUxJVFlfQVBJIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FIE9OKQpAQCAtMTEzLDYgKzExMywxMCBAQCBTRVQoV1RG
X1VTRV9IQVJGQlVaWl9ORyAxKQogQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQRT0x
KQogQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9IQVJGQlVaWl9ORz0xKQogCitJRiAoRU5BQkxF
X1dFQktJVDIpCisgICAgU0VUKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUyAxKQorRU5ESUYgKCkKKwog
SUYgKE5PVCBFTkFCTEVfU1ZHKQogICBTRVQoRU5BQkxFX1NWR19GT05UUyAwKQogRU5ESUYgKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MmZh
ZjJkLi5mNTU1YjNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMDcgIE1hcml1c3ogR3J6ZWdvcmN6eWsg
IDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJv
Y2VzcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUdXJuIG9uIE5ldHNjYXBlIFBsdWdpbiBBUEkgb3B0aW9uIGJ5IGRlZmF1bHQu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTIt
MDktMDcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLiBBZGQgR8OhYm9yIEJhbGxhYsOhcyBhcyBjb250cmlidXRvci4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA5ZTEzZmI2Li4zNDU2Nzg1IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjEsNyArMzIxLDcgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkFWSUdBVE9SX0NPTlRF
TlRfVVRJTFMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUg
PT4gXCRyZWdpc3RlclByb3RvY29sSGFuZGxlclN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+
ICJuZXRzY2FwZS1wbHVnaW4tYXBpIiwgZGVzYyA9PiAiVG9nZ2xlIE5ldHNjYXBlIFBsdWdpbiBB
UEkgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJ
IiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpbkFQSVN1cHBv
cnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZh
dWx0ID0+IDEsIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCiAKICAgICB7
IG9wdGlvbiA9PiAibmV0d29yay1pbmZvIiwgZGVzYyA9PiAiVG9nZ2xlIE5ldHdvcmsgSW5mbyBz
dXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFdPUktfSU5GTyIsIGRlZmF1bHQg
PT4gaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXR3b3JrSW5mb1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163648</attachid>
            <date>2012-09-12 09:27:49 -0700</date>
            <delta_ts>2012-09-13 09:18:39 -0700</delta_ts>
            <desc>Rebased, applied comments</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>30136</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOGI5NmYwLi41ZDIyMzNi
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTIgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNj
YXBlIFBsdWdpbiBBUEkgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTA5LTExICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbQ01BS0VdIFN1cHBseSBmZWF0dXJlIGRlZmluZXMgdG8gQ29k
ZUdlbmVyYXRvclRlc3RSdW5uZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ViYjQwNi4uYTNjOWFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA5LTEyICBNYXJpdXN6IEdyemVnb3Jjenlr
ICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gUGx1Z2luIHBy
b2Nlc3MgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHdpbmRvd2xlc3MgcGx1Z2luIGFuZCBmdW5jdGlvbnMgbmVl
ZGVkIHRvIGxhdW5jaCBQbHVnaW5Qcm9jZXNzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6IEFkZGVkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vzcy4KKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9sbGVyUHJveHlFZmwuY3BwOiBBZGRlZC4gTWFkZSBz
dHVicyBmb3IgUGx1Z2luQ29udHJvbGxlclByb3h5IG1ldGhvZHMuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtSW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1E
ZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9y
bUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Q
cm9jZXNzRWZsLmNwcDogQWRkZWQuIE1hZGUgc3R1YiBmb3IgcGxhdGZvcm1Jbml0aWFsaXplIG1l
dGhvZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2lu
UHJvY2Vzc01haW5FZmwuY3BwOiBBZGRlZC4gWDExIGVycm9yIGhhbmRsZXIsIGFuZCBtYWluIHBs
dWdpbiBwcm9jZXNzIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6d2Via2l0ZWZsWEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5F
ZmwpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvZWZsL1BsdWdpblByb2Nlc3NNYWluRWZsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9l
ZmwvUGx1Z2luUHJvY2Vzc1Byb3h5RWZsLmNwcDogQWRkZWQuIFNjYW5uaW5nIHBsdWdpbiBpbiBz
ZXBhcmF0ZSBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHA6IFN0dWJzIGFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9l
ZmwvUGx1Z2luUHJveHlFZmwuY3BwOiBBZGRlZC4gU3R1YnMgYWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwOiBQbHVnaW4ncyB3aW5kb3dsZXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2Vi
S2l0OjpnZXRQbHVnaW5EaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6eDExU2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6ZGlzcGxheURlcHRoKToKKyAgICAgICAgKFdlYktpdDo6cm9vdFdpbmRv
d0lEKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAg
ICAqIGNvbmZpZy5oOgorICAgICAgICAqIGVmbC9QbHVnaW5NYWluRWZsLmNwcDogQWRkZWQuCisg
ICAgICAgIChtYWluKToKKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODI4
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggOWFiYzZlYy4uOTJlOWIwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTYsNiArNiwxMCBAQCBMSVNUKEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCiAg
ICAgUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogCisgICAgUGx1Z2lu
UHJvY2Vzcy9lZmwvUGx1Z2luQ29udHJvbGxlclByb3h5RWZsLmNwcAorICAgIFBsdWdpblByb2Nl
c3MvZWZsL1BsdWdpblByb2Nlc3NFZmwuY3BwCisgICAgUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2lu
UHJvY2Vzc01haW5FZmwuY3BwCisKICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJv
LmNwcAogCiAgICAgU2hhcmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHAKQEAg
LTI0LDYgKzI4LDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL3Nv
dXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uY3BwCiAgICAgU2hhcmVkL3NvdXAvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzU291cC5jcHAKIAorICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAKKwogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAogICAgIAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJp
bmcuY3BwCkBAIC03OSw2ICs4NSw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAKKyAgICBV
SVByb2Nlc3MvUGx1Z2lucy9lZmwvUGx1Z2luUHJvY2Vzc1Byb3h5RWZsLmNwcAorCiAgICAgVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAogCiAgICAgV2ViUHJv
Y2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCkBAIC04OSw2ICs5Nywx
MCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNwcAogCisgICAgV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL2VmbC9QbHVnaW5Qcm94eUVmbC5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisKICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJDb250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcApAQCAtMjMwLDYgKzI0
MiwyOSBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKIElOU1RBTEwoRklMRVMgJHtDTUFLRV9CSU5B
UllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmln
KQogSU5TVEFMTChGSUxFUyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUv
JHtXZWJLaXQyX0xJQlJBUllfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQogCitJRiAo
RU5BQkxFX1BMVUdJTl9QUk9DRVNTKQorICAgIEFERF9ERUZJTklUSU9OUygtREVOQUJMRV9QTFVH
SU5fUFJPQ0VTUz0xKQorCisgICAgU0VUIChQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRSBQ
bHVnaW5Qcm9jZXNzKQorICAgIExJU1QgKEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElS
RUNUT1JJRVMKKyAgICAgICAgIiR7V0VCS0lUMl9ESVJ9L1BsdWdpblByb2Nlc3MvZWZsIgorICAg
ICkKKworICAgIElOQ0xVREVfRElSRUNUT1JJRVMoJHtQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElS
RUNUT1JJRVN9KQorCisgICAgTElTVCAoQVBQRU5EIFBsdWdpblByb2Nlc3NfU09VUkNFUworICAg
ICAgICAke1dFQktJVDJfRElSfS9lZmwvUGx1Z2luTWFpbkVmbC5jcHAKKyAgICApCisKKyAgICBT
RVQoUGx1Z2luUHJvY2Vzc19MSUJSQVJJRVMKKyAgICAgICAgICR7V2ViS2l0Ml9MSUJSQVJZX05B
TUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFCTEUoJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFC
TEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJDRVN9KQorICAgIFRBUkdFVF9MSU5LX0xJQlJB
UklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9OQU1FfSAke1BsdWdpblByb2Nlc3NfTElC
UkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVf
TkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxMX0RJUn0iKQorRU5ESUYgKCkgIyBFTkFC
TEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElS
fS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZsL1BsdWdpbkNvbnRyb2xsZXJQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Db250cm9s
bGVyUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZTQw
MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9Q
bHVnaW5Db250cm9sbGVyUHJveHlFZmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luQ29udHJv
bGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJO
ZXRzY2FwZVBsdWdpbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtR2VvbWV0cnlE
aWRDaGFuZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9jZXNzRWZsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTk2YjJhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJvY2Vzc0VmbC5jcHAK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9j
ZXNzTWFpbkVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Q
cm9jZXNzTWFpbkVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3
MmVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZWZs
L1BsdWdpblByb2Nlc3NNYWluRWZsLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
TWFpbkVmbC5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxF
Y29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX1guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3Au
aD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCisjaWYgZGVmaW5lZChYUF9VTklYKQor
I2luY2x1ZGUgPFgxMS9YbGliLmg+CisjZW5kaWYKKworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2lu
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
I2lmIGRlZmluZWQoWFBfVU5JWCkKK3N0YXRpYyBpbnQgd2Via2l0ZWZsWEVycm9yKERpc3BsYXkq
IHhkaXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCit7CisgICAgY2hhciBlcnJvck1lc3NhZ2Vb
NjRdOworICAgIFhHZXRFcnJvclRleHQoeGRpc3BsYXksIGVycm9yLT5lcnJvcl9jb2RlLCBlcnJv
ck1lc3NhZ2UsIDYzKTsKKyAgICBFSU5BX0xPR19DUklUKCJUaGUgcHJvZ3JhbSByZWNlaXZlZCBh
biBYIFdpbmRvdyBTeXN0ZW0gZXJyb3IuXG4iCisgICAgICAgICAgICAgICJUaGlzIHByb2JhYmx5
IHJlZmxlY3RzIGEgYnVnIGluIGEgYnJvd3NlciBwbHVnaW4uXG4iCisgICAgICAgICAgICAgICJU
aGUgZXJyb3Igd2FzICclcycuXG4iCisgICAgICAgICAgICAgICIgIChEZXRhaWxzOiBzZXJpYWwg
JWxkIGVycm9yX2NvZGUgJWQgcmVxdWVzdF9jb2RlICVkIG1pbm9yX2NvZGUgJWQpXG4iLAorICAg
ICAgICAgICAgICBlcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgIGVycm9yLT5zZXJpYWwsIGVy
cm9yLT5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICBlcnJvci0+cmVxdWVzdF9jb2RlLCBlcnJv
ci0+bWlub3JfY29kZSk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworaW50IFBsdWdpblBy
b2Nlc3NNYWluRWZsKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCit7CisgICAgQVNTRVJUKGFyZ2Mg
PT0gMiB8fCBhcmdjID09IDMpOworICAgIGJvb2wgc2NhblBsdWdpbiA9ICFzdHJjbXAoYXJndlsx
XSwgIi1zY2FuUGx1Z2luIik7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCAoYXJnYyA9PSAzICYm
IHNjYW5QbHVnaW4pKTsKKworICAgIGlmICghZWluYV9pbml0KCkpCisgICAgICAgIHJldHVybiAx
OworCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94X2luaXQoMCkpCisjZW5k
aWYKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisKKyAgICBpZiAoc2NhblBsdWdpbikgeworICAgICAgICBTdHJpbmcgcGx1
Z2luUGF0aChhcmd2WzJdKTsKKworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpz
Y2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisgICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRlZmxY
RXJyb3IpOworI2VuZGlmCisKKyAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKKworICAg
IFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShzb2NrZXQsIFJ1bkxv
b3A6Om1haW4oKSk7CisgICAgUnVuTG9vcDo6cnVuKCk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2VmbC9QbHVnaW5Qcm9j
ZXNzTWFpbkVmbC5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1Z2luUHJv
Y2Vzc01haW5FZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTVjNmFj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9lZmwvUGx1
Z2luUHJvY2Vzc01haW5FZmwuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHly
aWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQbHVnaW5Qcm9jZXNzTWFpbkVmbF9oCisjZGVmaW5lIFBsdWdpblBy
b2Nlc3NNYWluRWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmIC8v
IF9fY3BsdXNwbHVzCisKK1dLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5FZmwoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvLyBleHRlcm4gIkMi
CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBQbHVnaW5Qcm9jZXNzTWFpbkVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9lZmwvUGx1Z2luUHJvY2Vzc1Byb3h5RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2VmbC9QbHVnaW5Qcm9jZXNzUHJveHlFZmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMmZiNDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9lZmwvUGx1Z2luUHJvY2Vzc1By
b3h5RWZsLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKwor
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJQ
cm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vz
cyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2lu
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKK3sK
KyNpZiBFTkFCTEUoR0xJQl9TVVBQT1JUKQorICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpKTsKKyAg
ICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBs
dWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07CisgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBhcmd2WzFdID0gY29uc3RfY2FzdDxjaGFy
Kj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHBsdWdp
blBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlszXSA9IDA7CisKKyAgICBpbnQgc3RhdHVz
OworICAgIGNoYXIqIHN0ZE91dDsKKworICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAs
IEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0LCAwLCAmc3RhdHVzLCAw
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8
fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVzRXhwZWN0ZWQgPSAzOworICAgIFN0
cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07CisgICAgdW5zaWduZWQgbGluZUluZGV4ID0g
MDsKKyAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihzdGRPdXQpOworICAgIHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkg
eworICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAo
KmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsr
XSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgaWYg
KHN0ZE91dCkKKyAgICAgICAgZnJlZShzdGRPdXQpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChs
aW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJl
c3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisKKyAgICByZXR1cm4gIXJlc3Vs
dC5taW1lRGVzY3JpcHRpb24uaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAKaW5kZXggOTRkYzQ0Yi4uNzYxODc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApAQCAtODMsNCArODMsMTQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcmIHRoZW1lUGF0aCkK
ICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRoZW1lUGF0aCh0aGVt
ZVBhdGgpLCBtX3BhZ2VJRCwgMCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVQbHVn
aW5Db250YWluZXIodWludDY0X3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdWludDY0X3QpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdp
blByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9lZmwvUGx1Z2luUHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkyNzQxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvZWZsL1BsdWdpblByb3h5RWZsLmNwcApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsdWdpblByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29s
IFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwCmluZGV4IGRhMjQ3OGQuLmYyMTZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0zNywxNSArMzcsMjAgQEAKICNpZiBQTEFURk9S
TShRVCkKICNpbmNsdWRlIDxXZWJDb3JlL1F0WDExSW1hZ2VDb252ZXJzaW9uLmg+CiAjZWxpZiBQ
TEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRl
ICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgPGNhaXJvL2NhaXJvLXhsaWIuaD4KICNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCiAjaW5jbHVkZSA8Z3RrL2d0
a3guaD4KICNlbmRpZgogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
dGtWZXJzaW9uaW5nLmg+CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09S
RV9YKQorI2luY2x1ZGUgPEVjb3JlX1guaD4KKyNlbmRpZgorCisjaWYgVVNFKENBSVJPKSAmJiAh
UExBVEZPUk0oV0lOX0NBSVJPKQorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisj
aW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWlyby9jYWlyby14bGliLmg+CiAj
ZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04NCw2ICs4OSw4IEBAIHN0YXRp
YyBEaXNwbGF5KiBnZXRQbHVnaW5EaXNwbGF5KCkKICAgICAvLyBTaW5jZSB3ZSdyZSBhIGdkay9n
dGsgYXBwLCB3ZSdsbCAocHJvYmFibHk/KSBoYXZlIHRoZSBzYW1lIFggY29ubmVjdGlvbiBhcyBh
bnkgZ2RrLWJhc2VkCiAgICAgLy8gcGx1Z2lucywgc28gd2UgY2FuIHJldHVybiB0aGF0LiBXZSBt
aWdodCB3YW50IHRvIGFkZCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgaGVyZSBsYXRlci4KICAgICBy
ZXR1cm4gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7Cisj
ZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTk1LDYgKzEwMiw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHgx
MVNjcmVlbigpCiAgICAgcmV0dXJuIFhEZWZhdWx0U2NyZWVuKE5ldHNjYXBlUGx1Z2luOjp4MTFI
b3N0RGlzcGxheSgpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3NjcmVl
bl9nZXRfbnVtYmVyKGdka19zY3JlZW5fZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShF
RkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBlY29yZV94X3NjcmVlbl9p
bmRleF9nZXQoZWNvcmVfeF9kZWZhdWx0X3NjcmVlbl9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVy
biAwOwogI2VuZGlmCkBAIC0xMDYsNiArMTE1LDggQEAgc3RhdGljIGlubGluZSBpbnQgZGlzcGxh
eURlcHRoKCkKICAgICByZXR1cm4gWERlZmF1bHREZXB0aChOZXRzY2FwZVBsdWdpbjo6eDExSG9z
dERpc3BsYXkoKSwgeDExU2NyZWVuKCkpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVy
biBnZGtfdmlzdWFsX2dldF9kZXB0aChnZGtfc2NyZWVuX2dldF9zeXN0ZW1fdmlzdWFsKGdka19z
Y3JlZW5fZ2V0X2RlZmF1bHQoKSkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhB
VkVfRUNPUkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF9kZWZhdWx0X2RlcHRoX2dldChOZXRzY2Fw
ZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSwgZWNvcmVfeF9kZWZhdWx0X3NjcmVlbl9nZXQoKSk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xMTcsNiArMTI4LDggQEAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJRCgpCiAgICAgcmV0dXJuIFhEZWZhdWx0
Um9vdFdpbmRvdyhOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSk7CiAjZWxpZiBQTEFU
Rk9STShHVEspCiAgICAgcmV0dXJuIEdES19ST09UX1dJTkRPVygpOworI2VsaWYgUExBVEZPUk0o
RUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF93aW5kb3df
cm9vdF9maXJzdF9nZXQoKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE0NCw2
ICsxNTcsOCBAQCBEaXNwbGF5KiBOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKQogICAg
IHJldHVybiBkZWRpY2F0ZWREaXNwbGF5OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVy
biBHREtfRElTUExBWV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PERpc3BsYXkqPihlY29yZV94X2Rpc3BsYXlfZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1
cm4gMDsKICNlbmRpZgpAQCAtMzU3LDcgKzM3Miw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
CiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludChleHBvc2VkUmVjdC54KCksIGV4cG9zZWRS
ZWN0LnkoKSksIHFpbWFnZUZyb21YSW1hZ2UoeEltYWdlKSwgZXhwb3NlZFJlY3QpOwogCiAgICAg
WERlc3Ryb3lJbWFnZSh4SW1hZ2UpOwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgUExBVEZP
Uk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBVU0UoQ0FJUk8pKQogICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFj
ZV9jcmVhdGUobV9wbHVnaW5EaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kcmF3
YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2Fs
bGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pLT52aXN1YWwsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCmluZGV4IDgw
NzIwNDYuLjI1NTNkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGNvbnN0
IHR5cGUmIG5hbWUoKSBcCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfTUFDIDEKICNlbGlm
IFBMQVRGT1JNKFdJTikKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9XSU4gMQotI2VsaWYg
UExBVEZPUk0oR1RLKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19YKSkKKyNlbGlmIChQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpICYmIChPUyhVTklYKSAmJiAhT1MoTUFDX09TX1gp
KQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1gxMSAxCiAjZWxpZiBQTEFURk9STShRVCkK
IC8vIFF0IGhhbmRsZXMgdGhpcyBmZWF0dXJlcy5wcmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL2VmbC9QbHVnaW5NYWluRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL2VmbC9QbHVnaW5NYWlu
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGU3YjVmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvZWZsL1BsdWdpbk1haW5FZmwuY3BwCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzc01haW5FZmwuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorewor
ICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluRWZsKGFyZ2MsIGFyZ3YpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQppbmRleCBlMGIwMjZlLi42MWY2OTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQpAQCAtNzMsNyArNzMsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTUVESUFfQ0FQVFVSRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCitXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQ
SSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSBPTikKQEAgLTExNyw2ICsxMTcsMTAgQEAgU0VUKFdURl9VU0VfSEFSRkJV
WlpfTkcgMSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfRlJFRVRZUEU9MSkKIEFERF9ERUZJ
TklUSU9OUygtRFdURl9VU0VfSEFSRkJVWlpfTkc9MSkKIAorSUYgKEVOQUJMRV9XRUJLSVQyKQor
ICAgIFNFVChFTkFCTEVfUExVR0lOX1BST0NFU1MgMSkKK0VORElGICgpCisKIElGIChOT1QgRU5B
QkxFX1NWRykKICAgU0VUKEVOQUJMRV9TVkdfRk9OVFMgMCkKIEVORElGICgpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjg4NjQ3My4uYzU0NmE0
NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTA5LTEyICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5n
QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gUGx1Z2luIHByb2Nlc3MgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIG9wdGlvbiBieSBkZWZhdWx0LgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEyLTA5LTEyICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJ1
aWxkIG9uIFdpbmRvd3MgcmVxdWlyZXMgYmlzb24vZmxleCBpbiBQQVRICmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggOWUxM2ZiNi4uMzQ1Njc4NSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzIxLDcgKzMyMSw3IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwk
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0
c2NhcGUtcGx1Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1
cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRl
ZmF1bHQgPT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0s
CisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9
PiAxLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gIm5ldHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlz
RWZsKCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163889</attachid>
            <date>2012-09-13 09:18:39 -0700</date>
            <delta_ts>2012-09-17 03:24:10 -0700</delta_ts>
            <desc>Merged common files with gtk</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>54298</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3N2E2YTkxLi5hYWQ0NzIw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTMgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXSBQbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIE5ldHNj
YXBlIFBsdWdpbiBBUEkgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlOgorCiAyMDEyLTA5LTEzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIHN5bmNxdCBpc24ndCByZS1ydW4gd2hlbiBX
ZWJLaXQxLnBybyBjaGFuZ2VzIGFuZCB3ZSdyZSBidWlsZGluZyB3aXRoIC0tbm8td2Via2l0Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGIwYmNiYWYuLmJjNDdjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBA
QAorMjAxMi0wOS0xMyAgTWFyaXVzeiBHcnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNv
bT4KKworICAgICAgICBbRUZMXVtXSzJdIFBsdWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB3
aW5kb3dsZXNzIHBsdWdpbiBhbmQgZnVuY3Rpb25zIG5lZWRlZCB0byBsYXVuY2ggUGx1Z2luUHJv
Y2Vzcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBDaGFuZ2UgZmlsZXMgYW5kIGZvbGRl
cnMgcmVsYXRlZCB0byBwbHVnaW4gcHJvY2VzcyBmcm9tIGd0ayB0byB1bml4LgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IENoYW5nZSBmaWxlcyBhbmQgZm9sZGVycyByZWxhdGVkIHRv
IHBsdWdpbiBwcm9jZXNzIGZyb20gZ3RrIHRvIHVuaXguCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6IEFkZGVkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vzcy4KKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Db250cm9sbGVyUHJv
eHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGRzIG1hY3JvcyBmb3IgZ3RrL2Vm
bCBkaWZmZXJlbnRzLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBs
YXRmb3JtRGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0Ojp3ZWJraXRYRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzTWFpblVuaXgpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvdW5peC9QbHVn
aW5Qcm9jZXNzTWFpblVuaXguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmguCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzR3RrLmNw
cC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRp
YWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpzY2FuUGx1Z2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5j
cHA6IFN0dWJzIGFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVBs
dWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1Bs
dWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdpbidzIHdpbmRvd2xl
c3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdpbkRpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpkaXNwbGF5RGVw
dGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICog
dW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9ndGsv
UGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0wOS0xMyAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
W1dLMl0gTWFrZSBfcmVmKCkgZnVuY3Rpb25zIHJldHVybiB0aGUgb2JqZWN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGJhMGFjNjkuLjhiNGJmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC01
NSw3ICs1NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBf
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9z
b3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXApAQCAtODIs
NyArODIsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAgLTQyNSw3ICs0MjUs
NyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy8gXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3Rr
IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXggXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlLyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBl
ZDE1ZDAzLi44ZDM4ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3NSw4
ICsyNzUsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzc01haW4uaCBcCiAJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAogCVNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Gb250SW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSFRUUENvb2tp
ZUFjY2VwdFBvbGljeS5oIFwKQEAgLTc5Myw4ICs3OTMsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1h
bmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3Rr
L1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKQEAgLTEwNTAsNyArMTA1MCw3IEBAIHdlYmtpdDJf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5oIFwKLQlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNw
cCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1
Z2luUHJveHlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKQEAgLTEyMjAsMTAgKzEyMjAsMTAgQEAgd2Via2l0
Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAotCVNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5j
cHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NHdGsu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFp
bkd0ay5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5D
b250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91
bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFBy
b2Nlc3MuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5o
IFwKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBc
Ci0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94
eUd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
UHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVVdGlsaXRpZXMuY3BwIFwKQEAgLTEyNjgsNiArMTI2OCw2IEBAIHdlYmtpdDJfcGx1Z2luX3By
b2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKKwlTb3VyY2UvV2Vi
S2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJMRV9QTFVHSU5fUFJP
Q0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5YWJjNmVjLi44MWI5ZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNiw2ICs2LDEwIEBAIExJU1QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
ICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAKKyAgICBQbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAKKyAgICBQbHVnaW5Q
cm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkvYy9jYWlyby9XS0lt
YWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3Rr
LmNwcApAQCAtMjQsNiArMjgsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBT
aGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5jcHAKICAgICBTaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorCiAgICAgVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNo
YXJlZFN0cmluZy5jcHAKQEAgLTgwLDYgKzg2LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCiAK
ICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisgICAg
VUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAogCiAgICAg
V2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5jcHAKQEAgLTg5
LDYgKzk2LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAKKyAgICBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCisKKyAgICBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorCiAgICAg
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1lbnVDbGllbnRFZmwuY3Bw
CiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKQEAg
LTIzMCw2ICsyNDEsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJTlNUQUxMKEZJTEVTICR7
Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGli
L3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElP
TiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9S
fSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVGSU5JVElPTlMoLURF
TkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJvY2Vzc19FWEVDVVRB
QkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQgUGx1Z2luUHJvY2Vzc19J
TkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElSfS9QbHVnaW5Qcm9jZXNz
L3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1BsdWdpblByb2Nlc3Nf
SU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQgUGx1Z2luUHJvY2Vzc19T
T1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCisg
ICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisgICAgICAgICR7V2ViS2l0
Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFCTEUoJHtQbHVnaW5Qcm9j
ZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJDRVN9KQorICAgIFRBUkdF
VF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9OQU1FfSAke1BsdWdp
blByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQbHVnaW5Qcm9jZXNz
X0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxMX0RJUn0iKQorRU5E
SUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJFQ1RPUklFUygke1RI
SVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJ
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNv
bnRyb2xsZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjYmNjMWQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3Rr
L1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVyUHJveHkuaCIKLQot
I2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0
IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJveSgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRm
b3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3OGY5YS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzR3RrLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpblBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01h
aW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzBjMDFjLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NN
YWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCi0KLSNpbmNsdWRlICJOZXRzY2FwZVBs
dWdpbi5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1J1
bkxvb3AuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhkaXNwbGF5LCBYRXJy
b3JFdmVudCogZXJyb3IpCi17Ci0gICAgZ2NoYXIgZXJyb3JNZXNzYWdlWzY0XTsKLSAgICBYR2V0
RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7
Ci0gICAgZ193YXJuaW5nKCJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93IFN5
c3RlbSBlcnJvci5cbiIKLSAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBi
dWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKLSAgICAgICAgICAgICAgIlRoZSBlcnJvciB3YXMg
JyVzJy5cbiIKLSAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29k
ZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCi0gICAgICAgICAgICAgIGdf
Z2V0X3ByZ25hbWUoKSwgZXJyb3JNZXNzYWdlLAotICAgICAgICAgICAgICBlcnJvci0+c2VyaWFs
LCBlcnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwg
ZXJyb3ItPm1pbm9yX2NvZGUpOwotICAgIHJldHVybiAwOwotfQotCi1XS19FWFBPUlQgaW50IFBs
dWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17Ci0gICAgQVNTRVJU
KGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOwotICAgIGJvb2wgc2NhblBsdWdpbiA9ICFzdHJjbXAo
YXJndlsxXSwgIi1zY2FuUGx1Z2luIik7Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCAoYXJnYyA9
PSAzICYmIHNjYW5QbHVnaW4pKTsKLQotICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7Ci0KLSAg
ICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7Ci0KLSAgICBpZiAoc2NhblBsdWdpbikgewotICAgICAgICBTdHJpbmcgcGx1Z2luUGF0
aChhcmd2WzJdKTsKLSAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdp
bihwbHVnaW5QYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgICAg
IHJldHVybiBFWElUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7Ci0KLSAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFggZXJyb3JzIHRoYXQg
YXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNoCi0gICAgLy8gZXhp
dHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2ggZHVlIHRvIHBsdWdp
biBidWdzLCB3ZSBpbnN0YWxsIGEKLSAgICAvLyBjdXN0b20gZXJyb3IgaGFuZGxlciB0byBzaG93
IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJvcnRpbmcuCi0gICAg
WFNldEVycm9ySGFuZGxlcih3ZWJraXRndGtYRXJyb3IpOwotCi0gICAgaW50IHNvY2tldCA9IGF0
b2koYXJndlsxXSk7Ci0gICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFs
aXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBSdW5Mb29wOjpydW4oKTsKLQotICAg
IHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5oIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYzZlNi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5HdGtfaAotI2RlZmluZSBQbHVnaW5Qcm9jZXNz
TWFpbkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLVdLX0VYUE9SVCBpbnQg
UGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7Ci19IC8vIGV4dGVy
biAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNjMWQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpbkNvbnRyb2xs
ZXJQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQor
CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxY2QzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNw
cApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIKKworI2luY2x1ZGUg
Ik5ldHNjYXBlUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpZiBQ
TEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpZmRlZiBIQVZFX0VD
T1JFX1gKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKyNlbmRpZgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZmRlZiBYUF9VTklYCitz
dGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQqIGVy
cm9yKQoreworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBnY2hhciBlcnJvck1lc3NhZ2VbNjRdOwor
ICAgIFhHZXRFcnJvclRleHQoeGRpc3BsYXksIGVycm9yLT5lcnJvcl9jb2RlLCBlcnJvck1lc3Nh
Z2UsIDYzKTsKKyAgICBnX3dhcm5pbmcoIlRoZSBwcm9ncmFtICclcycgcmVjZWl2ZWQgYW4gWCBX
aW5kb3cgU3lzdGVtIGVycm9yLlxuIgorICAgICAgICAgICAgICAiVGhpcyBwcm9iYWJseSByZWZs
ZWN0cyBhIGJ1ZyBpbiBhIGJyb3dzZXIgcGx1Z2luLlxuIgorICAgICAgICAgICAgICAiVGhlIGVy
cm9yIHdhcyAnJXMnLlxuIgorICAgICAgICAgICAgICAiICAoRGV0YWlsczogc2VyaWFsICVsZCBl
cnJvcl9jb2RlICVkIHJlcXVlc3RfY29kZSAlZCBtaW5vcl9jb2RlICVkKVxuIiwKKyAgICAgICAg
ICAgICAgZ19nZXRfcHJnbmFtZSgpLCBlcnJvck1lc3NhZ2UsCisgICAgICAgICAgICAgIGVycm9y
LT5zZXJpYWwsIGVycm9yLT5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICBlcnJvci0+cmVxdWVz
dF9jb2RlLCBlcnJvci0+bWlub3JfY29kZSk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY2hh
ciBlcnJvck1lc3NhZ2VbNjRdOworICAgIFhHZXRFcnJvclRleHQoeGRpc3BsYXksIGVycm9yLT5l
cnJvcl9jb2RlLCBlcnJvck1lc3NhZ2UsIDYzKTsKKyAgICBFSU5BX0xPR19DUklUKCJUaGUgcHJv
Z3JhbSByZWNlaXZlZCBhbiBYIFdpbmRvdyBTeXN0ZW0gZXJyb3IuXG4iCisgICAgICAgICAgICAi
VGhpcyBwcm9iYWJseSByZWZsZWN0cyBhIGJ1ZyBpbiBhIGJyb3dzZXIgcGx1Z2luLlxuIgorICAg
ICAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIKKyAgICAgICAgICAgICIgKERldGFpbHM6
IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClc
biIsCisgICAgICAgICAgICBlcnJvck1lc3NhZ2UsCisgICAgICAgICAgICBlcnJvci0+c2VyaWFs
LCBlcnJvci0+ZXJyb3JfY29kZSwKKyAgICAgICAgICAgIGVycm9yLT5yZXF1ZXN0X2NvZGUsIGVy
cm9yLT5taW5vcl9jb2RlKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK1dL
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiBhcmd2W10p
Cit7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOworICAgIGJvb2wgc2NhblBs
dWdpbiA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7CisgICAgQVNTRVJUKGFyZ2Mg
PT0gMiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKKworI2lmIFBMQVRGT1JNKEdUSykK
KyAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGlm
ICghZWluYV9pbml0KCkpCisgICAgICAgIHJldHVybiAxOworI2lmZGVmIEhBVkVfRUNPUkVfWAor
ICAgIGlmICghZWNvcmVfeF9pbml0KDApKQorI2VuZGlmCisgICAgICAgIHJldHVybiAxOworI2Vu
ZGlmCisKKyAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisKKyAg
ICBpZiAoc2NhblBsdWdpbikgeworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aChhcmd2WzJdKTsK
KyAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihwbHVnaW5QYXRo
KSkKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIHJldHVybiBFWElU
X1NVQ0NFU1M7CisgICAgfQorCisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CisKKyAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFggZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQg
YnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNoCisgICAgLy8gZXhpdHMgdGhlIHByb2Nl
c3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2ggZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBp
bnN0YWxsIGEKKyAgICAvLyBjdXN0b20gZXJyb3IgaGFuZGxlciB0byBzaG93IGEgd2FybmluZyB3
aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJvcnRpbmcuCisjaWYgZGVmaW5lZChYUF9V
TklYKQorICAgIFhTZXRFcnJvckhhbmRsZXIod2Via2l0WEVycm9yKTsKKyNlbmRpZgorCisgICAg
aW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7CisgICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBSdW5Mb29w
OjpydW4oKTsKKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNz
TWFpblVuaXguaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9j
ZXNzTWFpblVuaXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDBjNTk2
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Qcm9jZXNzTWFpblVuaXguaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbHVnaW5Qcm9jZXNzTWFpblVuaXhfaAorI2RlZmlu
ZSBQbHVnaW5Qcm9jZXNzTWFpblVuaXhfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CitXS19FWFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhciogYXJn
dltdKTsKK30gLy8gZXh0ZXJuICJDIgorI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGx1Z2luUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU3OGY5YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNz
VW5peC5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzcy5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9j
ZXNzUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTkzMzlkLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Q
cm9jZXNzUHJveHlHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCi0KLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCi0jaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HT3duUHRyR3RrLmg+Ci0jaW5jbHVk
ZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXpl
UGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKLXsKLX0KLQot
Ym9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQotewotICAgIENTdHJpbmcgYmluYXJ5UGF0
aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vz
cygpKTsKLSAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBsdWdpblBhdGgpOwotICAgIGNoYXIqIGFyZ3ZbNF07Ci0gICAgYXJndlswXSA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKLSAgICBhcmd2WzFdID0gY29uc3Rf
Y2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7Ci0gICAgYXJndlsyXSA9IGNvbnN0X2Nhc3Q8Y2hh
cio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7Ci0gICAgYXJndlszXSA9IDA7Ci0KLSAgICBn
aW50IHN0YXR1czsKLSAgICBHT3duUHRyPGdjaGFyPiBzdGRPdXQ7Ci0gICAgaWYgKCFnX3NwYXdu
X3N5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9TVERFUlJfVE9fREVWX05VTEwsIDAsIDAsICZzdGRP
dXQub3V0UHRyKCksIDAsICZzdGF0dXMsIDApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VD
Q0VTUykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgdW5zaWduZWQga051bUxp
bmVzRXhwZWN0ZWQgPSAzOwotICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07Ci0g
ICAgdW5zaWduZWQgbGluZUluZGV4ID0gMDsKLSAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQuZ2V0KCkpOwotICAgIHdoaWxlIChs
aW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgewotICAgICAgICBjb25zdCBVQ2hhciogc3Rh
cnQgPSBjdXJyZW50OwotICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkg
eyB9Ci0gICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAt
IHN0YXJ0IC0gMSk7Ci0gICAgfQotCi0gICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7Ci0g
ICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOwotICAgIHJlc3VsdC5taW1lRGVz
Y3JpcHRpb24uc3dhcChsaW5lc1syXSk7Ci0gICAgcmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0
aW9uLmlzRW1wdHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzcwNzA0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBP
UiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworI2lm
IEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgorI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKSB8
fCAoUExBVEZPUk0oRUZMKSAmJiBFTkFCTEUoR0xJQl9TVVBQT1JUKSkKKyNpbmNsdWRlIDxnbGli
Lmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKK30KKworYm9vbCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBS
YXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRG
T1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAgQ1N0cmluZyBiaW5hcnlQYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNz
KCkpOworICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGx1Z2luUGF0aCk7CisgICAgY2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29u
c3RfY2FzdDxjaGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9j
YXN0PGNoYXIqPigiLXNjYW5QbHVnaW4iKTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFy
Kj4ocGx1Z2luUGF0aENTdHJpbmcuZGF0YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworI2lmIFBM
QVRGT1JNKEdUSykKKyAgICBnaW50IHN0YXR1czsKKyAgICBHT3duUHRyPGdjaGFyPiBzdGRPdXQ7
CisKKyAgICBpZiAoIWdfc3Bhd25fc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX1NUREVSUl9UT19E
RVZfTlVMTCwgMCwgMCwgJnN0ZE91dC5vdXRQdHIoKSwgMCwgJnN0YXR1cywgMCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBpbnQgc3RhdHVzOworICAg
IGNoYXIqIHN0ZE91dDsKKworICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BB
V05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAoIVdJRkVYSVRFRChzdGF0dXMp
IHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gRVhJVF9TVUNDRVNTKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7CisgICAg
U3RyaW5nIGxpbmVzW2tOdW1MaW5lc0V4cGVjdGVkXTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXgg
PSAwOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdGRPdXQuZ2V0KCkpOworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
Q2hhcio+KHN0ZE91dCk7CisjZW5kaWYKKyAgICB3aGlsZSAobGluZUluZGV4IDwga051bUxpbmVz
RXhwZWN0ZWQpIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3VycmVudDsKKyAgICAg
ICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQorICAgICAgICBsaW5lc1ts
aW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAtIDEpOworICAgIH0K
KworI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBpZiAoc3RkT3V0KQorICAgICAgICBmcmVlKHN0ZE91
dCk7CisjZW5kaWYKKworICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOworICAgIHJlc3Vs
dC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKKyAgICByZXN1bHQubWltZURlc2NyaXB0aW9u
LnN3YXAobGluZXNbMl0pOworICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0Vt
cHR5KCk7CisjZWxzZSAvLyBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEVOQUJM
RShHTElCX1NVUFBPUlQpKQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZiAvLyBQTEFURk9STShH
VEspIHx8IChQTEFURk9STShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBPUlQpKQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRl
eCA5NGRjNDRiLi43NjE4NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC04Myw0ICs4MywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGhlbWVQYXRoKHRoZW1lUGF0aCksIG1fcGFnZUlE
LCAwKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50
NjRfdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsvUGx1Z2luUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5Qcm94
eUd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NmFmMjAuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVn
aW5Qcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJQbHVnaW5Qcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQotCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotYm9vbCBQbHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2lu
UHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTk2YWYyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKKworI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgUGx1Z2luUHJveHk6Om5lZWRzQmFja2luZ1N0
b3JlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggZGEyNDc4
ZC4uZjIxNmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAg
LTM3LDE1ICszNywyMCBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFdlYkNvcmUvUXRY
MTFJbWFnZUNvbnZlcnNpb24uaD4KICNlbGlmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCi0jaW5jbHVkZSA8
Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpZm5kZWYgR1RLX0FQ
SV9WRVJTSU9OXzIKICNpbmNsdWRlIDxndGsvZ3RreC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8Z2Rr
L2dka3guaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KKyNlbGlmIFBMQVRG
T1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisjaW5jbHVkZSA8RWNvcmVfWC5oPgor
I2VuZGlmCisKKyNpZiBVU0UoQ0FJUk8pICYmICFQTEFURk9STShXSU5fQ0FJUk8pCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2lu
Y2x1ZGUgPGNhaXJvL2NhaXJvLXhsaWIuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTg0LDYgKzg5LDggQEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXko
KQogICAgIC8vIFNpbmNlIHdlJ3JlIGEgZ2RrL2d0ayBhcHAsIHdlJ2xsIChwcm9iYWJseT8pIGhh
dmUgdGhlIHNhbWUgWCBjb25uZWN0aW9uIGFzIGFueSBnZGstYmFzZWQKICAgICAvLyBwbHVnaW5z
LCBzbyB3ZSBjYW4gcmV0dXJuIHRoYXQuIFdlIG1pZ2h0IHdhbnQgdG8gYWRkIG90aGVyIGltcGxl
bWVudGF0aW9ucyBoZXJlIGxhdGVyLgogICAgIHJldHVybiBHREtfRElTUExBWV9YRElTUExBWShn
ZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5l
ZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpc3BsYXkqPihlY29yZV94
X2Rpc3BsYXlfZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtOTUsNiAr
MTAyLDggQEAgc3RhdGljIGlubGluZSBpbnQgeDExU2NyZWVuKCkKICAgICByZXR1cm4gWERlZmF1
bHRTY3JlZW4oTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHJldHVybiBnZGtfc2NyZWVuX2dldF9udW1iZXIoZ2RrX3NjcmVlbl9nZXRf
ZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CisgICAgcmV0dXJuIGVjb3JlX3hfc2NyZWVuX2luZGV4X2dldChlY29yZV94X2RlZmF1bHRfc2Ny
ZWVuX2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEwNiw2ICsxMTUs
OCBAQCBzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKQogICAgIHJldHVybiBYRGVmYXVs
dERlcHRoKE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCB4MTFTY3JlZW4oKSk7CiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka192aXN1YWxfZ2V0X2RlcHRoKGdka19z
Y3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKSk7CisjZWxp
ZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBlY29y
ZV94X2RlZmF1bHRfZGVwdGhfZ2V0KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpLCBl
Y29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKQEAgLTExNyw2ICsxMjgsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lEKCkKICAgICByZXR1cm4gWERlZmF1bHRSb290V2luZG93KE5ldHNjYXBlUGx1Z2luOjp4
MTFIb3N0RGlzcGxheSgpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX1JP
T1RfV0lORE9XKCk7CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9Y
KQorICAgIHJldHVybiBlY29yZV94X3dpbmRvd19yb290X2ZpcnN0X2dldCgpOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTQ0LDYgKzE1Nyw4IEBAIERpc3BsYXkqIE5ldHNjYXBl
UGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpCiAgICAgcmV0dXJuIGRlZGljYXRlZERpc3BsYXk7CiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIEdES19ESVNQTEFZX1hESVNQTEFZKGdka19k
aXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhB
VkVfRUNPUkVfWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlz
cGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0zNTcsNyArMzcy
LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoUVBv
aW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpKSwgcWltYWdlRnJvbVhJbWFnZSh4
SW1hZ2UpLCBleHBvc2VkUmVjdCk7CiAKICAgICBYRGVzdHJveUltYWdlKHhJbWFnZSk7Ci0jZWxp
ZiBQTEFURk9STShHVEspCisjZWxpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYm
IFVTRShDQUlSTykpCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNl
ID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2RyYXdhYmxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3Nf
aW5mbyktPnZpc3VhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oIGIvU291
cmNlL1dlYktpdDIvY29uZmlnLmgKaW5kZXggODA3MjA0Ni4uMjU1M2Q1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvY29uZmlnLmgKKysrIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKQEAg
LTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgY29uc3QgdHlwZSYgbmFtZSgpIFwKICNkZWZpbmUgUExV
R0lOX0FSQ0hJVEVDVFVSRV9NQUMgMQogI2VsaWYgUExBVEZPUk0oV0lOKQogI2RlZmluZSBQTFVH
SU5fQVJDSElURUNUVVJFX1dJTiAxCi0jZWxpZiBQTEFURk9STShHVEspICYmIChPUyhVTklYKSAm
JiAhT1MoTUFDX09TX1gpKQorI2VsaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkg
JiYgKE9TKFVOSVgpICYmICFPUyhNQUNfT1NfWCkpCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RV
UkVfWDExIDEKICNlbGlmIFBMQVRGT1JNKFFUKQogLy8gUXQgaGFuZGxlcyB0aGlzIGZlYXR1cmVz
LnByZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvZ3RrL1BsdWdpbk1haW5HdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvZ3RrL1BsdWdpbk1haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2M2NmNDRjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL2d0ay9QbHVn
aW5NYWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogUG9ydGlv
bnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01haW5HdGsuaCIK
LQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotICAgIHJldHVybiBXZWJLaXQ6
OlBsdWdpblByb2Nlc3NNYWluR3RrKGFyZ2MsIGFyZ3YpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi91bml4L1Bs
dWdpbk1haW5Vbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2Y5
YTBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5p
eC5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIKKworaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5p
eChhcmdjLCBhcmd2KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggNTQ5MDU2YS4uOTI0MmRm
NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTc0LDcgKzc0LDcgQEAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX0NBUFRVUkUgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQot
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9B
UEkgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBF
X1BMVUdJTl9BUEkgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TkVUV09SS19JTkZPIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1BBR0VfVklTSUJJTElUWV9BUEkgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUgT04pCkBAIC0xMTgsNiArMTE4LDEwIEBA
IFNFVChXVEZfVVNFX0hBUkZCVVpaX05HIDEpCiBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0ZS
RUVUWVBFPTEpCiBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0hBUkZCVVpaX05HPTEpCiAKK0lG
IChFTkFCTEVfV0VCS0lUMikKKyAgICBTRVQoRU5BQkxFX1BMVUdJTl9QUk9DRVNTIDEpCitFTkRJ
RiAoKQorCiBJRiAoTk9UIEVOQUJMRV9TVkcpCiAgIFNFVChFTkFCTEVfU1ZHX0ZPTlRTIDApCiBF
TkRJRiAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDgxOGEyZTAuLjJlZTBkNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0xMyAgTWFyaXVzeiBHcnpl
Z29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFBs
dWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFR1cm4gb24gTmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRpb24gYnkg
ZGVmYXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToK
KwogMjAxMi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CiAKICAgICAgICAgW1F0XSBUaGUgQU5HTEUgYnVpbGQgb24gV2luZG93cyBicmVha3Mgd2l0aCBH
bnVXaW4zMidzIGZsZXggYmVjYXVzZSBpdCBpcyB0b28gb2xkCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYWQyMzA0Ni4uZjY3ODA4MSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzIxLDcgKzMyMSw3IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIiwg
ZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkcmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0c2NhcGUt
cGx1Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQg
PT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCisgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2
YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4g
Im5ldHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCks
IHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164363</attachid>
            <date>2012-09-17 03:24:10 -0700</date>
            <delta_ts>2012-09-20 02:26:53 -0700</delta_ts>
            <desc>Applied Grzegorz&apos;s comments</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>53620</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3N2E2YTkxLi43MzA5ZTcz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTMgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAx
Mi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBzeW5jcXQgaXNuJ3QgcmUtcnVuIHdoZW4gV2ViS2l0MS5wcm8gY2hhbmdlcyBh
bmQgd2UncmUgYnVpbGRpbmcgd2l0aCAtLW5vLXdlYmtpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMGJjYmFm
Li4yYzAyNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDktMTMgIE1hcml1
c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1b
R1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9u
IHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHdpbmRvd2xlc3MgcGx1Z2luIGFuZCBmdW5jdGlvbnMgbmVlZGVkIHRv
IGxhdW5jaCBQbHVnaW5Qcm9jZXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IENoYW5n
ZSBmaWxlcyBhbmQgZm9sZGVycyByZWxhdGVkIHRvIHBsdWdpbiBwcm9jZXNzIGZyb20gZ3RrIHRv
IHVuaXguCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQ2hhbmdlIGZpbGVzIGFuZCBm
b2xkZXJzIHJlbGF0ZWQgdG8gcGx1Z2luIHByb2Nlc3MgZnJvbSBndGsgdG8gdW5peC4KKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vz
cy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Db250cm9sbGVyUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQgbWFj
cm9zIGZvciBndGsvZWZsIGRpZmZlcmVudHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtpdFhFcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcDogQWRkIHN0dWJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdp
bidzIHdpbmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdp
bkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6
CisgICAgICAgICogdW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0w
OS0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gTWFrZSBfcmVmKCkgZnVuY3Rpb25zIHJldHVybiB0aGUgb2JqZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJhMGFjNjkuLjhiNGJmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCkBAIC01NSw3ICs1NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFK
T1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2Fj
aGUgXApAQCAtODIsNyArODIsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAg
LTQyNSw3ICs0MjUsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy8gXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBlZDE1ZDAzLi44ZDM4ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTI3NSw4ICsyNzUsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzc01haW4uaCBcCiAJU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNw
cCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIFwKQEAgLTc5Myw4ICs3OTMsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKQEAgLTEwNTAsNyArMTA1MCw3
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5o
IFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdp
blByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKQEAgLTEyMjAsMTAgKzEyMjAs
MTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eUd0ay5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzTWFpbkd0ay5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIFwKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nl
c3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwKQEAgLTEyNjgsNiArMTI2OCw2IEBAIHdlYmtp
dDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAK
KwlTb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJM
RV9QTFVHSU5fUFJPQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5YWJjNmVjLi44
MWI5ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNiw2ICs2LDEwIEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAKKyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAK
KyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhp
Y3NDb250ZXh0R3RrLmNwcApAQCAtMjQsNiArMjgsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5jcHAKICAgICBT
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAv
ZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTgwLDYgKzg2LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0
ZS5jcHAKQEAgLTg5LDYgKzk2LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAK
KyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3Bw
CisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9y
Q2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9y
c0VmbC5jcHAKQEAgLTIzMCw2ICsyNDEsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJTlNU
QUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVT
VElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJT
fSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9W
RVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVG
SU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJv
Y2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElSfS9Q
bHVnaW5Qcm9jZXNzL3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1Bs
dWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2luTWFp
blVuaXguY3BwCisgICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisgICAg
ICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFCTEUo
JHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJDRVN9
KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9O
QU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQ
bHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxM
X0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJF
Q1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRU
ZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
Z3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL2d0ay9QbHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYmNjMWQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVy
UHJveHkuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJv
eSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3OGY5
YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Q
cm9jZXNzR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1
Z2luUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NzBjMDFjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1Bs
dWdpblByb2Nlc3NNYWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCi0KLSNpbmNsdWRl
ICJOZXRzY2FwZVBsdWdpbi5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhk
aXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCi17Ci0gICAgZ2NoYXIgZXJyb3JNZXNzYWdlWzY0
XTsKLSAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JN
ZXNzYWdlLCA2Myk7Ci0gICAgZ193YXJuaW5nKCJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFu
IFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKLSAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkg
cmVmbGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKLSAgICAgICAgICAgICAgIlRo
ZSBlcnJvciB3YXMgJyVzJy5cbiIKLSAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAl
bGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCi0gICAg
ICAgICAgICAgIGdfZ2V0X3ByZ25hbWUoKSwgZXJyb3JNZXNzYWdlLAotICAgICAgICAgICAgICBl
cnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgZXJyb3ItPnJl
cXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOwotICAgIHJldHVybiAwOwotfQotCi1XS19F
WFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17
Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOwotICAgIGJvb2wgc2NhblBsdWdp
biA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7Ci0gICAgQVNTRVJUKGFyZ2MgPT0g
MiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKLQotICAgIGd0a19pbml0KCZhcmdjLCAm
YXJndik7Ci0KLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7Ci0KLSAgICBpZiAoc2NhblBsdWdpbikgewotICAgICAgICBTdHJp
bmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKLSAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxV
UkU7Ci0gICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0KLSAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFgg
ZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNo
Ci0gICAgLy8gZXhpdHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2gg
ZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBpbnN0YWxsIGEKLSAgICAvLyBjdXN0b20gZXJyb3IgaGFu
ZGxlciB0byBzaG93IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJv
cnRpbmcuCi0gICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRndGtYRXJyb3IpOwotCi0gICAgaW50
IHNvY2tldCA9IGF0b2koYXJndlsxXSk7Ci0gICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFy
ZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBSdW5Mb29wOjpy
dW4oKTsKLQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYzZlNi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFp
bkd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5HdGtfaAotI2RlZmluZSBQ
bHVnaW5Qcm9jZXNzTWFpbkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLVdL
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7
Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVy
UHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNjMWQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENo
YW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OGEwZDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIK
KworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNp
ZmRlZiBIQVZFX0VDT1JFX1gKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKyNlbmRpZgor
CisjaWZkZWYgWFBfVU5JWAorc3RhdGljIGNvbnN0IGNoYXIqIHhFcnJvclN0cmluZyA9ICJUaGUg
cHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKKyAgICAg
ICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIK
KyAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIKKyAgICAgICAgIiAgKERldGFpbHM6IHNl
cmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiI7
CitzdGF0aWMgY2hhciogcHJvZ25hbWUgPSAwOworCitzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihE
aXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQqIGVycm9yKQoreworICAgIGNoYXIgZXJyb3JN
ZXNzYWdlWzY0XTsKKyAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29k
ZSwgZXJyb3JNZXNzYWdlLCA2Myk7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgZ193YXJuaW5n
KAorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIEVJTkFfTE9HX0NSSVQoCisjZW5kaWYKKyAgICAg
ICAgICAgICAgeEVycm9yU3RyaW5nLAorICAgICAgICAgICAgICBwcm9nbmFtZSwgZXJyb3JNZXNz
YWdlLAorICAgICAgICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKKyAg
ICAgICAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOworICAg
IHJldHVybiAwOworfQorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50
IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0g
Myk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4i
KTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdpbikpOwor
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgaWYgKCFlaW5hX2luaXQoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisj
aWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94X2luaXQoMCkpCisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKworICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxp
emVUaHJlYWRpbmcoKTsKKworICAgIGlmIChzY2FuUGx1Z2luKSB7CisgICAgICAgIFN0cmluZyBw
bHVnaW5QYXRoKGFyZ3ZbMl0pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpz
Y2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK
KyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBSdW5Mb29wOjppbml0
aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJv
cnMgdGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKKyAg
ICAvLyBleGl0cyB0aGUgcHJvY2Vzcy4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUg
dG8gcGx1Z2luIGJ1Z3MsIHdlIGluc3RhbGwgYQorICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVy
IHRvIHNob3cgYSB3YXJuaW5nIHdoZW4gYSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGlu
Zy4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisgICAgcHJvZ25hbWUgPSBiYXNlbmFtZShhcmd2WzBd
KTsKKyAgICBYU2V0RXJyb3JIYW5kbGVyKHdlYmtpdFhFcnJvcik7CisjZW5kaWYKKworICAgIGlu
dCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hh
cmVkKCkuaW5pdGlhbGl6ZShzb2NrZXQsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgUnVuTG9vcDo6
cnVuKCk7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01h
aW5Vbml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwYzU5NmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc01haW5Vbml4LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5Vbml4X2gKKyNkZWZpbmUg
UGx1Z2luUHJvY2Vzc01haW5Vbml4X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
V0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSk7Cit9IC8vIGV4dGVybiAiQyIKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzhmOWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1Vu
aXguY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3MuaCIKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpblByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vz
c1Byb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5MzM5ZC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJv
Y2Vzc1Byb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgotI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgotI2luY2x1ZGUg
PGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0KLWJv
b2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKLXsKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGgg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3Mo
KSk7Ci0gICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwbHVnaW5QYXRoKTsKLSAgICBjaGFyKiBhcmd2WzRdOwotICAgIGFyZ3ZbMF0gPSBjb25z
dF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7Ci0gICAgYXJndlsxXSA9IGNvbnN0X2Nh
c3Q8Y2hhcio+KCItc2NhblBsdWdpbiIpOwotICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIq
PihwbHVnaW5QYXRoQ1N0cmluZy5kYXRhKCkpOwotICAgIGFyZ3ZbM10gPSAwOwotCi0gICAgZ2lu
dCBzdGF0dXM7Ci0gICAgR093blB0cjxnY2hhcj4gc3RkT3V0OwotICAgIGlmICghZ19zcGF3bl9z
eW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0
Lm91dFB0cigpLCAwLCAmc3RhdHVzLCAwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NF
U1MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5l
c0V4cGVjdGVkID0gMzsKLSAgICBTdHJpbmcgbGluZXNba051bUxpbmVzRXhwZWN0ZWRdOwotICAg
IHVuc2lnbmVkIGxpbmVJbmRleCA9IDA7Ci0gICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0LmdldCgpKTsKLSAgICB3aGlsZSAobGlu
ZUluZGV4IDwga051bUxpbmVzRXhwZWN0ZWQpIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0
ID0gY3VycmVudDsKLSAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsg
fQotICAgICAgICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBz
dGFydCAtIDEpOwotICAgIH0KLQotICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOwotICAg
IHJlc3VsdC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKLSAgICByZXN1bHQubWltZURlc2Ny
aXB0aW9uLnN3YXAobGluZXNbMl0pOwotICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlv
bi5pc0VtcHR5KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3OGJiMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExB
VEZPUk0oRUZMKSAmJiBFTkFCTEUoR0xJQl9TVVBQT1JUKSkKKyNpbmNsdWRlIDxnbGliLmg+Cisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vz
cyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKK30KKworYm9vbCBQbHVnaW5Q
cm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVn
aW5NZXRhRGF0YSYgcmVzdWx0KQoreworI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVG
TCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOwor
ICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGx1Z2luUGF0aCk7CisgICAgY2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2Fz
dDxjaGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNo
YXIqPigiLXNjYW5QbHVnaW4iKTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1
Z2luUGF0aENTdHJpbmcuZGF0YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworICAgIGludCBzdGF0
dXM7CisgICAgY2hhciogc3RkT3V0OworCisgICAgaWYgKCFnX3NwYXduX3N5bmMoMCwgYXJndiwg
MCwgR19TUEFXTl9TVERFUlJfVE9fREVWX05VTEwsIDAsIDAsICZzdGRPdXQsIDAsICZzdGF0dXMs
IDApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVdJRkVYSVRFRChzdGF0dXMp
IHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gRVhJVF9TVUNDRVNTKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7CisgICAg
U3RyaW5nIGxpbmVzW2tOdW1MaW5lc0V4cGVjdGVkXTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXgg
PSAwOworCisgICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IFVDaGFyKj4oc3RkT3V0KTsKKworICAgIHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBl
Y3RlZCkgeworICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3
aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJ
bmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisg
ICAgaWYgKHN0ZE91dCkKKyAgICAgICAgZnJlZShzdGRPdXQpOworCisgICAgcmVzdWx0Lm5hbWUu
c3dhcChsaW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOwor
ICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFy
ZXN1bHQubWltZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKKyNlbHNlIC8vIFBMQVRGT1JNKEdUSykg
fHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxF
KEdMSUJfU1VQUE9SVCkpCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDk0ZGM0NGIuLjc2MTg3NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTgzLDQg
KzgzLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0
aGVtZVBhdGgpCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVt
ZVBhdGgodGhlbWVQYXRoKSwgbV9wYWdlSUQsIDApOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2
NF90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L2d0ay9QbHVnaW5Qcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTk2YWYyMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCi0K
LSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1ib29sIFBsdWdpblByb3h5OjpuZWVk
c0JhY2tpbmdTdG9yZSgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTZhZjIwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2lu
UHJveHlVbml4LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
bHVnaW5Qcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBQ
bHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAppbmRleCBkYTI0NzhkLi5mMjE2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMzcsMTUgKzM3LDIwIEBACiAjaWYgUExBVEZPUk0o
UVQpCiAjaW5jbHVkZSA8V2ViQ29yZS9RdFgxMUltYWdlQ29udmVyc2lvbi5oPgogI2VsaWYgUExB
VEZPUk0oR1RLKQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAi
UmVmUHRyQ2Fpcm8uaCIKLSNpbmNsdWRlIDxjYWlyby9jYWlyby14bGliLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogI2luY2x1ZGUgPGd0ay9ndGt4
Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxnZGsvZ2RreC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Rr
VmVyc2lvbmluZy5oPgorI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVf
WCkKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKworI2lmIFVTRShDQUlSTykgJiYgIVBM
QVRGT1JNKFdJTl9DQUlSTykKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2lu
Y2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2Vu
ZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODQsNiArODksOCBAQCBzdGF0aWMg
RGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAgICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3Rr
IGFwcCwgd2UnbGwgKHByb2JhYmx5PykgaGF2ZSB0aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55
IGdkay1iYXNlZAogICAgIC8vIHBsdWdpbnMsIHNvIHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWln
aHQgd2FudCB0byBhZGQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0
dXJuIEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2Vs
aWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJl
dHVybiAwOwogI2VuZGlmCkBAIC05NSw2ICsxMDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCB4MTFT
Y3JlZW4oKQogICAgIHJldHVybiBYRGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdpbjo6eDExSG9z
dERpc3BsYXkoKSk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka19zY3JlZW5f
Z2V0X251bWJlcihnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZM
KSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF9zY3JlZW5faW5k
ZXhfZ2V0KGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKICNlbmRpZgpAQCAtMTA2LDYgKzExNSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlE
ZXB0aCgpCiAgICAgcmV0dXJuIFhEZWZhdWx0RGVwdGgoTmV0c2NhcGVQbHVnaW46OngxMUhvc3RE
aXNwbGF5KCksIHgxMVNjcmVlbigpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4g
Z2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2Ny
ZWVuX2dldF9kZWZhdWx0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZF
X0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQ
bHVnaW46OngxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE3LDYgKzEyOCw4IEBAIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKQogICAgIHJldHVybiBYRGVmYXVsdFJv
b3RXaW5kb3coTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHJldHVybiBHREtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfd2luZG93X3Jv
b3RfZmlyc3RfZ2V0KCk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNDQsNiAr
MTU3LDggQEAgRGlzcGxheSogTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkKICAgICBy
ZXR1cm4gZGVkaWNhdGVkRGlzcGxheTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4g
R0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQ
TEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKQEAgLTM1Nyw3ICszNzIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydAog
ICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVj
dC55KCkpLCBxaW1hZ2VGcm9tWEltYWdlKHhJbWFnZSksIGV4cG9zZWRSZWN0KTsKIAogICAgIFhE
ZXN0cm95SW1hZ2UoeEltYWdlKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JN
KEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2Vf
Y3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZHJhd2Fi
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxi
YWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCA4MDcy
MDQ2Li4yNTUzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBjb25zdCB0
eXBlJiBuYW1lKCkgXAogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAxCiAjZWxpZiBQ
TEFURk9STShXSU4pCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfV0lOIDEKLSNlbGlmIFBM
QVRGT1JNKEdUSykgJiYgKE9TKFVOSVgpICYmICFPUyhNQUNfT1NfWCkpCisjZWxpZiAoUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShFRkwpKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19YKSkK
ICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9YMTEgMQogI2VsaWYgUExBVEZPUk0oUVQpCiAv
LyBRdCBoYW5kbGVzIHRoaXMgZmVhdHVyZXMucHJmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0
ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2Y0NGMuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvZ3RrL1BsdWdpbk1haW5HdGsuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEg
TW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJQbHVnaW5Qcm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5HdGsoYXJnYywgYXJn
dik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZjlhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBv
cnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5p
eC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQppbmRleCA1NDkwNTZhLi45MjQyZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzQs
NyArNzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFf
Q0FQVFVSRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRU1P
UllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9N
SUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFW
SUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSBPTikKQEAgLTExOCw2ICsxMTgsMTAgQEAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkKIEFE
RF9ERUZJTklUSU9OUygtRFdURl9VU0VfRlJFRVRZUEU9MSkKIEFERF9ERUZJTklUSU9OUygtRFdU
Rl9VU0VfSEFSRkJVWlpfTkc9MSkKIAorSUYgKEVOQUJMRV9XRUJLSVQyKQorICAgIFNFVChFTkFC
TEVfUExVR0lOX1BST0NFU1MgMSkKK0VORElGICgpCisKIElGIChOT1QgRU5BQkxFX1NWRykKICAg
U0VUKEVOQUJMRV9TVkdfRk9OVFMgMCkKIEVORElGICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODE4YTJlMC4uYjZhNmY5YSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTA5LTEzICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtXSzJdW0dUS11bRUZMXSBTaGFyZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJv
Y2VzcyBpbXBsZW1lbnRhdGlvbiB3aXRoIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gb24gTmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRp
b24gYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbToKKwogMjAxMi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBUaGUgQU5HTEUgYnVpbGQgb24gV2luZG93cyBicmVha3Mg
d2l0aCBHbnVXaW4zMidzIGZsZXggYmVjYXVzZSBpdCBpcyB0b28gb2xkCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYWQyMzA0Ni4uZjY3ODA4MSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzIxLDcgKzMyMSw3IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VU
SUxTIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwk
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0
c2NhcGUtcGx1Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1
cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRl
ZmF1bHQgPT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0s
CisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9
PiAxLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gIm5ldHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlz
RWZsKCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164865</attachid>
            <date>2012-09-20 02:21:13 -0700</date>
            <delta_ts>2012-09-20 02:28:23 -0700</delta_ts>
            <desc>Applied comments</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>53497</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3N2E2YTkxLi43MzA5ZTcz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTMgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAx
Mi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBzeW5jcXQgaXNuJ3QgcmUtcnVuIHdoZW4gV2ViS2l0MS5wcm8gY2hhbmdlcyBh
bmQgd2UncmUgYnVpbGRpbmcgd2l0aCAtLW5vLXdlYmtpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMGJjYmFm
Li4yYzAyNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDktMTMgIE1hcml1
c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1b
R1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9u
IHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHdpbmRvd2xlc3MgcGx1Z2luIGFuZCBmdW5jdGlvbnMgbmVlZGVkIHRv
IGxhdW5jaCBQbHVnaW5Qcm9jZXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IENoYW5n
ZSBmaWxlcyBhbmQgZm9sZGVycyByZWxhdGVkIHRvIHBsdWdpbiBwcm9jZXNzIGZyb20gZ3RrIHRv
IHVuaXguCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQ2hhbmdlIGZpbGVzIGFuZCBm
b2xkZXJzIHJlbGF0ZWQgdG8gcGx1Z2luIHByb2Nlc3MgZnJvbSBndGsgdG8gdW5peC4KKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vz
cy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Db250cm9sbGVyUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQgbWFj
cm9zIGZvciBndGsvZWZsIGRpZmZlcmVudHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtpdFhFcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcDogQWRkIHN0dWJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdp
bidzIHdpbmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdp
bkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6
CisgICAgICAgICogdW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0w
OS0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gTWFrZSBfcmVmKCkgZnVuY3Rpb25zIHJldHVybiB0aGUgb2JqZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJhMGFjNjkuLjhiNGJmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCkBAIC01NSw3ICs1NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFK
T1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2Fj
aGUgXApAQCAtODIsNyArODIsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAg
LTQyNSw3ICs0MjUsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy8gXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBlZDE1ZDAzLi44ZDM4ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTI3NSw4ICsyNzUsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzc01haW4uaCBcCiAJU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNw
cCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIFwKQEAgLTc5Myw4ICs3OTMsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKQEAgLTEwNTAsNyArMTA1MCw3
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5o
IFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdp
blByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKQEAgLTEyMjAsMTAgKzEyMjAs
MTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eUd0ay5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzTWFpbkd0ay5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIFwKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nl
c3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwKQEAgLTEyNjgsNiArMTI2OCw2IEBAIHdlYmtp
dDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAK
KwlTb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJM
RV9QTFVHSU5fUFJPQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5YWJjNmVjLi44
MWI5ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNiw2ICs2LDEwIEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAKKyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAK
KyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhp
Y3NDb250ZXh0R3RrLmNwcApAQCAtMjQsNiArMjgsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5jcHAKICAgICBT
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAv
ZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTgwLDYgKzg2LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0
ZS5jcHAKQEAgLTg5LDYgKzk2LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAK
KyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3Bw
CisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9y
Q2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9y
c0VmbC5jcHAKQEAgLTIzMCw2ICsyNDEsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJTlNU
QUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVT
VElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJT
fSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9W
RVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVG
SU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJv
Y2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElSfS9Q
bHVnaW5Qcm9jZXNzL3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1Bs
dWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2luTWFp
blVuaXguY3BwCisgICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisgICAg
ICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFCTEUo
JHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJDRVN9
KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9O
QU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQ
bHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxM
X0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJF
Q1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRU
ZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
Z3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL2d0ay9QbHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYmNjMWQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVy
UHJveHkuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJv
eSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3OGY5
YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Q
cm9jZXNzR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1
Z2luUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NzBjMDFjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1Bs
dWdpblByb2Nlc3NNYWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCi0KLSNpbmNsdWRl
ICJOZXRzY2FwZVBsdWdpbi5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhk
aXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCi17Ci0gICAgZ2NoYXIgZXJyb3JNZXNzYWdlWzY0
XTsKLSAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JN
ZXNzYWdlLCA2Myk7Ci0gICAgZ193YXJuaW5nKCJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFu
IFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKLSAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkg
cmVmbGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKLSAgICAgICAgICAgICAgIlRo
ZSBlcnJvciB3YXMgJyVzJy5cbiIKLSAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAl
bGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCi0gICAg
ICAgICAgICAgIGdfZ2V0X3ByZ25hbWUoKSwgZXJyb3JNZXNzYWdlLAotICAgICAgICAgICAgICBl
cnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgZXJyb3ItPnJl
cXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOwotICAgIHJldHVybiAwOwotfQotCi1XS19F
WFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17
Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOwotICAgIGJvb2wgc2NhblBsdWdp
biA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7Ci0gICAgQVNTRVJUKGFyZ2MgPT0g
MiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKLQotICAgIGd0a19pbml0KCZhcmdjLCAm
YXJndik7Ci0KLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7Ci0KLSAgICBpZiAoc2NhblBsdWdpbikgewotICAgICAgICBTdHJp
bmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKLSAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxV
UkU7Ci0gICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0KLSAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFgg
ZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNo
Ci0gICAgLy8gZXhpdHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2gg
ZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBpbnN0YWxsIGEKLSAgICAvLyBjdXN0b20gZXJyb3IgaGFu
ZGxlciB0byBzaG93IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJv
cnRpbmcuCi0gICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRndGtYRXJyb3IpOwotCi0gICAgaW50
IHNvY2tldCA9IGF0b2koYXJndlsxXSk7Ci0gICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFy
ZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBSdW5Mb29wOjpy
dW4oKTsKLQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYzZlNi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFp
bkd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5HdGtfaAotI2RlZmluZSBQ
bHVnaW5Qcm9jZXNzTWFpbkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLVdL
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7
Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVy
UHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNjMWQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENo
YW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZTNlMjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIK
KworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjZWxpZiBQTEFURk9STShFRkwpICYmIEhBVkVfRUNPUkVfWAorI2luY2x1
ZGUgPEVjb3JlX1guaD4KKyNlbmRpZgorCisjaWZkZWYgWFBfVU5JWAorc3RhdGljIGNvbnN0IGNo
YXIqIHhFcnJvclN0cmluZyA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93
IFN5c3RlbSBlcnJvci5cbiIKKyAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBidWcg
aW4gYSBicm93c2VyIHBsdWdpbi5cbiIKKyAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIK
KyAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2Nv
ZGUgJWQgbWlub3JfY29kZSAlZClcbiI7CitzdGF0aWMgY2hhciogcHJvZ3JhbU5hbWUgPSAwOwor
CitzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQq
IGVycm9yKQoreworICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKKyAgICBYR2V0RXJyb3JUZXh0
KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CisKKyAgICBM
T0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAorICAgICAgICAgICAgICBwcm9ncmFtTmFtZSwgZXJy
b3JNZXNzYWdlLAorICAgICAgICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29k
ZSwKKyAgICAgICAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUp
OworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVu
aXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFy
Z2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5Q
bHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdp
bikpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94
X2luaXQoMCkpCisjZW5kaWYKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKworICAgIC8vZWNv
cmVfeF9pbml0KDApOworICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKworICAgIGlmIChzY2FuUGx1Z2luKSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFy
Z3ZbMl0pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKHBs
dWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgcmV0
dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKKworICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUg
aGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKKyAgICAvLyBleGl0cyB0
aGUgcHJvY2Vzcy4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1
Z3MsIHdlIGluc3RhbGwgYQorICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3
YXJuaW5nIHdoZW4gYSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4KKyNpZiBkZWZp
bmVkKFhQX1VOSVgpCisgICAgcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZShhcmd2WzBdKTsKKyAgICBY
U2V0RXJyb3JIYW5kbGVyKHdlYmtpdFhFcnJvcik7CisjZW5kaWYKKworICAgIGludCBzb2NrZXQg
PSBhdG9pKGFyZ3ZbMV0pOworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5p
dGlhbGl6ZShzb2NrZXQsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgUnVuTG9vcDo6cnVuKCk7CisK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwYzU5NmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5Vbml4X2gKKyNkZWZpbmUgUGx1Z2luUHJv
Y2Vzc01haW5Vbml4X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworV0tfRVhQT1JU
IGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7Cit9IC8v
IGV4dGVybiAiQyIKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzhmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIK
KworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3Rr
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5MzM5ZC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5
R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQotCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1
ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgotI2luY2x1ZGUgPGdsaWIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nl
c3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0KLWJvb2wgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1
Z2luTWV0YURhdGEmIHJlc3VsdCkKLXsKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7Ci0gICAg
Q1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVn
aW5QYXRoKTsKLSAgICBjaGFyKiBhcmd2WzRdOwotICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNo
YXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7Ci0gICAgYXJndlsxXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+
KCItc2NhblBsdWdpbiIpOwotICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihwbHVnaW5Q
YXRoQ1N0cmluZy5kYXRhKCkpOwotICAgIGFyZ3ZbM10gPSAwOwotCi0gICAgZ2ludCBzdGF0dXM7
Ci0gICAgR093blB0cjxnY2hhcj4gc3RkT3V0OwotICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFy
Z3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0Lm91dFB0cigp
LCAwLCAmc3RhdHVzLCAwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghV0lGRVhJ
VEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5lc0V4cGVjdGVk
ID0gMzsKLSAgICBTdHJpbmcgbGluZXNba051bUxpbmVzRXhwZWN0ZWRdOwotICAgIHVuc2lnbmVk
IGxpbmVJbmRleCA9IDA7Ci0gICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0LmdldCgpKTsKLSAgICB3aGlsZSAobGluZUluZGV4IDwg
a051bUxpbmVzRXhwZWN0ZWQpIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3VycmVu
dDsKLSAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQotICAgICAg
ICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAtIDEp
OwotICAgIH0KLQotICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOwotICAgIHJlc3VsdC5k
ZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKLSAgICByZXN1bHQubWltZURlc2NyaXB0aW9uLnN3
YXAobGluZXNbMl0pOwotICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
dW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3OGJiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
QEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworI2lmIEVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZM
KSAmJiBFTkFCTEUoR0xJQl9TVVBQT1JUKSkKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0
YSYgcmVzdWx0KQoreworI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5B
QkxFKEdMSUJfU1VQUE9SVCkpCisgICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOworICAgIENTdHJp
bmcgcGx1Z2luUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0
aCk7CisgICAgY2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4o
YmluYXJ5UGF0aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNj
YW5QbHVnaW4iKTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENT
dHJpbmcuZGF0YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworICAgIGludCBzdGF0dXM7CisgICAg
Y2hhciogc3RkT3V0OworCisgICAgaWYgKCFnX3NwYXduX3N5bmMoMCwgYXJndiwgMCwgR19TUEFX
Tl9TVERFUlJfVE9fREVWX05VTEwsIDAsIDAsICZzdGRPdXQsIDAsICZzdGF0dXMsIDApKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElU
U1RBVFVTKHN0YXR1cykgIT0gRVhJVF9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb25zdCB1bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7CisgICAgU3RyaW5nIGxp
bmVzW2tOdW1MaW5lc0V4cGVjdGVkXTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOworCisg
ICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
c3RkT3V0KTsKKworICAgIHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgewor
ICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1
cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9
IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgaWYgKHN0
ZE91dCkKKyAgICAgICAgZnJlZShzdGRPdXQpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5l
c1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3Vs
dC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWlt
ZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKKyNlbHNlIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRG
T1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQ
UE9SVCkpCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCmluZGV4IDk0ZGM0NGIuLjc2MTg3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTgzLDQgKzgzLDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgp
CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVtZVBhdGgodGhl
bWVQYXRoKSwgbV9wYWdlSUQsIDApOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKHVpbnQ2NF90JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVn
aW5Qcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTk2YWYyMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCi0KLSNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1ib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdT
dG9yZSgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTZhZjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4
LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm94
eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBQbHVnaW5Qcm94
eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAppbmRleCBkYTI0NzhkLi5mMjE2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcApAQCAtMzcsMTUgKzM3LDIwIEBACiAjaWYgUExBVEZPUk0oUVQpCiAjaW5j
bHVkZSA8V2ViQ29yZS9RdFgxMUltYWdlQ29udmVyc2lvbi5oPgogI2VsaWYgUExBVEZPUk0oR1RL
KQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fp
cm8uaCIKLSNpbmNsdWRlIDxjYWlyby9jYWlyby14bGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogI2luY2x1ZGUgPGd0ay9ndGt4Lmg+CiAjZW5k
aWYKICNpbmNsdWRlIDxnZGsvZ2RreC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmlu
Zy5oPgorI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyNpbmNs
dWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKworI2lmIFVTRShDQUlSTykgJiYgIVBMQVRGT1JNKFdJ
Tl9DQUlSTykKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODQsNiArODksOCBAQCBzdGF0aWMgRGlzcGxheSog
Z2V0UGx1Z2luRGlzcGxheSgpCiAgICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwgd2Un
bGwgKHByb2JhYmx5PykgaGF2ZSB0aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1iYXNl
ZAogICAgIC8vIHBsdWdpbnMsIHNvIHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2FudCB0
byBhZGQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0dXJuIEdES19E
SVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZP
Uk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC05NSw2ICsxMDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCB4MTFTY3JlZW4oKQog
ICAgIHJldHVybiBYRGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXko
KSk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka19zY3JlZW5fZ2V0X251bWJl
cihnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZp
bmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF9zY3JlZW5faW5kZXhfZ2V0KGVj
b3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRp
ZgpAQCAtMTA2LDYgKzExNSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpCiAg
ICAgcmV0dXJuIFhEZWZhdWx0RGVwdGgoTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCks
IHgxMVNjcmVlbigpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3Vh
bF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9k
ZWZhdWx0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CisgICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46Ongx
MUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE3LDYgKzEyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgbG9uZyByb290V2luZG93SUQoKQogICAgIHJldHVybiBYRGVmYXVsdFJvb3RXaW5kb3co
TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2VsaWYgUExBVEZPUk0oR1RLKQog
ICAgIHJldHVybiBHREtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVm
aW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfd2luZG93X3Jvb3RfZmlyc3Rf
Z2V0KCk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNDQsNiArMTU3LDggQEAg
RGlzcGxheSogTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkKICAgICByZXR1cm4gZGVk
aWNhdGVkRGlzcGxheTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX0RJU1BM
QVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShF
RkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNw
bGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKQEAgLTM1Nyw3ICszNzIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydAogICAgIHBhaW50
ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBx
aW1hZ2VGcm9tWEltYWdlKHhJbWFnZSksIGV4cG9zZWRSZWN0KTsKIAogICAgIFhEZXN0cm95SW1h
Z2UoeEltYWdlKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1f
cGx1Z2luRGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZHJhd2FibGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0
Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCA4MDcyMDQ2Li4yNTUz
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBuYW1l
KCkgXAogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAxCiAjZWxpZiBQTEFURk9STShX
SU4pCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfV0lOIDEKLSNlbGlmIFBMQVRGT1JNKEdU
SykgJiYgKE9TKFVOSVgpICYmICFPUyhNQUNfT1NfWCkpCisjZWxpZiAoUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19YKSkKICNkZWZpbmUg
UExVR0lOX0FSQ0hJVEVDVFVSRV9YMTEgMQogI2VsaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoYW5k
bGVzIHRoaXMgZmVhdHVyZXMucHJmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1
Z2luTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2Y0NGMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvZ3RrL1BsdWdpbk1haW5HdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0g
ICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5HdGsoYXJnYywgYXJndik7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA3ZjlhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi91
bml4L1BsdWdpbk1haW5Vbml4LmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1
Z2luUHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRl
eCA1NDkwNTZhLi45MjQyZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzQsNyArNzQsNyBA
QCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExF
UiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKQEAg
LTExOCw2ICsxMTgsMTAgQEAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkKIEFERF9ERUZJTklU
SU9OUygtRFdURl9VU0VfRlJFRVRZUEU9MSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfSEFS
RkJVWlpfTkc9MSkKIAorSUYgKEVOQUJMRV9XRUJLSVQyKQorICAgIFNFVChFTkFCTEVfUExVR0lO
X1BST0NFU1MgMSkKK0VORElGICgpCisKIElGIChOT1QgRU5BQkxFX1NWRykKICAgU0VUKEVOQUJM
RV9TVkdfRk9OVFMgMCkKIEVORElGICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODE4YTJlMC4uYjZhNmY5YSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5
LTEzICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXSzJdW0dUS11bRUZMXSBTaGFyZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJvY2VzcyBpbXBs
ZW1lbnRhdGlvbiB3aXRoIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFR1cm4gb24gTmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRpb24gYnkgZGVm
YXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwog
MjAxMi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBUaGUgQU5HTEUgYnVpbGQgb24gV2luZG93cyBicmVha3Mgd2l0aCBHbnVX
aW4zMidzIGZsZXggYmVjYXVzZSBpdCBpcyB0b28gb2xkCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG0KaW5kZXggYWQyMzA0Ni4uZjY3ODA4MSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzIxLDcgKzMyMSw3IEBAIG15IEBmZWF0dXJlcyA9
ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIiwgZGVm
YXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkcmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0c2NhcGUtcGx1
Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQgPT4g
IWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCisgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2YWx1
ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5l
dHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZh
bHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164867</attachid>
            <date>2012-09-20 02:28:23 -0700</date>
            <delta_ts>2012-09-20 04:43:02 -0700</delta_ts>
            <desc>Fixes webkit style</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>53497</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3N2E2YTkxLi43MzA5ZTcz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTMgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAx
Mi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBzeW5jcXQgaXNuJ3QgcmUtcnVuIHdoZW4gV2ViS2l0MS5wcm8gY2hhbmdlcyBh
bmQgd2UncmUgYnVpbGRpbmcgd2l0aCAtLW5vLXdlYmtpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMGJjYmFm
Li4yYzAyNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDktMTMgIE1hcml1
c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1b
R1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9u
IHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHdpbmRvd2xlc3MgcGx1Z2luIGFuZCBmdW5jdGlvbnMgbmVlZGVkIHRv
IGxhdW5jaCBQbHVnaW5Qcm9jZXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IENoYW5n
ZSBmaWxlcyBhbmQgZm9sZGVycyByZWxhdGVkIHRvIHBsdWdpbiBwcm9jZXNzIGZyb20gZ3RrIHRv
IHVuaXguCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQ2hhbmdlIGZpbGVzIGFuZCBm
b2xkZXJzIHJlbGF0ZWQgdG8gcGx1Z2luIHByb2Nlc3MgZnJvbSBndGsgdG8gdW5peC4KKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vz
cy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Db250cm9sbGVyUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQgbWFj
cm9zIGZvciBndGsvZWZsIGRpZmZlcmVudHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtpdFhFcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcDogQWRkIHN0dWJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdp
bidzIHdpbmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdp
bkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6
CisgICAgICAgICogdW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0w
OS0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gTWFrZSBfcmVmKCkgZnVuY3Rpb25zIHJldHVybiB0aGUgb2JqZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJhMGFjNjkuLjhiNGJmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCkBAIC01NSw3ICs1NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFK
T1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2Fj
aGUgXApAQCAtODIsNyArODIsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAg
LTQyNSw3ICs0MjUsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy8gXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBlZDE1ZDAzLi44ZDM4ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTI3NSw4ICsyNzUsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzc01haW4uaCBcCiAJU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNw
cCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIFwKQEAgLTc5Myw4ICs3OTMsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKQEAgLTEwNTAsNyArMTA1MCw3
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5o
IFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdp
blByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKQEAgLTEyMjAsMTAgKzEyMjAs
MTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eUd0ay5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzTWFpbkd0ay5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIFwKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nl
c3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwKQEAgLTEyNjgsNiArMTI2OCw2IEBAIHdlYmtp
dDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAK
KwlTb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJM
RV9QTFVHSU5fUFJPQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5YWJjNmVjLi44
MWI5ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNiw2ICs2LDEwIEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAKKyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAK
KyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhp
Y3NDb250ZXh0R3RrLmNwcApAQCAtMjQsNiArMjgsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5jcHAKICAgICBT
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAv
ZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTgwLDYgKzg2LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0
ZS5jcHAKQEAgLTg5LDYgKzk2LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAK
KyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3Bw
CisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9y
Q2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9y
c0VmbC5jcHAKQEAgLTIzMCw2ICsyNDEsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJTlNU
QUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVT
VElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJT
fSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9W
RVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVG
SU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJv
Y2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElSfS9Q
bHVnaW5Qcm9jZXNzL3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1Bs
dWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2luTWFp
blVuaXguY3BwCisgICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisgICAg
ICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFCTEUo
JHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJDRVN9
KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9O
QU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQ
bHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxM
X0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJF
Q1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRU
ZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
Z3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL2d0ay9QbHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYmNjMWQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVy
UHJveHkuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJv
eSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3OGY5
YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Q
cm9jZXNzR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1
Z2luUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NzBjMDFjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1Bs
dWdpblByb2Nlc3NNYWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCi0KLSNpbmNsdWRl
ICJOZXRzY2FwZVBsdWdpbi5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhk
aXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCi17Ci0gICAgZ2NoYXIgZXJyb3JNZXNzYWdlWzY0
XTsKLSAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JN
ZXNzYWdlLCA2Myk7Ci0gICAgZ193YXJuaW5nKCJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFu
IFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKLSAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkg
cmVmbGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKLSAgICAgICAgICAgICAgIlRo
ZSBlcnJvciB3YXMgJyVzJy5cbiIKLSAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAl
bGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCi0gICAg
ICAgICAgICAgIGdfZ2V0X3ByZ25hbWUoKSwgZXJyb3JNZXNzYWdlLAotICAgICAgICAgICAgICBl
cnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgZXJyb3ItPnJl
cXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOwotICAgIHJldHVybiAwOwotfQotCi1XS19F
WFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17
Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOwotICAgIGJvb2wgc2NhblBsdWdp
biA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7Ci0gICAgQVNTRVJUKGFyZ2MgPT0g
MiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKLQotICAgIGd0a19pbml0KCZhcmdjLCAm
YXJndik7Ci0KLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7Ci0KLSAgICBpZiAoc2NhblBsdWdpbikgewotICAgICAgICBTdHJp
bmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKLSAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxV
UkU7Ci0gICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0KLSAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFgg
ZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNo
Ci0gICAgLy8gZXhpdHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2gg
ZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBpbnN0YWxsIGEKLSAgICAvLyBjdXN0b20gZXJyb3IgaGFu
ZGxlciB0byBzaG93IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJv
cnRpbmcuCi0gICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRndGtYRXJyb3IpOwotCi0gICAgaW50
IHNvY2tldCA9IGF0b2koYXJndlsxXSk7Ci0gICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFy
ZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBSdW5Mb29wOjpy
dW4oKTsKLQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYzZlNi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFp
bkd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5HdGtfaAotI2RlZmluZSBQ
bHVnaW5Qcm9jZXNzTWFpbkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLVdL
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7
Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVy
UHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNjMWQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENo
YW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZTNlMjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIK
KworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjZWxpZiBQTEFURk9STShFRkwpICYmIEhBVkVfRUNPUkVfWAorI2luY2x1
ZGUgPEVjb3JlX1guaD4KKyNlbmRpZgorCisjaWZkZWYgWFBfVU5JWAorc3RhdGljIGNvbnN0IGNo
YXIqIHhFcnJvclN0cmluZyA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93
IFN5c3RlbSBlcnJvci5cbiIKKyAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBidWcg
aW4gYSBicm93c2VyIHBsdWdpbi5cbiIKKyAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIK
KyAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2Nv
ZGUgJWQgbWlub3JfY29kZSAlZClcbiI7CitzdGF0aWMgY2hhciogcHJvZ3JhbU5hbWUgPSAwOwor
CitzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQq
IGVycm9yKQoreworICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKKyAgICBYR2V0RXJyb3JUZXh0
KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CisKKyAgICBM
T0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAorICAgICAgICAgICAgICBwcm9ncmFtTmFtZSwgZXJy
b3JNZXNzYWdlLAorICAgICAgICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29k
ZSwKKyAgICAgICAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUp
OworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVu
aXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFy
Z2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5Q
bHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdp
bikpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94
X2luaXQoMCkpCisjZW5kaWYKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKworICAgIC8vZWNv
cmVfeF9pbml0KDApOworICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKworICAgIGlmIChzY2FuUGx1Z2luKSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFy
Z3ZbMl0pOworICAgICAgICBpZiAoIU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKHBs
dWdpblBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgcmV0
dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKKworICAgIC8vIFBsdWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUg
aGFuZGxlZCBieSB0aGUgR0RLIFggZXJyb3IgaGFuZGxlciwgd2hpY2gKKyAgICAvLyBleGl0cyB0
aGUgcHJvY2Vzcy4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1
Z3MsIHdlIGluc3RhbGwgYQorICAgIC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3
YXJuaW5nIHdoZW4gYSBYIGVycm9yIGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4KKyNpZiBkZWZp
bmVkKFhQX1VOSVgpCisgICAgcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZShhcmd2WzBdKTsKKyAgICBY
U2V0RXJyb3JIYW5kbGVyKHdlYmtpdFhFcnJvcik7CisjZW5kaWYKKworICAgIGludCBzb2NrZXQg
PSBhdG9pKGFyZ3ZbMV0pOworICAgIFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5p
dGlhbGl6ZShzb2NrZXQsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgUnVuTG9vcDo6cnVuKCk7CisK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwYzU5NmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5Vbml4X2gKKyNkZWZpbmUgUGx1Z2luUHJv
Y2Vzc01haW5Vbml4X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworV0tfRVhQT1JU
IGludCBQbHVnaW5Qcm9jZXNzTWFpblVuaXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7Cit9IC8v
IGV4dGVybiAiQyIKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzhmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIK
KworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3Rr
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5MzM5ZC4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5
R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQotCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1
ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgotI2luY2x1ZGUgPGdsaWIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nl
c3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci19Ci0KLWJvb2wgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1
Z2luTWV0YURhdGEmIHJlc3VsdCkKLXsKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7Ci0gICAg
Q1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVn
aW5QYXRoKTsKLSAgICBjaGFyKiBhcmd2WzRdOwotICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNo
YXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7Ci0gICAgYXJndlsxXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+
KCItc2NhblBsdWdpbiIpOwotICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihwbHVnaW5Q
YXRoQ1N0cmluZy5kYXRhKCkpOwotICAgIGFyZ3ZbM10gPSAwOwotCi0gICAgZ2ludCBzdGF0dXM7
Ci0gICAgR093blB0cjxnY2hhcj4gc3RkT3V0OwotICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFy
Z3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0Lm91dFB0cigp
LCAwLCAmc3RhdHVzLCAwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghV0lGRVhJ
VEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5lc0V4cGVjdGVk
ID0gMzsKLSAgICBTdHJpbmcgbGluZXNba051bUxpbmVzRXhwZWN0ZWRdOwotICAgIHVuc2lnbmVk
IGxpbmVJbmRleCA9IDA7Ci0gICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0LmdldCgpKTsKLSAgICB3aGlsZSAobGluZUluZGV4IDwg
a051bUxpbmVzRXhwZWN0ZWQpIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3VycmVu
dDsKLSAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQotICAgICAg
ICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAtIDEp
OwotICAgIH0KLQotICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOwotICAgIHJlc3VsdC5k
ZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFdKTsKLSAgICByZXN1bHQubWltZURlc2NyaXB0aW9uLnN3
YXAobGluZXNbMl0pOwotICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
dW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3OGJiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
QEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKKworI2lmIEVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKKyNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZM
KSAmJiBFTkFCTEUoR0xJQl9TVVBQT1JUKSkKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0
YSYgcmVzdWx0KQoreworI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5B
QkxFKEdMSUJfU1VQUE9SVCkpCisgICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOworICAgIENTdHJp
bmcgcGx1Z2luUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0
aCk7CisgICAgY2hhciogYXJndls0XTsKKyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4o
YmluYXJ5UGF0aC5kYXRhKCkpOworICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNj
YW5QbHVnaW4iKTsKKyAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENT
dHJpbmcuZGF0YSgpKTsKKyAgICBhcmd2WzNdID0gMDsKKworICAgIGludCBzdGF0dXM7CisgICAg
Y2hhciogc3RkT3V0OworCisgICAgaWYgKCFnX3NwYXduX3N5bmMoMCwgYXJndiwgMCwgR19TUEFX
Tl9TVERFUlJfVE9fREVWX05VTEwsIDAsIDAsICZzdGRPdXQsIDAsICZzdGF0dXMsIDApKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElU
U1RBVFVTKHN0YXR1cykgIT0gRVhJVF9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb25zdCB1bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7CisgICAgU3RyaW5nIGxp
bmVzW2tOdW1MaW5lc0V4cGVjdGVkXTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOworCisg
ICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
c3RkT3V0KTsKKworICAgIHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgewor
ICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1
cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9
IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgaWYgKHN0
ZE91dCkKKyAgICAgICAgZnJlZShzdGRPdXQpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5l
c1swXSk7CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3Vs
dC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWlt
ZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKKyNlbHNlIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRG
T1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQ
UE9SVCkpCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCmluZGV4IDk0ZGM0NGIuLjc2MTg3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTgzLDQgKzgzLDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgp
CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVtZVBhdGgodGhl
bWVQYXRoKSwgbV9wYWdlSUQsIDApOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1
Z2luQ29udGFpbmVyKHVpbnQ2NF90JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVn
aW5Qcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTk2YWYyMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCi0KLSNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1ib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdT
dG9yZSgpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTZhZjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4
LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm94
eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBQbHVnaW5Qcm94
eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAppbmRleCBkYTI0NzhkLi5mMjE2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcApAQCAtMzcsMTUgKzM3LDIwIEBACiAjaWYgUExBVEZPUk0oUVQpCiAjaW5j
bHVkZSA8V2ViQ29yZS9RdFgxMUltYWdlQ29udmVyc2lvbi5oPgogI2VsaWYgUExBVEZPUk0oR1RL
KQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fp
cm8uaCIKLSNpbmNsdWRlIDxjYWlyby9jYWlyby14bGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogI2luY2x1ZGUgPGd0ay9ndGt4Lmg+CiAjZW5k
aWYKICNpbmNsdWRlIDxnZGsvZ2RreC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmlu
Zy5oPgorI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyNpbmNs
dWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKworI2lmIFVTRShDQUlSTykgJiYgIVBMQVRGT1JNKFdJ
Tl9DQUlSTykKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODQsNiArODksOCBAQCBzdGF0aWMgRGlzcGxheSog
Z2V0UGx1Z2luRGlzcGxheSgpCiAgICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwgd2Un
bGwgKHByb2JhYmx5PykgaGF2ZSB0aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1iYXNl
ZAogICAgIC8vIHBsdWdpbnMsIHNvIHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2FudCB0
byBhZGQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0dXJuIEdES19E
SVNQTEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZP
Uk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC05NSw2ICsxMDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCB4MTFTY3JlZW4oKQog
ICAgIHJldHVybiBYRGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXko
KSk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka19zY3JlZW5fZ2V0X251bWJl
cihnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZp
bmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF9zY3JlZW5faW5kZXhfZ2V0KGVj
b3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRp
ZgpAQCAtMTA2LDYgKzExNSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpCiAg
ICAgcmV0dXJuIFhEZWZhdWx0RGVwdGgoTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCks
IHgxMVNjcmVlbigpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3Vh
bF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9k
ZWZhdWx0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CisgICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46Ongx
MUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE3LDYgKzEyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgbG9uZyByb290V2luZG93SUQoKQogICAgIHJldHVybiBYRGVmYXVsdFJvb3RXaW5kb3co
TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2VsaWYgUExBVEZPUk0oR1RLKQog
ICAgIHJldHVybiBHREtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVm
aW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfd2luZG93X3Jvb3RfZmlyc3Rf
Z2V0KCk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNDQsNiArMTU3LDggQEAg
RGlzcGxheSogTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkKICAgICByZXR1cm4gZGVk
aWNhdGVkRGlzcGxheTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX0RJU1BM
QVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShF
RkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNw
bGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKQEAgLTM1Nyw3ICszNzIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydAogICAgIHBhaW50
ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBx
aW1hZ2VGcm9tWEltYWdlKHhJbWFnZSksIGV4cG9zZWRSZWN0KTsKIAogICAgIFhEZXN0cm95SW1h
Z2UoeEltYWdlKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1f
cGx1Z2luRGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZHJhd2FibGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0
Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCA4MDcyMDQ2Li4yNTUz
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBuYW1l
KCkgXAogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAxCiAjZWxpZiBQTEFURk9STShX
SU4pCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfV0lOIDEKLSNlbGlmIFBMQVRGT1JNKEdU
SykgJiYgKE9TKFVOSVgpICYmICFPUyhNQUNfT1NfWCkpCisjZWxpZiAoUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19YKSkKICNkZWZpbmUg
UExVR0lOX0FSQ0hJVEVDVFVSRV9YMTEgMQogI2VsaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoYW5k
bGVzIHRoaXMgZmVhdHVyZXMucHJmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1
Z2luTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2Y0NGMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvZ3RrL1BsdWdpbk1haW5HdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0g
ICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5HdGsoYXJnYywgYXJndik7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA3ZjlhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi91
bml4L1BsdWdpbk1haW5Vbml4LmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgorCitp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1
Z2luUHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRl
eCA1NDkwNTZhLi45MjQyZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzQsNyArNzQsNyBA
QCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExF
UiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
TkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKQEAg
LTExOCw2ICsxMTgsMTAgQEAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkKIEFERF9ERUZJTklU
SU9OUygtRFdURl9VU0VfRlJFRVRZUEU9MSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfSEFS
RkJVWlpfTkc9MSkKIAorSUYgKEVOQUJMRV9XRUJLSVQyKQorICAgIFNFVChFTkFCTEVfUExVR0lO
X1BST0NFU1MgMSkKK0VORElGICgpCisKIElGIChOT1QgRU5BQkxFX1NWRykKICAgU0VUKEVOQUJM
RV9TVkdfRk9OVFMgMCkKIEVORElGICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODE4YTJlMC4uYjZhNmY5YSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5
LTEzICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXSzJdW0dUS11bRUZMXSBTaGFyZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJvY2VzcyBpbXBs
ZW1lbnRhdGlvbiB3aXRoIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFR1cm4gb24gTmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRpb24gYnkgZGVm
YXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwog
MjAxMi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBUaGUgQU5HTEUgYnVpbGQgb24gV2luZG93cyBicmVha3Mgd2l0aCBHbnVX
aW4zMidzIGZsZXggYmVjYXVzZSBpdCBpcyB0b28gb2xkCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG0KaW5kZXggYWQyMzA0Ni4uZjY3ODA4MSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzIxLDcgKzMyMSw3IEBAIG15IEBmZWF0dXJlcyA9
ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIiwgZGVm
YXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkcmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0c2NhcGUtcGx1
Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQgPT4g
IWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCisgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2YWx1
ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5l
dHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZh
bHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164889</attachid>
            <date>2012-09-20 04:41:50 -0700</date>
            <delta_ts>2012-09-28 06:00:49 -0700</delta_ts>
            <desc>Fixes webkit style</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>53473</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3N2E2YTkxLi43MzA5ZTcz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMTMgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAx
Mi0wOS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBzeW5jcXQgaXNuJ3QgcmUtcnVuIHdoZW4gV2ViS2l0MS5wcm8gY2hhbmdlcyBh
bmQgd2UncmUgYnVpbGRpbmcgd2l0aCAtLW5vLXdlYmtpdDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMGJjYmFm
Li4yYzAyNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTItMDktMTMgIE1hcml1
c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1b
R1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9u
IHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHdpbmRvd2xlc3MgcGx1Z2luIGFuZCBmdW5jdGlvbnMgbmVlZGVkIHRv
IGxhdW5jaCBQbHVnaW5Qcm9jZXNzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IENoYW5n
ZSBmaWxlcyBhbmQgZm9sZGVycyByZWxhdGVkIHRvIHBsdWdpbiBwcm9jZXNzIGZyb20gZ3RrIHRv
IHVuaXguCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQ2hhbmdlIGZpbGVzIGFuZCBm
b2xkZXJzIHJlbGF0ZWQgdG8gcGx1Z2luIHByb2Nlc3MgZnJvbSBndGsgdG8gdW5peC4KKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vz
cy4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Db250cm9sbGVyUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQgbWFj
cm9zIGZvciBndGsvZWZsIGRpZmZlcmVudHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtpdFhFcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6
OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcDogQWRkIHN0dWJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5p
eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdp
bidzIHdpbmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdp
bkRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0
OjpkaXNwbGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6
CisgICAgICAgICogdW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0w
OS0xMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gTWFrZSBfcmVmKCkgZnVuY3Rpb25zIHJldHVybiB0aGUgb2JqZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJhMGFjNjkuLjhiNGJmMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCkBAIC01NSw3ICs1NSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFK
T1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2Fj
aGUgXApAQCAtODIsNyArODIsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAg
LTQyNSw3ICs0MjUsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy8gXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBlZDE1ZDAzLi44ZDM4ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTI3NSw4ICsyNzUsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzc01haW4uaCBcCiAJU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNw
cCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIFwKQEAgLTc5Myw4ICs3OTMsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKQEAgLTEwNTAsNyArMTA1MCw3
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5o
IFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdp
blByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKQEAgLTEyMjAsMTAgKzEyMjAs
MTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eUd0ay5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdp
blByb2Nlc3NHdGsuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzTWFpbkd0ay5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
dW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oIFwKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nl
c3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
blByb2Nlc3NQcm94eUd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwKQEAgLTEyNjgsNiArMTI2OCw2IEBAIHdlYmtp
dDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAK
KwlTb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJM
RV9QTFVHSU5fUFJPQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5YWJjNmVjLi44
MWI5ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNiw2ICs2LDEwIEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAKKyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAK
KyAgICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkv
Yy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhp
Y3NDb250ZXh0R3RrLmNwcApAQCAtMjQsNiArMjgsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBTaGFyZWQvc291cC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5jcHAKICAgICBT
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAogCisgICAgU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAorCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCiAgICAgCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAv
ZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKQEAgLTgwLDYgKzg2LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVu
aXguY3BwCisgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0
ZS5jcHAKQEAgLTg5LDYgKzk2LDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAK
KyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3Bw
CisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9y
Q2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9y
c0VmbC5jcHAKQEAgLTIzMCw2ICsyNDEsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJTlNU
QUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVT
VElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJT
fSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9W
RVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERfREVG
SU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2luUHJv
Y2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElSfS9Q
bHVnaW5Qcm9jZXNzL3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1Bs
dWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQgUGx1
Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2luTWFp
blVuaXguY3BwCisgICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisgICAg
ICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFCTEUo
JHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJDRVN9
KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9O
QU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMgJHtQ
bHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNUQUxM
X0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9ESVJF
Q1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVuaXRU
ZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
Z3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL2d0ay9QbHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYmNjMWQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Db250cm9sbGVy
UHJveHkuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVzdHJv
eSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9Q
bHVnaW5Qcm9jZXNzR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3OGY5
YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Q
cm9jZXNzR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12
b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1
Z2luUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
NzBjMDFjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1Bs
dWdpblByb2Nlc3NNYWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCi0KLSNpbmNsdWRl
ICJOZXRzY2FwZVBsdWdpbi5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkqIHhk
aXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCi17Ci0gICAgZ2NoYXIgZXJyb3JNZXNzYWdlWzY0
XTsKLSAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JN
ZXNzYWdlLCA2Myk7Ci0gICAgZ193YXJuaW5nKCJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFu
IFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKLSAgICAgICAgICAgICAgIlRoaXMgcHJvYmFibHkg
cmVmbGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKLSAgICAgICAgICAgICAgIlRo
ZSBlcnJvciB3YXMgJyVzJy5cbiIKLSAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAl
bGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCi0gICAg
ICAgICAgICAgIGdfZ2V0X3ByZ25hbWUoKSwgZXJyb3JNZXNzYWdlLAotICAgICAgICAgICAgICBl
cnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgZXJyb3ItPnJl
cXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOwotICAgIHJldHVybiAwOwotfQotCi1XS19F
WFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCi17
Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOwotICAgIGJvb2wgc2NhblBsdWdp
biA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7Ci0gICAgQVNTRVJUKGFyZ2MgPT0g
MiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKLQotICAgIGd0a19pbml0KCZhcmdjLCAm
YXJndik7Ci0KLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7Ci0KLSAgICBpZiAoc2NhblBsdWdpbikgewotICAgICAgICBTdHJp
bmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKLSAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxV
UkU7Ci0gICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0KLSAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFgg
ZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNo
Ci0gICAgLy8gZXhpdHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2gg
ZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBpbnN0YWxsIGEKLSAgICAvLyBjdXN0b20gZXJyb3IgaGFu
ZGxlciB0byBzaG93IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJv
cnRpbmcuCi0gICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRndGtYRXJyb3IpOwotCi0gICAgaW50
IHNvY2tldCA9IGF0b2koYXJndlsxXSk7Ci0gICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFy
ZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBSdW5Mb29wOjpy
dW4oKTsKLQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vz
c01haW5HdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYzZlNi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFp
bkd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5HdGtfaAotI2RlZmluZSBQ
bHVnaW5Qcm9jZXNzTWFpbkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLVdL
X0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7
Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVy
UHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNjMWQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENo
YW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMWUzZjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vz
c01haW5Vbml4LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIK
KworI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjZWxpZiBQTEFURk9STShFRkwpICYmIEhBVkVfRUNPUkVfWAorI2luY2x1
ZGUgPEVjb3JlX1guaD4KKyNlbmRpZgorCisjaWZkZWYgWFBfVU5JWAorc3RhdGljIGNvbnN0IGNo
YXIqIHhFcnJvclN0cmluZyA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93
IFN5c3RlbSBlcnJvci5cbiIKKyAgICAgICAgIlRoaXMgcHJvYmFibHkgcmVmbGVjdHMgYSBidWcg
aW4gYSBicm93c2VyIHBsdWdpbi5cbiIKKyAgICAgICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIK
KyAgICAgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2Nv
ZGUgJWQgbWlub3JfY29kZSAlZClcbiI7CitzdGF0aWMgY2hhciogcHJvZ3JhbU5hbWUgPSAwOwor
CitzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQq
IGVycm9yKQoreworICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKKyAgICBYR2V0RXJyb3JUZXh0
KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CisKKyAgICBM
T0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAorICAgICAgICAgICAgICBwcm9ncmFtTmFtZSwgZXJy
b3JNZXNzYWdlLAorICAgICAgICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29k
ZSwKKyAgICAgICAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUp
OworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVu
aXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFy
Z2MgPT0gMyk7CisgICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5Q
bHVnaW4iKTsKKyAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdp
bikpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94
X2luaXQoMCkpCisjZW5kaWYKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKworICAgIFNjcmlw
dENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKworICAgIGlmIChzY2FuUGx1Z2lu
KSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFyZ3ZbMl0pOworICAgICAgICBpZiAoIU5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKHBsdWdpblBhdGgpKQorICAgICAgICAgICAg
cmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKKyAgICB9
CisKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIC8vIFBsdWdp
bnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFggZXJy
b3IgaGFuZGxlciwgd2hpY2gKKyAgICAvLyBleGl0cyB0aGUgcHJvY2Vzcy4gU2luY2Ugd2UgZG9u
J3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1Z3MsIHdlIGluc3RhbGwgYQorICAgIC8v
IGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3YXJuaW5nIHdoZW4gYSBYIGVycm9yIGhh
cHBlbnMgd2l0aG91dCBhYm9ydGluZy4KKyNpZiBkZWZpbmVkKFhQX1VOSVgpCisgICAgcHJvZ3Jh
bU5hbWUgPSBiYXNlbmFtZShhcmd2WzBdKTsKKyAgICBYU2V0RXJyb3JIYW5kbGVyKHdlYmtpdFhF
cnJvcik7CisjZW5kaWYKKworICAgIGludCBzb2NrZXQgPSBhdG9pKGFyZ3ZbMV0pOworICAgIFdl
YktpdDo6UGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZShzb2NrZXQsIFJ1bkxvb3A6
Om1haW4oKSk7CisgICAgUnVuTG9vcDo6cnVuKCk7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTQwYzU5NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGx1Z2luUHJv
Y2Vzc01haW5Vbml4X2gKKyNkZWZpbmUgUGx1Z2luUHJvY2Vzc01haW5Vbml4X2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpblVu
aXgoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSk7Cit9IC8vIGV4dGVybiAiQyIKKyNlbmRpZiAvLyBf
X2NwbHVzcGx1cworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBsdWdpblBy
b2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5p
eC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmVlNzhmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKKworI2lmIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
Z3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmE5MzM5ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94
eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2luY2x1ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0
aC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
R093blB0ckd0ay5oPgotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpCi17Ci19Ci0KLWJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2lu
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKLXsK
LSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0
YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7Ci0gICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmlu
ZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKLSAgICBjaGFyKiBhcmd2
WzRdOwotICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7
Ci0gICAgYXJndlsxXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCItc2NhblBsdWdpbiIpOwotICAgIGFy
Z3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihwbHVnaW5QYXRoQ1N0cmluZy5kYXRhKCkpOwotICAg
IGFyZ3ZbM10gPSAwOwotCi0gICAgZ2ludCBzdGF0dXM7Ci0gICAgR093blB0cjxnY2hhcj4gc3Rk
T3V0OwotICAgIGlmICghZ19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RP
X0RFVl9OVUxMLCAwLCAwLCAmc3RkT3V0Lm91dFB0cigpLCAwLCAmc3RhdHVzLCAwKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFU
VVMoc3RhdHVzKSAhPSBFWElUX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGNvbnN0IHVuc2lnbmVkIGtOdW1MaW5lc0V4cGVjdGVkID0gMzsKLSAgICBTdHJpbmcgbGluZXNb
a051bUxpbmVzRXhwZWN0ZWRdOwotICAgIHVuc2lnbmVkIGxpbmVJbmRleCA9IDA7Ci0gICAgY29u
c3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0
LmdldCgpKTsKLSAgICB3aGlsZSAobGluZUluZGV4IDwga051bUxpbmVzRXhwZWN0ZWQpIHsKLSAg
ICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3VycmVudDsKLSAgICAgICAgd2hpbGUgKCpjdXJy
ZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQotICAgICAgICBsaW5lc1tsaW5lSW5kZXgrK10gPSBT
dHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAtIDEpOwotICAgIH0KLQotICAgIHJlc3VsdC5u
YW1lLnN3YXAobGluZXNbMF0pOwotICAgIHJlc3VsdC5kZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzFd
KTsKLSAgICByZXN1bHQubWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNbMl0pOwotICAgIHJldHVy
biAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlV
bml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3
OGJiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzUHJveHkuaCIKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKKworI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJQcm9jZXNzRXhl
Y3V0YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cisj
aWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBFTkFCTEUoR0xJQl9TVVBQT1JU
KSkKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZv
cm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JikKK3sKK30KKworYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVzdWx0KQoreworI2lmIFBMQVRG
T1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAg
Q1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQ
YXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOworICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgY2hhciogYXJndls0XTsK
KyAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOworICAg
IGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNjYW5QbHVnaW4iKTsKKyAgICBhcmd2WzJd
ID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENTdHJpbmcuZGF0YSgpKTsKKyAgICBhcmd2
WzNdID0gMDsKKworICAgIGludCBzdGF0dXM7CisgICAgY2hhciogc3RkT3V0OworCisgICAgaWYg
KCFnX3NwYXduX3N5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9TVERFUlJfVE9fREVWX05VTEwsIDAs
IDAsICZzdGRPdXQsIDAsICZzdGF0dXMsIDApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gRVhJVF9T
VUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCB1bnNpZ25lZCBrTnVt
TGluZXNFeHBlY3RlZCA9IDM7CisgICAgU3RyaW5nIGxpbmVzW2tOdW1MaW5lc0V4cGVjdGVkXTsK
KyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOworCisgICAgY29uc3QgVUNoYXIqIGN1cnJlbnQg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0KTsKKworICAgIHdoaWxlIChs
aW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAgICBjb25zdCBVQ2hhciogc3Rh
cnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkg
eyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAt
IHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgaWYgKHN0ZE91dCkKKyAgICAgICAgZnJlZShzdGRP
dXQpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7CisgICAgcmVzdWx0LmRlc2Ny
aXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChs
aW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsK
KyNlbHNlIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJf
U1VQUE9SVCkpCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDk0ZGM0
NGIuLjc2MTg3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
Z2VQcm94eUVmbC5jcHAKQEAgLTgzLDQgKzgzLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRU
aGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgpCiAgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVtZVBhdGgodGhlbWVQYXRoKSwgbV9wYWdlSUQsIDApOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKHVpbnQ2NF90JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93
ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5Qcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2YWYyMC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5
R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlBsdWdpblByb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0KLSNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1ib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgpIGNvbnN0Ci17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVu
aXguY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgv
UGx1Z2luUHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
OTZhZjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApAQCAtMCwwICsxLDQzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworYm9vbCBQbHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCBkYTI0NzhkLi5mMjE2
ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMzcsMTUg
KzM3LDIwIEBACiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8V2ViQ29yZS9RdFgxMUltYWdl
Q29udmVyc2lvbi5oPgogI2VsaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNpbmNsdWRlIDxjYWlyby9j
YWlyby14bGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgogI2luY2x1ZGUgPGd0ay9ndGt4Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxnZGsvZ2RreC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgorI2VsaWYgUExBVEZPUk0oRUZM
KSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYK
KworI2lmIFVTRShDQUlSTykgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykKKyNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSA8
Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtODQsNiArODksOCBAQCBzdGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlzcGxheSgpCiAgICAg
Ly8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwgd2UnbGwgKHByb2JhYmx5PykgaGF2ZSB0aGUg
c2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1iYXNlZAogICAgIC8vIHBsdWdpbnMsIHNvIHdl
IGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2FudCB0byBhZGQgb3RoZXIgaW1wbGVtZW50YXRp
b25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0dXJuIEdES19ESVNQTEFZX1hESVNQTEFZKGdka19kaXNw
bGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVf
RUNPUkVfWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVjb3JlX3hfZGlzcGxh
eV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC05NSw2ICsxMDIsOCBA
QCBzdGF0aWMgaW5saW5lIGludCB4MTFTY3JlZW4oKQogICAgIHJldHVybiBYRGVmYXVsdFNjcmVl
bihOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSk7CiAjZWxpZiBQTEFURk9STShHVEsp
CiAgICAgcmV0dXJuIGdka19zY3JlZW5fZ2V0X251bWJlcihnZGtfc2NyZWVuX2dldF9kZWZhdWx0
KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBy
ZXR1cm4gZWNvcmVfeF9zY3JlZW5faW5kZXhfZ2V0KGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0
KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTA2LDYgKzExNSw4IEBAIHN0
YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpCiAgICAgcmV0dXJuIFhEZWZhdWx0RGVwdGgo
TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIHgxMVNjcmVlbigpKTsKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9n
ZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpKTsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfZGVm
YXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hf
ZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAt
MTE3LDYgKzEyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQo
KQogICAgIHJldHVybiBYRGVmYXVsdFJvb3RXaW5kb3coTmV0c2NhcGVQbHVnaW46OngxMUhvc3RE
aXNwbGF5KCkpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBHREtfUk9PVF9XSU5E
T1coKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAg
cmV0dXJuIGVjb3JlX3hfd2luZG93X3Jvb3RfZmlyc3RfZ2V0KCk7CiAjZWxzZQogICAgIHJldHVy
biAwOwogI2VuZGlmCkBAIC0xNDQsNiArMTU3LDggQEAgRGlzcGxheSogTmV0c2NhcGVQbHVnaW46
OngxMUhvc3REaXNwbGF5KCkKICAgICByZXR1cm4gZGVkaWNhdGVkRGlzcGxheTsKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlf
Z2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09S
RV9YKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dl
dCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTM1Nyw3ICszNzIsNyBAQCB2
b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydAogICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhw
b3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBxaW1hZ2VGcm9tWEltYWdlKHhJbWFnZSks
IGV4cG9zZWRSZWN0KTsKIAogICAgIFhEZXN0cm95SW1hZ2UoeEltYWdlKTsKLSNlbGlmIFBMQVRG
T1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENB
SVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9w
dFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZHJhd2FibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+
dmlzdWFsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaAppbmRleCA4MDcyMDQ2Li4yNTUzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtMTA2LDcg
KzEwNiw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBuYW1lKCkgXAogI2RlZmluZSBQTFVHSU5fQVJD
SElURUNUVVJFX01BQyAxCiAjZWxpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFBMVUdJTl9BUkNI
SVRFQ1RVUkVfV0lOIDEKLSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgKE9TKFVOSVgpICYmICFPUyhN
QUNfT1NfWCkpCisjZWxpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKSAmJiAoT1Mo
VU5JWCkgJiYgIU9TKE1BQ19PU19YKSkKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9YMTEg
MQogI2VsaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoYW5kbGVzIHRoaXMgZmVhdHVyZXMucHJmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYzY2Y0NGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvZ3RrL1BsdWdpbk1haW5H
dGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbkd0ay5oIgotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc01haW5HdGsoYXJnYywgYXJndik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFp
blVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZjlhMGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcApA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9s
YSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5Vbml4KGFyZ2Ms
IGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA1NDkwNTZhLi45MjQyZGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQpAQCAtNzQsNyArNzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCi1XRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYp
CitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lO
X0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JL
X0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9W
SVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKQEAgLTExOCw2ICsxMTgsMTAgQEAgU0VUKFdU
Rl9VU0VfSEFSRkJVWlpfTkcgMSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfRlJFRVRZUEU9
MSkKIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfSEFSRkJVWlpfTkc9MSkKIAorSUYgKEVOQUJM
RV9XRUJLSVQyKQorICAgIFNFVChFTkFCTEVfUExVR0lOX1BST0NFU1MgMSkKK0VORElGICgpCisK
IElGIChOT1QgRU5BQkxFX1NWRykKICAgU0VUKEVOQUJMRV9TVkdfRk9OVFMgMCkKIEVORElGICgp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODE4
YTJlMC4uYjZhNmY5YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTEzICBNYXJpdXN6IEdyemVnb3Jjenlr
ICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtXSzJdW0dUS11bRUZMXSBTaGFy
ZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbiB3aXRoIEVGTCBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gb24g
TmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRpb24gYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxMi0wOS0xMyAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBUaGUgQU5HTEUg
YnVpbGQgb24gV2luZG93cyBicmVha3Mgd2l0aCBHbnVXaW4zMidzIGZsZXggYmVjYXVzZSBpdCBp
cyB0b28gb2xkCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYWQy
MzA0Ni4uZjY3ODA4MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpA
QCAtMzIxLDcgKzMyMSw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkg
fHwgaXNFZmwoKSksIHZhbHVlID0+IFwkcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXJTdXBwb3J0IH0s
CiAKICAgICB7IG9wdGlvbiA9PiAibmV0c2NhcGUtcGx1Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2ds
ZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
TkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQgPT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0
c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQ
RV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJ
U3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5ldHdvcmstaW5mbyIsIGRlc2MgPT4gIlRv
Z2dsZSBOZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRX
T1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBw
b3J0IH0sCg==
</data>
<flag name="review"
          id="176814"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166229</attachid>
            <date>2012-09-28 06:00:49 -0700</date>
            <delta_ts>2012-09-28 06:07:25 -0700</delta_ts>
            <desc>Rebased, fixed LOG error</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>37882</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwNDc2NTQ2Li5jNzQzYzE0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMjggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAx
Mi0wOS0yNyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBT
dWdnZXN0aW9uUGlja2VyIHNob3VsZCBzdXBwb3J0IHJ0bApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc0NzAwNjQu
LjUwY2U5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMi0wOS0yOCAgTWFyaXVz
eiBHcnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXVtH
VEtdW0VGTF0gU2hhcmUgV2ViS2l0Mi1HVEsgcGx1Z2luIHByb2Nlc3MgaW1wbGVtZW50YXRpb24g
d2l0aCBFRkwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBJbXBsZW1lbnQgd2luZG93bGVzcyBwbHVnaW4gYW5kIGZ1bmN0aW9ucyBuZWVkZWQgdG8g
bGF1bmNoIFBsdWdpblByb2Nlc3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQ2hhbmdl
IGZpbGVzIGFuZCBmb2xkZXJzIHJlbGF0ZWQgdG8gcGx1Z2luIHByb2Nlc3MgZnJvbSBndGsgdG8g
dW5peC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBDaGFuZ2UgZmlsZXMgYW5kIGZv
bGRlcnMgcmVsYXRlZCB0byBwbHVnaW4gcHJvY2VzcyBmcm9tIGd0ayB0byB1bml4LgorICAgICAg
ICAqIFBsYXRmb3JtL0xvZ2dpbmcuY3BwOiBBZGQgUGx1Z2lucyBjaGFubmVsIGZvciBMT0cuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpnZXRDaGFubmVsRnJvbU5hbWUpOgor
ICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSk6CisgICAg
ICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogQWRkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vzcy4KKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Db250
cm9sbGVyUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQgbWFjcm9zIGZv
ciBndGsvZWZsIGRpZmZlcmVudHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxl
clByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtpdFhFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91
bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nl
c3NHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVBy
b3h5RWZsLmNwcDogQWRkIHN0dWJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
Z3RrL1BsdWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdpbidzIHdp
bmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdpbkRpc3Bs
YXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpkaXNw
bGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6CisgICAg
ICAgICogdW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0wOS0yOCAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk4NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGIwNzJl
MGUuLjk2OGY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC01NSw3ICs1NSw3IEBAIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsg
XAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXggXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXApAQCAtODIsNyArODIsNyBAQCBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUg
XAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAgLTQyOSw3ICs0MjksNyBAQCBQcm9ncmFtc19XZWJL
aXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
LyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy8gXAotCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
LyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1MDE1ZmIzLi44MmJkMTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3Nyw4ICsyNzcsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
c01haW4uaCBcCiAJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJv
bGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1
Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5m
by5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIFwK
QEAgLTgwMiw4ICs4MDIsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBc
Ci0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94
eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
SW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NU
aW1lci5oIFwKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1h
cC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50
aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2Fw
ZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uY3BwIFwKQEAgLTEyMzIsMTAgKzEyMzIsMTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgXAotCVNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NHdGsuY3BwIFwKLQlTb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5oIFwKLQlTb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4
LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NN
YWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
cy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwKQEAgLTEyNjgsNyArMTI2
OCw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwK
QEAgLTEyODAsNiArMTI4MCw2IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIFwKLQlTb3VyY2UvV2Vi
S2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKKwlTb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1h
aW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJMRV9QTFVHSU5fUFJPQ0VTUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCAxNzY5NGM5Li5kZjk4ZTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Mb2dnaW5nLmNwcApAQCAtMzcsNiArMzcsNyBAQCBXVEZMb2dDaGFubmVsIExvZ1RleHRJ
bnB1dCAgICA9IHsgMHgwMDAwMDAwNCwgIldlYktpdDJMb2dMZXZlbCIsIFdURkxvZ0NoYW5uZWxP
ZgogV1RGTG9nQ2hhbm5lbCBMb2dWaWV3ICAgICAgICAgPSB7IDB4MDAwMDAwMDgsICJXZWJLaXQy
TG9nTGV2ZWwiLCBXVEZMb2dDaGFubmVsT2ZmIH07CiBXVEZMb2dDaGFubmVsIExvZ0ljb25EYXRh
YmFzZSA9IHsgMHgwMDAwMDAxMCwgIldlYktpdDJMb2dMZXZlbCIsIFdURkxvZ0NoYW5uZWxPZmYg
fTsKIFdURkxvZ0NoYW5uZWwgTG9nS2V5SGFuZGxpbmcgID0geyAweDAwMDAwMDIwLCAiV2ViS2l0
MkxvZ0xldmVsIiwgV1RGTG9nQ2hhbm5lbE9mZiB9OworV1RGTG9nQ2hhbm5lbCBMb2dQbHVnaW5z
ICAgICAgPSB7IDB4MDAwMDAwNDAsICJXZWJLaXQyTG9nTGV2ZWwiLCBXVEZMb2dDaGFubmVsT2Zm
IH07CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0o
UVQpICYmICFQTEFURk9STShFRkwpCiB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsKFdURkxvZ0No
YW5uZWwqIGNoYW5uZWwpCkBAIC02OSw2ICs3MCw5IEBAIFdURkxvZ0NoYW5uZWwqIGdldENoYW5u
ZWxGcm9tTmFtZShjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lKQogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShjaGFubmVsTmFtZSwgU3RyaW5nKCJLZXlIYW5kbGluZyIpKSkKICAgICAgICAgcmV0
dXJuICZMb2dLZXlIYW5kbGluZzsKIAorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjaGFubmVs
TmFtZSwgU3RyaW5nKCJQbHVnaW5zIikpKQorICAgICAgICByZXR1cm4gJkxvZ1BsdWdpbnM7CisK
ICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtODMsNiArODcsNyBAQCB2b2lkIGluaXRpYWxp
emVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCkKICAgICBpbml0aWFsaXplTG9nQ2hhbm5lbCgmTG9n
Q29udGV4dE1lbnUpOwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dJY29uRGF0YWJhc2Up
OwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dLZXlIYW5kbGluZyk7CisgICAgaW5pdGlh
bGl6ZUxvZ0NoYW5uZWwoJkxvZ1BsdWdpbnMpOwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZM
b2dTZXNzaW9uU3RhdGUpOwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dUZXh0SW5wdXQp
OwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xv
Z2dpbmcuaAppbmRleCAxNzNkNjA0Li42MDM2ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZXh0ZXJuIFdURkxvZ0No
YW5uZWwgTG9nQ29udGV4dE1lbnU7CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dJY29uRGF0YWJh
c2U7CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dLZXlIYW5kbGluZzsKK2V4dGVybiBXVEZMb2dD
aGFubmVsIExvZ1BsdWdpbnM7CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dTZXNzaW9uU3RhdGU7
CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dUZXh0SW5wdXQ7CiBleHRlcm4gV1RGTG9nQ2hhbm5l
bCBMb2dWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkMzkzMmI2Li45MGY3ZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNyw2ICs3LDEwIEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAKKyAg
ICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAKKyAgICBQ
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2luUHJvY2Vz
cy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkvYy9jYWly
by9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250
ZXh0R3RrLmNwcApAQCAtMjgsNiArMzIsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
IAogICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAKKyAgICBTaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisKICAgICBV
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKICAgICAKICAgICBVSVByb2Nlc3MvQVBJL2Nw
cC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcApAQCAtODUsNiArOTEsNyBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVu
Y2hlckVmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3Jl
VW5peC5jcHAKKyAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVu
aXguY3BwCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291
cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3Fs
aXRlLmNwcApAQCAtOTQsNiArMTAxLDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3Bw
CiAKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXgu
Y3BwCisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1l
bnVDbGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRp
dG9yQ2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVy
cm9yc0VmbC5jcHAKQEAgLTIzNiw2ICsyNDcsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJ
TlNUQUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMg
REVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFE
RVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVD
VF9WRVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERf
REVGSU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2lu
UHJvY2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQg
UGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElS
fS9QbHVnaW5Qcm9jZXNzL3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygk
e1BsdWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQg
UGx1Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2lu
TWFpblVuaXguY3BwCisgICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisg
ICAgICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFC
TEUoJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJD
RVN9KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJM
RV9OQU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMg
JHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNU
QUxMX0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9E
SVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVu
aXRUZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNjMWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpbkNvbnRyb2xsZXJQcm94eVVuaXgu
Y3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9y
bUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1E
ZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
UExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFiNWY2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtMCwwICsx
LDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXguaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIK
KyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29w
Lmg+CisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBIQVZFX0VDT1JFX1gKKyNpbmNsdWRl
IDxFY29yZV9YLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCisjaWZkZWYgWFBfVU5JWAorc3RhdGljIGNvbnN0IGNoYXIqIHhFcnJv
clN0cmluZyA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVkIGFuIFggV2luZG93IFN5c3RlbSBl
cnJvci5cbiIKKyAgICAiVGhpcyBwcm9iYWJseSByZWZsZWN0cyBhIGJ1ZyBpbiBhIGJyb3dzZXIg
cGx1Z2luLlxuIgorICAgICJUaGUgZXJyb3Igd2FzICclcycuXG4iCisgICAgIiAgKERldGFpbHM6
IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClc
biI7CitzdGF0aWMgY2hhciogcHJvZ3JhbU5hbWUgPSAwOworCitzdGF0aWMgaW50IHdlYmtpdFhF
cnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZlbnQqIGVycm9yKQoreworICAgIGNoYXIg
ZXJyb3JNZXNzYWdlWzY0XTsKKyAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJy
b3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CisKKyAgICBMT0coUGx1Z2lucywgeEVycm9yU3Ry
aW5nLAorICAgICAgICBwcm9ncmFtTmFtZSwgZXJyb3JNZXNzYWdlLAorICAgICAgICBlcnJvci0+
c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKKyAgICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwg
ZXJyb3ItPm1pbm9yX2NvZGUpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK1dLX0VYUE9S
VCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCit7Cisg
ICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOworICAgIGJvb2wgc2NhblBsdWdpbiA9
ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8
fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBn
dGtfaW5pdCgmYXJnYywgJmFyZ3YpOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2lmZGVmIEhBVkVf
RUNPUkVfWAorICAgIGlmICghZWNvcmVfeF9pbml0KDApKQorI2VuZGlmCisgICAgICAgIHJldHVy
biAxOworI2VuZGlmCisKKyAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5n
KCk7CisKKyAgICBpZiAoc2NhblBsdWdpbikgeworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aChh
cmd2WzJdKTsKKyAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihw
bHVnaW5QYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgICAgIHJl
dHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorCisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5S
dW5Mb29wKCk7CisKKyAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNlIFggZXJyb3JzIHRoYXQgYXJl
IGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdoaWNoCisgICAgLy8gZXhpdHMg
dGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jhc2ggZHVlIHRvIHBsdWdpbiBi
dWdzLCB3ZSBpbnN0YWxsIGEKKyAgICAvLyBjdXN0b20gZXJyb3IgaGFuZGxlciB0byBzaG93IGEg
d2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQgYWJvcnRpbmcuCisjaWYgZGVm
aW5lZChYUF9VTklYKQorICAgIHByb2dyYW1OYW1lID0gYmFzZW5hbWUoYXJndlswXSk7CisgICAg
WFNldEVycm9ySGFuZGxlcih3ZWJraXRYRXJyb3IpOworI2VuZGlmCisKKyAgICBpbnQgc29ja2V0
ID0gYXRvaShhcmd2WzFdKTsKKyAgICBXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmlu
aXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjptYWluKCkpOworICAgIFJ1bkxvb3A6OnJ1bigpOwor
CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5o
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5p
eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MGM1OTZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nl
c3NNYWluVW5peC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj
KSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBsdWdpblByb2Nlc3NNYWluVW5peF9oCisjZGVmaW5lIFBsdWdpblBy
b2Nlc3NNYWluVW5peF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKK1dLX0VYUE9S
VCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGludCBhcmdjLCBjaGFyKiBhcmd2W10pOworfSAv
LyBleHRlcm4gIkMiCisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBQbHVnaW5Qcm9jZXNzTWFpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTc4ZjlhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgi
CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNzhiYjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1Bs
dWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1By
b3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQ
YXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lmIFBMQVRG
T1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisjaW5j
bHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlh
bGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7Cit9
CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKK3sKKyNpZiBQTEFURk9STShHVEsp
IHx8IChQTEFURk9STShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBPUlQpKQorICAgIENTdHJpbmcg
YmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aE9mUGx1
Z2luUHJvY2VzcygpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07CisgICAgYXJn
dlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBhcmd2WzFd
ID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9IGNvbnN0
X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlszXSA9IDA7
CisKKyAgICBpbnQgc3RhdHVzOworICAgIGNoYXIqIHN0ZE91dDsKKworICAgIGlmICghZ19zcGF3
bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAmc3Rk
T3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFX
SUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VDQ0VTUykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVzRXhw
ZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07CisgICAgdW5z
aWduZWQgbGluZUluZGV4ID0gMDsKKworICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50ID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ZE91dCk7CisKKyAgICB3aGlsZSAobGluZUluZGV4
IDwga051bUxpbmVzRXhwZWN0ZWQpIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gY3Vy
cmVudDsKKyAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQorICAg
ICAgICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFydCAt
IDEpOworICAgIH0KKworICAgIGlmIChzdGRPdXQpCisgICAgICAgIGZyZWUoc3RkT3V0KTsKKwor
ICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlvbi5z
d2FwKGxpbmVzWzFdKTsKKyAgICByZXN1bHQubWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNbMl0p
OworICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5KCk7CisjZWxzZSAv
LyBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBPUlQp
KQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZiAvLyBQTEFURk9STShHVEspIHx8IChQTEFURk9S
TShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBPUlQpKQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCAyYTNiMzA3Li44OTgx
Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94
eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwCkBAIC04Myw0ICs4MywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGhlbWVQYXRo
KGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VGhlbWVQYXRoKHRoZW1lUGF0aCksIG1fcGFnZUlELCAwKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2lu
R2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCB1aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXguY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NmFmMjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVn
aW5Qcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsdWdpblByb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29s
IFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwCmluZGV4IDVjOWU2NzguLjlkNTliNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC04NCw2ICs4NCw4IEBAIHN0YXRpYyBEaXNwbGF5
KiBnZXRQbHVnaW5EaXNwbGF5KCkKICAgICAvLyBTaW5jZSB3ZSdyZSBhIGdkay9ndGsgYXBwLCB3
ZSdsbCAocHJvYmFibHk/KSBoYXZlIHRoZSBzYW1lIFggY29ubmVjdGlvbiBhcyBhbnkgZ2RrLWJh
c2VkCiAgICAgLy8gcGx1Z2lucywgc28gd2UgY2FuIHJldHVybiB0aGF0LiBXZSBtaWdodCB3YW50
IHRvIGFkZCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgaGVyZSBsYXRlci4KICAgICByZXR1cm4gR0RL
X0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFU
Rk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7
CiAjZW5kaWYKQEAgLTk1LDYgKzk3LDggQEAgc3RhdGljIGlubGluZSBpbnQgeDExU2NyZWVuKCkK
ICAgICByZXR1cm4gWERlZmF1bHRTY3JlZW4oTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5
KCkpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBnZGtfc2NyZWVuX2dldF9udW1i
ZXIoZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVm
aW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfc2NyZWVuX2luZGV4X2dldChl
Y29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKQEAgLTEwNiw2ICsxMTAsOCBAQCBzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKQog
ICAgIHJldHVybiBYRGVmYXVsdERlcHRoKE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgp
LCB4MTFTY3JlZW4oKSk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka192aXN1
YWxfZ2V0X2RlcHRoKGdka19zY3JlZW5fZ2V0X3N5c3RlbV92aXN1YWwoZ2RrX3NjcmVlbl9nZXRf
ZGVmYXVsdCgpKSk7CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9Y
KQorICAgIHJldHVybiBlY29yZV94X2RlZmF1bHRfZGVwdGhfZ2V0KE5ldHNjYXBlUGx1Z2luOjp4
MTFIb3N0RGlzcGxheSgpLCBlY29yZV94X2RlZmF1bHRfc2NyZWVuX2dldCgpKTsKICNlbHNlCiAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTExNyw2ICsxMjMsOCBAQCBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lEKCkKICAgICByZXR1cm4gWERlZmF1bHRSb290V2luZG93
KE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykK
ICAgICByZXR1cm4gR0RLX1JPT1RfV0lORE9XKCk7CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRl
ZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBlY29yZV94X3dpbmRvd19yb290X2ZpcnN0
X2dldCgpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTQ0LDYgKzE1Miw4IEBA
IERpc3BsYXkqIE5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSgpCiAgICAgcmV0dXJuIGRl
ZGljYXRlZERpc3BsYXk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIEdES19ESVNQ
TEFZX1hESVNQTEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0o
RUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlz
cGxheSo+KGVjb3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2Vu
ZGlmCkBAIC0zNTcsNyArMzY3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWlu
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAgICBwYWlu
dGVyLT5kcmF3SW1hZ2UoUVBvaW50KGV4cG9zZWRSZWN0LngoKSwgZXhwb3NlZFJlY3QueSgpKSwg
cWltYWdlRnJvbVhJbWFnZSh4SW1hZ2UpLCBleHBvc2VkUmVjdCk7CiAKICAgICBYRGVzdHJveUlt
YWdlKHhJbWFnZSk7Ci0jZWxpZiBQTEFURk9STShHVEspCisjZWxpZiBQTEFURk9STShHVEspIHx8
IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZSht
X3BsdWdpbkRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RyYXdhYmxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVj
dCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL2NvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKaW5kZXggZDZjNGE1ZC4uMjg4
NTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvY29uZmlnLmgKKysrIGIvU291cmNlL1dl
YktpdDIvY29uZmlnLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgY29uc3QgdHlwZSYgbmFt
ZSgpIFwKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9NQUMgMQogI2VsaWYgUExBVEZPUk0o
V0lOKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1dJTiAxCi0jZWxpZiBQTEFURk9STShH
VEspICYmIChPUyhVTklYKSAmJiAhT1MoTUFDX09TX1gpKQorI2VsaWYgKFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKSkgJiYgKE9TKFVOSVgpICYmICFPUyhNQUNfT1NfWCkpCiAjZGVmaW5l
IFBMVUdJTl9BUkNISVRFQ1RVUkVfWDExIDEKICNlbGlmIFBMQVRGT1JNKFFUKQogLy8gUXQgaGFu
ZGxlcyB0aGlzIGZlYXR1cmVzLnByZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvdW5peC9Q
bHVnaW5NYWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2Y5YTBkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvdW5peC9QbHVnaW5NYWluVW5peC5jcHAKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzTWFpblVuaXguaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQor
eworICAgIHJldHVybiBXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peChhcmdjLCBhcmd2KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggMGFlNGVjZS4uNTM5MzdlNSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UKQEAgLTc0LDcgKzc0LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX01FRElBX0NBUFRVUkUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTUVNT1JZX1NBTVBMRVIgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTUlDUk9EQVRBIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIE9OKQotV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT0ZGKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgT04p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19JTkZPIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBR0VfVklTSUJJTElU
WV9BUEkgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVHSU9O
UyBPTikKQEAgLTExOSw2ICsxMTksMTAgQEAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkKIEFE
RF9ERUZJTklUSU9OUygtRFdURl9VU0VfRlJFRVRZUEU9MSkKIEFERF9ERUZJTklUSU9OUygtRFdU
Rl9VU0VfSEFSRkJVWlpfTkc9MSkKIAorSUYgKEVOQUJMRV9XRUJLSVQyKQorICAgIFNFVChFTkFC
TEVfUExVR0lOX1BST0NFU1MgMSkKK0VORElGICgpCisKIElGIChOT1QgRU5BQkxFX1NWRykKICAg
U0VUKEVOQUJMRV9TVkdfRk9OVFMgMCkKIEVORElGICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDQ2OTIxNi4uM2E5YTJhZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTA5LTI4ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtXSzJdW0dUS11bRUZMXSBTaGFyZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJv
Y2VzcyBpbXBsZW1lbnRhdGlvbiB3aXRoIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIFR1cm4gb24gTmV0c2NhcGUgUGx1Z2luIEFQSSBvcHRp
b24gYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbToKKwogMjAxMi0wOS0yOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlh
a292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtEUlRdIEVGTCBEUlQgc2hvdWxkIGRpc2Fi
bGUgdmlzaXRlZCBsaW5rcyB0cmFja2luZyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNjg1Nzc2Ni4uMmU5YTE0NyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzI5LDcgKzMyOSw3IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIiwg
ZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkcmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0c2NhcGUt
cGx1Z2luLWFwaSIsIGRlc2MgPT4gIlRvZ2dsZSBOZXRzY2FwZSBQbHVnaW4gQVBJIHN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIsIGRlZmF1bHQg
PT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCisgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAxLCB2
YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4g
Im5ldHdvcmstaW5mbyIsIGRlc2MgPT4gIlRvZ2dsZSBOZXR3b3JrIEluZm8gc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCks
IHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166232</attachid>
            <date>2012-09-28 06:07:25 -0700</date>
            <delta_ts>2012-09-28 07:12:37 -0700</delta_ts>
            <desc>Rebased, fixed LOG error</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>54861</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwNDc2NTQ2Li5jNzQzYzE0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMjggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAx
Mi0wOS0yNyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBT
dWdnZXN0aW9uUGlja2VyIHNob3VsZCBzdXBwb3J0IHJ0bApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc0NzAwNjQu
LjUwY2U5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMi0wOS0yOCAgTWFyaXVz
eiBHcnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXVtH
VEtdW0VGTF0gU2hhcmUgV2ViS2l0Mi1HVEsgcGx1Z2luIHByb2Nlc3MgaW1wbGVtZW50YXRpb24g
d2l0aCBFRkwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBJbXBsZW1lbnQgd2luZG93bGVzcyBwbHVnaW4gYW5kIGZ1bmN0aW9ucyBuZWVkZWQgdG8g
bGF1bmNoIFBsdWdpblByb2Nlc3MuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQ2hhbmdl
IGZpbGVzIGFuZCBmb2xkZXJzIHJlbGF0ZWQgdG8gcGx1Z2luIHByb2Nlc3MgZnJvbSBndGsgdG8g
dW5peC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBDaGFuZ2UgZmlsZXMgYW5kIGZv
bGRlcnMgcmVsYXRlZCB0byBwbHVnaW4gcHJvY2VzcyBmcm9tIGd0ayB0byB1bml4LgorICAgICAg
ICAqIFBsYXRmb3JtL0xvZ2dpbmcuY3BwOiBBZGQgUGx1Z2lucyBjaGFubmVsIGZvciBMT0cuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpnZXRDaGFubmVsRnJvbU5hbWUpOgor
ICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSk6CisgICAg
ICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogQWRkIGZpbGVzIG5lZWRlZCBieSBwbHVnaW4gcHJvY2Vzcy4KKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Db250
cm9sbGVyUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBBZGQgbWFjcm9zIGZv
ciBndGsvZWZsIGRpZmZlcmVudHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxl
clByb3h5OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OndlYmtpdFhFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3NNYWluVW5peCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91
bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuaC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nl
c3NHdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzUHJveHk6OnNjYW5QbHVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVBy
b3h5RWZsLmNwcDogQWRkIHN0dWJzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNy
ZWF0ZVBsdWdpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
Z3RrL1BsdWdpblByb3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6IFBsdWdpbidzIHdp
bmRvd2xlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdpbkRpc3Bs
YXkpOgorICAgICAgICAoV2ViS2l0Ojp4MTFTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpkaXNw
bGF5RGVwdGgpOgorICAgICAgICAoV2ViS2l0Ojpyb290V2luZG93SUQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogY29uZmlnLmg6CisgICAg
ICAgICogdW5peC9QbHVnaW5NYWluVW5peC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxMi0wOS0yOCAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk4NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGIwNzJl
MGUuLjk2OGY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC01NSw3ICs1NSw3IEBAIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKLQktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsg
XAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXggXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXApAQCAtODIsNyArODIsNyBAQCBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUg
XAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS91bml4IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9zb3VwIFwKQEAgLTQyOSw3ICs0MjksNyBAQCBQcm9ncmFtc19XZWJL
aXRQbHVnaW5Qcm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
LyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy8gXAotCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
LyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1MDE1ZmIzLi44MmJkMTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3Nyw4ICsyNzcsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
c01haW4uaCBcCiAJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCBcCi0JU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJv
bGxlclByb3h5R3RrLmNwcCBcCi0JU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1
Z2luUHJvY2Vzc0d0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9Q
bHVnaW5Db250cm9sbGVyUHJveHlVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0RyYWdDb250cm9sbGVyQWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5m
by5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIFwK
QEAgLTgwMiw4ICs4MDIsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBc
Ci0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94
eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
SW5mb1N0b3JlVW5peC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NU
aW1lci5oIFwKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1h
cC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50
aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2Fw
ZVBsdWdpblgxMS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uY3BwIFwKQEAgLTEyMzIsMTAgKzEyMzIsMTAgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25u
ZWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgXAotCVNvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NHdGsuY3BwIFwKLQlTb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5oIFwKLQlTb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlVbml4
LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NN
YWluVW5peC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
cy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIFwKQEAgLTEyNjgsNyArMTI2
OCw3IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBcCi0JU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwK
QEAgLTEyODAsNiArMTI4MCw2IEBAIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3Nfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIFwKLQlTb3VyY2UvV2Vi
S2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKKwlTb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1h
aW5Vbml4LmNwcAogCiBlbmRpZiAjIEVOQUJMRV9QTFVHSU5fUFJPQ0VTUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCAxNzY5NGM5Li5kZjk4ZTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Mb2dnaW5nLmNwcApAQCAtMzcsNiArMzcsNyBAQCBXVEZMb2dDaGFubmVsIExvZ1RleHRJ
bnB1dCAgICA9IHsgMHgwMDAwMDAwNCwgIldlYktpdDJMb2dMZXZlbCIsIFdURkxvZ0NoYW5uZWxP
ZgogV1RGTG9nQ2hhbm5lbCBMb2dWaWV3ICAgICAgICAgPSB7IDB4MDAwMDAwMDgsICJXZWJLaXQy
TG9nTGV2ZWwiLCBXVEZMb2dDaGFubmVsT2ZmIH07CiBXVEZMb2dDaGFubmVsIExvZ0ljb25EYXRh
YmFzZSA9IHsgMHgwMDAwMDAxMCwgIldlYktpdDJMb2dMZXZlbCIsIFdURkxvZ0NoYW5uZWxPZmYg
fTsKIFdURkxvZ0NoYW5uZWwgTG9nS2V5SGFuZGxpbmcgID0geyAweDAwMDAwMDIwLCAiV2ViS2l0
MkxvZ0xldmVsIiwgV1RGTG9nQ2hhbm5lbE9mZiB9OworV1RGTG9nQ2hhbm5lbCBMb2dQbHVnaW5z
ICAgICAgPSB7IDB4MDAwMDAwNDAsICJXZWJLaXQyTG9nTGV2ZWwiLCBXVEZMb2dDaGFubmVsT2Zm
IH07CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0o
UVQpICYmICFQTEFURk9STShFRkwpCiB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsKFdURkxvZ0No
YW5uZWwqIGNoYW5uZWwpCkBAIC02OSw2ICs3MCw5IEBAIFdURkxvZ0NoYW5uZWwqIGdldENoYW5u
ZWxGcm9tTmFtZShjb25zdCBTdHJpbmcmIGNoYW5uZWxOYW1lKQogICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShjaGFubmVsTmFtZSwgU3RyaW5nKCJLZXlIYW5kbGluZyIpKSkKICAgICAgICAgcmV0
dXJuICZMb2dLZXlIYW5kbGluZzsKIAorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjaGFubmVs
TmFtZSwgU3RyaW5nKCJQbHVnaW5zIikpKQorICAgICAgICByZXR1cm4gJkxvZ1BsdWdpbnM7CisK
ICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtODMsNiArODcsNyBAQCB2b2lkIGluaXRpYWxp
emVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCkKICAgICBpbml0aWFsaXplTG9nQ2hhbm5lbCgmTG9n
Q29udGV4dE1lbnUpOwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dJY29uRGF0YWJhc2Up
OwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dLZXlIYW5kbGluZyk7CisgICAgaW5pdGlh
bGl6ZUxvZ0NoYW5uZWwoJkxvZ1BsdWdpbnMpOwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZM
b2dTZXNzaW9uU3RhdGUpOwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dUZXh0SW5wdXQp
OwogICAgIGluaXRpYWxpemVMb2dDaGFubmVsKCZMb2dWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xv
Z2dpbmcuaAppbmRleCAxNzNkNjA0Li42MDM2ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZXh0ZXJuIFdURkxvZ0No
YW5uZWwgTG9nQ29udGV4dE1lbnU7CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dJY29uRGF0YWJh
c2U7CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dLZXlIYW5kbGluZzsKK2V4dGVybiBXVEZMb2dD
aGFubmVsIExvZ1BsdWdpbnM7CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dTZXNzaW9uU3RhdGU7
CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dUZXh0SW5wdXQ7CiBleHRlcm4gV1RGTG9nQ2hhbm5l
bCBMb2dWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkMzkzMmI2Li45MGY3ZmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNyw2ICs3LDEwIEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKICAgICBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAKKyAg
ICBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAKKyAgICBQ
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwCisgICAgUGx1Z2luUHJvY2Vz
cy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAKKwogICAgIFNoYXJlZC9BUEkvYy9jYWly
by9XS0ltYWdlQ2Fpcm8uY3BwCiAKICAgICBTaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250
ZXh0R3RrLmNwcApAQCAtMjgsNiArMzIsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
IAogICAgIFVJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIuY3BwCiAKKyAgICBTaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCisKICAgICBV
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKICAgICAKICAgICBVSVByb2Nlc3MvQVBJL2Nw
cC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcApAQCAtODUsNiArOTEsNyBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVu
Y2hlckVmbC5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3Jl
VW5peC5jcHAKKyAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVu
aXguY3BwCiAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291
cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3Fs
aXRlLmNwcApAQCAtOTQsNiArMTAxLDEwIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3Bw
CiAKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXgu
Y3BwCisKKyAgICBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViQ29udGV4dE1l
bnVDbGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRp
dG9yQ2xpZW50RWZsLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVy
cm9yc0VmbC5jcHAKQEAgLTIzNiw2ICsyNDcsMjkgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiBJ
TlNUQUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMg
REVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFE
RVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVD
VF9WRVJTSU9OX01BSk9SfSkKIAorSUYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUykKKyAgICBBRERf
REVGSU5JVElPTlMoLURFTkFCTEVfUExVR0lOX1BST0NFU1M9MSkKKworICAgIFNFVCAoUGx1Z2lu
UHJvY2Vzc19FWEVDVVRBQkxFX05BTUUgUGx1Z2luUHJvY2VzcykKKyAgICBMSVNUIChBUFBFTkQg
UGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQktJVDJfRElS
fS9QbHVnaW5Qcm9jZXNzL3VuaXgiCisgICAgKQorCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygk
e1BsdWdpblByb2Nlc3NfSU5DTFVERV9ESVJFQ1RPUklFU30pCisKKyAgICBMSVNUIChBUFBFTkQg
UGx1Z2luUHJvY2Vzc19TT1VSQ0VTCisgICAgICAgICR7V0VCS0lUMl9ESVJ9L3VuaXgvUGx1Z2lu
TWFpblVuaXguY3BwCisgICAgKQorCisgICAgU0VUKFBsdWdpblByb2Nlc3NfTElCUkFSSUVTCisg
ICAgICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgKQorCisgICAgQUREX0VYRUNVVEFC
TEUoJHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gJHtQbHVnaW5Qcm9jZXNzX1NPVVJD
RVN9KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJM
RV9OQU1FfSAke1BsdWdpblByb2Nlc3NfTElCUkFSSUVTfSkKKyAgICBJTlNUQUxMKFRBUkdFVFMg
JHtQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRX0gREVTVElOQVRJT04gIiR7RVhFQ19JTlNU
QUxMX0RJUn0iKQorRU5ESUYgKCkgIyBFTkFCTEVfUExVR0lOX1BST0NFU1MKKwogSU5DTFVERV9E
SVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQogCiBTRVQoRVdLMlVu
aXRUZXN0c19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL2d0ay9QbHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYmNjMWQ3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Db250cm9s
bGVyUHJveHkuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtRGVz
dHJveSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbHVnaW5Db250cm9s
bGVyUHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9n
dGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0
ay9QbHVnaW5Qcm9jZXNzR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3
OGY5YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVn
aW5Qcm9jZXNzR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLQotI2lmIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci12b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsv
UGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9n
dGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4NzBjMDFjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3Rr
L1BsdWdpblByb2Nlc3NNYWluR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluR3RrLmgiCi0KLSNpbmNs
dWRlICJOZXRzY2FwZVBsdWdpbi5oIgotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUg
PGd0ay9ndGsuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBpbnQgd2Via2l0Z3RrWEVycm9yKERpc3BsYXkq
IHhkaXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCi17Ci0gICAgZ2NoYXIgZXJyb3JNZXNzYWdl
WzY0XTsKLSAgICBYR2V0RXJyb3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJy
b3JNZXNzYWdlLCA2Myk7Ci0gICAgZ193YXJuaW5nKCJUaGUgcHJvZ3JhbSAnJXMnIHJlY2VpdmVk
IGFuIFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKLSAgICAgICAgICAgICAgIlRoaXMgcHJvYmFi
bHkgcmVmbGVjdHMgYSBidWcgaW4gYSBicm93c2VyIHBsdWdpbi5cbiIKLSAgICAgICAgICAgICAg
IlRoZSBlcnJvciB3YXMgJyVzJy5cbiIKLSAgICAgICAgICAgICAgIiAgKERldGFpbHM6IHNlcmlh
bCAlbGQgZXJyb3JfY29kZSAlZCByZXF1ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiIsCi0g
ICAgICAgICAgICAgIGdfZ2V0X3ByZ25hbWUoKSwgZXJyb3JNZXNzYWdlLAotICAgICAgICAgICAg
ICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgZXJyb3It
PnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOwotICAgIHJldHVybiAwOwotfQotCi1X
S19FWFBPUlQgaW50IFBsdWdpblByb2Nlc3NNYWluR3RrKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
Ci17Ci0gICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09IDMpOwotICAgIGJvb2wgc2NhblBs
dWdpbiA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2luIik7Ci0gICAgQVNTRVJUKGFyZ2Mg
PT0gMiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsKLQotICAgIGd0a19pbml0KCZhcmdj
LCAmYXJndik7Ci0KLSAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7Ci0KLSAgICBpZiAoc2NhblBsdWdpbikgewotICAgICAgICBT
dHJpbmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKLSAgICAgICAgaWYgKCFOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKLSAgICAgICAgICAgIHJldHVybiBFWElUX0ZB
SUxVUkU7Ci0gICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Ci0gICAgfQotCi0gICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7Ci0KLSAgICAvLyBQbHVnaW5zIGNhbiBwcm9kdWNl
IFggZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhhbmRsZXIsIHdo
aWNoCi0gICAgLy8gZXhpdHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY3Jh
c2ggZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBpbnN0YWxsIGEKLSAgICAvLyBjdXN0b20gZXJyb3Ig
aGFuZGxlciB0byBzaG93IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5zIHdpdGhvdXQg
YWJvcnRpbmcuCi0gICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRndGtYRXJyb3IpOwotCi0gICAg
aW50IHNvY2tldCA9IGF0b2koYXJndlsxXSk7Ci0gICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKHNvY2tldCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICBSdW5Mb29w
OjpydW4oKTsKLQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9j
ZXNzTWFpbkd0ay5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJv
Y2Vzc01haW5HdGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljYzZlNi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNz
TWFpbkd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBD
b3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGx1Z2luUHJvY2Vzc01haW5HdGtfaAotI2RlZmlu
ZSBQbHVnaW5Qcm9jZXNzTWFpbkd0a19oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsK
LVdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSk7Ci19IC8vIGV4dGVybiAiQyIKLSNlbmRpZiAvLyBfX2NwbHVzcGx1cwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBsdWdpblByb2Nlc3NNYWluX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJveHlV
bml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9s
bGVyUHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNj
MWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4
L1BsdWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1
Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURp
ZENoYW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVu
aXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNWY2NDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJv
Y2Vzc01haW5Vbml4LmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBP
V05FUiBPUiBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpblVuaXgu
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgor
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1
ZGUgPGdkay9nZGt4Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2VsaWYgUExBVEZPUk0oRUZM
KSAmJiBIQVZFX0VDT1JFX1gKKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjZW5kaWYKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisjaWZkZWYgWFBfVU5J
WAorc3RhdGljIGNvbnN0IGNoYXIqIHhFcnJvclN0cmluZyA9ICJUaGUgcHJvZ3JhbSAnJXMnIHJl
Y2VpdmVkIGFuIFggV2luZG93IFN5c3RlbSBlcnJvci5cbiIKKyAgICAiVGhpcyBwcm9iYWJseSBy
ZWZsZWN0cyBhIGJ1ZyBpbiBhIGJyb3dzZXIgcGx1Z2luLlxuIgorICAgICJUaGUgZXJyb3Igd2Fz
ICclcycuXG4iCisgICAgIiAgKERldGFpbHM6IHNlcmlhbCAlbGQgZXJyb3JfY29kZSAlZCByZXF1
ZXN0X2NvZGUgJWQgbWlub3JfY29kZSAlZClcbiI7CitzdGF0aWMgY2hhciogcHJvZ3JhbU5hbWUg
PSAwOworCitzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9y
RXZlbnQqIGVycm9yKQoreworICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKKyAgICBYR2V0RXJy
b3JUZXh0KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CisK
KyAgICBMT0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAorICAgICAgICBwcm9ncmFtTmFtZSwgZXJy
b3JNZXNzYWdlLAorICAgICAgICBlcnJvci0+c2VyaWFsLCBlcnJvci0+ZXJyb3JfY29kZSwKKyAg
ICAgICAgZXJyb3ItPnJlcXVlc3RfY29kZSwgZXJyb3ItPm1pbm9yX2NvZGUpOworICAgIHJldHVy
biAwOworfQorI2VuZGlmCisKK1dLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pCit7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCBhcmdjID09
IDMpOworICAgIGJvb2wgc2NhblBsdWdpbiA9ICFzdHJjbXAoYXJndlsxXSwgIi1zY2FuUGx1Z2lu
Iik7CisgICAgQVNTRVJUKGFyZ2MgPT0gMiB8fCAoYXJnYyA9PSAzICYmIHNjYW5QbHVnaW4pKTsK
KworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOworI2VsaWYg
UExBVEZPUk0oRUZMKQorI2lmZGVmIEhBVkVfRUNPUkVfWAorICAgIGlmICghZWNvcmVfeF9pbml0
KDApKQorI2VuZGlmCisgICAgICAgIHJldHVybiAxOworI2VuZGlmCisKKyAgICBTY3JpcHRDb250
cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisKKyAgICBpZiAoc2NhblBsdWdpbikgewor
ICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aChhcmd2WzJdKTsKKyAgICAgICAgaWYgKCFOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6c2NhblBsdWdpbihwbHVnaW5QYXRoKSkKKyAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CisgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisgICAgfQorCisg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICAvLyBQbHVnaW5zIGNh
biBwcm9kdWNlIFggZXJyb3JzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIEdESyBYIGVycm9yIGhh
bmRsZXIsIHdoaWNoCisgICAgLy8gZXhpdHMgdGhlIHByb2Nlc3MuIFNpbmNlIHdlIGRvbid0IHdh
bnQgdG8gY3Jhc2ggZHVlIHRvIHBsdWdpbiBidWdzLCB3ZSBpbnN0YWxsIGEKKyAgICAvLyBjdXN0
b20gZXJyb3IgaGFuZGxlciB0byBzaG93IGEgd2FybmluZyB3aGVuIGEgWCBlcnJvciBoYXBwZW5z
IHdpdGhvdXQgYWJvcnRpbmcuCisjaWYgZGVmaW5lZChYUF9VTklYKQorICAgIHByb2dyYW1OYW1l
ID0gYmFzZW5hbWUoYXJndlswXSk7CisgICAgWFNldEVycm9ySGFuZGxlcih3ZWJraXRYRXJyb3Ip
OworI2VuZGlmCisKKyAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKKyAgICBXZWJLaXQ6
OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjptYWlu
KCkpOworICAgIFJ1bkxvb3A6OnJ1bigpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91
bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjU0MGM1OTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5oCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsdWdpblByb2Nlc3NN
YWluVW5peF9oCisjZGVmaW5lIFBsdWdpblByb2Nlc3NNYWluVW5peF9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKK1dLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5Vbml4KGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pOworfSAvLyBleHRlcm4gIkMiCisjZW5kaWYgLy8gX19jcGx1
c3BsdXMKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQbHVnaW5Qcm9jZXNz
TWFpbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1
Z2luUHJvY2Vzc1VuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
ZTc4ZjlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91
bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CisKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZhOTMzOWQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvZ3RrL1BsdWdpblByb2Nlc3NQcm94eUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIK
LQotI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLQotI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dPd25Q
dHJHdGsuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKQotewotfQotCi1ib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQpCi17Ci0gICAg
Q1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQ
YXRoT2ZQbHVnaW5Qcm9jZXNzKCkpOwotICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7Ci0gICAgY2hhciogYXJndls0XTsK
LSAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOwotICAg
IGFyZ3ZbMV0gPSBjb25zdF9jYXN0PGNoYXIqPigiLXNjYW5QbHVnaW4iKTsKLSAgICBhcmd2WzJd
ID0gY29uc3RfY2FzdDxjaGFyKj4ocGx1Z2luUGF0aENTdHJpbmcuZGF0YSgpKTsKLSAgICBhcmd2
WzNdID0gMDsKLQotICAgIGdpbnQgc3RhdHVzOwotICAgIEdPd25QdHI8Z2NoYXI+IHN0ZE91dDsK
LSAgICBpZiAoIWdfc3Bhd25fc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX1NUREVSUl9UT19ERVZf
TlVMTCwgMCwgMCwgJnN0ZE91dC5vdXRQdHIoKSwgMCwgJnN0YXR1cywgMCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0
YXR1cykgIT0gRVhJVF9TVUNDRVNTKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25z
dCB1bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7Ci0gICAgU3RyaW5nIGxpbmVzW2tOdW1M
aW5lc0V4cGVjdGVkXTsKLSAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOwotICAgIGNvbnN0IFVD
aGFyKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ZE91dC5nZXQo
KSk7Ci0gICAgd2hpbGUgKGxpbmVJbmRleCA8IGtOdW1MaW5lc0V4cGVjdGVkKSB7Ci0gICAgICAg
IGNvbnN0IFVDaGFyKiBzdGFydCA9IGN1cnJlbnQ7Ci0gICAgICAgIHdoaWxlICgqY3VycmVudCsr
ICE9IFVDaGFyKCdcbicpKSB7IH0KLSAgICAgICAgbGluZXNbbGluZUluZGV4KytdID0gU3RyaW5n
KHN0YXJ0LCBjdXJyZW50IC0gc3RhcnQgLSAxKTsKLSAgICB9Ci0KLSAgICByZXN1bHQubmFtZS5z
d2FwKGxpbmVzWzBdKTsKLSAgICByZXN1bHQuZGVzY3JpcHRpb24uc3dhcChsaW5lc1sxXSk7Ci0g
ICAgcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5zd2FwKGxpbmVzWzJdKTsKLSAgICByZXR1cm4gIXJl
c3VsdC5taW1lRGVzY3JpcHRpb24uaXNFbXB0eSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNzhiYjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c1Byb3h5LmgiCisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lmIFBM
QVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisj
aW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpCit7
Cit9CisKK2Jvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYg
cGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCkKK3sKKyNpZiBQTEFURk9STShH
VEspIHx8IChQTEFURk9STShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBPUlQpKQorICAgIENTdHJp
bmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aE9m
UGx1Z2luUHJvY2VzcygpKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIGNoYXIqIGFyZ3ZbNF07CisgICAg
YXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKKyAgICBhcmd2
WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CisgICAgYXJndlsyXSA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5nLmRhdGEoKSk7CisgICAgYXJndlszXSA9
IDA7CisKKyAgICBpbnQgc3RhdHVzOworICAgIGNoYXIqIHN0ZE91dDsKKworICAgIGlmICghZ19z
cGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAwLCAwLCAm
c3RkT3V0LCAwLCAmc3RhdHVzLCAwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VDQ0VT
UykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgdW5zaWduZWQga051bUxpbmVz
RXhwZWN0ZWQgPSAzOworICAgIFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07CisgICAg
dW5zaWduZWQgbGluZUluZGV4ID0gMDsKKworICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ZE91dCk7CisKKyAgICB3aGlsZSAobGluZUlu
ZGV4IDwga051bUxpbmVzRXhwZWN0ZWQpIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0g
Y3VycmVudDsKKyAgICAgICAgd2hpbGUgKCpjdXJyZW50KysgIT0gVUNoYXIoJ1xuJykpIHsgfQor
ICAgICAgICBsaW5lc1tsaW5lSW5kZXgrK10gPSBTdHJpbmcoc3RhcnQsIGN1cnJlbnQgLSBzdGFy
dCAtIDEpOworICAgIH0KKworICAgIGlmIChzdGRPdXQpCisgICAgICAgIGZyZWUoc3RkT3V0KTsK
KworICAgIHJlc3VsdC5uYW1lLnN3YXAobGluZXNbMF0pOworICAgIHJlc3VsdC5kZXNjcmlwdGlv
bi5zd2FwKGxpbmVzWzFdKTsKKyAgICByZXN1bHQubWltZURlc2NyaXB0aW9uLnN3YXAobGluZXNb
Ml0pOworICAgIHJldHVybiAhcmVzdWx0Lm1pbWVEZXNjcmlwdGlvbi5pc0VtcHR5KCk7CisjZWxz
ZSAvLyBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBP
UlQpKQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZiAvLyBQTEFURk9STShHVEspIHx8IChQTEFU
Rk9STShFRkwpICYmIEVOQUJMRShHTElCX1NVUFBPUlQpKQorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCAyYTNiMzA3Li44
OTgxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwCkBAIC04Myw0ICs4MywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGhlbWVQ
YXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VGhlbWVQYXRoKHRoZW1lUGF0aCksIG1fcGFnZUlELCAwKTsKIH0KIAor
dm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVBsdWdpbkNvbnRhaW5lcih1aW50NjRfdCYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1
Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCB1aW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsvUGx1Z2luUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5Qcm94eUd0ay5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NmFmMjAuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5Qcm94eUd0ay5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJQbHVnaW5Qcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9v
bCBQbHVnaW5Qcm94eTo6bmVlZHNCYWNraW5nU3RvcmUoKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4L1BsdWdp
blByb3h5VW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk2YWYy
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS91bml4L1BsdWdpblByb3h5VW5peC5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKKworI2lmIEVOQUJMRShQTFVHSU5fUFJP
Q0VTUykKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2Jvb2wgUGx1Z2luUHJveHk6Om5lZWRzQmFja2luZ1N0b3JlKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggNWM5ZTY3OC4uOWQ1OWI2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTg0LDYgKzg0LDgg
QEAgc3RhdGljIERpc3BsYXkqIGdldFBsdWdpbkRpc3BsYXkoKQogICAgIC8vIFNpbmNlIHdlJ3Jl
IGEgZ2RrL2d0ayBhcHAsIHdlJ2xsIChwcm9iYWJseT8pIGhhdmUgdGhlIHNhbWUgWCBjb25uZWN0
aW9uIGFzIGFueSBnZGstYmFzZWQKICAgICAvLyBwbHVnaW5zLCBzbyB3ZSBjYW4gcmV0dXJuIHRo
YXQuIFdlIG1pZ2h0IHdhbnQgdG8gYWRkIG90aGVyIGltcGxlbWVudGF0aW9ucyBoZXJlIGxhdGVy
LgogICAgIHJldHVybiBHREtfRElTUExBWV9YRElTUExBWShnZGtfZGlzcGxheV9nZXRfZGVmYXVs
dCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PERpc3BsYXkqPihlY29yZV94X2Rpc3BsYXlfZ2V0KCkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtOTUsNiArOTcsOCBAQCBzdGF0aWMgaW5saW5l
IGludCB4MTFTY3JlZW4oKQogICAgIHJldHVybiBYRGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdp
bjo6eDExSG9zdERpc3BsYXkoKSk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGdk
a19zY3JlZW5fZ2V0X251bWJlcihnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExB
VEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF9z
Y3JlZW5faW5kZXhfZ2V0KGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTA2LDYgKzExMCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50
IGRpc3BsYXlEZXB0aCgpCiAgICAgcmV0dXJuIFhEZWZhdWx0RGVwdGgoTmV0c2NhcGVQbHVnaW46
OngxMUhvc3REaXNwbGF5KCksIHgxMVNjcmVlbigpKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAg
ICByZXR1cm4gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgoZ2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3Vh
bChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVm
aW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQo
TmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5f
Z2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE3LDYgKzEyMyw4IEBA
IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQoKQogICAgIHJldHVybiBY
RGVmYXVsdFJvb3RXaW5kb3coTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkpOwogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBHREtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hf
d2luZG93X3Jvb3RfZmlyc3RfZ2V0KCk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBA
IC0xNDQsNiArMTUyLDggQEAgRGlzcGxheSogTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5
KCkKICAgICByZXR1cm4gZGVkaWNhdGVkRGlzcGxheTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAg
ICByZXR1cm4gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7
CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVy
biBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVfeF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTM1Nyw3ICszNjcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydAogICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoZXhwb3NlZFJlY3QueCgpLCBl
eHBvc2VkUmVjdC55KCkpLCBxaW1hZ2VGcm9tWEltYWdlKHhJbWFnZSksIGV4cG9zZWRSZWN0KTsK
IAogICAgIFhEZXN0cm95SW1hZ2UoeEltYWdlKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlm
IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGli
X3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZHJhd2FibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdp
bmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApp
bmRleCBkNmM0YTVkLi4yODg1MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRp
YyBjb25zdCB0eXBlJiBuYW1lKCkgXAogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAx
CiAjZWxpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkVfV0lOIDEK
LSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgKE9TKFVOSVgpICYmICFPUyhNQUNfT1NfWCkpCisjZWxp
ZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1B
Q19PU19YKSkKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9YMTEgMQogI2VsaWYgUExBVEZP
Uk0oUVQpCiAvLyBRdCBoYW5kbGVzIHRoaXMgZmVhdHVyZXMucHJmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1
Z2luTWFpbkd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2Y0NGMuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvZ3RrL1BsdWdpbk1haW5HdGsuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAg
TW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbkd0ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5HdGso
YXJnYywgYXJndik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1h
aW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZjlhMGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcApAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlBsdWdpblByb2Nl
c3NNYWluVW5peC5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
cmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQppbmRleCAwYWU0ZWNlLi41MzkzN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQpAQCAtNzQsNyArNzQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfTUVESUFfQ0FQVFVSRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPRkYpCitXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRUdJT05TIE9OKQpA
QCAtMTE5LDYgKzExOSwxMCBAQCBTRVQoV1RGX1VTRV9IQVJGQlVaWl9ORyAxKQogQUREX0RFRklO
SVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQRT0xKQogQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9I
QVJGQlVaWl9ORz0xKQogCitJRiAoRU5BQkxFX1dFQktJVDIpCisgICAgU0VUKEVOQUJMRV9QTFVH
SU5fUFJPQ0VTUyAxKQorRU5ESUYgKCkKKwogSUYgKE5PVCBFTkFCTEVfU1ZHKQogICBTRVQoRU5B
QkxFX1NWR19GT05UUyAwKQogRU5ESUYgKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NDY5MjE2Li4zYTlhMmFmIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDktMjggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9jZXNzIGlt
cGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIG9wdGlvbiBieSBk
ZWZhdWx0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgor
CiAyMDEyLTA5LTI4ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50
ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0gRUZMIERSVCBzaG91bGQgZGlzYWJsZSB2aXNp
dGVkIGxpbmtzIHRyYWNraW5nIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbQppbmRleCA2ODU3NzY2Li4yZTlhMTQ3IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjksNyArMzI5LDcgQEAgbXkgQGZlYXR1cmVzID0gKAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMiLCBkZWZhdWx0
ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRyZWdpc3RlclByb3Rv
Y29sSGFuZGxlclN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJuZXRzY2FwZS1wbHVnaW4t
YXBpIiwgZGVzYyA9PiAiVG9nZ2xlIE5ldHNjYXBlIFBsdWdpbiBBUEkgc3VwcG9ydCIsCi0gICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAhaXNF
ZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpbkFQSVN1cHBvcnQgfSwKKyAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+
IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibmV0d29y
ay1pbmZvIiwgZGVzYyA9PiAiVG9nZ2xlIE5ldHdvcmsgSW5mbyBzdXBwb3J0IiwKICAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX05FVFdPUktfSU5GTyIsIGRlZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUg
PT4gXCRuZXR3b3JrSW5mb1N1cHBvcnQgfSwK
</data>
<flag name="commit-queue"
          id="178506"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166244</attachid>
            <date>2012-09-28 07:12:37 -0700</date>
            <delta_ts>2012-09-28 23:30:53 -0700</delta_ts>
            <desc>Fixed merge error, and applied Grzegorz&apos;s comments</desc>
            <filename>bug-91844.patch</filename>
            <type>text/plain</type>
            <size>55458</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwNDc2NTQ2Li5lNzRkYWFm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDktMjggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdlYktpdDItR1RLIHBsdWdpbiBwcm9j
ZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgVHVybiBvbiBOZXRzY2FwZSBQbHVnaW4gQVBJIGJ5IGRl
ZmF1bHQgIGZvciBXZWJLaXQyLUVmbC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlOgorCiAyMDEyLTA5LTI3ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFN1Z2dlc3Rpb25QaWNrZXIgc2hvdWxkIHN1cHBvcnQgcnRsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNzQ3MDA2NC4uNTBjZTlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisy
MDEyLTA5LTI4ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtXSzJdW0dUS11bRUZMXSBTaGFyZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiB3aXRoIEVGTCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIEltcGxlbWVudCB3aW5kb3dsZXNzIHBsdWdpbiBhbmQgZnVu
Y3Rpb25zIG5lZWRlZCB0byBsYXVuY2ggUGx1Z2luUHJvY2Vzcy4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBDaGFuZ2UgZmlsZXMgYW5kIGZvbGRlcnMgcmVsYXRlZCB0byBwbHVnaW4gcHJv
Y2VzcyBmcm9tIGd0ayB0byB1bml4LgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IENo
YW5nZSBmaWxlcyBhbmQgZm9sZGVycyByZWxhdGVkIHRvIHBsdWdpbiBwcm9jZXNzIGZyb20gZ3Rr
IHRvIHVuaXguCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5jcHA6IEFkZCBQbHVnaW5zIGNo
YW5uZWwgZm9yIExPRy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmdldENo
YW5uZWxGcm9tTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgZmlsZXMgbmVlZGVkIGJ5IHBs
dWdpbiBwcm9jZXNzLgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9s
bGVyUHJveHlVbml4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5jcHAuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6
ZSk6IEFkZCBtYWNyb3MgZm9yIGd0ay9lZmwgZGlmZmVyZW50cy4KKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01h
aW5HdGsuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6d2Via2l0WEVy
cm9yKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc01haW5Vbml4KToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4Lmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5o
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2lu
UHJvY2Vzc1VuaXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1By
b3h5R3RrLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOiBBZGQgc3R1YnMuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29udGFpbmVyKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1
Z2luUHJveHlVbml4LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9ndGsvUGx1Z2luUHJveHlHdGsuY3BwLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om5lZWRzQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcDogUGx1Z2luJ3Mgd2luZG93bGVzcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktp
dDo6Z2V0UGx1Z2luRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OngxMVNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OmRpc3BsYXlEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OnJvb3RXaW5kb3dJ
RCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjp4MTFIb3N0RGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KToKKyAgICAgICAg
KiBjb25maWcuaDoKKyAgICAgICAgKiB1bml4L1BsdWdpbk1haW5Vbml4LmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL2d0ay9QbHVnaW5NYWluR3RrLmNwcC4KKyAgICAgICAgKG1haW4p
OgorCiAyMDEyLTA5LTI4ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyOTg2My4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KaW5kZXggYjA3MmUwZS4uOTY4ZjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTU1
LDcgKzU1LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMgXAotCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL2d0ayBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvdW5peCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3Nv
dXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCkBAIC04Miw3
ICs4Miw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZSBcCi0JLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL2d0ayBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXggXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAgXApAQCAtNDI5LDcgKzQyOSw3
IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvUGxhdGZvcm0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzLyBcCi0JLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsg
XAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peCBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDUw
MTVmYjMuLjgyYmQxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjc3LDgg
KzI3Nyw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzTWFpbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L2d0ay9QbHVnaW5Db250cm9sbGVyUHJveHlHdGsuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzR3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL0ZvbnRJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9IVFRQQ29va2ll
QWNjZXB0UG9saWN5LmggXApAQCAtODAyLDggKzgwMiw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmgg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFu
YWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXIuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsv
UGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9SZXNwb25zaXZlbmVzc1RpbWVyLmggXApAQCAtMTA2Miw3ICsxMDYyLDcgQEAgd2Via2l0Ml9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBSdW50aW1lT2JqZWN0TWFwLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVVdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmggXAotCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsvUGx1Z2luUHJveHlHdGsuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVn
aW5Qcm94eVVuaXguY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAgXApAQCAtMTIzMiwxMCArMTIzMiwxMCBAQCB3ZWJraXQy
X3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBcCi0JU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNw
cCBcCi0JU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc0d0ay5j
cHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NNYWlu
R3RrLmggXAotCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NN
YWluR3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpbkNv
bnRyb2xsZXJQcm94eVVuaXguY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3Vu
aXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmggXAorCVNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc1VuaXguY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJv
Y2Vzcy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgg
XApAQCAtMTI2OCw3ICsxMjY4LDcgQEAgd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwIFwK
LQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5
R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Q
cm9jZXNzUHJveHlVbml4LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGlt
ZVV0aWxpdGllcy5jcHAgXApAQCAtMTI4MCw2ICsxMjgwLDYgQEAgd2Via2l0Ml9wbHVnaW5fcHJv
Y2Vzc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5j
cHAgXAotCVNvdXJjZS9XZWJLaXQyL2d0ay9QbHVnaW5NYWluR3RrLmNwcAorCVNvdXJjZS9XZWJL
aXQyL3VuaXgvUGx1Z2luTWFpblVuaXguY3BwCiAKIGVuZGlmICMgRU5BQkxFX1BMVUdJTl9QUk9D
RVNTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IDE3Njk0YzkuLmRmOThlNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCkBAIC0zNyw2ICszNyw3IEBAIFdURkxv
Z0NoYW5uZWwgTG9nVGV4dElucHV0ICAgID0geyAweDAwMDAwMDA0LCAiV2ViS2l0MkxvZ0xldmVs
IiwgV1RGTG9nQ2hhbm5lbE9mCiBXVEZMb2dDaGFubmVsIExvZ1ZpZXcgICAgICAgICA9IHsgMHgw
MDAwMDAwOCwgIldlYktpdDJMb2dMZXZlbCIsIFdURkxvZ0NoYW5uZWxPZmYgfTsKIFdURkxvZ0No
YW5uZWwgTG9nSWNvbkRhdGFiYXNlID0geyAweDAwMDAwMDEwLCAiV2ViS2l0MkxvZ0xldmVsIiwg
V1RGTG9nQ2hhbm5lbE9mZiB9OwogV1RGTG9nQ2hhbm5lbCBMb2dLZXlIYW5kbGluZyAgPSB7IDB4
MDAwMDAwMjAsICJXZWJLaXQyTG9nTGV2ZWwiLCBXVEZMb2dDaGFubmVsT2ZmIH07CitXVEZMb2dD
aGFubmVsIExvZ1BsdWdpbnMgICAgICA9IHsgMHgwMDAwMDA0MCwgIldlYktpdDJMb2dMZXZlbCIs
IFdURkxvZ0NoYW5uZWxPZmYgfTsKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShH
VEspICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEVGTCkKIHZvaWQgaW5pdGlhbGl6ZUxv
Z0NoYW5uZWwoV1RGTG9nQ2hhbm5lbCogY2hhbm5lbCkKQEAgLTY5LDYgKzcwLDkgQEAgV1RGTG9n
Q2hhbm5lbCogZ2V0Q2hhbm5lbEZyb21OYW1lKGNvbnN0IFN0cmluZyYgY2hhbm5lbE5hbWUpCiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNoYW5uZWxOYW1lLCBTdHJpbmcoIktleUhhbmRsaW5n
IikpKQogICAgICAgICByZXR1cm4gJkxvZ0tleUhhbmRsaW5nOwogCisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGNoYW5uZWxOYW1lLCBTdHJpbmcoIlBsdWdpbnMiKSkpCisgICAgICAgIHJldHVy
biAmTG9nUGx1Z2luczsKKwogICAgIHJldHVybiAwOwogfQogI2VuZGlmCkBAIC04Myw2ICs4Nyw3
IEBAIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKQogICAgIGluaXRpYWxp
emVMb2dDaGFubmVsKCZMb2dDb250ZXh0TWVudSk7CiAgICAgaW5pdGlhbGl6ZUxvZ0NoYW5uZWwo
JkxvZ0ljb25EYXRhYmFzZSk7CiAgICAgaW5pdGlhbGl6ZUxvZ0NoYW5uZWwoJkxvZ0tleUhhbmRs
aW5nKTsKKyAgICBpbml0aWFsaXplTG9nQ2hhbm5lbCgmTG9nUGx1Z2lucyk7CiAgICAgaW5pdGlh
bGl6ZUxvZ0NoYW5uZWwoJkxvZ1Nlc3Npb25TdGF0ZSk7CiAgICAgaW5pdGlhbGl6ZUxvZ0NoYW5u
ZWwoJkxvZ1RleHRJbnB1dCk7CiAgICAgaW5pdGlhbGl6ZUxvZ0NoYW5uZWwoJkxvZ1ZpZXcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDE3M2Q2MDQuLjYwMzY4NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dDb250ZXh0TWVudTsKIGV4dGVybiBXVEZMb2dDaGFu
bmVsIExvZ0ljb25EYXRhYmFzZTsKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ0tleUhhbmRsaW5n
OworZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nUGx1Z2luczsKIGV4dGVybiBXVEZMb2dDaGFubmVs
IExvZ1Nlc3Npb25TdGF0ZTsKIGV4dGVybiBXVEZMb2dDaGFubmVsIExvZ1RleHRJbnB1dDsKIGV4
dGVybiBXVEZMb2dDaGFubmVsIExvZ1ZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IGQzOTMyYjYuLjRlYjRmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03LDYgKzcs
MTAgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2ht
ZW50VW5peC5jcHAKIAorICAgIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Db250cm9sbGVyUHJv
eHlVbml4LmNwcAorICAgIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
Y3BwCisgICAgUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcAorCiAgICAg
U2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAogICAgIFNoYXJlZC9BUEkvYy9n
dGsvV0tHcmFwaGljc0NvbnRleHRHdGsuY3BwCkBAIC0yOCw2ICszMiw4IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5j
cHAKIAorICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZVgxMS5jcHAKKwogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAogICAgIAogICAg
IFVJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC04NSw2ICs5
MSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9MYXVuY2hl
ci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1
Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKIAogICAgIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dl
YkNvb2tpZU1hbmFnZXJTb3VwLmNwcAogICAgIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktp
dFNvdXBDb29raWVKYXJTcWxpdGUuY3BwCkBAIC05NCw2ICsxMDEsMTAgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2VmbC9Jbmpl
Y3RlZEJ1bmRsZUVmbC5jcHAKIAorICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS91bml4
L1BsdWdpblByb3h5VW5peC5jcHAKKworICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2VmbC9XZWJDb250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcApAQCAtMjM2LDYgKzI0NywyOSBAQCBTRVQgKEVX
ZWJLaXQyX0hFQURFUlMKIElOU1RBTEwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQy
L2VmbC9ld2Via2l0Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQogSU5TVEFMTChGSUxF
UyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX0xJQlJB
UllfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQogCitJRiAoRU5BQkxFX1BMVUdJTl9Q
Uk9DRVNTKQorICAgIEFERF9ERUZJTklUSU9OUygtREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xKQor
CisgICAgU0VUIChQbHVnaW5Qcm9jZXNzX0VYRUNVVEFCTEVfTkFNRSBQbHVnaW5Qcm9jZXNzKQor
ICAgIExJU1QgKEFQUEVORCBQbHVnaW5Qcm9jZXNzX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1BsdWdpblByb2Nlc3MvdW5peCIKKyAgICApCisKKyAgICBJTkNM
VURFX0RJUkVDVE9SSUVTKCR7UGx1Z2luUHJvY2Vzc19JTkNMVURFX0RJUkVDVE9SSUVTfSkKKwor
ICAgIExJU1QgKEFQUEVORCBQbHVnaW5Qcm9jZXNzX1NPVVJDRVMKKyAgICAgICAgJHtXRUJLSVQy
X0RJUn0vdW5peC9QbHVnaW5NYWluVW5peC5jcHAKKyAgICApCisKKyAgICBTRVQoUGx1Z2luUHJv
Y2Vzc19MSUJSQVJJRVMKKyAgICAgICAgJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0KKyAgICApCisK
KyAgICBBRERfRVhFQ1VUQUJMRSgke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9OQU1FfSAke1Bs
dWdpblByb2Nlc3NfU09VUkNFU30pCisgICAgVEFSR0VUX0xJTktfTElCUkFSSUVTKCR7UGx1Z2lu
UHJvY2Vzc19FWEVDVVRBQkxFX05BTUV9ICR7UGx1Z2luUHJvY2Vzc19MSUJSQVJJRVN9KQorICAg
IElOU1RBTEwoVEFSR0VUUyAke1BsdWdpblByb2Nlc3NfRVhFQ1VUQUJMRV9OQU1FfSBERVNUSU5B
VElPTiAiJHtFWEVDX0lOU1RBTExfRElSfSIpCitFTkRJRiAoKSAjIEVOQUJMRV9QTFVHSU5fUFJP
Q0VTUworCiBJTkNMVURFX0RJUkVDVE9SSUVTKCR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0L2luY2x1
ZGUpCiAKIFNFVChFV0syVW5pdFRlc3RzX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpbkNvbnRyb2xsZXJQcm94eUd0ay5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiY2MxZDcuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luQ29udHJvbGxlclByb3h5R3Rr
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQotCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJz
JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6cGxhdGZvcm1EZXN0cm95KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlZTc4ZjlhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvZ3RrL1BsdWdpblByb2Nlc3NHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgotCi0jaWYg
RU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg3MGMwMWMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9ndGsvUGx1Z2luUHJvY2Vzc01haW5HdGsuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01h
aW5HdGsuaCIKLQotI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCi0jaW5jbHVkZSAiUGx1Z2lu
UHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgotI2luY2x1ZGUgPGdkay9n
ZGt4Lmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIGludCB3ZWJraXRn
dGtYRXJyb3IoRGlzcGxheSogeGRpc3BsYXksIFhFcnJvckV2ZW50KiBlcnJvcikKLXsKLSAgICBn
Y2hhciBlcnJvck1lc3NhZ2VbNjRdOwotICAgIFhHZXRFcnJvclRleHQoeGRpc3BsYXksIGVycm9y
LT5lcnJvcl9jb2RlLCBlcnJvck1lc3NhZ2UsIDYzKTsKLSAgICBnX3dhcm5pbmcoIlRoZSBwcm9n
cmFtICclcycgcmVjZWl2ZWQgYW4gWCBXaW5kb3cgU3lzdGVtIGVycm9yLlxuIgotICAgICAgICAg
ICAgICAiVGhpcyBwcm9iYWJseSByZWZsZWN0cyBhIGJ1ZyBpbiBhIGJyb3dzZXIgcGx1Z2luLlxu
IgotICAgICAgICAgICAgICAiVGhlIGVycm9yIHdhcyAnJXMnLlxuIgotICAgICAgICAgICAgICAi
ICAoRGV0YWlsczogc2VyaWFsICVsZCBlcnJvcl9jb2RlICVkIHJlcXVlc3RfY29kZSAlZCBtaW5v
cl9jb2RlICVkKVxuIiwKLSAgICAgICAgICAgICAgZ19nZXRfcHJnbmFtZSgpLCBlcnJvck1lc3Nh
Z2UsCi0gICAgICAgICAgICAgIGVycm9yLT5zZXJpYWwsIGVycm9yLT5lcnJvcl9jb2RlLAotICAg
ICAgICAgICAgICBlcnJvci0+cmVxdWVzdF9jb2RlLCBlcnJvci0+bWlub3JfY29kZSk7Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KLVdLX0VYUE9SVCBpbnQgUGx1Z2luUHJvY2Vzc01haW5HdGsoaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKLXsKLSAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IGFyZ2MgPT0gMyk7
Ci0gICAgYm9vbCBzY2FuUGx1Z2luID0gIXN0cmNtcChhcmd2WzFdLCAiLXNjYW5QbHVnaW4iKTsK
LSAgICBBU1NFUlQoYXJnYyA9PSAyIHx8IChhcmdjID09IDMgJiYgc2NhblBsdWdpbikpOwotCi0g
ICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKLQotICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGlu
ZygpOwotICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLQotICAgIGlmIChzY2FuUGx1
Z2luKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnaW5QYXRoKGFyZ3ZbMl0pOwotICAgICAgICBpZiAo
IU5ldHNjYXBlUGx1Z2luTW9kdWxlOjpzY2FuUGx1Z2luKHBsdWdpblBhdGgpKQotICAgICAgICAg
ICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKLSAg
ICB9Ci0KLSAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKLQotICAgIC8vIFBs
dWdpbnMgY2FuIHByb2R1Y2UgWCBlcnJvcnMgdGhhdCBhcmUgaGFuZGxlZCBieSB0aGUgR0RLIFgg
ZXJyb3IgaGFuZGxlciwgd2hpY2gKLSAgICAvLyBleGl0cyB0aGUgcHJvY2Vzcy4gU2luY2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBjcmFzaCBkdWUgdG8gcGx1Z2luIGJ1Z3MsIHdlIGluc3RhbGwgYQotICAg
IC8vIGN1c3RvbSBlcnJvciBoYW5kbGVyIHRvIHNob3cgYSB3YXJuaW5nIHdoZW4gYSBYIGVycm9y
IGhhcHBlbnMgd2l0aG91dCBhYm9ydGluZy4KLSAgICBYU2V0RXJyb3JIYW5kbGVyKHdlYmtpdGd0
a1hFcnJvcik7Ci0KLSAgICBpbnQgc29ja2V0ID0gYXRvaShhcmd2WzFdKTsKLSAgICBXZWJLaXQ6
OlBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUoc29ja2V0LCBSdW5Mb29wOjptYWlu
KCkpOwotICAgIFJ1bkxvb3A6OnJ1bigpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvZ3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL2d0ay9QbHVnaW5Qcm9jZXNzTWFpbkd0ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzOWNjNmU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
Z3RrL1BsdWdpblByb2Nlc3NNYWluR3RrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbHVnaW5Qcm9jZXNz
TWFpbkd0a19oCi0jZGVmaW5lIFBsdWdpblByb2Nlc3NNYWluR3RrX2gKLQotI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0jaWZkZWYgX19jcGx1c3Bs
dXMKLWV4dGVybiAiQyIgewotV0tfRVhQT1JUIGludCBQbHVnaW5Qcm9jZXNzTWFpbkd0ayhpbnQg
YXJnYywgY2hhciogYXJndltdKTsKLX0gLy8gZXh0ZXJuICJDIgotI2VuZGlmIC8vIF9fY3BsdXNw
bHVzCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUGx1Z2luUHJvY2Vzc01h
aW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1BsdWdp
bkNvbnRyb2xsZXJQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91
bml4L1BsdWdpbkNvbnRyb2xsZXJQcm94eVVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmNiY2MxZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luQ29udHJvbGxlclByb3h5VW5peC5jcHAKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luQ29udHJvbGxlclByb3h5Lmgi
CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwbGF0Zm9ybURlc3Ryb3koKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpw
bGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Q
cm9jZXNzTWFpblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy91bml4L1Bs
dWdpblByb2Nlc3NNYWluVW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTE1ZjE1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NNYWluVW5peC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5l
dHNjYXBlUGx1Z2luLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpZiBQTEFU
Rk9STShHVEspCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+Cisj
ZWxpZiBQTEFURk9STShFRkwpICYmIEhBVkVfRUNPUkVfWAorI2luY2x1ZGUgPEVjb3JlX1guaD4K
KyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZmRlZiBYUF9VTklYCitzdGF0aWMgY29uc3QgY2hhciogeEVycm9yU3RyaW5nID0gIlRo
ZSBwcm9ncmFtICclcycgcmVjZWl2ZWQgYW4gWCBXaW5kb3cgU3lzdGVtIGVycm9yLlxuIgorICAg
ICJUaGlzIHByb2JhYmx5IHJlZmxlY3RzIGEgYnVnIGluIGEgYnJvd3NlciBwbHVnaW4uXG4iCisg
ICAgIlRoZSBlcnJvciB3YXMgJyVzJy5cbiIKKyAgICAiICAoRGV0YWlsczogc2VyaWFsICVsZCBl
cnJvcl9jb2RlICVkIHJlcXVlc3RfY29kZSAlZCBtaW5vcl9jb2RlICVkKVxuIjsKK3N0YXRpYyBj
aGFyKiBwcm9ncmFtTmFtZSA9IDA7CisKK3N0YXRpYyBpbnQgd2Via2l0WEVycm9yKERpc3BsYXkq
IHhkaXNwbGF5LCBYRXJyb3JFdmVudCogZXJyb3IpCit7CisgICAgY2hhciBlcnJvck1lc3NhZ2Vb
NjRdOworICAgIFhHZXRFcnJvclRleHQoeGRpc3BsYXksIGVycm9yLT5lcnJvcl9jb2RlLCBlcnJv
ck1lc3NhZ2UsIDYzKTsKKworICAgIExPRyhQbHVnaW5zLCB4RXJyb3JTdHJpbmcsCisgICAgICAg
IHByb2dyYW1OYW1lLCBlcnJvck1lc3NhZ2UsCisgICAgICAgIGVycm9yLT5zZXJpYWwsIGVycm9y
LT5lcnJvcl9jb2RlLAorICAgICAgICBlcnJvci0+cmVxdWVzdF9jb2RlLCBlcnJvci0+bWlub3Jf
Y29kZSk7CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitXS19FWFBPUlQgaW50IFBsdWdp
blByb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhciogYXJndltdKQoreworICAgIEFTU0VSVChh
cmdjID09IDIgfHwgYXJnYyA9PSAzKTsKKyAgICBib29sIHNjYW5QbHVnaW4gPSAhc3RyY21wKGFy
Z3ZbMV0sICItc2NhblBsdWdpbiIpOworICAgIEFTU0VSVChhcmdjID09IDIgfHwgKGFyZ2MgPT0g
MyAmJiBzY2FuUGx1Z2luKSk7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgZ3RrX2luaXQoJmFy
Z2MsICZhcmd2KTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpZmRlZiBIQVZFX0VDT1JFX1gKKyAg
ICBpZiAoIWVjb3JlX3hfaW5pdCgwKSkKKyNlbmRpZgorICAgICAgICByZXR1cm4gMTsKKyNlbmRp
ZgorCisgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworCisgICAg
aWYgKHNjYW5QbHVnaW4pIHsKKyAgICAgICAgU3RyaW5nIHBsdWdpblBhdGgoYXJndlsyXSk7Cisg
ICAgICAgIGlmICghTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNjYW5QbHVnaW4ocGx1Z2luUGF0aCkp
CisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgICAgICByZXR1cm4gRVhJVF9T
VUNDRVNTOworICAgIH0KKworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwor
CisgICAgLy8gUGx1Z2lucyBjYW4gcHJvZHVjZSBYIGVycm9ycyB0aGF0IGFyZSBoYW5kbGVkIGJ5
IHRoZSBHREsgWCBlcnJvciBoYW5kbGVyLCB3aGljaAorICAgIC8vIGV4aXRzIHRoZSBwcm9jZXNz
LiBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNyYXNoIGR1ZSB0byBwbHVnaW4gYnVncywgd2UgaW5z
dGFsbCBhCisgICAgLy8gY3VzdG9tIGVycm9yIGhhbmRsZXIgdG8gc2hvdyBhIHdhcm5pbmcgd2hl
biBhIFggZXJyb3IgaGFwcGVucyB3aXRob3V0IGFib3J0aW5nLgorI2lmIGRlZmluZWQoWFBfVU5J
WCkKKyAgICBwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKGFyZ3ZbMF0pOworICAgIFhTZXRFcnJvckhh
bmRsZXIod2Via2l0WEVycm9yKTsKKyNlbmRpZgorCisgICAgaW50IHNvY2tldCA9IGF0b2koYXJn
dlsxXSk7CisgICAgV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHNv
Y2tldCwgUnVuTG9vcDo6bWFpbigpKTsKKyAgICBSdW5Mb29wOjpydW4oKTsKKworICAgIHJldHVy
biAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXguaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDBjNTk2YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzTWFpblVuaXgu
aApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBQbHVnaW5Qcm9jZXNzTWFpblVuaXhfaAorI2RlZmluZSBQbHVnaW5Qcm9jZXNzTWFpblVu
aXhfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CitXS19FWFBPUlQgaW50IFBsdWdp
blByb2Nlc3NNYWluVW5peChpbnQgYXJnYywgY2hhciogYXJndltdKTsKK30gLy8gZXh0ZXJuICJD
IgorI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUGx1Z2luUHJvY2Vzc01haW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZWU3OGY5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgorCisjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKGNv
bnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luUHJvY2Vzc1Byb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTkzMzlkLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5Qcm9jZXNzUHJveHlHdGsuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc1Byb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0KLSNpbmNs
dWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9HT3duUHRyR3RrLmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFBs
dWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikKLXsKLX0KLQotYm9vbCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0
YSYgcmVzdWx0KQotewotICAgIENTdHJpbmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2VzcygpKTsKLSAgICBDU3RyaW5nIHBs
dWdpblBhdGhDU3RyaW5nID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOwot
ICAgIGNoYXIqIGFyZ3ZbNF07Ci0gICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFy
eVBhdGguZGF0YSgpKTsKLSAgICBhcmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1
Z2luIik7Ci0gICAgYXJndlsyXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHBsdWdpblBhdGhDU3RyaW5n
LmRhdGEoKSk7Ci0gICAgYXJndlszXSA9IDA7Ci0KLSAgICBnaW50IHN0YXR1czsKLSAgICBHT3du
UHRyPGdjaGFyPiBzdGRPdXQ7Ci0gICAgaWYgKCFnX3NwYXduX3N5bmMoMCwgYXJndiwgMCwgR19T
UEFXTl9TVERFUlJfVE9fREVWX05VTEwsIDAsIDAsICZzdGRPdXQub3V0UHRyKCksIDAsICZzdGF0
dXMsIDApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFXSUZFWElURUQoc3RhdHVz
KSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IEVYSVRfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgY29uc3QgdW5zaWduZWQga051bUxpbmVzRXhwZWN0ZWQgPSAzOwotICAg
IFN0cmluZyBsaW5lc1trTnVtTGluZXNFeHBlY3RlZF07Ci0gICAgdW5zaWduZWQgbGluZUluZGV4
ID0gMDsKLSAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUNoYXIqPihzdGRPdXQuZ2V0KCkpOwotICAgIHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNF
eHBlY3RlZCkgewotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJyZW50OwotICAgICAg
ICB3aGlsZSAoKmN1cnJlbnQrKyAhPSBVQ2hhcignXG4nKSkgeyB9Ci0gICAgICAgIGxpbmVzW2xp
bmVJbmRleCsrXSA9IFN0cmluZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0gMSk7Ci0gICAgfQot
Ci0gICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7Ci0gICAgcmVzdWx0LmRlc2NyaXB0aW9u
LnN3YXAobGluZXNbMV0pOwotICAgIHJlc3VsdC5taW1lRGVzY3JpcHRpb24uc3dhcChsaW5lc1sy
XSk7Ci0gICAgcmV0dXJuICFyZXN1bHQubWltZURlc2NyaXB0aW9uLmlzRW1wdHkoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
dW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xMDgwY2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgorCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQorCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1
ZGUgIlByb2Nlc3NFeGVjdXRhYmxlUGF0aC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEVOQUJM
RShHTElCX1NVUFBPUlQpKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgUGx1Z2luUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKQoreworfQorCitib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBs
dWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQp
Cit7CisjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBFTkFCTEUoR0xJQl9T
VVBQT1JUKSkKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKSk7CisgICAgQ1N0cmluZyBwbHVnaW5Q
YXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKKyAgICBj
aGFyKiBhcmd2WzRdOworICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRo
LmRhdGEoKSk7CisgICAgYXJndlsxXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCItc2NhblBsdWdpbiIp
OworICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihwbHVnaW5QYXRoQ1N0cmluZy5kYXRh
KCkpOworICAgIGFyZ3ZbM10gPSAwOworCisgICAgaW50IHN0YXR1czsKKyAgICBjaGFyKiBzdGRP
dXQgPSAwOworCisgICAgaWYgKCFnX3NwYXduX3N5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9TVERF
UlJfVE9fREVWX05VTEwsIDAsIDAsICZzdGRPdXQsIDAsICZzdGF0dXMsIDApKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVT
KHN0YXR1cykgIT0gRVhJVF9TVUNDRVNTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBj
b25zdCB1bnNpZ25lZCBrTnVtTGluZXNFeHBlY3RlZCA9IDM7CisgICAgU3RyaW5nIGxpbmVzW2tO
dW1MaW5lc0V4cGVjdGVkXTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOworCisgICAgY29u
c3QgVUNoYXIqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RkT3V0
KTsKKworICAgIHdoaWxlIChsaW5lSW5kZXggPCBrTnVtTGluZXNFeHBlY3RlZCkgeworICAgICAg
ICBjb25zdCBVQ2hhciogc3RhcnQgPSBjdXJyZW50OworICAgICAgICB3aGlsZSAoKmN1cnJlbnQr
KyAhPSBVQ2hhcignXG4nKSkgeyB9CisgICAgICAgIGxpbmVzW2xpbmVJbmRleCsrXSA9IFN0cmlu
ZyhzdGFydCwgY3VycmVudCAtIHN0YXJ0IC0gMSk7CisgICAgfQorCisgICAgaWYgKHN0ZE91dCkK
KyAgICAgICAgZnJlZShzdGRPdXQpOworCisgICAgcmVzdWx0Lm5hbWUuc3dhcChsaW5lc1swXSk7
CisgICAgcmVzdWx0LmRlc2NyaXB0aW9uLnN3YXAobGluZXNbMV0pOworICAgIHJlc3VsdC5taW1l
RGVzY3JpcHRpb24uc3dhcChsaW5lc1syXSk7CisgICAgcmV0dXJuICFyZXN1bHQubWltZURlc2Ny
aXB0aW9uLmlzRW1wdHkoKTsKKyNlbHNlIC8vIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVG
TCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkpCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8v
IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgRU5BQkxFKEdMSUJfU1VQUE9SVCkp
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwCmluZGV4IDJhM2IzMDcuLjg5ODFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTgzLDQgKzgzLDE0IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgpCiAgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVtZVBhdGgodGhlbWVQYXRo
KSwgbV9wYWdlSUQsIDApOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUGx1Z2luQ29u
dGFpbmVyKHVpbnQ2NF90JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ay9QbHVnaW5Qcm94
eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3Rr
L1BsdWdpblByb3h5R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2YWYy
MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvZ3RrL1BsdWdpblByb3h5R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsdWdpblByb3h5LmgiCi0KLSNpZiBFTkFCTEUoUExV
R0lOX1BST0NFU1MpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1ib29sIFBsdWdpblByb3h5OjpuZWVkc0JhY2tpbmdTdG9yZSgp
IGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
dW5peC9QbHVnaW5Qcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45OTZhZjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3VuaXgvUGx1Z2luUHJveHlVbml4LmNwcApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm94eS5oIgor
CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBQbHVnaW5Qcm94eTo6bmVl
ZHNCYWNraW5nU3RvcmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApp
bmRleCA1YzllNjc4Li5mMjE2ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcApAQCAtMzcsMTUgKzM3LDIwIEBACiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8
V2ViQ29yZS9RdFgxMUltYWdlQ29udmVyc2lvbi5oPgogI2VsaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIK
LSNpbmNsdWRlIDxjYWlyby14bGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lmbmRlZiBH
VEtfQVBJX1ZFUlNJT05fMgogI2luY2x1ZGUgPGd0ay9ndGt4Lmg+CiAjZW5kaWYKICNpbmNsdWRl
IDxnZGsvZ2RreC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgorI2VsaWYg
UExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyNpbmNsdWRlIDxFY29yZV9Y
Lmg+CisjZW5kaWYKKworI2lmIFVTRShDQUlSTykgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykKKyNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgi
CisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8teGxpYi5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtODQsNiArODksOCBAQCBzdGF0aWMgRGlzcGxheSogZ2V0UGx1Z2luRGlz
cGxheSgpCiAgICAgLy8gU2luY2Ugd2UncmUgYSBnZGsvZ3RrIGFwcCwgd2UnbGwgKHByb2JhYmx5
PykgaGF2ZSB0aGUgc2FtZSBYIGNvbm5lY3Rpb24gYXMgYW55IGdkay1iYXNlZAogICAgIC8vIHBs
dWdpbnMsIHNvIHdlIGNhbiByZXR1cm4gdGhhdC4gV2UgbWlnaHQgd2FudCB0byBhZGQgb3RoZXIg
aW1wbGVtZW50YXRpb25zIGhlcmUgbGF0ZXIuCiAgICAgcmV0dXJuIEdES19ESVNQTEFZX1hESVNQ
TEFZKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBk
ZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGVj
b3JlX3hfZGlzcGxheV9nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC05
NSw2ICsxMDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCB4MTFTY3JlZW4oKQogICAgIHJldHVybiBY
RGVmYXVsdFNjcmVlbihOZXRzY2FwZVBsdWdpbjo6eDExSG9zdERpc3BsYXkoKSk7CiAjZWxpZiBQ
TEFURk9STShHVEspCiAgICAgcmV0dXJuIGdka19zY3JlZW5fZ2V0X251bWJlcihnZGtfc2NyZWVu
X2dldF9kZWZhdWx0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKSAmJiBkZWZpbmVkKEhBVkVfRUNP
UkVfWCkKKyAgICByZXR1cm4gZWNvcmVfeF9zY3JlZW5faW5kZXhfZ2V0KGVjb3JlX3hfZGVmYXVs
dF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTA2LDYg
KzExNSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRpc3BsYXlEZXB0aCgpCiAgICAgcmV0dXJuIFhE
ZWZhdWx0RGVwdGgoTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCksIHgxMVNjcmVlbigp
KTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gZ2RrX3Zpc3VhbF9nZXRfZGVwdGgo
Z2RrX3NjcmVlbl9nZXRfc3lzdGVtX3Zpc3VhbChnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCkpKTsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgcmV0dXJu
IGVjb3JlX3hfZGVmYXVsdF9kZXB0aF9nZXQoTmV0c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5
KCksIGVjb3JlX3hfZGVmYXVsdF9zY3JlZW5fZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsK
ICNlbmRpZgpAQCAtMTE3LDYgKzEyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBy
b290V2luZG93SUQoKQogICAgIHJldHVybiBYRGVmYXVsdFJvb3RXaW5kb3coTmV0c2NhcGVQbHVn
aW46OngxMUhvc3REaXNwbGF5KCkpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBH
REtfUk9PVF9XSU5ET1coKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VD
T1JFX1gpCisgICAgcmV0dXJuIGVjb3JlX3hfd2luZG93X3Jvb3RfZmlyc3RfZ2V0KCk7CiAjZWxz
ZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNDQsNiArMTU3LDggQEAgRGlzcGxheSogTmV0
c2NhcGVQbHVnaW46OngxMUhvc3REaXNwbGF5KCkKICAgICByZXR1cm4gZGVkaWNhdGVkRGlzcGxh
eTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gR0RLX0RJU1BMQVlfWERJU1BMQVko
Z2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmlu
ZWQoSEFWRV9FQ09SRV9YKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZWNvcmVf
eF9kaXNwbGF5X2dldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTM1Nyw3
ICszNzIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydAogICAgIHBhaW50ZXItPmRyYXdJbWFn
ZShRUG9pbnQoZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCkpLCBxaW1hZ2VGcm9tWElt
YWdlKHhJbWFnZSksIGV4cG9zZWRSZWN0KTsKIAogICAgIFhEZXN0cm95SW1hZ2UoeEltYWdlKTsK
LSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVG
TCkgJiYgVVNFKENBSVJPKSkKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxh
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZHJhd2FibGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRv
dy53c19pbmZvKS0+dmlzdWFsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29uZmlnLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCBkNmM0YTVkLi4yODg1MDc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcu
aApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBuYW1lKCkgXAogI2RlZmlu
ZSBQTFVHSU5fQVJDSElURUNUVVJFX01BQyAxCiAjZWxpZiBQTEFURk9STShXSU4pCiAjZGVmaW5l
IFBMVUdJTl9BUkNISVRFQ1RVUkVfV0lOIDEKLSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgKE9TKFVO
SVgpICYmICFPUyhNQUNfT1NfWCkpCisjZWxpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19PU19YKSkKICNkZWZpbmUgUExVR0lOX0FSQ0hJ
VEVDVFVSRV9YMTEgMQogI2VsaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoYW5kbGVzIHRoaXMgZmVh
dHVyZXMucHJmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9ndGsvUGx1Z2luTWFpbkd0ay5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDYzY2Y0NGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvZ3Rr
L1BsdWdpbk1haW5HdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFpbkd0
ay5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgcmV0dXJuIFdl
YktpdDo6UGx1Z2luUHJvY2Vzc01haW5HdGsoYXJnYywgYXJndik7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1haW5Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL3Vu
aXgvUGx1Z2luTWFpblVuaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA3ZjlhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi91bml4L1BsdWdpbk1h
aW5Vbml4LmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg
MjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYWluVW5peC5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGx1Z2luUHJvY2Vzc01h
aW5Vbml4KGFyZ2MsIGFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAwYWU0ZWNlLi41
MzkzN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzQsNyArNzQsNyBAQCBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUVESUFfQ0FQVFVSRSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NRU1PUllfU0FNUExFUiBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSUNST0RBVEEgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMg
T04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUU0NBUEVfUExV
R0lOX0FQSSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVU
U0NBUEVfUExVR0lOX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9SRUdJT05TIE9OKQpAQCAtMTE5LDYgKzExOSwxMCBAQCBTRVQoV1RGX1VT
RV9IQVJGQlVaWl9ORyAxKQogQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQRT0xKQog
QUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9IQVJGQlVaWl9ORz0xKQogCitJRiAoRU5BQkxFX1dF
QktJVDIpCisgICAgU0VUKEVOQUJMRV9QTFVHSU5fUFJPQ0VTUyAxKQorRU5ESUYgKCkKKwogSUYg
KE5PVCBFTkFCTEVfU1ZHKQogICBTRVQoRU5BQkxFX1NWR19GT05UUyAwKQogRU5ESUYgKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0NDY5MjE2
Li4zYTlhMmFmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxt
YXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1bR1RLXVtFRkxdIFNoYXJlIFdl
YktpdDItR1RLIHBsdWdpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9uIHdpdGggRUZMIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgVHVybiBvbiBOZXRz
Y2FwZSBQbHVnaW4gQVBJIG9wdGlvbiBieSBkZWZhdWx0LgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEyLTA5LTI4ICBNaWtoYWlsIFBvemRueWFr
b3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0g
RUZMIERSVCBzaG91bGQgZGlzYWJsZSB2aXNpdGVkIGxpbmtzIHRyYWNraW5nIGJ5IGRlZmF1bHQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA2ODU3NzY2Li4yZTlh
MTQ3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjksNyAr
MzI5LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkFWSUdB
VE9SX0NPTlRFTlRfVVRJTFMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgp
KSwgdmFsdWUgPT4gXCRyZWdpc3RlclByb3RvY29sSGFuZGxlclN1cHBvcnQgfSwKIAogICAgIHsg
b3B0aW9uID0+ICJuZXRzY2FwZS1wbHVnaW4tYXBpIiwgZGVzYyA9PiAiVG9nZ2xlIE5ldHNjYXBl
IFBsdWdpbiBBUEkgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9Q
TFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdp
bkFQSVN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9B
UEkiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5BUElTdXBwb3J0IH0s
CiAKICAgICB7IG9wdGlvbiA9PiAibmV0d29yay1pbmZvIiwgZGVzYyA9PiAiVG9nZ2xlIE5ldHdv
cmsgSW5mbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFdPUktfSU5GTyIs
IGRlZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXR3b3JrSW5mb1N1cHBvcnQgfSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>